-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/57495/
-----------------------------------------------------------
Review request for atlas, Madhan Neethiraj and Sarath Subramanian.
Bugs: ATLAS-1646
https://issues.apache.org/jira/browse/ATLAS-1646
Repository: atlas
Description
-------
**Background**
Existing implementation of Export REST API uses *ByteArrayOutputStream* to
during output zip file creation. This puts pressure on memory when handling
large data. Also, the data transfer does not start until entire export is done.
This situation is less than ideal for performance.
**Solution**
- Passing *ServletOutputStream* to *ZipSink*.
- This improves memory usage as memory does not get held up by
*ByteArrayOutputStream*.
- Reduces additional copy from *ByteArrayOutputStream* to
*ServletOutputSream*.
- Simplifies *ZipSink*.
- Clear internal data structures after operation completion.
- This aids, though not much, when freeing up memory used. There is some
improvement in large transfers.
- *ExportService.ExportContext.guidsToProcess* removed sequential lookup from
*List* to *Set*.
- Data transfer from server to client starts much sooner. Client is able to
interrupt the progress if needed.
Diffs
-----
intg/src/main/java/org/apache/atlas/model/impexp/AtlasExportResult.java
e6a967e
webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java
31a4cf9
webapp/src/main/java/org/apache/atlas/web/resources/ExportService.java
c1891e0
webapp/src/main/java/org/apache/atlas/web/resources/ZipSink.java 2e4cb01
Diff: https://reviews.apache.org/r/57495/diff/1/
Testing
-------
Profiled using *jmap* & *Eclipse MAT*, verified using *YourKit*.
Verified: *FetchTypes* viz. *full* and *connected*.
Memory usage: Stays constant on prolonged use. Verified ~3 hrs of continuous
runs using medium and large database exports.
Performance improvement:
Date | File Size | No. of Entities | Duration (in mins)|
-----|-----------|-----------------|-------------------|
3/08 | 180 MB | 202930 | 22 mins|
3/09 | 180 MB | 202930 | 19 mins|
About 15% improvement.
Thanks,
Ashutosh Mestry