Repository: atlas Updated Branches: refs/heads/branch-0.8 360be1480 -> a0986f302
ATLAS-2897: Elegant handling of empty zip files. Part 2. Project: http://git-wip-us.apache.org/repos/asf/atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/a490fcdf Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/a490fcdf Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/a490fcdf Branch: refs/heads/branch-0.8 Commit: a490fcdf6fe7b2d4524d33088957bfa3b45426ba Parents: 360be14 Author: Ashutosh Mestry <[email protected]> Authored: Wed Oct 3 09:01:07 2018 -0700 Committer: Ashutosh Mestry <[email protected]> Committed: Wed Oct 3 13:10:30 2018 -0700 ---------------------------------------------------------------------- .../atlas/repository/impexp/ZipSource.java | 19 +++++++++++-------- .../repository/impexp/ExportServiceTest.java | 1 - .../impexp/ZipFileResourceTestUtils.java | 20 ++++++++------------ .../atlas/web/resources/AdminResource.java | 19 ++++++++++++++++++- 4 files changed, 37 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/atlas/blob/a490fcdf/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java ---------------------------------------------------------------------- diff --git a/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java b/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java index 691f933..a974249 100644 --- a/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java +++ b/repository/src/main/java/org/apache/atlas/repository/impexp/ZipSource.java @@ -64,13 +64,20 @@ public class ZipSource implements EntityImportStream { this.importTransform = importTransform; updateGuidZipEntryMap(); - if (MapUtils.isEmpty(guidEntityJsonMap)) { + if (isZipFileEmpty()) { throw new AtlasBaseException(IMPORT_ATTEMPTING_EMPTY_ZIP, "Attempting to import empty ZIP."); } setCreationOrder(); } + private boolean isZipFileEmpty() { + return MapUtils.isEmpty(guidEntityJsonMap) || + (guidEntityJsonMap.containsKey(ZipExportFileNames.ATLAS_EXPORT_ORDER_NAME.toString()) && + (guidEntityJsonMap.get(ZipExportFileNames.ATLAS_EXPORT_ORDER_NAME.toString()) == null) + ); + } + public ImportTransforms getImportTransform() { return this.importTransform; } public void setImportTransform(ImportTransforms importTransform) { @@ -136,7 +143,7 @@ public class ZipSource implements EntityImportStream { zipInputStream.close(); } - public List<String> getCreationOrder() throws AtlasBaseException { + public List<String> getCreationOrder() { return this.creationOrder; } @@ -228,12 +235,8 @@ public class ZipSource implements EntityImportStream { @Override public void reset() { - try { - getCreationOrder(); - this.iterator = this.creationOrder.iterator(); - } catch (AtlasBaseException e) { - LOG.error("reset", e); - } + getCreationOrder(); + this.iterator = this.creationOrder.iterator(); } @Override http://git-wip-us.apache.org/repos/asf/atlas/blob/a490fcdf/repository/src/test/java/org/apache/atlas/repository/impexp/ExportServiceTest.java ---------------------------------------------------------------------- diff --git a/repository/src/test/java/org/apache/atlas/repository/impexp/ExportServiceTest.java b/repository/src/test/java/org/apache/atlas/repository/impexp/ExportServiceTest.java index 0d13a5b..6f168d1 100644 --- a/repository/src/test/java/org/apache/atlas/repository/impexp/ExportServiceTest.java +++ b/repository/src/test/java/org/apache/atlas/repository/impexp/ExportServiceTest.java @@ -294,7 +294,6 @@ public class ExportServiceTest extends ExportImportTestBase { assertNotNull(zipSource.getCreationOrder()); assertEquals(zipSource.getCreationOrder().size(), 0); - assertEquals(AtlasExportResult.OperationStatus.FAIL, zipSource.getExportResult().getOperationStatus()); } @Test http://git-wip-us.apache.org/repos/asf/atlas/blob/a490fcdf/repository/src/test/java/org/apache/atlas/repository/impexp/ZipFileResourceTestUtils.java ---------------------------------------------------------------------- diff --git a/repository/src/test/java/org/apache/atlas/repository/impexp/ZipFileResourceTestUtils.java b/repository/src/test/java/org/apache/atlas/repository/impexp/ZipFileResourceTestUtils.java index 124853e..c4480ad 100644 --- a/repository/src/test/java/org/apache/atlas/repository/impexp/ZipFileResourceTestUtils.java +++ b/repository/src/test/java/org/apache/atlas/repository/impexp/ZipFileResourceTestUtils.java @@ -194,19 +194,15 @@ public class ZipFileResourceTestUtils { public static AtlasEntity.AtlasEntityWithExtInfo getEntities(ZipSource source, int expectedCount) { AtlasEntity.AtlasEntityWithExtInfo entityWithExtInfo = new AtlasEntity.AtlasEntityWithExtInfo(); - try { - int count = 0; - for (String s : source.getCreationOrder()) { - AtlasEntity entity = source.getByGuid(s); - entityWithExtInfo.addReferredEntity(s, entity); - count++; - } - - assertEquals(count, expectedCount); - return entityWithExtInfo; - } catch (AtlasBaseException e) { - throw new SkipException("getEntities: failed!"); + int count = 0; + for (String s : source.getCreationOrder()) { + AtlasEntity entity = source.getByGuid(s); + entityWithExtInfo.addReferredEntity(s, entity); + count++; } + + assertEquals(count, expectedCount); + return entityWithExtInfo; } public static void loadModelFromJson(String fileName, AtlasTypeDefStore typeDefStore, AtlasTypeRegistry typeRegistry) throws IOException, AtlasBaseException { http://git-wip-us.apache.org/repos/asf/atlas/blob/a490fcdf/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java ---------------------------------------------------------------------- diff --git a/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java b/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java index 26b2774..b53ac69 100755 --- a/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java +++ b/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java @@ -382,7 +382,7 @@ public class AdminResource { } acquireExportImportLock("import"); - AtlasImportResult result; + AtlasImportResult result = null; try { AtlasImportRequest request = AtlasType.fromJson(jsonData, AtlasImportRequest.class); @@ -391,6 +391,15 @@ public class AdminResource { result = importService.run(zipSource, request, Servlets.getUserName(httpServletRequest), Servlets.getHostName(httpServletRequest), AtlasAuthorizationUtils.getRequestIpAddress(httpServletRequest)); + } catch (AtlasBaseException excp) { + if (excp.getAtlasErrorCode().equals(AtlasErrorCode.IMPORT_ATTEMPTING_EMPTY_ZIP)) { + LOG.info(excp.getMessage()); + } else { + LOG.error("importData(binary) failed", excp); + } + + throw excp; + } catch (Exception excp) { LOG.error("importData(binary) failed", excp); @@ -423,6 +432,14 @@ public class AdminResource { result = importService.run(request, Servlets.getUserName(httpServletRequest), Servlets.getHostName(httpServletRequest), AtlasAuthorizationUtils.getRequestIpAddress(httpServletRequest)); + } catch (AtlasBaseException excp) { + if (excp.getAtlasErrorCode().getErrorCode().equals(AtlasErrorCode.IMPORT_ATTEMPTING_EMPTY_ZIP)) { + LOG.info(excp.getMessage()); + } else { + LOG.error("importData(binary) failed", excp); + } + + throw excp; } catch (Exception excp) { LOG.error("importFile() failed", excp);
