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/