diff --git a/.gitpod.yml b/.gitpod.yml
index dd9781fc..13c85752 100644
--- a/.gitpod.yml
+++ b/.gitpod.yml
@@ -5,6 +5,7 @@
# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart
tasks:
+# - before: mvn clean && docker ps -aq | xargs docker stop | xargs docker rm && docker rmi shihuili1218/klein-jepsen-control shihuili1218/klein-jepsen-node
- init: mvn clean install -DskipTests=true && chmod -R +x klein-jepsen/docker && klein-jepsen/docker/bin/up
diff --git a/klein-common/pom.xml b/klein-common/pom.xml
index 3bcddb04..cdd3620e 100644
--- a/klein-common/pom.xml
+++ b/klein-common/pom.xml
@@ -5,13 +5,13 @@
klein
com.ofcoder.klein
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.common
klein-common
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-consensus/klein-consensus-facade/pom.xml b/klein-consensus/klein-consensus-facade/pom.xml
index 68c04804..fc4c12bc 100644
--- a/klein-consensus/klein-consensus-facade/pom.xml
+++ b/klein-consensus/klein-consensus-facade/pom.xml
@@ -5,13 +5,13 @@
klein-consensus
com.ofcoder.klein.consensus
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.consensus.facade
klein-consensus-facade
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-consensus/klein-consensus-paxos/pom.xml b/klein-consensus/klein-consensus-paxos/pom.xml
index 51a668e6..bcb8a11e 100644
--- a/klein-consensus/klein-consensus-paxos/pom.xml
+++ b/klein-consensus/klein-consensus-paxos/pom.xml
@@ -5,13 +5,13 @@
klein-consensus
com.ofcoder.klein.consensus
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.consensus.paxos
klein-consensus-paxos
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-consensus/klein-consensus-paxos/src/main/java/com/ofcoder/klein/consensus/paxos/core/Learner.java b/klein-consensus/klein-consensus-paxos/src/main/java/com/ofcoder/klein/consensus/paxos/core/Learner.java
index 41b1316b..3df018b8 100644
--- a/klein-consensus/klein-consensus-paxos/src/main/java/com/ofcoder/klein/consensus/paxos/core/Learner.java
+++ b/klein-consensus/klein-consensus-paxos/src/main/java/com/ofcoder/klein/consensus/paxos/core/Learner.java
@@ -29,7 +29,6 @@
import com.ofcoder.klein.storage.facade.Snap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* Learner Role.
@@ -42,8 +41,6 @@ public interface Learner extends Role {
long getLastCheckpoint();
- Set getGroups();
-
Map getSms();
/**
diff --git a/klein-consensus/klein-consensus-paxos/src/main/java/com/ofcoder/klein/consensus/paxos/core/LearnerImpl.java b/klein-consensus/klein-consensus-paxos/src/main/java/com/ofcoder/klein/consensus/paxos/core/LearnerImpl.java
index 93f5ed86..3a24976f 100644
--- a/klein-consensus/klein-consensus-paxos/src/main/java/com/ofcoder/klein/consensus/paxos/core/LearnerImpl.java
+++ b/klein-consensus/klein-consensus-paxos/src/main/java/com/ofcoder/klein/consensus/paxos/core/LearnerImpl.java
@@ -21,7 +21,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -110,11 +109,6 @@ public long getLastCheckpoint() {
.max().orElse(-1L);
}
- @Override
- public Set getGroups() {
- return sms.keySet();
- }
-
private Map generateSnap() {
Map sms = new HashMap<>(this.sms);
ConcurrentMap result = new ConcurrentHashMap<>();
@@ -494,7 +488,7 @@ public SnapSyncRes handleSnapSyncRequest(final SnapSyncReq req) {
Map allSnaps = generateSnap();
res.getImages().putAll(allSnaps);
} else {
- for (String group : RuntimeAccessor.getLearner().getGroups()) {
+ for (String group : sms.keySet()) {
Snap lastSnap = logManager.getLastSnap(group);
if (lastSnap != null && lastSnap.getCheckpoint() > req.getCheckpoint()) {
res.getImages().put(group, lastSnap);
diff --git a/klein-consensus/pom.xml b/klein-consensus/pom.xml
index a600a3f6..5e45007b 100644
--- a/klein-consensus/pom.xml
+++ b/klein-consensus/pom.xml
@@ -5,14 +5,14 @@
klein
com.ofcoder.klein
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.consensus
klein-consensus
pom
- 0.0.7
+ 0.0.8
klein-consensus-paxos
diff --git a/klein-core/pom.xml b/klein-core/pom.xml
index 89355d48..d27b7597 100644
--- a/klein-core/pom.xml
+++ b/klein-core/pom.xml
@@ -5,13 +5,13 @@
klein
com.ofcoder.klein
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.core
klein-core
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-core/src/main/java/com/ofcoder/klein/core/cache/KleinCache.java b/klein-core/src/main/java/com/ofcoder/klein/core/cache/KleinCache.java
index 489da19f..ef261644 100644
--- a/klein-core/src/main/java/com/ofcoder/klein/core/cache/KleinCache.java
+++ b/klein-core/src/main/java/com/ofcoder/klein/core/cache/KleinCache.java
@@ -20,6 +20,7 @@
import java.util.concurrent.TimeUnit;
import com.ofcoder.klein.common.OnlyForTest;
+import com.ofcoder.klein.consensus.facade.Result;
/**
* Klein Cache.
@@ -52,10 +53,12 @@ public interface KleinCache {
* @param data cache value
* @param cache value type
* @param apply if ture, wait sm apply before return
+ * @param ttl expire
+ * @param unit expire unit
* @return put result
*/
@OnlyForTest("for jepsen")
- boolean put(String key, D data, boolean apply);
+ Result.State put(String key, D data, boolean apply, Long ttl, TimeUnit unit);
/**
* put element to cache and set expire.
diff --git a/klein-core/src/main/java/com/ofcoder/klein/core/cache/KleinCacheImpl.java b/klein-core/src/main/java/com/ofcoder/klein/core/cache/KleinCacheImpl.java
index 186b3d75..28c90ef7 100644
--- a/klein-core/src/main/java/com/ofcoder/klein/core/cache/KleinCacheImpl.java
+++ b/klein-core/src/main/java/com/ofcoder/klein/core/cache/KleinCacheImpl.java
@@ -71,14 +71,17 @@ public boolean put(final String key, final D data) {
}
@Override
- public boolean put(final String key, final D data, final boolean apply) {
+ public Result.State put(final String key, final D data, final boolean apply, final Long ttl, final TimeUnit unit) {
CacheMessage message = new CacheMessage();
message.setCacheName(cacheName);
message.setData(data);
message.setKey(key);
message.setOp(CacheMessage.PUT);
+ if (ttl > 0) {
+ message.setExpire(TrueTime.currentTimeMillis() + unit.toMillis(ttl));
+ }
Result result = consensus.propose(message, apply);
- return Result.State.SUCCESS.equals(result.getState());
+ return result.getState();
}
@Override
diff --git a/klein-example/pom.xml b/klein-example/pom.xml
index a93ab387..0838f0de 100644
--- a/klein-example/pom.xml
+++ b/klein-example/pom.xml
@@ -5,13 +5,13 @@
klein
com.ofcoder.klein
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.example
klein-example
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-jepsen/docker/bin/build-docker-compose b/klein-jepsen/docker/bin/build-docker-compose
index 401e6d55..d1f324d4 100755
--- a/klein-jepsen/docker/bin/build-docker-compose
+++ b/klein-jepsen/docker/bin/build-docker-compose
@@ -14,7 +14,7 @@ DBS=""
member=""
for ((n=1;n<=NODE_COUNT;n++)); do
- member+=${n}:n${n}:1218\;
+ member+=${n}:n${n}:1218:false\;
done;
# For each node
diff --git a/klein-jepsen/docker/template/server.properties b/klein-jepsen/docker/template/server.properties
index ee2a5237..7c3d09ec 100644
--- a/klein-jepsen/docker/template/server.properties
+++ b/klein-jepsen/docker/template/server.properties
@@ -1,4 +1,5 @@
klein.id=%%N%%
klein.port=1218
klein.ip=n%%N%%
+klein.outsider=false
klein.members=%%MEMBER%%
diff --git a/klein-jepsen/klein-jepsen-server/deploy/stop.sh b/klein-jepsen/klein-jepsen-server/deploy/stop.sh
index db60be79..bceb42a3 100644
--- a/klein-jepsen/klein-jepsen-server/deploy/stop.sh
+++ b/klein-jepsen/klein-jepsen-server/deploy/stop.sh
@@ -6,3 +6,7 @@ then
kill $pid
fi
echo "Done!"
+
+rm -rf /data
+
+echo "Cleanup!"
\ No newline at end of file
diff --git a/klein-jepsen/klein-jepsen-server/pom.xml b/klein-jepsen/klein-jepsen-server/pom.xml
index 46b2157d..ec34c969 100644
--- a/klein-jepsen/klein-jepsen-server/pom.xml
+++ b/klein-jepsen/klein-jepsen-server/pom.xml
@@ -5,13 +5,13 @@
klein-jepsen
com.ofcoder.klein.jepsen
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.jepsen.server
klein-jepsen-server
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/JepsenClient.java b/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/JepsenClient.java
index 7256ba5a..87e68ebe 100644
--- a/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/JepsenClient.java
+++ b/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/JepsenClient.java
@@ -83,16 +83,17 @@ public boolean put(final Integer value) throws UnsupportedEncodingException {
try {
LOG.info("seq: {}, put: {} on node: {}", req.getSeq(), value, endpoint.getId());
- boolean o = client.sendRequestSync(endpoint, param, 3000);
- LOG.info("seq: {}, put: {} on node: {}, result: {}", req.getSeq(), value, endpoint.getId(), o);
- if (!o) {
- throw new IllegalArgumentException("seq: " + req.getSeq() + ", put: " + value + " on node: " + endpoint.getId() + ", occur proposal conflict");
+ // see: com.ofcoder.klein.consensus.facade.Result.State
+ String result = client.sendRequestSync(endpoint, param, 3000);
+ LOG.info("seq: {}, put: {} on node: {}, result: {}", req.getSeq(), value, endpoint.getId(), result);
+ if (!"SUCCESS".equals(result)) {
+ throw new IllegalArgumentException("seq: " + req.getSeq() + ", put: " + value + " on node: " + endpoint.getId() + ", " + result);
}
return true;
} catch (IllegalArgumentException e) {
throw e;
} catch (Exception e) {
- throw new IllegalArgumentException("seq: " + req.getSeq() + ", put: " + value + " on node: " + endpoint.getId() + ", result: err");
+ throw new IllegalArgumentException("seq: " + req.getSeq() + ", put: " + value + " on node: " + endpoint.getId() + ", result: UNKNOWN");
}
}
diff --git a/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/rpc/PutProcessor.java b/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/rpc/PutProcessor.java
index c3ca58ff..2c10a077 100644
--- a/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/rpc/PutProcessor.java
+++ b/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/rpc/PutProcessor.java
@@ -18,6 +18,7 @@
import java.nio.ByteBuffer;
+import com.ofcoder.klein.consensus.facade.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,21 +42,15 @@ public PutProcessor(final KleinCache cache) {
@Override
public void handleRequest(final PutReq request, final RpcContext context) {
- if (request.getTtl() <= 0) {
- try {
- LOG.info("put operator, begin, seq: {}", request.getSeq());
- boolean put = cache.put(request.getKey(), request.getData(), true);
- LOG.info("put operator, end, seq: {}, result: {}", request.getSeq(), put);
- context.response(ByteBuffer.wrap(Hessian2Util.serialize(put)));
- } catch (Exception e) {
- LOG.error(e.getMessage());
- context.response(ByteBuffer.wrap(Hessian2Util.serialize(false)));
- LOG.info("put operator, err, seq: {}, result: err", request.getSeq());
- }
- } else {
- boolean put = cache.put(request.getKey(), request.getData(), request.getTtl(), request.getUnit());
- context.response(ByteBuffer.wrap(Hessian2Util.serialize(put)));
- LOG.info("put operator, err, seq: {}", request.getSeq());
+ try {
+ LOG.info("put operator, begin, seq: {}", request.getSeq());
+ Result.State put = cache.put(request.getKey(), request.getData(), false, request.getTtl(), request.getUnit());
+ LOG.info("put operator, end, seq: {}, result: {}", request.getSeq(), put);
+ context.response(ByteBuffer.wrap(Hessian2Util.serialize(put.name())));
+ } catch (Exception e) {
+ LOG.error(e.getMessage());
+ context.response(ByteBuffer.wrap(Hessian2Util.serialize(Result.State.UNKNOWN.name())));
+ LOG.info("put operator, err, seq: {}, result: err", request.getSeq());
}
}
diff --git a/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/rpc/PutReq.java b/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/rpc/PutReq.java
index 020b209d..2d657991 100644
--- a/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/rpc/PutReq.java
+++ b/klein-jepsen/klein-jepsen-server/src/main/java/com/ofcoder/klein/jepsen/server/rpc/PutReq.java
@@ -26,8 +26,8 @@
*/
public class PutReq extends BaseReq {
private Serializable data;
- private long ttl;
- private TimeUnit unit;
+ private long ttl = -1;
+ private TimeUnit unit = TimeUnit.SECONDS;
public Serializable getData() {
return data;
diff --git a/klein-jepsen/klein-jepsen-test/nodes b/klein-jepsen/klein-jepsen-test/nodes
deleted file mode 100644
index 307f113c..00000000
--- a/klein-jepsen/klein-jepsen-test/nodes
+++ /dev/null
@@ -1,5 +0,0 @@
-klein-n1
-klein-n2
-klein-n3
-klein-n4
-klein-n5
\ No newline at end of file
diff --git a/klein-jepsen/klein-jepsen-test/project.clj b/klein-jepsen/klein-jepsen-test/project.clj
index 140cf7e4..7d1fabfd 100644
--- a/klein-jepsen/klein-jepsen-test/project.clj
+++ b/klein-jepsen/klein-jepsen-test/project.clj
@@ -9,12 +9,17 @@
:url "http://www.eclipse.org/legal/epl-v10.html"}
:main jepsen.klein
:jvm-opts ["-Xms2g" "-Xmx2g" "-server"]
- :dependencies [[org.clojure/clojure "1.9.0"]
- [jepsen "0.1.11"]
+ :dependencies [
+ [org.clojure/clojure "1.10.0"]
+ [jepsen "0.1.19"]
+ ; [org.clojure/clojure "1.9.0"]
+ ; [jepsen "0.1.11"]
[clj-ssh "0.5.14"]
[cider/cider-nrepl "0.17.0-SNAPSHOT"]
[org.clojure/tools.nrepl "0.2.13" :exclusions [org.clojure/clojure]]
[net.java.dev.jna/jna "4.5.1"]
+ [javax.xml.bind/jaxb-api "2.3.1"]
+ [org.glassfish.jaxb/jaxb-runtime "2.3.1"]
[com.ofcoder.klein.jepsen.server/klein-jepsen-server "0.0.1"]
]
)
diff --git a/klein-jepsen/klein-jepsen-test/run_test.sh b/klein-jepsen/klein-jepsen-test/run_test.sh
index edec1ea0..75f05552 100644
--- a/klein-jepsen/klein-jepsen-test/run_test.sh
+++ b/klein-jepsen/klein-jepsen-test/run_test.sh
@@ -1,2 +1,2 @@
unset SSH_AUTH_SOCK
-lein run test --time-limit 6000 --concurrency 5 --test-count 5 --username root --password 123456 $@
+lein run test --time-limit 600 --concurrency 5 --test-count 2 --username root --password 123456 $@
diff --git a/klein-jepsen/klein-jepsen-test/src/jepsen/klein.clj b/klein-jepsen/klein-jepsen-test/src/jepsen/klein.clj
index f2fda69e..3f68d56b 100644
--- a/klein-jepsen/klein-jepsen-test/src/jepsen/klein.clj
+++ b/klein-jepsen/klein-jepsen-test/src/jepsen/klein.clj
@@ -42,7 +42,7 @@
(try
(c/cd (clojure.string/join "/" [klein-path ""])
(c/exec :sh klein-stop))
- (Thread/sleep 5000)
+ (Thread/sleep 10000)
(c/exec :rm :-rf "/data")
(catch Exception e
(info "Stop node occur exception " (.getMessage e)))))
@@ -53,12 +53,11 @@
(reify
db/DB
(setup! [_ test node]
- ; (start! node)
- )
+ (start! node))
(teardown! [_ test node]
- ; (stop! node)
- )))
+ (stop! node))
+ ))
;client
(defn r [_ _] {:type :invoke, :f :read, :value nil})
@@ -100,7 +99,7 @@
(catch Exception e
(let [^String msg (.getMessage e)]
(cond
- (and msg (.contains msg "TIMEOUT")) (assoc op :type :fail, :error :timeout)
+ (and msg (.contains msg "UNKNOWN")) (assoc op :type :info, :error :timeout)
:else
(assoc op :type :fail :error (.getMessage e)))))))
@@ -133,8 +132,13 @@
"A nemesis that crashes a random subset of nodes."
(nemesis/node-start-stopper
mostly-small-nonempty-subset
- (fn start [test node] (stop! node) [:killed node])
- (fn stop [test node] (start! node) [:restarted node])))
+ (fn start [test node]
+ (stop! node)
+ (start! node)
+ {:type :info, :status :restarted, :node node})
+ (fn stop [test node]
+ (stop! node)
+ {:type :info, :status :killed, :node node})))
(defn recover
"A generator which stops the nemesis and allows some time for recovery."
@@ -155,29 +159,33 @@
[opts]
(info "opts: " opts)
(merge tests/noop-test
- {:name "klein"
- :os os/noop
- :db (db "0.0.1")
- :client (Client. nil)
- :ssh {:dummy? true}
- :model (model/register 0)
+ {:name "klein"
+ :os os/noop
+ :db (db "0.0.1")
+ :client (Client. nil)
+ :ssh {:dummy? true}
+ :steady-state 15
+ :bootstrap-time 20
+ :model (model/register 0)
; :nemesis (nemesis/partition-random-halves)
- :checker (checker/compose
- {:perf (checker/perf)
- :timeline (timeline/html)
- :linear (checker/linearizable)})
- :generator (->>
- (gen/mix [r w])
- (gen/stagger 1/10)
- (gen/delay 1/10)
- (gen/nemesis
- (gen/seq
- (cycle
- [(gen/sleep 10)
- {:type :info, :f :start}
- (gen/sleep 5)
- {:type :info, :f :stop}])))
- (gen/time-limit (:time-limit opts)))}
+ :checker (checker/compose
+ {:perf (checker/perf)
+ :timeline (timeline/html)
+ :linear (checker/linearizable
+ {:model (model/cas-register)})})
+ :generator (->>
+ (gen/mix [r w])
+ (gen/stagger 1/10)
+ (gen/delay 1/10)
+ (gen/nemesis
+ (gen/seq
+ (cycle
+ [(gen/sleep 10)
+ {:type :info, :f :start}
+ (gen/sleep 5)
+ {:type :info, :f :stop}])))
+ ;(gen/time-limit (:time-limit opts))
+ (gen/time-limit 60))}
opts))
(defn -main
@@ -191,8 +199,3 @@
{:test-fn klein-test})
(cli/serve-cmd))
args))
-
-;d:/lein.bat run test --time-limit 40 --concurrency 10 --test-count 10 --nodes 1:172.22.0.79:1218,2:172.22.0.80:1218,3:172.22.0.90:1218,4:172.22.0.91:1218,5:172.22.0.96:1218 --username root --password 123456
-;d:/lein.bat run test --time-limit 40 --concurrency 10 --test-count 10 --username root --password 123456
-;lein run test --time-limit 40 --concurrency 10 --test-count 10 --ssh-private-key /root/.ssh/id_rsa
-;lein run test --time-limit 40 --concurrency 10 --test-count 10 --username root --password 123456
diff --git a/klein-jepsen/pom.xml b/klein-jepsen/pom.xml
index 6441d3a1..8425a9ea 100644
--- a/klein-jepsen/pom.xml
+++ b/klein-jepsen/pom.xml
@@ -5,13 +5,13 @@
klein
com.ofcoder.klein
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.jepsen
klein-jepsen
- 0.0.7
+ 0.0.8
pom
klein-jepsen-server
diff --git a/klein-rpc/klein-rpc-facade/pom.xml b/klein-rpc/klein-rpc-facade/pom.xml
index 8ab2d96c..625bd039 100644
--- a/klein-rpc/klein-rpc-facade/pom.xml
+++ b/klein-rpc/klein-rpc-facade/pom.xml
@@ -5,13 +5,13 @@
klein-rpc
com.ofcoder.klein.rpc
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.rpc.facade
klein-rpc-facade
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-rpc/klein-rpc-facade/src/main/java/com/ofcoder/klein/rpc/facade/util/RpcUtil.java b/klein-rpc/klein-rpc-facade/src/main/java/com/ofcoder/klein/rpc/facade/util/RpcUtil.java
index ae727a0c..f013e1aa 100644
--- a/klein-rpc/klein-rpc-facade/src/main/java/com/ofcoder/klein/rpc/facade/util/RpcUtil.java
+++ b/klein-rpc/klein-rpc-facade/src/main/java/com/ofcoder/klein/rpc/facade/util/RpcUtil.java
@@ -72,7 +72,7 @@ public static Endpoint parseEndpoint(final String s) {
throw new IllegalArgumentException(String.format("parse Endpoint, address: %s, error: %s.", s, e.getMessage()), e);
}
}
- throw new IllegalArgumentException(String.format("parse Endpoint, but address: %s is invalid, e.g. id:ip:port or ip:port", s));
+ throw new IllegalArgumentException(String.format("parse Endpoint, but address: %s is invalid, e.g. id:ip:port:outsider or ip:port", s));
}
}
diff --git a/klein-rpc/klein-rpc-grpc/pom.xml b/klein-rpc/klein-rpc-grpc/pom.xml
index 53588f96..5f5b9cc5 100644
--- a/klein-rpc/klein-rpc-grpc/pom.xml
+++ b/klein-rpc/klein-rpc-grpc/pom.xml
@@ -5,13 +5,13 @@
klein-rpc
com.ofcoder.klein.rpc
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.rpc.grpc
klein-rpc-grpc
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-rpc/pom.xml b/klein-rpc/pom.xml
index 9f1bf72e..231494b5 100644
--- a/klein-rpc/pom.xml
+++ b/klein-rpc/pom.xml
@@ -5,14 +5,14 @@
klein
com.ofcoder.klein
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.rpc
klein-rpc
pom
- 0.0.7
+ 0.0.8
klein-rpc-grpc
diff --git a/klein-spi/pom.xml b/klein-spi/pom.xml
index 856b406a..a0fd55da 100644
--- a/klein-spi/pom.xml
+++ b/klein-spi/pom.xml
@@ -5,13 +5,13 @@
klein
com.ofcoder.klein
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.spi
klein-spi
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-storage/klein-storage-facade/pom.xml b/klein-storage/klein-storage-facade/pom.xml
index f8bb19da..06eeda5a 100644
--- a/klein-storage/klein-storage-facade/pom.xml
+++ b/klein-storage/klein-storage-facade/pom.xml
@@ -5,13 +5,13 @@
klein-storage
com.ofcoder.klein.storage
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.storage.api
klein-storage-facade
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-storage/klein-storage-file/pom.xml b/klein-storage/klein-storage-file/pom.xml
index e4937504..63c2267f 100644
--- a/klein-storage/klein-storage-file/pom.xml
+++ b/klein-storage/klein-storage-file/pom.xml
@@ -5,13 +5,13 @@
klein-storage
com.ofcoder.klein.storage
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.storage.file
klein-storage-file
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-storage/klein-storage-h2/pom.xml b/klein-storage/klein-storage-h2/pom.xml
index b6ce0212..ab2a29f1 100644
--- a/klein-storage/klein-storage-h2/pom.xml
+++ b/klein-storage/klein-storage-h2/pom.xml
@@ -5,13 +5,13 @@
klein-storage
com.ofcoder.klein.storage
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.storage.h2
klein-storage-h2
- 0.0.7
+ 0.0.8
jar
diff --git a/klein-storage/pom.xml b/klein-storage/pom.xml
index e43e79e9..a0601d15 100644
--- a/klein-storage/pom.xml
+++ b/klein-storage/pom.xml
@@ -5,14 +5,14 @@
klein
com.ofcoder.klein
- 0.0.7
+ 0.0.8
4.0.0
com.ofcoder.klein.storage
klein-storage
pom
- 0.0.7
+ 0.0.8
klein-storage-facade
diff --git a/pom.xml b/pom.xml
index 518e18e9..96ed394b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
com.ofcoder.klein
klein
pom
- 0.0.7
+ 0.0.8
Klein is a Paxos based distributed collection tool library
https://klein-doc.gitbook.io/