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

[16/50] incubator-usergrid git commit: Need to look for old appinfos in the (old and now deprecated) Sytem App, not the Management App.

Need to look for old appinfos in the (old and now deprecated) Sytem App, not the Management App.


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

Branch: refs/heads/USERGRID-509
Commit: f4f17d68d350d15565e9eccdfeb745cf27eeb96b
Parents: 50cb3bf
Author: Dave Johnson <dm...@apigee.com>
Authored: Fri Mar 13 09:59:38 2015 -0400
Committer: Dave Johnson <dm...@apigee.com>
Committed: Fri Mar 13 09:59:38 2015 -0400

----------------------------------------------------------------------
 .../migration/AppInfoMigrationPlugin.java       | 11 ++++---
 .../corepersistence/util/CpNamingUtils.java     |  4 +++
 .../org/apache/usergrid/ServiceITSetup.java     |  3 ++
 .../org/apache/usergrid/ServiceITSetupImpl.java | 34 ++++++++++++++------
 .../migration/AppInfoMigrationPluginTest.java   | 24 ++++++++------
 .../src/test/resources/log4j.properties         |  6 ++--
 .../setup/ConcurrentProcessSingleton.java       | 20 ++++++++----
 7 files changed, 71 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f4f17d68/stack/core/src/main/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPlugin.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPlugin.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPlugin.java
index 59fafd5..3d386d9 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPlugin.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPlugin.java
@@ -52,7 +52,7 @@ public class AppInfoMigrationPlugin implements MigrationPlugin {
     public static String PLUGIN_NAME = "appinfo-migration";
 
     @Inject
-    private MigrationInfoSerialization migrationInfoSerialization;
+    protected MigrationInfoSerialization migrationInfoSerialization;
 
     @Inject
     protected EntityManagerFactory emf; // protected for test purposes only
@@ -74,12 +74,13 @@ public class AppInfoMigrationPlugin implements MigrationPlugin {
 
         observer.start();
 
-        EntityManager em = emf.getEntityManager( CpNamingUtils.MANAGEMENT_APPLICATION_ID);
+        // Search the old and now deprecated System App for appinfo entities
 
+        EntityManager systemAppEm = emf.getEntityManager( CpNamingUtils.SYSTEM_APP_ID );
         Query q = Query.fromQL("select *");
         Results results;
         try {
-            results = em.searchCollection(em.getApplicationRef(), "appinfos", q);
+            results = systemAppEm.searchCollection(systemAppEm.getApplicationRef(), "appinfos", q);
         } catch (Exception e) {
             logger.error("Error reading old appinfos collection, not migrating", e);
             return;
@@ -87,10 +88,10 @@ public class AppInfoMigrationPlugin implements MigrationPlugin {
 
         if ( !results.isEmpty() ) {
 
-            // applications still found in old appinfos collection, migrate them.
+            // we found appinfos, let's migrate them to application_infos in the Management App
 
+            EntityManager em = emf.getEntityManager( emf.getManagementAppId());
             String currentAppName = null;
-
             try {
                 logger.info("Migrating old appinfos");
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f4f17d68/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
index 356367b..7fa6bea 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/util/CpNamingUtils.java
@@ -49,6 +49,10 @@ public class CpNamingUtils {
     public static final  UUID MANAGEMENT_APPLICATION_ID =
             UUID.fromString("b6768a08-b5d5-11e3-a495-11ddb1de66c8");
 
+    /** Old and deprecated SYSTEM_APP */
+    public static final UUID SYSTEM_APP_ID =
+        UUID.fromString("b6768a08-b5d5-11e3-a495-10ddb1de66c3");
+
     /**
      * Information about applications is stored in the management app using these types
      */

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f4f17d68/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java b/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java
index 2a04c52..b4d43b4 100644
--- a/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java
+++ b/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java
@@ -17,6 +17,7 @@
 package org.apache.usergrid;
 
 
+import org.apache.usergrid.corepersistence.migration.AppInfoMigrationPlugin;
 import org.apache.usergrid.management.ApplicationCreator;
 import org.apache.usergrid.management.ManagementService;
 import org.apache.usergrid.management.export.ExportService;
@@ -63,4 +64,6 @@ public interface ServiceITSetup extends CoreITSetup {
     String get( String key );
 
     SignInProviderFactory getProviderFactory();
+
+    AppInfoMigrationPlugin getAppInfoMigrationPlugin();
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f4f17d68/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java b/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java
index cb7040b..04f1e49 100644
--- a/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java
+++ b/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java
@@ -19,6 +19,8 @@ package org.apache.usergrid;
 
 import java.util.Properties;
 
+import org.apache.usergrid.corepersistence.GuiceFactory;
+import org.apache.usergrid.corepersistence.migration.AppInfoMigrationPlugin;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
 import org.slf4j.Logger;
@@ -45,7 +47,7 @@ import java.util.Properties;
 
 /** A {@link org.junit.rules.TestRule} that sets up services. */
 public class ServiceITSetupImpl extends CoreITSetupImpl implements ServiceITSetup {
-    private static final Logger LOG = LoggerFactory.getLogger( ServiceITSetupImpl.class );
+    private static final Logger logger = LoggerFactory.getLogger( ServiceITSetupImpl.class );
 
     private ServiceManagerFactory smf;
     private ManagementService managementService;
@@ -55,18 +57,27 @@ public class ServiceITSetupImpl extends CoreITSetupImpl implements ServiceITSetu
     private Properties properties;
     private ExportService exportService;
     private ImportService importService;
+    private AppInfoMigrationPlugin appInfoMigrationPlugin;
 
 
     public ServiceITSetupImpl() {
         super();
-        managementService = springResource.getBean( ManagementService.class );
+
+        managementService =  springResource.getBean( ManagementService.class );
         applicationCreator = springResource.getBean( ApplicationCreator.class );
-        tokenService = springResource.getBean( TokenService.class );
-        providerFactory = springResource.getBean( SignInProviderFactory.class );
-        properties = springResource.getBean( "properties", Properties.class );
-        smf = springResource.getBean( ServiceManagerFactory.class );
-        exportService = springResource.getBean( ExportService.class );
-        importService = springResource.getBean( ImportService.class );
+        tokenService =       springResource.getBean( TokenService.class );
+        providerFactory =    springResource.getBean( SignInProviderFactory.class );
+        properties =         springResource.getBean( "properties", Properties.class );
+        smf =                springResource.getBean( ServiceManagerFactory.class );
+        exportService =      springResource.getBean( ExportService.class );
+        importService =      springResource.getBean( ImportService.class );
+
+        try {
+            appInfoMigrationPlugin = springResource.getBean(GuiceFactory.class)
+                .getObject().getInstance(AppInfoMigrationPlugin.class);
+        } catch ( Exception e ) {
+            logger.error("Unable to instantiate AppInfoMigrationPlugin", e);
+        }
 
         //set our security manager for shiro
         SecurityUtils.setSecurityManager(springResource.getBean( org.apache.shiro.mgt.SecurityManager.class ));
@@ -75,7 +86,7 @@ public class ServiceITSetupImpl extends CoreITSetupImpl implements ServiceITSetu
 
     protected void after( Description description ) {
         super.after( description );
-        LOG.info( "Test {}: finish with application", description.getDisplayName() );
+        logger.info( "Test {}: finish with application", description.getDisplayName() );
     }
 
 
@@ -163,4 +174,9 @@ public class ServiceITSetupImpl extends CoreITSetupImpl implements ServiceITSetu
     public SignInProviderFactory getProviderFactory() {
         return providerFactory;
     }
+
+    @Override
+    public AppInfoMigrationPlugin getAppInfoMigrationPlugin() {
+        return appInfoMigrationPlugin;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f4f17d68/stack/services/src/test/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPluginTest.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPluginTest.java b/stack/services/src/test/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPluginTest.java
index 30b7a3c..d0fa848 100644
--- a/stack/services/src/test/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPluginTest.java
+++ b/stack/services/src/test/java/org/apache/usergrid/corepersistence/migration/AppInfoMigrationPluginTest.java
@@ -23,8 +23,10 @@ import org.apache.usergrid.NewOrgAppAdminRule;
 import org.apache.usergrid.ServiceITSetup;
 import org.apache.usergrid.ServiceITSetupImpl;
 import org.apache.usergrid.cassandra.ClearShiroSubject;
+import org.apache.usergrid.corepersistence.util.CpNamingUtils;
 import org.apache.usergrid.management.OrganizationOwnerInfo;
 import org.apache.usergrid.persistence.*;
+import org.apache.usergrid.persistence.cassandra.CassandraService;
 import org.apache.usergrid.persistence.core.migration.data.ProgressObserver;
 import org.apache.usergrid.persistence.entities.Application;
 import org.apache.usergrid.persistence.index.query.Query;
@@ -35,11 +37,12 @@ import org.mockito.Mockito;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.UUID;
 
-import static org.apache.usergrid.TestHelper.uniqueEmail;
-import static org.apache.usergrid.TestHelper.uniqueOrg;
-import static org.apache.usergrid.TestHelper.uniqueUsername;
+import static org.apache.usergrid.TestHelper.*;
 import static org.junit.Assert.*;
 
 
@@ -100,6 +103,11 @@ public class AppInfoMigrationPluginTest {
 
         List<Entity> deletedApps = new ArrayList<>();
 
+        setup.getEmf().initializeApplicationV2(
+            CassandraService.DEFAULT_ORGANIZATION, CpNamingUtils.SYSTEM_APP_ID, "systemapp", null);
+
+        EntityManager systemAppEm = setup.getEmf().getEntityManager( CpNamingUtils.SYSTEM_APP_ID );
+
         int count = 0;
         for ( UUID appId : appIds ) {
 
@@ -108,7 +116,7 @@ public class AppInfoMigrationPluginTest {
             final String appName = applicationInfo.getName();
             final String finalOrgId = organization.getOrganization().getUuid().toString();
             final String finalAppId = applicationInfo.getProperty( Schema.PROPERTY_APPLICATION_ID ).toString();
-            rootEm.create("appinfo", new HashMap<String, Object>() {{
+            systemAppEm.create("appinfo", new HashMap<String, Object>() {{
                 put("name", appName );
                 put("organizationUuid", finalOrgId );
                 put("applicationUuid", finalAppId );
@@ -130,16 +138,14 @@ public class AppInfoMigrationPluginTest {
 
         // test that applications are now broken
 
-        checkApplicationsBroken( orgName, deletedApps );
+        checkApplicationsBroken(orgName, deletedApps);
 
         // run the migration, which should restore the application_info entities
 
         logger.debug("\n\nRun the migration\n");
 
         ProgressObserver po = Mockito.mock(ProgressObserver.class);
-        AppInfoMigrationPlugin plugin = new AppInfoMigrationPlugin();
-        plugin.emf = setup.getEmf();
-        plugin.run( po );
+        setup.getAppInfoMigrationPlugin().run(po);
 
         logger.debug("\n\nVerify migration results\n");
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f4f17d68/stack/services/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/stack/services/src/test/resources/log4j.properties b/stack/services/src/test/resources/log4j.properties
index e1c378f..07e2dde 100644
--- a/stack/services/src/test/resources/log4j.properties
+++ b/stack/services/src/test/resources/log4j.properties
@@ -26,7 +26,7 @@ log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=%d %p (%t) %c{1} - %m%n
 
-log4j.logger.org.apache.usergrid=WARN
+log4j.logger.org.apache.usergrid=INFO
 
 log4j.logger.org.apache.usergrid.persistence.cassandra.DB=WARN, stdout
 log4j.logger.org.apache.usergrid.persistence.cassandra.BATCH=WARN, stdout
@@ -55,10 +55,12 @@ log4j.logger.org.apache.usergrid.locking.singlenode.SingleNodeLockManagerImpl=DE
 #log4j.logger.org.apache.cassandra.service.StorageProxy=DEBUG, stdout
 
 #log4j.logger.org.apache.usergrid.corepersistence=DEBUG
-
 #log4j.logger.org.apache.usergrid.persistence.index=DEBUG
 #log4j.logger.org.apache.usergrid.batch=DEBUG
 #log4j.logger.org.apache.usergrid.management.export=DEBUG
 #log4j.logger.org.apache.usergrid.management.importer=DEBUG
 
+log4j.logger.org.apache.usergrid.corepersistence.migration=DEBUG
+log4j.logger.org.apache.usergrid.persistence.core.migration.data=DEBUG
+
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f4f17d68/stack/test-utils/src/main/java/org/apache/usergrid/setup/ConcurrentProcessSingleton.java
----------------------------------------------------------------------
diff --git a/stack/test-utils/src/main/java/org/apache/usergrid/setup/ConcurrentProcessSingleton.java b/stack/test-utils/src/main/java/org/apache/usergrid/setup/ConcurrentProcessSingleton.java
index e8c5ace..66e5d12 100644
--- a/stack/test-utils/src/main/java/org/apache/usergrid/setup/ConcurrentProcessSingleton.java
+++ b/stack/test-utils/src/main/java/org/apache/usergrid/setup/ConcurrentProcessSingleton.java
@@ -28,6 +28,9 @@ import org.apache.usergrid.cassandra.SpringResource;
 import org.apache.usergrid.lock.MultiProcessBarrier;
 import org.apache.usergrid.lock.MultiProcessLocalLock;
 
+import java.io.IOException;
+import java.util.concurrent.TimeoutException;
+
 
 /**
  * A singleton that starts cassandra and configures it once per JVM
@@ -75,6 +78,7 @@ public class ConcurrentProcessSingleton {
         try {
 
             logger.info( "Trying to get a lock to setup system" );
+
             //we have a lock, so init the system
             if ( lock.tryLock() ) {
 
@@ -96,18 +100,22 @@ public class ConcurrentProcessSingleton {
                 logger.info("Populating database");
                 schemaManager.populateBaseData();
 
-
                 //signal to other processes we've migrated, and they can proceed
                 barrier.proceed();
-            }
 
+                logger.info( "Waiting for setup to complete" );
+                barrier.await( ONE_MINUTE );
+                logger.info( "Setup to complete" );
 
-            logger.info( "Waiting for setup to complete" );
-            barrier.await( ONE_MINUTE );
-            logger.info( "Setup to complete" );
+                lock.maybeReleaseLock();
+
+            } else {
+                throw new RuntimeException( "Unable to initialize system: could not get lock."
+                    +" Some other process must be binding to port " + LOCK_PORT );
+            }
 
-            lock.maybeReleaseLock();
         }
+
         catch ( Exception e ) {
             throw new RuntimeException( "Unable to initialize system", e );
         }