You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2015/11/17 23:04:57 UTC
[02/39] usergrid git commit: Added fix where when not returning all
entities would prematurely exit the program
Added fix where when not returning all entities would prematurely exit the program
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/b44e537d
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/b44e537d
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/b44e537d
Branch: refs/heads/1.x
Commit: b44e537d5ceca642ffc3049f982e1fa41ceb374c
Parents: a72da10
Author: George Reyes <gr...@apache.org>
Authored: Mon Nov 2 08:42:05 2015 -0800
Committer: George Reyes <gr...@apache.org>
Committed: Mon Nov 2 08:42:05 2015 -0800
----------------------------------------------------------------------
.../usergrid/tools/CollectionUserFix.java | 131 ++++++++++---------
1 file changed, 70 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/b44e537d/stack/tools/src/main/java/org/apache/usergrid/tools/CollectionUserFix.java
----------------------------------------------------------------------
diff --git a/stack/tools/src/main/java/org/apache/usergrid/tools/CollectionUserFix.java b/stack/tools/src/main/java/org/apache/usergrid/tools/CollectionUserFix.java
index 829487a..2e66858 100644
--- a/stack/tools/src/main/java/org/apache/usergrid/tools/CollectionUserFix.java
+++ b/stack/tools/src/main/java/org/apache/usergrid/tools/CollectionUserFix.java
@@ -55,7 +55,7 @@ import com.google.common.collect.Multimap;
* user shows up there. If you see that then run this tool.
*/
public class CollectionUserFix extends ExportingToolBase {
- private static final int PAGE_SIZE = 100;
+ private static final int PAGE_SIZE = 1000;
private static final Logger logger = LoggerFactory.getLogger( CollectionUserFix.class );
@@ -159,12 +159,12 @@ public class CollectionUserFix extends ExportingToolBase {
query.setLimit( PAGE_SIZE );
Results r = null;
EntityManager em = null;
+ int numberOfUsers = 0;
for ( Application application : app ) {
//This will hold all of the applications users. This will be stored in memory to do a simple check to see if
//there are any duped usernames in the collection.
//Memory concerns means that
- Multimap<String, UUID> usernames = HashMultimap.create();
//This means that we need to set it for each and every single application thus it gets set here instead of
//the method that calls us.
@@ -176,10 +176,12 @@ public class CollectionUserFix extends ExportingToolBase {
}
do {
+ Multimap<String, UUID> usernames = HashMultimap.create();
//get all users in the management app and page for each set of a PAGE_SIZE
r = em.searchCollection( application, "users", query );
- System.out.println("found "+r.size()+" number of entities");
+ numberOfUsers+=r.size();
+ System.out.println("found "+numberOfUsers+" users");
for ( Entity entity : r.getEntities() ) {
//grab all usernames returned.
@@ -188,68 +190,75 @@ public class CollectionUserFix extends ExportingToolBase {
query.setCursor( r.getCursor() );
- logger.info( "Searching next page" );
- System.out.println("Searching next page");
- }
- while ( r != null && r.size() == PAGE_SIZE );
+ System.out.println("Starting username crawl of "+usernames.size()+" number of usernames");
+ usernameVerificationFix( em, usernames );
+
- System.out.println("Starting username crawl of "+usernames.size()+" number of usernames");
+ }
+ while ( r != null && r.size() >0);
+ System.out.println("Repair Complete");
//do a get on a specific username, if it shows up more than once then remove it
- for ( String username : usernames.keySet() ) {
- Collection<UUID> ids = usernames.get( username );
+ }
+ }
- if ( ids.size() > 1 ) {
- logger.info( "Found multiple users with the username {}", username );
- System.out.println( "Found multiple users with the username: " + username );
- }
- //UserInfo targetUser = managementService.getAdminUserByEmail( email );
- Identifier identifier = new Identifier();
- EntityRef targetUser = em.getUserByIdentifier( identifier.fromName( username ) );
-
-
- if ( targetUser == null ) {
- //This means that the username isn't properly associated with targetUser
- List<UUID> tempIds = new ArrayList<UUID>( ids );
- //Collections.sort( tempIds );
-
- UUID toLoad = tempIds.get( 0 );
-
- logger.warn( "Could not load target user by username {}, loading by UUID {} instead", username, toLoad );
- System.out.println( "Could not load the target user by username: " + username
- + ". Loading by the following uuid instead: " + toLoad.toString() );
-
- User targetUserEntity = null;
- try {
- targetUserEntity = em.get( toLoad, User.class );
- }catch(Exception e){
- System.out.println("The follow uuid has no data in this cassandra node: "+toLoad.toString());
- throw e;
- }
-
-
- try {
- if ( targetUserEntity != null&& targetUserEntity.getUuid().equals( toLoad )) {
- System.out.println("Updating uuid: "+targetUserEntity.getUuid().toString());
- em.update( targetUserEntity );
- }
- }
- catch ( DuplicateUniquePropertyExistsException dup ) {
- System.out.println( "Found duplicate unique property: " + dup.getPropertyName() + ". "
- + "Duplicate property is: "
- + dup.getPropertyValue() );
- //if there are duplicate unique properties then
- if ( dup.getPropertyName().equals( "username" ) ) {
- System.out.println("can I replace this with a different value since these are duplicated in the code base");
- //targetUserEntity.setUsername( targetUserEntity.getUsername() );
- }
- //else throw dup;
- }
- catch (Exception e){
- System.out.println("There was an issue with updating: "+e.getMessage());
- }
- }
- }
+ private void usernameVerificationFix( final EntityManager em, final Multimap<String, UUID> usernames )
+ throws Exception {
+ Identifier identifier = new Identifier();
+ for ( String username : usernames.keySet() ) {
+ // Collection<UUID> ids = usernames.get( username );
+
+// if ( ids.size() > 1 ) {
+// logger.info( "Found multiple users with the username {}", username );
+// System.out.println( "Found multiple users with the username: " + username );
+// }
+
+ //UserInfo targetUser = managementService.getAdminUserByEmail( email );
+ em.getUserByIdentifier( identifier.fromName( username ) );
+
+
+
+// if ( targetUser == null ) {
+// //This means that the username isn't properly associated with targetUser
+// List<UUID> tempIds = new ArrayList<UUID>( ids );
+// //Collections.sort( tempIds );
+//
+// UUID toLoad = tempIds.get( 0 );
+//
+// logger.warn( "Could not load target user by username {}, loading by UUID {} instead", username, toLoad );
+// System.out.println( "Could not load the target user by username: " + username
+// + ". Loading by the following uuid instead: " + toLoad.toString() );
+//
+// User targetUserEntity = null;
+// try {
+// targetUserEntity = em.get( toLoad, User.class );
+// }catch(Exception e){
+// System.out.println("The follow uuid has no data in this cassandra node: "+toLoad.toString());
+// throw e;
+// }
+//
+//
+// try {
+// if ( targetUserEntity != null&& targetUserEntity.getUuid().equals( toLoad )) {
+// System.out.println("Updating uuid: "+targetUserEntity.getUuid().toString());
+// em.update( targetUserEntity );
+// }
+// }
+// catch ( DuplicateUniquePropertyExistsException dup ) {
+// System.out.println( "Found duplicate unique property: " + dup.getPropertyName() + ". "
+// + "Duplicate property is: "
+// + dup.getPropertyValue() );
+// //if there are duplicate unique properties then
+// if ( dup.getPropertyName().equals( "username" ) ) {
+// System.out.println("can I replace this with a different value since these are duplicated in the code base");
+// //targetUserEntity.setUsername( targetUserEntity.getUsername() );
+// }
+// //else throw dup;
+// }
+// catch (Exception e){
+// System.out.println("There was an issue with updating: "+e.getMessage());
+// }
+// }
}
}
}