You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by am...@apache.org on 2021/02/04 22:07:17 UTC

[atlas] 02/02: ATLAS-4136: Export Service: NPE if Options Explicitly set to NULL

This is an automated email from the ASF dual-hosted git repository.

amestry pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit 41936504d59f3c5cbcda28aeeba8b6d0c489509c
Author: Ashutosh Mestry <am...@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 {