Fixed bugs in migration of apps
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/521fc03e Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/521fc03e Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/521fc03e Branch: refs/heads/USERGRID-933 Commit: 521fc03e556af47d110f0a7d98f2af215cb3fda1 Parents: 8281430 Author: Todd Nine <tn...@apigee.com> Authored: Thu Sep 24 11:07:24 2015 -0600 Committer: Todd Nine <tn...@apigee.com> Committed: Thu Sep 24 11:07:24 2015 -0600 ---------------------------------------------------------------------- .../management/AppInfoMigrationPlugin.java | 47 +++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/521fc03e/stack/services/src/main/java/org/apache/usergrid/management/AppInfoMigrationPlugin.java ---------------------------------------------------------------------- diff --git a/stack/services/src/main/java/org/apache/usergrid/management/AppInfoMigrationPlugin.java b/stack/services/src/main/java/org/apache/usergrid/management/AppInfoMigrationPlugin.java index 54779b9..d0f39e9 100644 --- a/stack/services/src/main/java/org/apache/usergrid/management/AppInfoMigrationPlugin.java +++ b/stack/services/src/main/java/org/apache/usergrid/management/AppInfoMigrationPlugin.java @@ -164,10 +164,18 @@ public class AppInfoMigrationPlugin implements MigrationPlugin { throw new RuntimeException( e ); } } - } ).doOnCompleted( () -> { - migrationInfoSerialization.setVersion( getName(), getMaxVersion() ); - observer.complete(); - } ).toBlocking().lastOrDefault( null ); + } ) + //we want a doOnError to catch something going wrong, otherwise we'll mark as complete + .doOnError( error -> { + logger.error( "Unable to migrate applications, an error occurred. Please try again", error ); + observer.failed( getMaxVersion(), "Unable to migrate applications", error ); + } ) + + //if we complete successfully, set the version and notify the observer + .doOnCompleted( () -> { + migrationInfoSerialization.setVersion( getName(), getMaxVersion() ); + observer.complete(); + } ).subscribe(); } @@ -186,28 +194,23 @@ public class AppInfoMigrationPlugin implements MigrationPlugin { UUID applicationId = getUuid( oldAppInfoMap, "applicationUuid" ); applicationId = applicationId == null ? getUuid( oldAppInfoMap, "appUuid" ) : applicationId; //get app info from graph to see if it has been migrated already - org.apache.usergrid.persistence.Entity appInfo = getApplicationInfo( applicationId ); - if ( appInfo == null ) { - observer.update( getMaxVersion(), "Created application_info for " + appName ); - // create org->app connections, but not for apps in dummy "usergrid" internal organization - if ( !orgName.equals( "usergrid" ) ) { //avoid management org - EntityRef orgRef = managementEm.getAlias( Group.ENTITY_TYPE, orgName ); - // create and connect new APPLICATION_INFO oldAppInfo to Organization - managementService.createApplication( orgRef.getUuid(), name, applicationId, null ); - } - } - else { - //already migrated don't do anything - observer.update( getMaxVersion(), - "Received existing application_info for " + appName + " don't do anything" ); - } + + // create org->app connections, but not for apps in dummy "usergrid" internal organization + //avoid management org + + EntityRef orgRef = managementEm.getAlias( Group.ENTITY_TYPE, orgName ); + // create and connect new APPLICATION_INFO oldAppInfo to Organization + managementService.createApplication( orgRef.getUuid(), name, applicationId, null ); + + observer.update( getMaxVersion(), "Created application_info for " + appName ); + } + //swallow + catch ( ApplicationAlreadyExistsException appExists ) { + logger.info( "Application {} already migrated. Ignoring.", name ); } catch ( Exception e ) { - String msg = "Exception writing application_info for " + name; - logger.error( msg, e ); - observer.failed( getMaxVersion(), msg ); throw new RuntimeException( e ); } }