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

[1/5] incubator-usergrid git commit: Fixes bugs in migration with edge existence checks

Repository: incubator-usergrid
Updated Branches:
  refs/heads/USERGRID-739 0a4939ba3 -> ee0edaedc


Fixes bugs in migration with edge existence checks

Fixes bug in test assertion for incorrect count

Fixes bug with indexing on adding to collection


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

Branch: refs/heads/USERGRID-739
Commit: c81d21c6bc89f25537155e9a0c33ab825b150600
Parents: daedb92
Author: Todd Nine <tn...@apigee.com>
Authored: Wed Jun 10 16:24:09 2015 -0600
Committer: Todd Nine <tn...@apigee.com>
Committed: Wed Jun 10 16:24:09 2015 -0600

----------------------------------------------------------------------
 .../corepersistence/CpRelationManager.java      | 28 ++++---------------
 .../migration/AppInfoMigrationPlugin.java       | 14 +++++-----
 .../migration/AppInfoMigrationPluginTest.java   | 29 +++++++++++++++++---
 3 files changed, 38 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c81d21c6/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
index 9e2c0bf..2445699 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
@@ -83,6 +83,7 @@ import rx.functions.Func1;
 
 import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createCollectionEdge;
 import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createCollectionSearchEdge;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createConnectionEdge;
 import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createConnectionSearchByEdge;
 import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createSearchEdgeFromSource;
 import static org.apache.usergrid.corepersistence.util.CpNamingUtils.generateScopeFromSource;
@@ -688,33 +689,16 @@ public class CpRelationManager implements RelationManager {
             } );
         }
 
-        Id entityId = new SimpleId( connectedEntityRef.getUuid(), connectedEntityRef.getType() );
-        org.apache.usergrid.persistence.model.entity.Entity targetEntity = ( ( CpEntityManager ) em ).load( entityId );
-
-        String edgeType = CpNamingUtils.getEdgeTypeFromConnectionType( connectionType );
+        final Id entityId = new SimpleId( connectedEntityRef.getUuid(), connectedEntityRef.getType() );
+        final org.apache.usergrid.persistence.model.entity.Entity targetEntity = ( ( CpEntityManager ) em ).load( entityId );
 
         // create graph edge connection from head entity to member entity
-        Edge edge = new SimpleEdge( cpHeadEntity.getId(), edgeType, targetEntity.getId(), System.currentTimeMillis() );
+        final Edge edge = createConnectionEdge( cpHeadEntity.getId(), connectionType, targetEntity.getId() );
 
-        GraphManager gm = managerCache.getGraphManager( applicationScope );
+        final GraphManager gm = managerCache.getGraphManager( applicationScope );
         gm.writeEdge( edge ).toBlocking().last();
 
-        EntityIndex ei = managerCache.getEntityIndex( applicationScope );
-        EntityIndexBatch batch = ei.createBatch();
-
-        // Index the new connection in app|source|type context
-        IndexEdge edgeIndex = generateScopeFromSource( edge );
-
-        batch.index( edgeIndex, targetEntity );
-
-        batch.execute();
-
-        // Index the new connection in app|scope|all-types context
-        //TODO REMOVE INDEX CODE
-        //        IndexScope allTypesIndexScope = new IndexScopeImpl( cpHeadEntity.getId(), CpNamingUtils.ALL_TYPES,
-        // entityType );
-        //        batch.index( allTypesIndexScope, targetEntity );
-
+        indexService.queueNewEdge( applicationScope, targetEntity, edge );
 
         return connection;
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c81d21c6/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 97b87b3..8f18ba3 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
@@ -36,6 +36,7 @@ import org.apache.usergrid.persistence.graph.Edge;
 import org.apache.usergrid.persistence.graph.GraphManager;
 import org.apache.usergrid.persistence.graph.GraphManagerFactory;
 import org.apache.usergrid.persistence.graph.SearchByEdgeType;
+import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdge;
 import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdgeType;
 import org.apache.usergrid.persistence.model.entity.*;
 import org.apache.usergrid.utils.UUIDUtils;
@@ -211,7 +212,7 @@ public class AppInfoMigrationPlugin implements MigrationPlugin {
         final ApplicationScope managementAppScope = getApplicationScope(CpNamingUtils.MANAGEMENT_APPLICATION_ID);
         final EntityCollectionManager managementCollectionManager = entityCollectionManagerFactory.createCollectionManager(managementAppScope);
 
-        Observable<Edge> edgesObservable = getApplicationInfoEdges();
+        Observable<Edge> edgesObservable = getApplicationInfoEdges(appId);
         //get the graph for all app infos
         Observable<org.apache.usergrid.persistence.model.entity.Entity> entityObs =
                 edgesObservable.flatMap(edge -> {
@@ -275,18 +276,17 @@ public class AppInfoMigrationPlugin implements MigrationPlugin {
         return entityObs;
     }
 
-    Observable<Edge> edgesObservable;
-    public Observable<Edge> getApplicationInfoEdges() {
+    public Observable<Edge> getApplicationInfoEdges(final UUID applicationId) {
         final ApplicationScope managementAppScope = getApplicationScope(CpNamingUtils.MANAGEMENT_APPLICATION_ID);
         final GraphManager gm = graphManagerFactory.createEdgeManager(managementAppScope);
 
         String edgeType = CpNamingUtils.getEdgeTypeFromCollectionName(CpNamingUtils.APPLICATION_INFOS);
 
 
-        final SimpleSearchByEdgeType simpleSearchByEdgeType =  new SimpleSearchByEdgeType(
-            CpNamingUtils.generateApplicationId(CpNamingUtils.MANAGEMENT_APPLICATION_ID), edgeType, Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING,
+        final SimpleSearchByEdge simpleSearchByEdgeType =  new SimpleSearchByEdge(
+            CpNamingUtils.generateApplicationId(CpNamingUtils.MANAGEMENT_APPLICATION_ID), edgeType, CpNamingUtils.generateApplicationId( applicationId ), Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING,
             Optional.absent());
-        edgesObservable = edgesObservable !=null ? edgesObservable : gm.loadEdgesFromSource( simpleSearchByEdgeType );
-        return edgesObservable;
+
+        return gm.loadEdgeVersions(simpleSearchByEdgeType  );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c81d21c6/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 0fd1e52..f242318 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
@@ -31,8 +31,13 @@ import org.apache.usergrid.persistence.cassandra.CassandraService;
 import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
 import org.apache.usergrid.persistence.core.migration.data.MigrationInfoSerialization;
 import org.apache.usergrid.persistence.core.migration.data.ProgressObserver;
+import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
 import org.apache.usergrid.persistence.entities.Application;
+import org.apache.usergrid.persistence.graph.GraphManager;
 import org.apache.usergrid.persistence.graph.GraphManagerFactory;
+import org.apache.usergrid.persistence.graph.SearchByEdgeType;
+import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdgeType;
+
 import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
@@ -43,10 +48,16 @@ import rx.Observable;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.UUID;
 
 import static org.apache.usergrid.TestHelper.*;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createCollectionSearchEdge;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.generateApplicationId;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getApplicationScope;
+import static org.apache.usergrid.corepersistence.util.CpNamingUtils.getEdgeTypeFromCollectionName;
 import static org.junit.Assert.*;
 
 
@@ -86,6 +97,9 @@ public class AppInfoMigrationPluginTest {
 
         List<UUID> appIds = new ArrayList<>();
 
+        /***
+         * Create all 10 apps in the new format
+         */
         for ( int i=0; i<10; i++ ) {
 
             UUID appId = setup.getMgmtSvc().createApplication(
@@ -121,6 +135,11 @@ public class AppInfoMigrationPluginTest {
         EntityManager systemAppEm = setup.getEmf().getEntityManager( CpNamingUtils.SYSTEM_APP_ID );
 
         int count = 0;
+
+        /**
+         * Now to ensure the process is idempotent, we "move" half of our app infos into the old system and remove them.
+         * Once they're migrated, we should get all 10
+         */
         for ( UUID appId : appIds ) {
 
             final Entity applicationInfo = getApplicationInfo( appId );
@@ -151,7 +170,7 @@ public class AppInfoMigrationPluginTest {
 
         // test that applications are now broken
 
-        checkApplicationsBroken(orgName, deletedApps);
+        checkApplicationsBroken(deletedApps);
 
         // run the migration, which should restore the application_info entities
 
@@ -173,15 +192,17 @@ public class AppInfoMigrationPluginTest {
 
         final Results applicationInfoResults =  rootEm.searchCollection(
             new SimpleEntityRef("application", mgmtAppId), "application_infos", Query.fromQL("select *"));
-        int appCount =  Observable.from(applicationInfoResults.getEntities()).filter(entity -> !entity.getName().startsWith("org.") && !entity.getName().startsWith("usergrid")).toList().toBlocking().last().size();
-        assertEquals( appIds.size() - deletedApps.size(),appCount );
+        int appCount =  Observable.from( applicationInfoResults.getEntities() ).filter(
+            entity -> !entity.getName().startsWith( "org." ) && !entity.getName().startsWith( "usergrid" ) ).doOnNext(
+            entity -> logger.info("counting entity {}", entity) ).count().toBlocking().last();
+        assertEquals( appIds.size() ,appCount );
 
         // test that 10 applications are no longer broken
 
         checkApplicationsOk( orgName );
     }
 
-    private void checkApplicationsBroken( String orgName, List<Entity> deletedApps ) throws Exception {
+    private void checkApplicationsBroken( List<Entity> deletedApps ) throws Exception {
 
         logger.debug("\n\nChecking applications broken\n");
 


[3/5] incubator-usergrid git commit: change optional return

Posted by sf...@apache.org.
change optional return


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

Branch: refs/heads/USERGRID-739
Commit: 412254a50ce34dc0b469650ffc2b4322e219c0cc
Parents: 0a4939b
Author: Shawn Feldman <sf...@apache.org>
Authored: Wed Jun 10 16:46:15 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Wed Jun 10 16:46:15 2015 -0600

----------------------------------------------------------------------
 .../apache/usergrid/corepersistence/ApplicationIdCacheImpl.java | 1 +
 .../apache/usergrid/rest/applications/ApplicationDeleteIT.java  | 5 +++--
 .../usergrid/rest/applications/assets/AssetResourceIT.java      | 1 +
 3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/412254a5/stack/core/src/main/java/org/apache/usergrid/corepersistence/ApplicationIdCacheImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/ApplicationIdCacheImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/ApplicationIdCacheImpl.java
index f4b5a9a..3563469 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/ApplicationIdCacheImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/ApplicationIdCacheImpl.java
@@ -81,6 +81,7 @@ public class ApplicationIdCacheImpl implements ApplicationIdCache {
             Optional<UUID> optionalUuid = appCache.get( applicationName.toLowerCase() );
             if(!optionalUuid.isPresent()){
                 appCache.invalidate(applicationName.toLowerCase());
+                return Optional.absent();
             }
             logger.debug("Returning for key {} value {}", applicationName, optionalUuid );
             return optionalUuid;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/412254a5/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationDeleteIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationDeleteIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationDeleteIT.java
index bbe7cb8..786ab7d 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationDeleteIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationDeleteIT.java
@@ -210,7 +210,8 @@ public class ApplicationDeleteIT extends AbstractRestIT {
             .queryParam("app_delete_confirm", "confirm_delete_of_application_and_data")
             .delete();
 
-        Thread.sleep(INDEXING_WAIT);
+        refreshIndex();
+
 
         // restore the app
 
@@ -221,7 +222,7 @@ public class ApplicationDeleteIT extends AbstractRestIT {
             .queryParam("access_token", orgAdminToken.getAccessToken() )
             .put();
 
-        Thread.sleep(INDEXING_WAIT);
+        refreshIndex();
 
         // test that we can see the application in the list of applications
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/412254a5/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java
index 8e371a5..064067b 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java
@@ -81,6 +81,7 @@ public class AssetResourceIT extends AbstractRestIT {
         resource().path( orgAppPath + "/assets/" + id.toString() + "/data" )
                 .queryParam( "access_token", access_token ).type( MediaType.APPLICATION_OCTET_STREAM_TYPE ).put( data );
 
+        refreshIndex();
         InputStream is = resource().path( orgAppPath + "/assets/" + id.toString() + "/data" )
                 .queryParam( "access_token", access_token ).get( InputStream.class );
 


[5/5] incubator-usergrid git commit: Merge branch 'two-dot-o-dev' of https://git-wip-us.apache.org/repos/asf/incubator-usergrid into USERGRID-739

Posted by sf...@apache.org.
Merge branch 'two-dot-o-dev' of https://git-wip-us.apache.org/repos/asf/incubator-usergrid into USERGRID-739


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

Branch: refs/heads/USERGRID-739
Commit: ee0edaedce80a8cd9ebc889dbfbf44414f807b3d
Parents: bb865eb c93a0fc
Author: Shawn Feldman <sf...@apache.org>
Authored: Wed Jun 10 17:33:08 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Wed Jun 10 17:33:08 2015 -0600

----------------------------------------------------------------------
 .../corepersistence/CpRelationManager.java      | 28 ++++---------------
 .../migration/AppInfoMigrationPlugin.java       | 14 +++++-----
 .../migration/AppInfoMigrationPluginTest.java   | 29 +++++++++++++++++---
 3 files changed, 38 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ee0edaed/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
----------------------------------------------------------------------


[4/5] incubator-usergrid git commit: fix edge deletes

Posted by sf...@apache.org.
fix edge deletes


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

Branch: refs/heads/USERGRID-739
Commit: bb865eb61ace6b54a7475f2f6bc421c0f083ea04
Parents: 412254a
Author: Shawn Feldman <sf...@apache.org>
Authored: Wed Jun 10 17:32:57 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Wed Jun 10 17:32:57 2015 -0600

----------------------------------------------------------------------
 .../corepersistence/CpRelationManager.java      | 23 ++++++++++----------
 .../corepersistence/util/CpNamingUtils.java     | 12 ++++++++++
 2 files changed, 24 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bb865eb6/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
index 9e2c0bf..ca98685 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
@@ -259,16 +259,15 @@ public class CpRelationManager implements RelationManager {
 
         Id entityId = new SimpleId( entity.getUuid(), entity.getType() );
 
-        String edgeType = CpNamingUtils.getEdgeTypeFromConnectionType( connectionType );
 
         logger.debug( "isConnectionMember(): Checking for edge type {} from {}:{} to {}:{}", new Object[] {
-            edgeType, headEntity.getType(), headEntity.getUuid(), entity.getType(), entity.getUuid()
+            connectionType, headEntity.getType(), headEntity.getUuid(), entity.getType(), entity.getUuid()
         } );
 
         GraphManager gm = managerCache.getGraphManager( applicationScope );
         Observable<Edge> edges = gm.loadEdgeVersions(
-            new SimpleSearchByEdge( new SimpleId( headEntity.getUuid(), headEntity.getType() ), edgeType, entityId,
-                Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, Optional.absent() ) );
+           CpNamingUtils.createEdgeFromConnectionType(new SimpleId(headEntity.getUuid(), headEntity.getType()), connectionType, entityId)
+        );
 
         return edges.toBlocking().firstOrDefault( null ) != null;
     }
@@ -280,16 +279,15 @@ public class CpRelationManager implements RelationManager {
 
         Id entityId = new SimpleId( entity.getUuid(), entity.getType() );
 
-        String edgeType = CpNamingUtils.getEdgeTypeFromCollectionName( collectionName );
 
         logger.debug( "isCollectionMember(): Checking for edge type {} from {}:{} to {}:{}", new Object[] {
-            edgeType, headEntity.getType(), headEntity.getUuid(), entity.getType(), entity.getUuid()
+            collectionName, headEntity.getType(), headEntity.getUuid(), entity.getType(), entity.getUuid()
         } );
 
         GraphManager gm = managerCache.getGraphManager( applicationScope );
         Observable<Edge> edges = gm.loadEdgeVersions(
-            new SimpleSearchByEdge( new SimpleId( headEntity.getUuid(), headEntity.getType() ), edgeType, entityId,
-                Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, Optional.<Edge>absent() ) );
+            CpNamingUtils.createEdgeFromCollectionName(new SimpleId(headEntity.getUuid(), headEntity.getType()), collectionName, entityId)
+         );
 
         return edges.toBlocking().firstOrDefault( null ) != null;
     }
@@ -520,9 +518,12 @@ public class CpRelationManager implements RelationManager {
 
 
         //run our delete
-        final Edge collectionToItemEdge =
-            createCollectionEdge( cpHeadEntity.getId(), collectionName, memberEntity.getId() );
-        gm.markEdge( collectionToItemEdge ).toBlocking().last();
+        gm.loadEdgeVersions(
+               CpNamingUtils.createEdgeFromCollectionName(cpHeadEntity.getId(), collectionName, memberEntity.getId())
+            )
+            .flatMap(edge -> gm.markEdge(edge))
+            .flatMap(edge -> gm.deleteEdge(edge))
+            .toBlocking().lastOrDefault(null);
 
 
         /**

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bb865eb6/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 24fdbab..41631b3 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
@@ -161,6 +161,18 @@ public class CpNamingUtils {
         return new SearchEdgeImpl( edge.getTargetNode(), edge.getType(), SearchEdge.NodeType.SOURCE );
     }
 
+    public static SearchByEdge createEdgeFromCollectionName(Id source, String connectionName, Id target) {
+        final String edgeType = CpNamingUtils.getEdgeTypeFromCollectionName(connectionName);
+
+        return new SimpleSearchByEdge(source, edgeType, target, Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, Optional.<Edge>absent());
+    }
+
+    public static SearchByEdge createEdgeFromConnectionType(Id source, String connectionType, Id target) {
+        final String edgeType = CpNamingUtils.getEdgeTypeFromConnectionType(connectionType);
+
+        return new SimpleSearchByEdge(source, edgeType, target, Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, Optional.<Edge>absent());
+    }
+
 
     /**
      * TODO move sourceId to ApplicationScope


[2/5] incubator-usergrid git commit: Merge commit 'c81d21c6bc89f25537155e9a0c33ab825b150600' into two-dot-o-dev

Posted by sf...@apache.org.
Merge commit 'c81d21c6bc89f25537155e9a0c33ab825b150600' into two-dot-o-dev

* commit 'c81d21c6bc89f25537155e9a0c33ab825b150600':
  Fixes bugs in migration with edge existence checks


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

Branch: refs/heads/USERGRID-739
Commit: c93a0fcc0bd9bc762fb6f699405b35b1f2d25cfe
Parents: d66402d c81d21c
Author: GERey <gr...@apigee.com>
Authored: Wed Jun 10 15:29:24 2015 -0700
Committer: GERey <gr...@apigee.com>
Committed: Wed Jun 10 15:29:24 2015 -0700

----------------------------------------------------------------------
 .../corepersistence/CpRelationManager.java      | 28 ++++---------------
 .../migration/AppInfoMigrationPlugin.java       | 14 +++++-----
 .../migration/AppInfoMigrationPluginTest.java   | 29 +++++++++++++++++---
 3 files changed, 38 insertions(+), 33 deletions(-)
----------------------------------------------------------------------