Bug 1577: Gates access to Shard actor until its initialized
authorAbhishek Kumar <abhishk2@cisco.com>
Sat, 20 Sep 2014 08:19:11 +0000 (01:19 -0700)
committerAbhishek Kumar <abhishk2@cisco.com>
Fri, 26 Sep 2014 21:19:03 +0000 (14:19 -0700)
1. Shard manager creates Shard and mark them un-initialized.
   Shard completes recovery and onRecoveryComplete, sends a
   message to Shard manager to mark it initialized.
   If a request for Shard comes to Shard manager and the
   shard is not initialized, it sends ActorNotInitialized
   message.

2. Normalizes and refactors ActorContext.

3. Adds AbstractUntypedPersistentActorWithMetering to meter
   ShardManager.

Change-Id: Ibf15a2ef56422bda53067039d2271a719b6b2ce3
Signed-off-by: Abhishek Kumar <abhishk2@cisco.com>
java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActorWithMetering.java [new file with mode: 0644]

diff --git a/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActorWithMetering.java b/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActorWithMetering.java
new file mode 100644 (file)
index 0000000..365a5bd
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.cluster.common.actor;
+
+/**
+ * Actor with its behaviour metered. Metering is enabled by configuration.
+ */
+public abstract class AbstractUntypedPersistentActorWithMetering extends AbstractUntypedPersistentActor {
+
+    public AbstractUntypedPersistentActorWithMetering() {
+        if (isMetricsCaptureEnabled())
+            getContext().become(new MeteringBehavior(this));
+    }
+
+    private boolean isMetricsCaptureEnabled(){
+        CommonConfig config = new CommonConfig(getContext().system().settings().config());
+        return config.isMetricCaptureEnabled();
+    }
+}