You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by gr...@apache.org on 2015/12/10 21:04:25 UTC

usergrid git commit: Created new tool to scan the ENTITY_INDEX column families. Additional logging to come later.

Repository: usergrid
Updated Branches:
  refs/heads/unique_index_logging 5338da90e -> ddbba7bc5


Created new tool to scan the ENTITY_INDEX column families. Additional logging to come later.


Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/ddbba7bc
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/ddbba7bc
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/ddbba7bc

Branch: refs/heads/unique_index_logging
Commit: ddbba7bc55f2dab49d95271ae0138994638677f1
Parents: 5338da9
Author: George Reyes <gr...@apache.org>
Authored: Thu Dec 10 12:04:19 2015 -0800
Committer: George Reyes <gr...@apache.org>
Committed: Thu Dec 10 12:04:19 2015 -0800

----------------------------------------------------------------------
 .../tools/ManagementUserIndexAudit.java         | 66 +++++++-------------
 1 file changed, 22 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/ddbba7bc/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserIndexAudit.java
----------------------------------------------------------------------
diff --git a/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserIndexAudit.java b/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserIndexAudit.java
index 1af3613..06c4895 100644
--- a/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserIndexAudit.java
+++ b/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserIndexAudit.java
@@ -19,6 +19,7 @@ package org.apache.usergrid.tools;
 
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -39,15 +40,18 @@ import org.apache.usergrid.persistence.EntityManager;
 import org.apache.usergrid.persistence.EntityRef;
 import org.apache.usergrid.persistence.Results;
 import org.apache.usergrid.persistence.SimpleEntityRef;
+import org.apache.usergrid.persistence.cassandra.index.IndexBucketScanner;
 import org.apache.usergrid.persistence.entities.User;
 import org.apache.usergrid.persistence.exceptions.EntityNotFoundException;
 import org.apache.usergrid.utils.UUIDUtils;
 
+import com.fasterxml.uuid.impl.UUIDUtil;
 import com.google.common.collect.BiMap;
 
 import me.prettyprint.cassandra.service.RangeSlicesIterator;
 import me.prettyprint.hector.api.Keyspace;
 import me.prettyprint.hector.api.beans.ColumnSlice;
+import me.prettyprint.hector.api.beans.DynamicComposite;
 import me.prettyprint.hector.api.beans.HColumn;
 import me.prettyprint.hector.api.beans.Row;
 import me.prettyprint.hector.api.factory.HFactory;
@@ -60,6 +64,7 @@ import static org.apache.usergrid.persistence.cassandra.ApplicationCF.ENTITY_UNI
 import static org.apache.usergrid.persistence.cassandra.CassandraPersistenceUtils.addDeleteToMutator;
 import static org.apache.usergrid.persistence.cassandra.CassandraPersistenceUtils.key;
 import static org.apache.usergrid.persistence.cassandra.CassandraService.MANAGEMENT_APPLICATION_ID;
+import static org.apache.usergrid.persistence.cassandra.CassandraService.dce;
 import static org.apache.usergrid.persistence.cassandra.Serializers.be;
 import static org.apache.usergrid.persistence.cassandra.Serializers.ue;
 import static org.apache.usergrid.utils.UUIDUtils.newTimeUUID;
@@ -164,7 +169,7 @@ public class ManagementUserIndexAudit extends ToolBase {
 
 
                 //defensive programming, don't have to have to parse the string if it doesn't contain users.
-                if (returnedRowKey.contains("email") && returnedRowKey.contains( "users" ) && returnedRowKey.contains( MANAGEMENT_APPLICATION_ID.toString() )) {
+                if (returnedRowKey.contains("users") && returnedRowKey.contains( "email" ) ) {
 
                     String[] parsedRowKey = returnedRowKey.split( ":" );
 
@@ -199,10 +204,11 @@ public class ManagementUserIndexAudit extends ToolBase {
                     if ( collectionName.equals( "users" ) ) {
 
                         ColumnSlice<ByteBuffer, ByteBuffer> columnSlice=rangeSliceValue.getColumnSlice();
+
                         //if ( columnSlice.getColumns().size() != 0 ) {
                         List<HColumn<ByteBuffer, ByteBuffer>> cols=columnSlice.getColumns();
 
-                        entityStateLogger( uniqueValue, cols );
+                        entityStateLogger(applicationId ,uniqueValue, cols );
                     }
                 }
             }
@@ -247,52 +253,23 @@ public class ManagementUserIndexAudit extends ToolBase {
     }
 
 
-    private void entityStateLogger( final String uniqueValue, final List<HColumn<ByteBuffer, ByteBuffer>> cols ) throws Exception {
+    private void entityStateLogger(final UUID entityUuid,final String uniqueValue, final List<HColumn<ByteBuffer, ByteBuffer>> cols ) throws Exception {
 
-        UserInfo userInfo = null;
-        EntityManager em = emf.getEntityManager( MANAGEMENT_APPLICATION_ID );
+//        UserInfo userInfo = null;
+//        EntityManager em = emf.getEntityManager( MANAGEMENT_APPLICATION_ID );
 
-        try {
-            userInfo = managementService.getAdminUserByEmail( uniqueValue );
-        }catch(Exception e){
-            logger.error("threw exception when looking up email: {}",uniqueValue);
-            e.printStackTrace();
-        }
-        if(userInfo==null) {
-            if(cols!=null){
-                if(cols.size()>1){
-                    for(HColumn<ByteBuffer, ByteBuffer> col : cols) {
-                        logger.warn( "This uuid: {} is associated with this duplicated email {}", ue.fromByteBuffer( col.getName()),uniqueValue );
-                    }
+        //IndexBucketScanner scanner = new IndexBucketScanner(  )
 
-                }
-                if(cols.size()==1){
-                    logger.error( "Management user with uuid: {} and email: {} is broken.",ue.fromByteBuffer( cols.get( 0 ).getName()), uniqueValue );
-                }
-                else{
-                    logger.error( "Management user with email: {} is broken and has no uuid's associated with it",uniqueValue );
-                }
-            }
-        }
-        else {
-            Results orgResults =
-                    em.getCollection( new SimpleEntityRef( User.ENTITY_TYPE, userInfo.getUuid() ), "groups", null, 10000, Results.Level.REFS,
-                            false );
-
-            if(orgResults.getRefs().size() == 1){
-                EntityRef orgRef = orgResults.getRef();
-                orgVerification( uniqueValue, em, orgRef, orgRef.getUuid(),
-                        "Management user with email: {} is present but cannot login due to missing their only organization: {}" );
-            }
-            else {
-                for ( EntityRef orgRef : orgResults.getRefs() ) {
-                    orgVerification( uniqueValue, em, orgRef, orgRef.getUuid(),
-                            "Management user with email: {} is present with multiple orgs but is missing the following orgUUID: {}" );
+        //HColumn<ByteBuffer, ByteBuffer> col2 =  cols.get( 0 );
+        DynamicComposite dynamicComposite = dce.fromByteBuffer( cols.get( 0 ).getName());
 
-                }
-            }
-        }
+        Object[] loggerObject = new Object[4];
+        loggerObject[0] = entityUuid;
+        loggerObject[1] = (String) dynamicComposite.get( 1 );
+        loggerObject[2] = (UUID) dynamicComposite.get( 2 );
+        loggerObject[3] =  new Date( UUIDUtils.getTimestampInMillis( (UUID) dynamicComposite.get( 3 ) ));
 
+        logger.info("Found the following orguuid: {} associated with the email: {} that has the following uuid: {} and it was created at time: {} ",loggerObject);
     }
 
 
@@ -357,8 +334,9 @@ public class ManagementUserIndexAudit extends ToolBase {
         if ( cols.size() == 0 ) {
             logger.error( "This row key: {} has zero columns", key.toString() );
         }
+        //TODO: fix to run on single entity once you can decode the column and row key.
 
-        entityStateLogger( uniqueValue, cols );
+       // entityStateLogger( uniqueValue, cols );
     }