Yuta HIGUCHI

Workarounds to startup DatabaseService

- shaded copycat
- switched Chronicle log to InMemory log until we fix the OSGi issue

Change-Id: Icf8ee8c18b518a8ee785924413681bdb61fc5037
...@@ -31,6 +31,10 @@ ...@@ -31,6 +31,10 @@
31 31
32 <description>ONOS Gossip based distributed store subsystems</description> 32 <description>ONOS Gossip based distributed store subsystems</description>
33 33
34 + <properties>
35 + <copycat.version>0.4.0-SNAPSHOT</copycat.version>
36 + </properties>
37 +
34 <dependencies> 38 <dependencies>
35 <dependency> 39 <dependency>
36 <groupId>org.onlab.onos</groupId> 40 <groupId>org.onlab.onos</groupId>
...@@ -43,24 +47,25 @@ ...@@ -43,24 +47,25 @@
43 <artifactId>onlab-netty</artifactId> 47 <artifactId>onlab-netty</artifactId>
44 <version>${project.version}</version> 48 <version>${project.version}</version>
45 </dependency> 49 </dependency>
46 - 50 +<!--
47 <dependency> 51 <dependency>
48 <groupId>net.kuujo.copycat</groupId> 52 <groupId>net.kuujo.copycat</groupId>
49 <artifactId>copycat</artifactId> 53 <artifactId>copycat</artifactId>
50 - <version>0.4.0-SNAPSHOT</version> 54 + <version>${copycat.version}</version>
51 </dependency> 55 </dependency>
52 56
53 <dependency> 57 <dependency>
54 <groupId>net.kuujo.copycat</groupId> 58 <groupId>net.kuujo.copycat</groupId>
55 <artifactId>copycat-chronicle</artifactId> 59 <artifactId>copycat-chronicle</artifactId>
56 - <version>0.4.0-SNAPSHOT</version> 60 + <version>${copycat.version}</version>
57 </dependency> 61 </dependency>
58 62
59 <dependency> 63 <dependency>
60 <groupId>net.kuujo.copycat</groupId> 64 <groupId>net.kuujo.copycat</groupId>
61 <artifactId>copycat-tcp</artifactId> 65 <artifactId>copycat-tcp</artifactId>
62 - <version>0.4.0-SNAPSHOT</version> 66 + <version>${copycat.version}</version>
63 </dependency> 67 </dependency>
68 +-->
64 69
65 <dependency> 70 <dependency>
66 <groupId>com.fasterxml.jackson.core</groupId> 71 <groupId>com.fasterxml.jackson.core</groupId>
...@@ -95,6 +100,12 @@ ...@@ -95,6 +100,12 @@
95 <groupId>com.hazelcast</groupId> 100 <groupId>com.hazelcast</groupId>
96 <artifactId>hazelcast</artifactId> 101 <artifactId>hazelcast</artifactId>
97 </dependency> 102 </dependency>
103 +
104 + <!-- for shaded copycat -->
105 + <dependency>
106 + <groupId>org.onlab.onos</groupId>
107 + <artifactId>onlab-thirdparty</artifactId>
108 + </dependency>
98 </dependencies> 109 </dependencies>
99 110
100 </project> 111 </project>
......
...@@ -64,7 +64,8 @@ import com.google.common.collect.ImmutableSet; ...@@ -64,7 +64,8 @@ import com.google.common.collect.ImmutableSet;
64 */ 64 */
65 @Component(immediate = true) 65 @Component(immediate = true)
66 @Service 66 @Service
67 -public class ClusterMessagingProtocol implements Protocol<TcpMember> { 67 +public class ClusterMessagingProtocol
68 + implements DatabaseProtocolService, Protocol<TcpMember> {
68 69
69 private final Logger log = getLogger(getClass()); 70 private final Logger log = getLogger(getClass());
70 71
......
...@@ -11,9 +11,8 @@ import net.kuujo.copycat.StateMachine; ...@@ -11,9 +11,8 @@ import net.kuujo.copycat.StateMachine;
11 import net.kuujo.copycat.cluster.TcpCluster; 11 import net.kuujo.copycat.cluster.TcpCluster;
12 import net.kuujo.copycat.cluster.TcpClusterConfig; 12 import net.kuujo.copycat.cluster.TcpClusterConfig;
13 import net.kuujo.copycat.cluster.TcpMember; 13 import net.kuujo.copycat.cluster.TcpMember;
14 -import net.kuujo.copycat.log.ChronicleLog; 14 +import net.kuujo.copycat.log.InMemoryLog;
15 import net.kuujo.copycat.log.Log; 15 import net.kuujo.copycat.log.Log;
16 -
17 import org.apache.felix.scr.annotations.Activate; 16 import org.apache.felix.scr.annotations.Activate;
18 import org.apache.felix.scr.annotations.Component; 17 import org.apache.felix.scr.annotations.Component;
19 import org.apache.felix.scr.annotations.Deactivate; 18 import org.apache.felix.scr.annotations.Deactivate;
...@@ -52,7 +51,7 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService { ...@@ -52,7 +51,7 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService {
52 protected ClusterService clusterService; 51 protected ClusterService clusterService;
53 52
54 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 53 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
55 - protected ClusterMessagingProtocol copycatMessagingProtocol; 54 + protected DatabaseProtocolService copycatMessagingProtocol;
56 55
57 public static final String LOG_FILE_PREFIX = "onos-copy-cat-log"; 56 public static final String LOG_FILE_PREFIX = "onos-copy-cat-log";
58 57
...@@ -61,6 +60,7 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService { ...@@ -61,6 +60,7 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService {
61 60
62 @Activate 61 @Activate
63 public void activate() { 62 public void activate() {
63 + log.info("Starting.");
64 64
65 // TODO: Not every node can be part of the consensus ring. 65 // TODO: Not every node can be part of the consensus ring.
66 66
...@@ -88,7 +88,9 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService { ...@@ -88,7 +88,9 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService {
88 88
89 StateMachine stateMachine = new DatabaseStateMachine(); 89 StateMachine stateMachine = new DatabaseStateMachine();
90 ControllerNode thisNode = clusterService.getLocalNode(); 90 ControllerNode thisNode = clusterService.getLocalNode();
91 - Log consensusLog = new ChronicleLog(LOG_FILE_PREFIX + "_" + thisNode.id()); 91 + // FIXME resolve Chronicle + OSGi issue
92 + //Log consensusLog = new ChronicleLog(LOG_FILE_PREFIX + "_" + thisNode.id());
93 + Log consensusLog = new InMemoryLog();
92 94
93 copycat = new Copycat(stateMachine, consensusLog, cluster, copycatMessagingProtocol); 95 copycat = new Copycat(stateMachine, consensusLog, cluster, copycatMessagingProtocol);
94 copycat.start(); 96 copycat.start();
......
1 +package org.onlab.onos.store.service.impl;
2 +
3 +import net.kuujo.copycat.cluster.TcpMember;
4 +import net.kuujo.copycat.spi.protocol.Protocol;
5 +
6 +// interface required for connecting DatabaseManager + ClusterMessagingProtocol
7 +// TODO: Consider changing ClusterMessagingProtocol to non-Service class
8 +public interface DatabaseProtocolService extends Protocol<TcpMember> {
9 +
10 +}
1 +/*
2 + * Copyright 2014 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +
1 /** 17 /**
2 * Distributed core state management services. 18 * Distributed core state management services.
3 */ 19 */
4 -package org.onlab.onos.store.service;
...\ No newline at end of file ...\ No newline at end of file
20 +package org.onlab.onos.store.service;
21 +
......
...@@ -56,9 +56,16 @@ ...@@ -56,9 +56,16 @@
56 <bundle>mvn:org.codehaus.jackson/jackson-mapper-asl/1.9.13</bundle> 56 <bundle>mvn:org.codehaus.jackson/jackson-mapper-asl/1.9.13</bundle>
57 57
58 <bundle>mvn:org.onlab.onos/onlab-thirdparty/1.0.0-SNAPSHOT</bundle> 58 <bundle>mvn:org.onlab.onos/onlab-thirdparty/1.0.0-SNAPSHOT</bundle>
59 - 59 +<!-- FIXME: resolce Chronicle's dependency issue
60 - <!-- FIXME fix the version before release --> 60 + <bundle>mvn:net.openhft/lang/6.4.6</bundle>
61 + <bundle>mvn:net.openhft/affinity/2.1.1</bundle>
62 + <bundle>mvn:net.openhft/chronicle/3.2.2</bundle>
63 +-->
64 +<!-- things used before shading copycat
61 <bundle>wrap:mvn:http://mavenrepo.onlab.us:8081/nexus/content/groups/public@id=onlab-temp!net.kuujo.copycat/copycat/0.4.0-SNAPSHOT$Bundle-SymbolicName=net.kuujo.copycat.copycat&amp;Bundle-Version=0.4.0.SNAPSHOT</bundle> 65 <bundle>wrap:mvn:http://mavenrepo.onlab.us:8081/nexus/content/groups/public@id=onlab-temp!net.kuujo.copycat/copycat/0.4.0-SNAPSHOT$Bundle-SymbolicName=net.kuujo.copycat.copycat&amp;Bundle-Version=0.4.0.SNAPSHOT</bundle>
66 + <bundle>wrap:mvn:http://mavenrepo.onlab.us:8081/nexus/content/groups/public@id=onlab-temp!net.kuujo.copycat/copycat-tcp/0.4.0-SNAPSHOT$Bundle-SymbolicName=net.kuujo.copycat.copycat-tcp&amp;Bundle-Version=0.4.0.SNAPSHOT</bundle>
67 + <bundle>wrap:mvn:http://mavenrepo.onlab.us:8081/nexus/content/groups/public@id=onlab-temp!net.kuujo.copycat/copycat-chronicle/0.4.0-SNAPSHOT$Bundle-SymbolicName=net.kuujo.copycat.copycat-chronicle&amp;Bundle-Version=0.4.0.SNAPSHOT</bundle>
68 +-->
62 </feature> 69 </feature>
63 70
64 <feature name="onos-thirdparty-web" version="1.0.0" 71 <feature name="onos-thirdparty-web" version="1.0.0"
......
...@@ -31,12 +31,43 @@ ...@@ -31,12 +31,43 @@
31 31
32 <description>ONLab third-party dependencies</description> 32 <description>ONLab third-party dependencies</description>
33 33
34 + <!-- TODO move to root pom? -->
35 + <properties>
36 + <copycat.version>0.4.0-SNAPSHOT</copycat.version>
37 + </properties>
38 +
34 <dependencies> 39 <dependencies>
35 <dependency> 40 <dependency>
36 <groupId>com.googlecode.concurrent-trees</groupId> 41 <groupId>com.googlecode.concurrent-trees</groupId>
37 <artifactId>concurrent-trees</artifactId> 42 <artifactId>concurrent-trees</artifactId>
38 <version>2.4.0</version> 43 <version>2.4.0</version>
39 </dependency> 44 </dependency>
45 +
46 + <dependency>
47 + <groupId>net.kuujo.copycat</groupId>
48 + <artifactId>copycat</artifactId>
49 + <version>${copycat.version}</version>
50 + </dependency>
51 +<!-- Commented out due to Chronicle + OSGi issue
52 + <dependency>
53 + <groupId>net.kuujo.copycat</groupId>
54 + <artifactId>copycat-chronicle</artifactId>
55 + <version>${copycat.version}</version>
56 + </dependency>
57 +-->
58 + <dependency>
59 + <groupId>net.kuujo.copycat</groupId>
60 + <artifactId>copycat-tcp</artifactId>
61 + <version>${copycat.version}</version>
62 + </dependency>
63 +
64 +<!-- chronicle transitive dependency
65 + <dependency>
66 + <groupId>net.java.dev.jna</groupId>
67 + <artifactId>jna</artifactId>
68 + <version>4.1.0</version>
69 + </dependency>
70 +-->
40 </dependencies> 71 </dependencies>
41 72
42 <build> 73 <build>
...@@ -47,19 +78,36 @@ ...@@ -47,19 +78,36 @@
47 <version>2.3</version> 78 <version>2.3</version>
48 <configuration> 79 <configuration>
49 <filters> 80 <filters>
81 +
50 <filter> 82 <filter>
51 <artifact>com.googlecode.concurrent-trees:concurrent-trees</artifact> 83 <artifact>com.googlecode.concurrent-trees:concurrent-trees</artifact>
52 <includes> 84 <includes>
53 <include>com/googlecode/**</include> 85 <include>com/googlecode/**</include>
54 </includes> 86 </includes>
55 -
56 </filter> 87 </filter>
88 +
57 <filter> 89 <filter>
58 <artifact>com.google.guava:guava</artifact> 90 <artifact>com.google.guava:guava</artifact>
59 <excludes> 91 <excludes>
60 <exclude>**</exclude> 92 <exclude>**</exclude>
61 </excludes> 93 </excludes>
62 </filter> 94 </filter>
95 +
96 + <filter>
97 + <artifact>net.kuujo.copycat:*</artifact>
98 + <includes>
99 + <include>net/kuujo/copycat/**</include>
100 + </includes>
101 + </filter>
102 +<!-- chronicle transitive dependency
103 +
104 + <filter>
105 + <artifact>net.java.dev.jna:*</artifact>
106 + <includes>
107 + <include>com/sun/jna/**</include>
108 + </includes>
109 + </filter>
110 +-->
63 </filters> 111 </filters>
64 </configuration> 112 </configuration>
65 <executions> 113 <executions>
...@@ -70,14 +118,14 @@ ...@@ -70,14 +118,14 @@
70 </goals> 118 </goals>
71 </execution> 119 </execution>
72 </executions> 120 </executions>
73 - </plugin> 121 + </plugin>
74 <plugin> 122 <plugin>
75 <groupId>org.apache.felix</groupId> 123 <groupId>org.apache.felix</groupId>
76 <artifactId>maven-bundle-plugin</artifactId> 124 <artifactId>maven-bundle-plugin</artifactId>
77 <configuration> 125 <configuration>
78 <instructions> 126 <instructions>
79 <Export-Package> 127 <Export-Package>
80 - com.googlecode.concurrenttrees.* 128 + com.googlecode.concurrenttrees.*;net.kuujo.copycat.*
81 </Export-Package> 129 </Export-Package>
82 </instructions> 130 </instructions>
83 </configuration> 131 </configuration>
......