This is an automated email from the ASF dual-hosted git repository. amestry pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 15cd0378ef54720349f28ef3f2624f93b4f5b30e Author: Ashutosh Mestry <ames...@cloudera.com> AuthorDate: Thu Feb 4 09:58:57 2021 -0800 ATLAS-4136: Export Service: NPE if Options Explicitly set to NULL --- .../apache/atlas/web/resources/AdminResource.java | 25 +++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) 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 b20b404..e8fc111 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 @@ -390,7 +390,7 @@ public class AdminResource { AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_EXPORT), "export"); - boolean preventMultipleRequests = request != null + boolean preventMultipleRequests = request != null && request.getOptions() != null && !(request.getOptions().containsKey(AtlasExportRequest.OPTION_SKIP_LINEAGE) || request.getOptions().containsKey(AtlasExportRequest.OPTION_KEY_REPLICATED_TO)); if (preventMultipleRequests) { @@ -455,7 +455,8 @@ public class AdminResource { try { AtlasImportRequest request = AtlasType.fromJson(jsonData, AtlasImportRequest.class); - preventMultipleRequests = request != null && !request.getOptions().containsKey(AtlasImportRequest.OPTION_KEY_REPLICATED_FROM); + preventMultipleRequests = request != null && request.getOptions() != null + && !request.getOptions().containsKey(AtlasImportRequest.OPTION_KEY_REPLICATED_FROM); if (preventMultipleRequests) { acquireExportImportLock("import"); } @@ -537,7 +538,8 @@ public class AdminResource { try { AtlasImportRequest request = AtlasType.fromJson(jsonData, AtlasImportRequest.class); - preventMultipleRequests = request != null && request.getOptions().containsKey(AtlasImportRequest.OPTION_KEY_REPLICATED_FROM); + preventMultipleRequests = request != null && request.getOptions() != null + && request.getOptions().containsKey(AtlasImportRequest.OPTION_KEY_REPLICATED_FROM); if (preventMultipleRequests) { acquireExportImportLock("importFile"); @@ -783,16 +785,19 @@ public class AdminResource { } private void addToExportOperationAudits(boolean isSuccessful, AtlasExportResult result) throws AtlasBaseException { - if (isSuccessful && CollectionUtils.isNotEmpty(result.getRequest().getItemsToExport())) { + if (!isSuccessful + || CollectionUtils.isEmpty(result.getRequest().getItemsToExport()) + || result.getRequest().getOptions() == null) { + return; + } - Map<String, Object> optionMap = result.getRequest().getOptions(); - optionMap.put(OPERATION_STATUS, result.getOperationStatus().name()); - String params = AtlasJson.toJson(optionMap); + Map<String, Object> optionMap = result.getRequest().getOptions(); + optionMap.put(OPERATION_STATUS, result.getOperationStatus().name()); + String params = AtlasJson.toJson(optionMap); - List<AtlasObjectId> objectIds = result.getRequest().getItemsToExport(); + List<AtlasObjectId> objectIds = result.getRequest().getItemsToExport(); - auditImportExportOperations(objectIds, AuditOperation.EXPORT, params); - } + auditImportExportOperations(objectIds, AuditOperation.EXPORT, params); } private void auditImportExportOperations(List<AtlasObjectId> objectIds, AuditOperation auditOperation, String params) throws AtlasBaseException {