Author: amitj
Date: Wed Jun 21 06:58:24 2017
New Revision: 1799393

URL: http://svn.apache.org/viewvc?rev=1799393&view=rev
Log:
OAK-6374: S3Backend masks actual thrown error when problem in filtering 
properties

- Fixed by not using Maps.fromProperties
- Logging error before filtering also instead of debug

Modified:
    
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java
    
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
    
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/Utils.java
    
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
    
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java

Modified: 
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java?rev=1799393&r1=1799392&r2=1799393&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java
 Wed Jun 21 06:58:24 2017
@@ -214,10 +214,10 @@ public class S3Backend implements Shared
             LOG.debug("S3 Backend initialized in [{}] ms",
                 +(System.currentTimeMillis() - startTime.getTime()));
         } catch (Exception e) {
-            LOG.debug("  error ", e);
-            Map<String, String> filteredMap = Maps.newHashMap();
+            LOG.error("  error ", e);
+            Map<String, Object> filteredMap = Maps.newHashMap();
             if (prop != null) {
-                filteredMap = Maps.filterKeys(Maps.fromProperties(prop), new 
Predicate<String>() {
+                filteredMap = Maps.filterKeys(Utils.asMap(prop), new 
Predicate<String>() {
                     @Override public boolean apply(String input) {
                         return !input.equals(S3Constants.ACCESS_KEY) && 
!input.equals(S3Constants
                             .SECRET_KEY);

Modified: 
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java?rev=1799393&r1=1799392&r2=1799393&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
 Wed Jun 21 06:58:24 2017
@@ -164,13 +164,13 @@ public class S3Backend extends AbstractS
             LOG.debug("S3 Backend initialized in [{}] ms",
                 +(System.currentTimeMillis() - startTime.getTime()));
         } catch (Exception e) {
-            LOG.debug("  error ", e);
-            Map<String, String> filteredMap = Maps.newHashMap();
+            LOG.error("Error ", e);
+            Map<String, Object> filteredMap = Maps.newHashMap();
             if (properties != null) {
-                filteredMap = Maps.filterKeys(Maps.fromProperties(properties), 
new Predicate<String>() {
+                filteredMap = Maps.filterKeys(Utils.asMap(properties), new 
Predicate<String>() {
                     @Override public boolean apply(String input) {
-                        return !input.equals(S3Constants.ACCESS_KEY) && 
!input.equals(S3Constants
-                            .SECRET_KEY);
+                        return !input.equals(S3Constants.ACCESS_KEY) &&
+                            !input.equals(S3Constants.SECRET_KEY);
                     }
                 });
             }

Modified: 
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/Utils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/Utils.java?rev=1799393&r1=1799392&r2=1799393&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/Utils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/Utils.java
 Wed Jun 21 06:58:24 2017
@@ -21,8 +21,10 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Map;
 import java.util.Properties;
 
+import com.google.common.collect.Maps;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -222,4 +224,12 @@ public final class Utils {
         cc.setMaxErrorRetry(maxErrorRetry);
         return cc;
     }
+
+    public static Map<String, Object> asMap(Properties props) {
+        Map<String, Object> map = Maps.newHashMap();
+        for (Object key : props.keySet()) {
+            map.put((String)key, props.get(key));
+        }
+        return map;
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java?rev=1799393&r1=1799392&r2=1799393&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
 Wed Jun 21 06:58:24 2017
@@ -122,7 +122,7 @@ public class S3DataStoreUtils extends Da
 
     public static DataStore getS3DataStore(String className, Properties props, 
String homeDir) throws Exception {
         DataStore ds = 
Class.forName(className).asSubclass(DataStore.class).newInstance();
-        PropertiesUtil.populate(ds, Maps.fromProperties(props), false);
+        PropertiesUtil.populate(ds, Utils.asMap(props), false);
         // Set the props object
         if (S3.getName().equals(className)) {
             ((S3DataStore) ds).setProperties(props);

Modified: 
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java?rev=1799393&r1=1799392&r2=1799393&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
 Wed Jun 21 06:58:24 2017
@@ -84,11 +84,12 @@ public class TestS3DataStore {
     @Test
     public void testAccessParamLeakOnError() throws Exception {
         expectedEx.expect(RepositoryException.class);
-        expectedEx.expectMessage("Could not initialize S3 from 
{s3Region=us-standard}");
+        expectedEx.expectMessage("Could not initialize S3 from 
{s3Region=us-standard, intValueKey=25}");
 
         props.put(S3Constants.ACCESS_KEY, "abcd");
         props.put(S3Constants.SECRET_KEY, "123456");
         props.put(S3Constants.S3_REGION, "us-standard");
+        props.put("intValueKey", 25);
         ds = getS3DataStore(s3Class, props, dataStoreDir.getAbsolutePath());
     }
 


Reply via email to