Ensure that injector is not used in Akka constructors to avoid "cannot serialize injector" errors
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/d2153285 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/d2153285 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/d2153285 Branch: refs/heads/master Commit: d2153285dae4c9257f3b62ab533186f31f770926 Parents: fe08fa7 Author: Dave Johnson <[email protected]> Authored: Wed Oct 5 17:41:26 2016 -0400 Committer: Dave Johnson <[email protected]> Committed: Wed Oct 5 17:41:26 2016 -0400 ---------------------------------------------------------------------- .../persistence/actorsystem/GuiceActorProducer.java | 8 ++++---- .../uniquevalues/UniqueValuesServiceImpl.java | 2 +- .../distributed/actors/QueueTimeouterTest.java | 16 +++++++++------- .../distributed/actors/ShardAllocatorTest.java | 4 ++-- 4 files changed, 16 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/d2153285/stack/corepersistence/actorsystem/src/main/java/org/apache/usergrid/persistence/actorsystem/GuiceActorProducer.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/actorsystem/src/main/java/org/apache/usergrid/persistence/actorsystem/GuiceActorProducer.java b/stack/corepersistence/actorsystem/src/main/java/org/apache/usergrid/persistence/actorsystem/GuiceActorProducer.java index 9304c4c..d73f760 100644 --- a/stack/corepersistence/actorsystem/src/main/java/org/apache/usergrid/persistence/actorsystem/GuiceActorProducer.java +++ b/stack/corepersistence/actorsystem/src/main/java/org/apache/usergrid/persistence/actorsystem/GuiceActorProducer.java @@ -25,11 +25,11 @@ import com.google.inject.Injector; public class GuiceActorProducer implements IndirectActorProducer { - final Injector injector; + public static Injector INJECTOR = null; + final Class<? extends Actor> actorClass; - public GuiceActorProducer(Injector injector, Class<? extends Actor> actorClass) { - this.injector = injector; + public GuiceActorProducer(Class<? extends Actor> actorClass) { this.actorClass = actorClass; } @@ -40,7 +40,7 @@ public class GuiceActorProducer implements IndirectActorProducer { @Override public Actor produce() { - return injector.getInstance( actorClass ); + return INJECTOR.getInstance( actorClass ); } } http://git-wip-us.apache.org/repos/asf/usergrid/blob/d2153285/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceImpl.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceImpl.java index 8bdb02c..08de853 100644 --- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceImpl.java +++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceImpl.java @@ -292,7 +292,7 @@ public class UniqueValuesServiceImpl implements UniqueValuesService { ClusterSingletonManagerSettings.create( system ).withRole("io"); system.actorOf( ClusterSingletonManager.props( - Props.create( GuiceActorProducer.class, injector, UniqueValuesRouter.class ), + Props.create( GuiceActorProducer.class, UniqueValuesRouter.class ), PoisonPill.getInstance(), settings ), "uvRouter" ); ClusterSingletonProxySettings proxySettings = http://git-wip-us.apache.org/repos/asf/usergrid/blob/d2153285/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/QueueTimeouterTest.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/QueueTimeouterTest.java b/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/QueueTimeouterTest.java index 3079773..3bf87a6 100644 --- a/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/QueueTimeouterTest.java +++ b/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/QueueTimeouterTest.java @@ -31,6 +31,7 @@ import org.apache.usergrid.persistence.qakka.App; import org.apache.usergrid.persistence.qakka.QakkaFig; import org.apache.usergrid.persistence.qakka.core.CassandraClient; import org.apache.usergrid.persistence.qakka.core.CassandraClientImpl; +import org.apache.usergrid.persistence.qakka.distributed.DistributedQueueService; import org.apache.usergrid.persistence.qakka.distributed.messages.QueueTimeoutRequest; import org.apache.usergrid.persistence.qakka.serialization.MultiShardMessageIterator; import org.apache.usergrid.persistence.qakka.serialization.sharding.Shard; @@ -58,14 +59,15 @@ public class QueueTimeouterTest extends AbstractTest { @Test public void testBasicOperation() throws Exception { - CassandraClient cassandraClient = getInjector().getInstance( CassandraClientImpl.class ); - Injector injector = getInjector(); - QakkaFig qakkaFig = getInjector().getInstance( QakkaFig.class ); - ActorSystemFig actorSystemFig = getInjector().getInstance( ActorSystemFig.class ); - QueueMessageSerialization qms = getInjector().getInstance( QueueMessageSerialization.class ); - ShardSerialization shardSerialization = getInjector().getInstance( ShardSerialization.class ); + injector.getInstance( DistributedQueueService.class ); // init the INJECTOR + + CassandraClient cassandraClient = injector.getInstance( CassandraClientImpl.class ); + QakkaFig qakkaFig = injector.getInstance( QakkaFig.class ); + ActorSystemFig actorSystemFig = injector.getInstance( ActorSystemFig.class ); + QueueMessageSerialization qms = injector.getInstance( QueueMessageSerialization.class ); + ShardSerialization shardSerialization = injector.getInstance( ShardSerialization.class ); // create records in inflight table, with some being old enough to time out @@ -113,7 +115,7 @@ public class QueueTimeouterTest extends AbstractTest { ActorSystem system = ActorSystem.create("Test-" + queueName); ActorRef timeouterRef = system.actorOf( Props.create( - GuiceActorProducer.class, injector, QueueTimeouter.class), "timeouter"); + GuiceActorProducer.class, QueueTimeouter.class), "timeouter"); QueueTimeoutRequest qtr = new QueueTimeoutRequest( queueName ); timeouterRef.tell( qtr, null ); // tell sends message, returns immediately http://git-wip-us.apache.org/repos/asf/usergrid/blob/d2153285/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/ShardAllocatorTest.java ---------------------------------------------------------------------- diff --git a/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/ShardAllocatorTest.java b/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/ShardAllocatorTest.java index c6831b7..919673c 100644 --- a/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/ShardAllocatorTest.java +++ b/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/qakka/distributed/actors/ShardAllocatorTest.java @@ -69,7 +69,7 @@ public class ShardAllocatorTest extends AbstractTest { CassandraClient cassandraClient = injector.getInstance( CassandraClientImpl.class ); - injector.getInstance( App.class ); // init the INJECTOR + injector.getInstance( DistributedQueueService.class ); // init the INJECTOR ShardSerialization shardSer = injector.getInstance( ShardSerialization.class ); QakkaFig qakkaFig = injector.getInstance( QakkaFig.class ); @@ -113,7 +113,7 @@ public class ShardAllocatorTest extends AbstractTest { ActorSystem system = ActorSystem.create("Test-" + queueName); ActorRef shardAllocRef = system.actorOf( Props.create( - GuiceActorProducer.class, injector, ShardAllocator.class), "shardallocator"); + GuiceActorProducer.class, ShardAllocator.class), "shardallocator"); ShardCheckRequest checkRequest = new ShardCheckRequest( queueName ); shardAllocRef.tell( checkRequest, null ); // tell sends message, returns immediately
