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/08 23:35:10 UTC

[3/3] usergrid git commit: Added repair into audit tool

Added repair into audit tool


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

Branch: refs/heads/unique_index_logging
Commit: 51cf21c080d22d7341d4b2ac27a1683b70b3d9ab
Parents: 15d8164
Author: George Reyes <gr...@apache.org>
Authored: Tue Dec 8 14:35:03 2015 -0800
Committer: George Reyes <gr...@apache.org>
Committed: Tue Dec 8 14:35:03 2015 -0800

----------------------------------------------------------------------
 .../usergrid/tools/ManagementUserAudit.java     | 62 +++++++++++++++++++-
 1 file changed, 61 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/51cf21c0/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserAudit.java
----------------------------------------------------------------------
diff --git a/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserAudit.java b/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserAudit.java
index c15fe94..4d3a876 100644
--- a/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserAudit.java
+++ b/stack/tools/src/main/java/org/apache/usergrid/tools/ManagementUserAudit.java
@@ -20,6 +20,7 @@ package org.apache.usergrid.tools;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
@@ -36,8 +37,12 @@ import org.apache.thrift.TBaseHelper;
 
 import org.apache.usergrid.management.UserInfo;
 import org.apache.usergrid.persistence.Entity;
+import org.apache.usergrid.persistence.EntityManager;
 import org.apache.usergrid.persistence.EntityRef;
+import org.apache.usergrid.persistence.Identifier;
+import org.apache.usergrid.persistence.cassandra.CassandraService;
 import org.apache.usergrid.persistence.cassandra.EntityManagerImpl;
+import org.apache.usergrid.persistence.entities.User;
 import org.apache.usergrid.utils.UUIDUtils;
 
 import me.prettyprint.cassandra.service.RangeSlicesIterator;
@@ -255,7 +260,62 @@ public class ManagementUserAudit extends ToolBase {
 
                 }
                 if(cols.size()==1){
-                    logger.error( "Management user with uuid: {} and email: {} is broken",ue.fromByteBuffer( cols.get( 0 ).getName()), uniqueValue );
+                    logger.error( "Management user with uuid: {} and email: {} is broken. Starting Repair.",ue.fromByteBuffer( cols.get( 0 ).getName()), uniqueValue );
+                    EntityManager em = emf.getEntityManager( CassandraService.MANAGEMENT_APPLICATION_ID );
+                    EntityRef entity = em.getUserByIdentifier( Identifier.fromEmail(uniqueValue) );
+                    if(entity == null){
+                        entity = em.getUserByIdentifier(Identifier.fromName(uniqueValue));
+                    }
+                    if(entity == null){
+                        logger.error("Entity id parameter {} with {} value does not exist", "email", uniqueValue);
+                        return;
+                        //throw new IllegalArgumentException("Entity not found.");
+                    }
+
+                    Map<String, Object> properties = new HashMap<String, Object>();
+                    properties.put("email", uniqueValue);
+                    properties.put("username", uniqueValue);
+                    properties.put("name", uniqueValue);
+                    properties.put("uuid", entity.getUuid());
+                    properties.put("confirmed", true);
+                    properties.put("activated", true);
+
+
+
+                    // Re-create the user entity with the existing UUID found in the index
+                    em.create(entity.getUuid(), User.ENTITY_TYPE, properties );
+                    logger.debug( "Repair Finished.Verifying Fix." );
+                    userInfo = managementService.getAdminUserByEmail( uniqueValue );
+                    if(userInfo==null){
+                        logger.error("Repair failed for uuid: {} and email {}", ue.fromByteBuffer( cols.get( 0 ).getName()),uniqueValue );
+                    }
+                    if(!userInfo.getUuid().equals(cols.get( 0 ).getName())){
+                        Object[] loggerObjects = new Object[3];
+                        loggerObjects[0] = uniqueValue;
+                        loggerObjects[1] = ue.fromByteBuffer( cols.get( 0 ).getName());
+                        loggerObjects[2] = userInfo.getUuid();
+                        logger.error("Repair associated a new uuid for email {}. It should have been uuid: {} but is instead uuid: {}", loggerObjects );
+                    }
+
+                    if(!userInfo.getUsername().equals( uniqueValue )){
+                        Object[] loggerObjects = new Object[3];
+                        loggerObjects[0] = uniqueValue;
+                        loggerObjects[1] = uniqueValue;
+                        loggerObjects[2] = uniqueValue;
+                        logger.error("Repair associated a new username for email {}. It should have been username: {} but is instead username: {}", loggerObjects );
+                    }
+
+                    if(!userInfo.getEmail().equals( uniqueValue )){
+                        Object[] loggerObjects = new Object[3];
+                        loggerObjects[0] = uniqueValue;
+                        loggerObjects[1] = uniqueValue;
+                        loggerObjects[2] = uniqueValue;
+                        logger.error("Repair associated a new email for email {}. It should have been email: {} but is instead email: {}", loggerObjects );
+                    }
+
+                    logger.debug("Repair succeeded for uuid: {} and email {}", 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 );