diff --git a/src/main/java/com/moilioncircle/redis/replicator/Configuration.java b/src/main/java/com/moilioncircle/redis/replicator/Configuration.java index 96310a60..f7092bc9 100644 --- a/src/main/java/com/moilioncircle/redis/replicator/Configuration.java +++ b/src/main/java/com/moilioncircle/redis/replicator/Configuration.java @@ -17,7 +17,6 @@ package com.moilioncircle.redis.replicator; import java.util.Arrays; -import java.util.HashMap; import java.util.Map; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.atomic.AtomicLong; @@ -199,11 +198,6 @@ public static Configuration defaultSetting() { */ private int scanStep = 512; - /** - * @since 3.8.1 - */ - private Map context = new HashMap<>(4); - public int getConnectionTimeout() { return connectionTimeout; } @@ -452,14 +446,6 @@ public Configuration setScanStep(int scanStep) { return this; } - public Map getContext() { - return context; - } - - public void setContext(Map context) { - this.context = context; - } - public Configuration merge(SslConfiguration sslConfiguration) { if (sslConfiguration == null) return this; this.setSslParameters(sslConfiguration.getSslParameters()); @@ -611,7 +597,6 @@ public String toString() { ", replStreamDB=" + replStreamDB + ", replOffset=" + replOffset + ", replFilters=" + Arrays.toString(replFilters) + - ", context=" + context + '}'; } } diff --git a/src/main/java/com/moilioncircle/redis/replicator/Constants.java b/src/main/java/com/moilioncircle/redis/replicator/Constants.java index d237908d..f8a7785e 100644 --- a/src/main/java/com/moilioncircle/redis/replicator/Constants.java +++ b/src/main/java/com/moilioncircle/redis/replicator/Constants.java @@ -136,12 +136,4 @@ private Constants() { public static final byte MINUS = '-'; public static final byte COLON = ':'; public static final byte HASHTAG = '#'; // since redis 7.0 TS timestamp - - /** - * replication protocol - */ - public static final String REPL_ID = "$REPL_ID"; - public static final String REPL_OFFSET = "$REPL_OFFSET"; - public static final String REPL_STREAM_DB = "$REPL_STREAM_DB"; - } diff --git a/src/main/java/com/moilioncircle/redis/replicator/RedisSocketReplicator.java b/src/main/java/com/moilioncircle/redis/replicator/RedisSocketReplicator.java index 3a4be5f3..c2dd7468 100644 --- a/src/main/java/com/moilioncircle/redis/replicator/RedisSocketReplicator.java +++ b/src/main/java/com/moilioncircle/redis/replicator/RedisSocketReplicator.java @@ -17,8 +17,6 @@ package com.moilioncircle.redis.replicator; import static com.moilioncircle.redis.replicator.Constants.DOLLAR; -import static com.moilioncircle.redis.replicator.Constants.REPL_ID; -import static com.moilioncircle.redis.replicator.Constants.REPL_OFFSET; import static com.moilioncircle.redis.replicator.Constants.STAR; import static com.moilioncircle.redis.replicator.RedisSocketReplicator.SyncMode.PSYNC; import static com.moilioncircle.redis.replicator.RedisSocketReplicator.SyncMode.SYNC; @@ -36,8 +34,6 @@ import java.io.IOException; import java.io.InputStream; import java.net.Socket; -import java.util.HashMap; -import java.util.Map; import java.util.Objects; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicBoolean; @@ -145,10 +141,8 @@ protected SyncMode trySync(final String reply) throws IOException { this.db = -1; parseDump(this); String[] ary = reply.split(" "); - Map context = new HashMap<>(4); - context.put(REPL_ID, ary[1]); - context.put(REPL_OFFSET, ary[2]); - configuration.setContext(context); + configuration.setReplId(ary[1]); + configuration.setReplOffset(Long.parseLong(ary[2])); return PSYNC; } else if (reply.startsWith("CONTINUE")) { String[] ary = reply.split(" "); diff --git a/src/main/java/com/moilioncircle/redis/replicator/rdb/DefaultRdbVisitor.java b/src/main/java/com/moilioncircle/redis/replicator/rdb/DefaultRdbVisitor.java index 5ad58298..d98a69f3 100644 --- a/src/main/java/com/moilioncircle/redis/replicator/rdb/DefaultRdbVisitor.java +++ b/src/main/java/com/moilioncircle/redis/replicator/rdb/DefaultRdbVisitor.java @@ -39,11 +39,7 @@ import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_ZSET_2; import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_ZSET_LISTPACK; import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_ZSET_ZIPLIST; -import static com.moilioncircle.redis.replicator.Constants.REPL_ID; -import static com.moilioncircle.redis.replicator.Constants.REPL_OFFSET; -import static com.moilioncircle.redis.replicator.Constants.REPL_STREAM_DB; import static java.lang.Integer.parseInt; -import static java.lang.Long.parseLong; import java.io.IOException; import java.util.List; @@ -162,12 +158,11 @@ public Event applyAux(RedisInputStream in, int version) throws IOException { if (logger.isInfoEnabled()) { logger.info("RDB {}: {}", auxKey, auxValue); } - Map context = replicator.getConfiguration().getContext(); - if (context != null) { - if (auxKey.equals("repl-id")) context.put(REPL_ID, auxValue); - if (auxKey.equals("repl-offset")) context.put(REPL_OFFSET, auxValue); - if (auxKey.equals("repl-stream-db")) context.put(REPL_STREAM_DB, auxValue); - } + + // avoid set repl_offset too early. + // if (auxKey.equals("repl-id")) replicator.getConfiguration().setReplId(auxValue); + // if (auxKey.equals("repl-offset")) replicator.getConfiguration().setReplOffset(parseLong(auxValue)); + if (auxKey.equals("repl-stream-db")) replicator.getConfiguration().setReplStreamDB(parseInt(auxValue)); return new AuxField(auxKey, auxValue); } else { if (logger.isWarnEnabled()) { diff --git a/src/main/java/com/moilioncircle/redis/replicator/rdb/RdbParser.java b/src/main/java/com/moilioncircle/redis/replicator/rdb/RdbParser.java index 976e3e02..c2a94a91 100644 --- a/src/main/java/com/moilioncircle/redis/replicator/rdb/RdbParser.java +++ b/src/main/java/com/moilioncircle/redis/replicator/rdb/RdbParser.java @@ -48,20 +48,15 @@ import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_ZSET_2; import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_ZSET_LISTPACK; import static com.moilioncircle.redis.replicator.Constants.RDB_TYPE_ZSET_ZIPLIST; -import static com.moilioncircle.redis.replicator.Constants.REPL_ID; -import static com.moilioncircle.redis.replicator.Constants.REPL_OFFSET; -import static com.moilioncircle.redis.replicator.Constants.REPL_STREAM_DB; import static com.moilioncircle.redis.replicator.Status.CONNECTED; import static com.moilioncircle.redis.replicator.util.Tuples.of; import java.io.IOException; -import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.moilioncircle.redis.replicator.AbstractReplicator; -import com.moilioncircle.redis.replicator.Configuration; import com.moilioncircle.redis.replicator.event.Event; import com.moilioncircle.redis.replicator.event.PostRdbSyncEvent; import com.moilioncircle.redis.replicator.event.PreRdbSyncEvent; @@ -295,15 +290,6 @@ public long parse() throws IOException { if (replicator.verbose() && logger.isDebugEnabled()) logger.debug("{}", event); if (!discard) this.replicator.submitEvent(event, of(start, offset)); } - - // we should set repl_id, repl_offset, repl_stream_db after full sync done to avoid losing data. - Map context = replicator.getConfiguration().getContext(); - if (context != null) { - Configuration conf = replicator.getConfiguration(); - if (context.containsKey(REPL_ID)) conf.setReplId((String) context.get(REPL_ID)); - if (context.containsKey(REPL_OFFSET)) conf.setReplOffset(Long.parseLong((String) context.get(REPL_OFFSET))); - if (context.containsKey(REPL_STREAM_DB)) conf.setReplStreamDB(Integer.parseInt((String) context.get(REPL_STREAM_DB))); - } return offset; } }