SharedLog runtime proto

ONOS-1806, ONOS-1807, ONOS-1808

Change-Id: Ic86cb7bdc6b04a81180ab43afa01c1aea4ac18c7
diff --git a/conf/hazelcast.default.xml b/conf/hazelcast.default.xml
index 633f1a9..a05ff8c 100644
--- a/conf/hazelcast.default.xml
+++ b/conf/hazelcast.default.xml
@@ -29,6 +29,9 @@
         <data-serializable-factories>
             <data-serializable-factory factory-id="1">net.onrc.onos.core.datastore.hazelcast.VersionedValueSerializableFactory</data-serializable-factory>
         </data-serializable-factories>
+        <serializers>
+          <serializer type-class="net.onrc.onos.core.util.distributed.sharedlog.internal.LogValue">net.onrc.onos.core.util.distributed.sharedlog.hazelcast.LogValueSerializer</serializer>
+        </serializers>
     </serialization>
 
   <!-- Configuration of maps used as a data store. -->
@@ -41,6 +44,38 @@
     <!-- near cache must not be used -->
   </map>
 
+  <!-- Configuration of maps used as a log store. -->
+  <map name="logmap://*">
+    <!-- must use 'sync' backup to imitate other data store -->
+    <backup-count>3</backup-count>
+    <async-backup-count>0</async-backup-count>
+    <!-- can be true, since log map value is basically immutable -->
+    <read-backup-data>true</read-backup-data>
+    <!-- near cache can be enabled -->
+    <near-cache>
+      <!-- TODO revisit random params -->
+      <max-size>5000</max-size>
+      <time-to-live-seconds>300</time-to-live-seconds>
+      <eviction-policy>LRU</eviction-policy>
+    </near-cache>
+  </map>
+
+  <!-- Configuration of maps used as a snap shot store. -->
+  <map name="ssmap://*">
+    <!-- must use 'sync' backup to imitate other data store -->
+    <backup-count>3</backup-count>
+    <async-backup-count>0</async-backup-count>
+    <!-- can be true, since snap shot map value is basically immutable -->
+    <read-backup-data>true</read-backup-data>
+    <!-- near cache can be enabled -->
+    <near-cache>
+      <!-- TODO revisit random params -->
+      <max-size>10</max-size>
+      <time-to-live-seconds>300</time-to-live-seconds>
+      <eviction-policy>LRU</eviction-policy>
+    </near-cache>
+  </map>
+
   <map name="*">
 
     <!--
diff --git a/conf/template/hazelcast.xml.template b/conf/template/hazelcast.xml.template
index 6e511ef..d06addc 100644
--- a/conf/template/hazelcast.xml.template
+++ b/conf/template/hazelcast.xml.template
@@ -32,6 +32,9 @@
         <data-serializable-factories>
             <data-serializable-factory factory-id="1">net.onrc.onos.core.datastore.hazelcast.VersionedValueSerializableFactory</data-serializable-factory>
         </data-serializable-factories>
+        <serializers>
+          <serializer type-class="net.onrc.onos.core.util.distributed.sharedlog.internal.LogValue">net.onrc.onos.core.util.distributed.sharedlog.hazelcast.LogValueSerializer</serializer>
+        </serializers>
     </serialization>
 
   <!-- Configuration of maps used as a data store. -->
@@ -44,6 +47,38 @@
     <!-- near cache must not be used -->
   </map>
 
+  <!-- Configuration of maps used as a log store. -->
+  <map name="logmap://*">
+    <!-- must use 'sync' backup to imitate other data store -->
+    <backup-count>3</backup-count>
+    <async-backup-count>0</async-backup-count>
+    <!-- can be true, since log map value is basically immutable -->
+    <read-backup-data>true</read-backup-data>
+    <!-- near cache can be enabled -->
+    <near-cache>
+      <!-- TODO revisit random params -->
+      <max-size>5000</max-size>
+      <time-to-live-seconds>300</time-to-live-seconds>
+      <eviction-policy>LRU</eviction-policy>
+    </near-cache>
+  </map>
+
+  <!-- Configuration of maps used as a snap shot store. -->
+  <map name="ssmap://*">
+    <!-- must use 'sync' backup to imitate other data store -->
+    <backup-count>3</backup-count>
+    <async-backup-count>0</async-backup-count>
+    <!-- can be true, since snap shot map value is basically immutable -->
+    <read-backup-data>true</read-backup-data>
+    <!-- near cache can be enabled -->
+    <near-cache>
+      <!-- TODO revisit random params -->
+      <max-size>10</max-size>
+      <time-to-live-seconds>300</time-to-live-seconds>
+      <eviction-policy>LRU</eviction-policy>
+    </near-cache>
+  </map>
+
   <map name="*">
 
     <!--