From b3c4f5a9180e1885e8e7c7b7f6f304f896c4f249 Mon Sep 17 00:00:00 2001 From: seagle Date: Tue, 26 Apr 2022 20:05:59 +0800 Subject: [PATCH 01/14] fix core-backend checkstyle issue --- .../baidu/hugegraph/backend/id/EdgeId.java | 10 +-- .../hugegraph/backend/query/Condition.java | 4 +- .../backend/query/ConditionQuery.java | 4 +- .../backend/query/ConditionQueryFlatten.java | 3 +- .../baidu/hugegraph/backend/query/Query.java | 10 +-- .../serializer/BinaryEntryIterator.java | 2 +- .../backend/serializer/BinarySerializer.java | 7 +- .../backend/serializer/GraphSerializer.java | 30 +++++--- .../backend/serializer/SchemaSerializer.java | 20 +++-- .../hugegraph/backend/store/BackendEntry.java | 59 ++++++++------- .../backend/store/BackendSession.java | 35 +++++---- .../hugegraph/backend/store/BackendStore.java | 73 +++++++++++-------- .../backend/store/BackendStoreProvider.java | 41 +++++------ .../hugegraph/backend/store/BackendTable.java | 5 +- .../hugegraph/backend/store/MetaHandler.java | 2 +- .../backend/store/raft/RaftBackendStore.java | 7 +- 16 files changed, 167 insertions(+), 145 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/id/EdgeId.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/id/EdgeId.java index 60a5aa7194..f7a98d69ed 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/id/EdgeId.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/id/EdgeId.java @@ -38,11 +38,11 @@ public class EdgeId implements Id { public static final HugeKeys[] KEYS = new HugeKeys[] { - HugeKeys.OWNER_VERTEX, - HugeKeys.DIRECTION, - HugeKeys.LABEL, - HugeKeys.SORT_VALUES, - HugeKeys.OTHER_VERTEX + HugeKeys.OWNER_VERTEX, + HugeKeys.DIRECTION, + HugeKeys.LABEL, + HugeKeys.SORT_VALUES, + HugeKeys.OTHER_VERTEX }; private final Id ownerVertexId; diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Condition.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Condition.java index 6be1b6eb4c..78468a51c1 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Condition.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Condition.java @@ -54,7 +54,7 @@ public enum ConditionType { public enum RelationType implements BiPredicate { - EQ("==", (v1, v2) -> {return equals(v1, v2); }), + EQ("==", (v1, v2) -> { return equals(v1, v2); }), GT(">", (v1, v2) -> { return compare(v1, v2) > 0; }), GTE(">=", (v1, v2) -> { return compare(v1, v2) >= 0; }), LT("<", (v1, v2) -> { return compare(v1, v2) < 0; }), @@ -390,7 +390,7 @@ public static Condition contains(Id key, Object value) { /** * Condition defines */ - public static abstract class BinCondition extends Condition { + public abstract static class BinCondition extends Condition { private Condition left; private Condition right; diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/ConditionQuery.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/ConditionQuery.java index fcb2fe9507..7deb444bc2 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/ConditionQuery.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/ConditionQuery.java @@ -212,7 +212,7 @@ public List relations() { return relations; } - public Relation relation(Id key){ + public Relation relation(Id key) { for (Relation r : this.relations()) { if (r.key().equals(key)) { return r; @@ -831,7 +831,7 @@ public boolean checkRangeIndex(HugeElement element, Condition cond) { } private static boolean removeFieldValue(Set values, - Object value){ + Object value) { for (Object elem : values) { if (numberEquals(elem, value)) { values.remove(elem); diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/ConditionQueryFlatten.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/ConditionQueryFlatten.java index d112a73ec8..d9639b36ea 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/ConditionQueryFlatten.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/ConditionQueryFlatten.java @@ -186,7 +186,8 @@ private static Condition convTextContainsAny2Or(Relation relation) { assert relation.relation() == Condition.RelationType.TEXT_CONTAINS_ANY; @SuppressWarnings("unchecked") Collection words = (Collection) relation.value(); - Condition cond, conds = null; + Condition cond = null; + Condition conds = null; for (String word : words) { assert relation.key() instanceof Id; cond = Condition.textContains((Id) relation.key(), word); diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Query.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Query.java index 103a27f0b7..49e1fd8f41 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Query.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Query.java @@ -51,7 +51,7 @@ public class Query implements Cloneable { public static final long NO_CAPACITY = -1L; public static final long DEFAULT_CAPACITY = 800000L; // HugeGraph-777 - private static final ThreadLocal capacityContext = new ThreadLocal<>(); + private static final ThreadLocal CAPACITY_CONTEXT = new ThreadLocal<>(); protected static final Query NONE = new Query(HugeType.UNKNOWN); @@ -558,17 +558,17 @@ public String toString() { } public static long defaultCapacity(long capacity) { - Long old = capacityContext.get(); - capacityContext.set(capacity); + Long old = CAPACITY_CONTEXT.get(); + CAPACITY_CONTEXT.set(capacity); return old != null ? old : DEFAULT_CAPACITY; } public static long defaultCapacity() { - Long capacity = capacityContext.get(); + Long capacity = CAPACITY_CONTEXT.get(); return capacity != null ? capacity : DEFAULT_CAPACITY; } - public final static void checkForceCapacity(long count) + public static final void checkForceCapacity(long count) throws LimitExceedException { if (count > Query.DEFAULT_CAPACITY) { throw new LimitExceedException( diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinaryEntryIterator.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinaryEntryIterator.java index c9817a36a5..c4f87516bf 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinaryEntryIterator.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinaryEntryIterator.java @@ -129,7 +129,7 @@ private void removeLastRecord() { ((BinaryBackendEntry) this.current).removeColumn(lastOne); } - public final static long sizeOfEntry(BackendEntry entry) { + public static final long sizeOfEntry(BackendEntry entry) { /* * 3 cases: * 1) one vertex per entry diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinarySerializer.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinarySerializer.java index bdfb6d2e88..c5e01e3451 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinarySerializer.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinarySerializer.java @@ -301,7 +301,6 @@ protected void parseEdge(BackendColumn col, HugeVertex vertex, } } - protected void parseVertex(byte[] value, HugeVertex vertex) { BytesBuffer buffer = BytesBuffer.wrap(value); @@ -871,9 +870,9 @@ public BackendEntry parse(BackendEntry originEntry) { BytesBuffer buffer = BytesBuffer.allocate(BytesBuffer.BUF_EDGE_ID); buffer.write(parsedEntry.id().asBytes()); buffer.write(bytes); - parsedEntry = new BinaryBackendEntry(originEntry.type(), - new BinaryId(buffer.bytes(), - BytesBuffer.wrap(buffer.bytes()).readEdgeId())); + parsedEntry = new BinaryBackendEntry(originEntry.type(), new BinaryId(buffer.bytes(), + BytesBuffer.wrap(buffer.bytes()).readEdgeId())); + for (BackendEntry.BackendColumn col : originEntry.columns()) { parsedEntry.column(buffer.bytes(), col.value); } diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/GraphSerializer.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/GraphSerializer.java index 35a96395cf..166fcb22c1 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/GraphSerializer.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/GraphSerializer.java @@ -33,19 +33,25 @@ public interface GraphSerializer { - public BackendEntry writeVertex(HugeVertex vertex); - public BackendEntry writeOlapVertex(HugeVertex vertex); - public BackendEntry writeVertexProperty(HugeVertexProperty prop); - public HugeVertex readVertex(HugeGraph graph, BackendEntry entry); + BackendEntry writeVertex(HugeVertex vertex); - public BackendEntry writeEdge(HugeEdge edge); - public BackendEntry writeEdgeProperty(HugeEdgeProperty prop); - public HugeEdge readEdge(HugeGraph graph, BackendEntry entry); + BackendEntry writeOlapVertex(HugeVertex vertex); - public BackendEntry writeIndex(HugeIndex index); - public HugeIndex readIndex(HugeGraph graph, ConditionQuery query, - BackendEntry entry); + BackendEntry writeVertexProperty(HugeVertexProperty prop); - public BackendEntry writeId(HugeType type, Id id); - public Query writeQuery(Query query); + HugeVertex readVertex(HugeGraph graph, BackendEntry entry); + + BackendEntry writeEdge(HugeEdge edge); + + BackendEntry writeEdgeProperty(HugeEdgeProperty prop); + + HugeEdge readEdge(HugeGraph graph, BackendEntry entry); + + BackendEntry writeIndex(HugeIndex index); + + HugeIndex readIndex(HugeGraph graph, ConditionQuery query, BackendEntry entry); + + BackendEntry writeId(HugeType type, Id id); + + Query writeQuery(Query query); } diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/SchemaSerializer.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/SchemaSerializer.java index 9e3bcc4d8a..045f065da8 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/SchemaSerializer.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/SchemaSerializer.java @@ -28,15 +28,19 @@ public interface SchemaSerializer { - public BackendEntry writeVertexLabel(VertexLabel vertexLabel); - public VertexLabel readVertexLabel(HugeGraph graph, BackendEntry entry); + BackendEntry writeVertexLabel(VertexLabel vertexLabel); - public BackendEntry writeEdgeLabel(EdgeLabel edgeLabel); - public EdgeLabel readEdgeLabel(HugeGraph graph, BackendEntry entry); + VertexLabel readVertexLabel(HugeGraph graph, BackendEntry entry); - public BackendEntry writePropertyKey(PropertyKey propertyKey); - public PropertyKey readPropertyKey(HugeGraph graph, BackendEntry entry); + BackendEntry writeEdgeLabel(EdgeLabel edgeLabel); - public BackendEntry writeIndexLabel(IndexLabel indexLabel); - public IndexLabel readIndexLabel(HugeGraph graph, BackendEntry entry); + EdgeLabel readEdgeLabel(HugeGraph graph, BackendEntry entry); + + BackendEntry writePropertyKey(PropertyKey propertyKey); + + PropertyKey readPropertyKey(HugeGraph graph, BackendEntry entry); + + BackendEntry writeIndexLabel(IndexLabel indexLabel); + + IndexLabel readIndexLabel(HugeGraph graph, BackendEntry entry); } diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java index 1ab839973d..8fbd72b3f3 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java @@ -33,7 +33,7 @@ public interface BackendEntry extends Idfiable { - public static class BackendColumn implements Comparable { + class BackendColumn implements Comparable { public byte[] name; public byte[] value; @@ -71,63 +71,64 @@ public boolean equals(Object obj) { } } - public HugeType type(); + HugeType type(); @Override - public Id id(); + Id id(); - public Id originId(); + Id originId(); - public Id subId(); + Id subId(); - public long ttl(); + long ttl(); - public int columnsSize(); - public Collection columns(); + int columnsSize(); - public void columns(Collection columns); - public void columns(BackendColumn column); + Collection columns(); - public void merge(BackendEntry other); - public boolean mergeable(BackendEntry other); + void columns(Collection columns); - public void clear(); + void columns(BackendColumn column); - public default boolean belongToMe(BackendColumn column) { + void merge(BackendEntry other); + + boolean mergeable(BackendEntry other); + + void clear(); + + default boolean belongToMe(BackendColumn column) { return Bytes.prefixWith(column.name, id().asBytes()); } - public default boolean olap() { + default boolean olap() { return false; } - public interface BackendIterator extends Iterator, AutoCloseable { + interface BackendIterator extends Iterator, AutoCloseable { @Override - public void close(); + void close(); - public byte[] position(); + byte[] position(); } - public interface BackendColumnIterator - extends BackendIterator { + interface BackendColumnIterator extends BackendIterator { - public static BackendColumnIterator empty() { + static BackendColumnIterator empty() { return EMPTY; } - public static BackendColumnIterator iterator(BackendColumn element) { + static BackendColumnIterator iterator(BackendColumn element) { return new OneColumnIterator(element); } - public static BackendColumnIterator wrap(Iterator iter) { + static BackendColumnIterator wrap(Iterator iter) { return new BackendColumnIteratorWrapper(iter); } - public static final BackendColumnIterator EMPTY = new EmptyIterator(); + BackendColumnIterator EMPTY = new EmptyIterator(); - public static final class EmptyIterator - implements BackendColumnIterator { + final class EmptyIterator implements BackendColumnIterator { @Override public boolean hasNext() { @@ -150,8 +151,7 @@ public byte[] position() { } } - public static final class OneColumnIterator - implements BackendColumnIterator { + final class OneColumnIterator implements BackendColumnIterator { private BackendColumn element; @@ -186,8 +186,7 @@ public byte[] position() { } } - public static final class BackendColumnIteratorWrapper - implements BackendColumnIterator { + final class BackendColumnIteratorWrapper implements BackendColumnIterator { private final Iterator iter; diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendSession.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendSession.java index a340730a40..65258bfea2 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendSession.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendSession.java @@ -26,34 +26,39 @@ */ public interface BackendSession { - public void open(); - public void close(); + void open(); - public boolean opened(); - public boolean closed(); + void close(); - public Object commit(); + boolean opened(); - public void rollback(); + boolean closed(); - public boolean hasChanges(); + Object commit(); - public int attach(); - public int detach(); + void rollback(); - public long created(); - public long updated(); - public void update(); + boolean hasChanges(); - public default void reconnectIfNeeded() { + int attach(); + + int detach(); + + long created(); + + long updated(); + + void update(); + + default void reconnectIfNeeded() { // pass } - public default void reset() { + default void reset() { // pass } - public abstract class AbstractBackendSession implements BackendSession { + abstract class AbstractBackendSession implements BackendSession { protected boolean opened; private int refs; diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java index eff4e9f02c..e4c4fbe0c5 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java @@ -32,50 +32,57 @@ public interface BackendStore { // Store name - public String store(); + String store(); // Database name - public String database(); + String database(); // Get the parent provider - public BackendStoreProvider provider(); + BackendStoreProvider provider(); // Whether it is the storage of schema - public boolean isSchemaStore(); + boolean isSchemaStore(); // Open/close database - public void open(HugeConfig config); - public void close(); - public boolean opened(); + void open(HugeConfig config); + + void close(); + + boolean opened(); // Initialize/clear database - public void init(); - public void clear(boolean clearSpace); - public boolean initialized(); + void init(); + + void clear(boolean clearSpace); + + boolean initialized(); // Delete all data of database (keep table structure) - public void truncate(); + void truncate(); // Add/delete data - public void mutate(BackendMutation mutation); + void mutate(BackendMutation mutation); // Query data - public Iterator query(Query query); - public Number queryNumber(Query query); + Iterator query(Query query); + + Number queryNumber(Query query); // Transaction - public void beginTx(); - public void commitTx(); - public void rollbackTx(); + void beginTx(); + + void commitTx(); + + void rollbackTx(); // Get metadata by key - public R metadata(HugeType type, String meta, Object[] args); + R metadata(HugeType type, String meta, Object[] args); // Backend features - public BackendFeatures features(); + BackendFeatures features(); // Generate an id for a specific type - public default Id nextId(HugeType type) { + default Id nextId(HugeType type) { final int MAX_TIMES = 1000; // Do get-increase-get-compare operation long counter = 0L; @@ -96,13 +103,15 @@ public default Id nextId(HugeType type) { E.checkState(counter != 0L, "Please check whether '%s' is OK", this.provider().type()); + E.checkState(counter == expect, "'%s' is busy please try again", this.provider().type()); + return IdGenerator.of(expect); } // Set next id >= lowest for a specific type - public default void setCounterLowest(HugeType type, long lowest) { + default void setCounterLowest(HugeType type, long lowest) { long current = this.getCounter(type); if (current >= lowest) { return; @@ -111,7 +120,7 @@ public default void setCounterLowest(HugeType type, long lowest) { this.increaseCounter(type, increment); } - public default String olapTableName(HugeType type) { + default String olapTableName(HugeType type) { StringBuilder sb = new StringBuilder(7); sb.append(this.store()) .append("_") @@ -121,7 +130,7 @@ public default String olapTableName(HugeType type) { return sb.toString().toLowerCase(); } - public default String olapTableName(Id id) { + default String olapTableName(Id id) { StringBuilder sb = new StringBuilder(5 + 4); sb.append(this.store()) .append("_") @@ -132,41 +141,41 @@ public default String olapTableName(Id id) { } // Increase next id for specific type - public void increaseCounter(HugeType type, long increment); + void increaseCounter(HugeType type, long increment); // Get current counter for a specific type - public long getCounter(HugeType type); + long getCounter(HugeType type); - public default void createOlapTable(Id pkId) { + default void createOlapTable(Id pkId) { throw new UnsupportedOperationException( "BackendStore.createOlapTable()"); } - public default void checkAndRegisterOlapTable(Id pkId) { + default void checkAndRegisterOlapTable(Id pkId) { throw new UnsupportedOperationException( "BackendStore.checkAndRegisterOlapTable()"); } - public default void clearOlapTable(Id pkId) { + default void clearOlapTable(Id pkId) { throw new UnsupportedOperationException( "BackendStore.clearOlapTable()"); } - public default void removeOlapTable(Id pkId) { + default void removeOlapTable(Id pkId) { throw new UnsupportedOperationException( "BackendStore.removeOlapTable()"); } - public default Map createSnapshot(String snapshotDir) { + default Map createSnapshot(String snapshotDir) { throw new UnsupportedOperationException("createSnapshot"); } - public default void resumeSnapshot(String snapshotDir, + default void resumeSnapshot(String snapshotDir, boolean deleteSnapshot) { throw new UnsupportedOperationException("resumeSnapshot"); } - static enum TxState { + enum TxState { BEGIN, COMMITTING, COMMITT_FAIL, ROLLBACKING, ROLLBACK_FAIL, CLEAN } } diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStoreProvider.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStoreProvider.java index a4027e17ac..3d794d2c9d 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStoreProvider.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStoreProvider.java @@ -27,46 +27,45 @@ public interface BackendStoreProvider { // Backend store type - public String type(); + String type(); // Backend store version - public String version(); + String version(); // Graph name (that's database name) - public String graph(); + String graph(); - public BackendStore loadSystemStore(HugeConfig config, String name); + BackendStore loadSystemStore(HugeConfig config, String name); - public BackendStore loadSchemaStore(HugeConfig config, String name); + BackendStore loadSchemaStore(HugeConfig config, String name); - public BackendStore loadGraphStore(HugeConfig config, String name); + BackendStore loadGraphStore(HugeConfig config, String name); + void open(String name); - public void open(String name); + void waitStoreStarted(); - public void waitStoreStarted(); + void close(); - public void close(); + void init(); - public void init(); + void clear(); - public void clear(); + void truncate(); - public void truncate(); + void initSystemInfo(HugeGraph graph); - public void initSystemInfo(HugeGraph graph); + void createSnapshot(); - public void createSnapshot(); + void resumeSnapshot(); - public void resumeSnapshot(); + void listen(EventListener listener); - public void listen(EventListener listener); + void unlisten(EventListener listener); - public void unlisten(EventListener listener); + EventHub storeEventHub(); - public EventHub storeEventHub(); + void onCloneConfig(HugeConfig config, String newGraph); - public void onCloneConfig(HugeConfig config, String newGraph); - - public void onDeleteConfig(HugeConfig config); + void onDeleteConfig(HugeConfig config); } diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendTable.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendTable.java index 334194741d..7126e4a632 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendTable.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendTable.java @@ -122,7 +122,7 @@ public static final String joinTableName(String prefix, String table) { /****************************** ShardSplitter ******************************/ - public static abstract class ShardSplitter { + public abstract static class ShardSplitter { // The min shard size should >= 1M to prevent too many number of shards protected static final int MIN_SHARD_SIZE = (int) Bytes.MB; @@ -220,7 +220,8 @@ public List splitEven(int count) { endKey(this.endKey), 0)); } - byte[] start, end; + byte[] start; + byte[] end; boolean startChanged = false; boolean endChanged = false; int length; diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/MetaHandler.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/MetaHandler.java index f19270a450..1436f0bd73 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/MetaHandler.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/MetaHandler.java @@ -21,5 +21,5 @@ public interface MetaHandler { - public Object handle(Session session, String meta, Object... args); + Object handle(Session session, String meta, Object... args); } diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftBackendStore.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftBackendStore.java index c21e3f58e7..74dc5a326b 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftBackendStore.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftBackendStore.java @@ -189,10 +189,9 @@ public void increaseCounter(HugeType type, long increment) { @Override public long getCounter(HugeType type) { - Object counter = this.queryByRaft(type, true, - o -> this.store.getCounter(type)); - assert counter instanceof Long; - return (Long) counter; + Object counter = this.queryByRaft(type, true,o -> this.store.getCounter(type)); + assert counter instanceof Long; + return (Long) counter; } private Object submitAndWait(StoreAction action, byte[] data) { From 74c55a40bc547e39de43521681deac2477006942 Mon Sep 17 00:00:00 2001 From: seagle Date: Tue, 26 Apr 2022 21:29:42 +0800 Subject: [PATCH 02/14] add blank after comma --- .../java/com/baidu/hugegraph/backend/store/BackendStore.java | 2 +- .../baidu/hugegraph/backend/store/raft/RaftBackendStore.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java index e4c4fbe0c5..61a22901f5 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java @@ -87,7 +87,7 @@ default Id nextId(HugeType type) { // Do get-increase-get-compare operation long counter = 0L; long expect = -1L; - synchronized(this) { + synchronized (this) { for (int i = 0; i < MAX_TIMES; i++) { counter = this.getCounter(type); diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftBackendStore.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftBackendStore.java index 74dc5a326b..06ddf9e20b 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftBackendStore.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftBackendStore.java @@ -189,7 +189,7 @@ public void increaseCounter(HugeType type, long increment) { @Override public long getCounter(HugeType type) { - Object counter = this.queryByRaft(type, true,o -> this.store.getCounter(type)); + Object counter = this.queryByRaft(type, true, o -> this.store.getCounter(type)); assert counter instanceof Long; return (Long) counter; } From 0b1e2a6ffa4d92894fc86754178ab00b52daa768 Mon Sep 17 00:00:00 2001 From: seagle Date: Wed, 27 Apr 2022 15:03:48 +0800 Subject: [PATCH 03/14] fix core-backend checkstyle issue --- .../hugegraph/backend/store/ram/RamTable.java | 4 +++- .../backend/tx/GraphIndexTransaction.java | 24 ++++++++----------- .../backend/tx/GraphTransaction.java | 2 +- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/ram/RamTable.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/ram/RamTable.java index 9fd2f14764..ba2bbc4bd1 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/ram/RamTable.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/ram/RamTable.java @@ -542,7 +542,9 @@ private void addVertex(Id vertex) { if (this.vertices.size() > 0) { lastId = this.vertices.get(this.vertices.size() - 1); } - LOG.info("scan from hbase source {} lastId value: {} compare {} size {}", vertex, lastId, vertex.compareTo(lastId), this.vertices.size()); + LOG.info("scan from hbase source {} lastId value: {} compare {} size {}", + vertex, lastId, vertex.compareTo(lastId), this.vertices.size()); + if (vertex.compareTo(lastId) < 0) { throw new HugeException("The ramtable feature is not " + "supported by %s backend", diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java index 3397cc3f6a..883782a5b4 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java @@ -211,7 +211,7 @@ protected void updateIndex(Id ilId, HugeElement element, boolean removed) { if (property == null) { E.checkState(hasNullableProp(element, fieldId), "Non-null property '%s' is null for '%s'", - this.graph().propertyKey(fieldId) , element); + this.graph().propertyKey(fieldId), element); if (firstNullField == fieldsNum) { firstNullField = allPropValues.size(); } @@ -328,8 +328,7 @@ private boolean hasEliminateInTx(IndexLabel indexLabel, Object value, return this.mutation().contains(entry, Action.ELIMINATE); } - private boolean existUniqueValueInStore(IndexLabel indexLabel, - Object value) { + private boolean existUniqueValueInStore(IndexLabel indexLabel, Object value) { ConditionQuery query = new ConditionQuery(HugeType.UNIQUE_INDEX); query.eq(HugeKeys.INDEX_LABEL_ID, indexLabel.id()); query.eq(HugeKeys.FIELD_VALUES, value); @@ -349,8 +348,7 @@ private boolean existUniqueValueInStore(IndexLabel indexLabel, index.elementId()); } while (iterator.hasNext()) { - LOG.warn("Unique constraint conflict found by record {}", - iterator.next()); + LOG.warn("Unique constraint conflict found by record {}", iterator.next()); } } finally { CloseableIterator.closeIterator(iterator); @@ -424,7 +422,7 @@ private IdHolderList queryByLabel(ConditionQuery query) { } ConditionQuery indexQuery; - indexQuery = new ConditionQuery(indexType , query); + indexQuery = new ConditionQuery(indexType, query); indexQuery.eq(HugeKeys.INDEX_LABEL_ID, il.id()); indexQuery.eq(HugeKeys.FIELD_VALUES, label); /* @@ -825,9 +823,7 @@ private MatchedIndex collectMatchedIndex(SchemaLabel schemaLabel, return null; } - - private ConditionQuery constructSearchQuery(ConditionQuery query, - MatchedIndex index) { + private ConditionQuery constructSearchQuery(ConditionQuery query, MatchedIndex index) { ConditionQuery newQuery = query; Set indexFields = new HashSet<>(); // Convert has(key, text) to has(key, textContainsAny(word1, word2)) @@ -1818,11 +1814,11 @@ private IndexLabel findMatchedIndexLabel(ConditionQuery query, leftIndex) { Set matchedIndexes = this.tx.collectMatchedIndexes(query); for (MatchedIndex index : matchedIndexes) { - for (IndexLabel label : index.indexLabels()){ - if (label.indexField().equals(leftIndex.indexField())){ - return label; - } - } + for (IndexLabel label : index.indexLabels()) { + if (label.indexField().equals(leftIndex.indexField())) { + return label; + } + } } return null; } diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphTransaction.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphTransaction.java index 55be0ce0ab..ade53c1dcb 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphTransaction.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphTransaction.java @@ -610,7 +610,7 @@ public HugeVertex addVertex(HugeVertex vertex) { this.beforeWrite(); this.addedVertices.put(vertex.id(), vertex); this.afterWrite(); - } catch (Throwable e){ + } catch (Throwable e) { this.locksTable.unlock(); throw e; } From 467b29e4f8a9772b168a321b8ec7f6dc2b38dc00 Mon Sep 17 00:00:00 2001 From: seagle Date: Wed, 27 Apr 2022 21:07:10 +0800 Subject: [PATCH 04/14] fix alignment --- .../hugegraph/backend/store/BackendStore.java | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java index 61a22901f5..0fed5707ed 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java @@ -101,11 +101,9 @@ default Id nextId(HugeType type) { } } - E.checkState(counter != 0L, "Please check whether '%s' is OK", - this.provider().type()); + E.checkState(counter != 0L, "Please check whether '%s' is OK", this.provider().type()); - E.checkState(counter == expect, "'%s' is busy please try again", - this.provider().type()); + E.checkState(counter == expect, "'%s' is busy please try again", this.provider().type()); return IdGenerator.of(expect); } @@ -147,31 +145,26 @@ default String olapTableName(Id id) { long getCounter(HugeType type); default void createOlapTable(Id pkId) { - throw new UnsupportedOperationException( - "BackendStore.createOlapTable()"); + throw new UnsupportedOperationException("BackendStore.createOlapTable()"); } default void checkAndRegisterOlapTable(Id pkId) { - throw new UnsupportedOperationException( - "BackendStore.checkAndRegisterOlapTable()"); + throw new UnsupportedOperationException("BackendStore.checkAndRegisterOlapTable()"); } default void clearOlapTable(Id pkId) { - throw new UnsupportedOperationException( - "BackendStore.clearOlapTable()"); + throw new UnsupportedOperationException("BackendStore.clearOlapTable()"); } default void removeOlapTable(Id pkId) { - throw new UnsupportedOperationException( - "BackendStore.removeOlapTable()"); + throw new UnsupportedOperationException("BackendStore.removeOlapTable()"); } default Map createSnapshot(String snapshotDir) { throw new UnsupportedOperationException("createSnapshot"); } - default void resumeSnapshot(String snapshotDir, - boolean deleteSnapshot) { + default void resumeSnapshot(String snapshotDir, boolean deleteSnapshot) { throw new UnsupportedOperationException("resumeSnapshot"); } From dde7611c20bfc0a53f048f75c93956a3baa87ceb Mon Sep 17 00:00:00 2001 From: seagle Date: Thu, 28 Apr 2022 19:07:37 +0800 Subject: [PATCH 05/14] fix checkstyle issue --- .../com/baidu/hugegraph/backend/store/BackendStore.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java index 0fed5707ed..d5c33ec698 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java @@ -101,9 +101,11 @@ default Id nextId(HugeType type) { } } - E.checkState(counter != 0L, "Please check whether '%s' is OK", this.provider().type()); + E.checkState(counter != 0L, "Please check whether '%s' is OK", + this.provider().type()); - E.checkState(counter == expect, "'%s' is busy please try again", this.provider().type()); + E.checkState(counter == expect, "'%s' is busy please try again", + this.provider().type()); return IdGenerator.of(expect); } From c79e4c717fba35865324ca903ce6294d65c67fe7 Mon Sep 17 00:00:00 2001 From: yuanbingze Date: Tue, 3 May 2022 15:53:15 +0800 Subject: [PATCH 06/14] fix switch line issue --- .../hugegraph/backend/query/Condition.java | 51 +++++++++++++++---- .../hugegraph/backend/store/BackendStore.java | 16 +++--- 2 files changed, 49 insertions(+), 18 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Condition.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Condition.java index 78468a51c1..fbeddaa02a 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Condition.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/Condition.java @@ -54,37 +54,60 @@ public enum ConditionType { public enum RelationType implements BiPredicate { - EQ("==", (v1, v2) -> { return equals(v1, v2); }), - GT(">", (v1, v2) -> { return compare(v1, v2) > 0; }), - GTE(">=", (v1, v2) -> { return compare(v1, v2) >= 0; }), - LT("<", (v1, v2) -> { return compare(v1, v2) < 0; }), - LTE("<=", (v1, v2) -> { return compare(v1, v2) <= 0; }), - NEQ("!=", (v1, v2) -> { return compare(v1, v2) != 0; }), + EQ("==", (v1, v2) -> { + return equals(v1, v2); + }), + + GT(">", (v1, v2) -> { + return compare(v1, v2) > 0; + }), + + GTE(">=", (v1, v2) -> { + return compare(v1, v2) >= 0; + }), + + LT("<", (v1, v2) -> { + return compare(v1, v2) < 0; + }), + + LTE("<=", (v1, v2) -> { + return compare(v1, v2) <= 0; + }), + + NEQ("!=", (v1, v2) -> { + return compare(v1, v2) != 0; + }), + IN("in", null, Collection.class, (v1, v2) -> { assert v2 != null; return ((Collection) v2).contains(v1); }), + NOT_IN("notin", null, Collection.class, (v1, v2) -> { assert v2 != null; return !((Collection) v2).contains(v1); }), + PREFIX("prefix", Id.class, Id.class, (v1, v2) -> { assert v2 != null; return v1 != null && Bytes.prefixWith(((Id) v2).asBytes(), ((Id) v1).asBytes()); }), + TEXT_CONTAINS("textcontains", String.class, String.class, (v1, v2) -> { // TODO: support collection-property textcontains return v1 != null && ((String) v1).contains((String) v2); }), - TEXT_CONTAINS_ANY("textcontainsany", String.class, Collection.class, - (v1, v2) -> { + + TEXT_CONTAINS_ANY("textcontainsany", String.class, Collection.class, (v1, v2) -> { assert v2 != null; if (v1 == null) { return false; } + @SuppressWarnings("unchecked") Collection words = (Collection) v2; + for (String word : words) { if (((String) v1).contains(word)) { return true; @@ -92,18 +115,22 @@ public enum RelationType implements BiPredicate { } return false; }), + CONTAINS("contains", Collection.class, null, (v1, v2) -> { assert v2 != null; return v1 != null && ((Collection) v1).contains(v2); }), + CONTAINS_VALUE("containsv", Map.class, null, (v1, v2) -> { assert v2 != null; return v1 != null && ((Map) v1).containsValue(v2); }), + CONTAINS_KEY("containsk", Map.class, null, (v1, v2) -> { assert v2 != null; return v1 != null && ((Map) v1).containsKey(v2); }), + SCAN("scan", (v1, v2) -> { assert v2 != null; /* @@ -118,12 +145,12 @@ public enum RelationType implements BiPredicate { private final Class v1Class; private final Class v2Class; - private RelationType(String op, + RelationType(String op, BiFunction tester) { this(op, null, null, tester); } - private RelationType(String op, Class v1Class, Class v2Class, + RelationType(String op, Class v1Class, Class v2Class, BiFunction tester) { this.operator = op; this.tester = tester; @@ -741,11 +768,15 @@ public RangeConditions(List conditions) { break; case GTE: this.keyMinEq = true; + this.keyMin = r.value(); + break; case GT: this.keyMin = r.value(); break; case LTE: this.keyMaxEq = true; + this.keyMax = r.value(); + break; case LT: this.keyMax = r.value(); break; diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java index d5c33ec698..4e9c923d04 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java @@ -123,20 +123,20 @@ default void setCounterLowest(HugeType type, long lowest) { default String olapTableName(HugeType type) { StringBuilder sb = new StringBuilder(7); sb.append(this.store()) - .append("_") - .append(HugeType.OLAP.string()) - .append("_") - .append(type.string()); + .append("_") + .append(HugeType.OLAP.string()) + .append("_") + .append(type.string()); return sb.toString().toLowerCase(); } default String olapTableName(Id id) { StringBuilder sb = new StringBuilder(5 + 4); sb.append(this.store()) - .append("_") - .append(HugeType.OLAP.string()) - .append("_") - .append(id.asLong()); + .append("_") + .append(HugeType.OLAP.string()) + .append("_") + .append(id.asLong()); return sb.toString().toLowerCase(); } From 2f0d349a6797546e1835d95cfe6120d7dc5230f8 Mon Sep 17 00:00:00 2001 From: yuanbingze Date: Tue, 3 May 2022 15:55:33 +0800 Subject: [PATCH 07/14] add hashCode function for BackendEntry --- .../com/baidu/hugegraph/backend/store/BackendEntry.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java index 8fbd72b3f3..60bc1f5623 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java @@ -69,6 +69,13 @@ public boolean equals(Object obj) { return Bytes.equals(this.name, other.name) && Bytes.equals(this.value, other.value); } + + public int hashCode() { + return super.hashCode() ^ + this.name.hashCode() ^ + this.value.hashCode(); + } + } HugeType type(); From 397d2e647f117e65c6f4fde33af08f3c083de97d Mon Sep 17 00:00:00 2001 From: yuanbingze Date: Tue, 3 May 2022 15:57:26 +0800 Subject: [PATCH 08/14] fix hashCode issue --- .../java/com/baidu/hugegraph/backend/store/BackendEntry.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java index 60bc1f5623..38393d9f92 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendEntry.java @@ -71,8 +71,7 @@ public boolean equals(Object obj) { } public int hashCode() { - return super.hashCode() ^ - this.name.hashCode() ^ + return this.name.hashCode() ^ this.value.hashCode(); } From da59c9e80d1f3f489e1e131f760a9aaa14269404 Mon Sep 17 00:00:00 2001 From: yuanbingze Date: Tue, 3 May 2022 16:21:44 +0800 Subject: [PATCH 09/14] fix indentation issue --- .../baidu/hugegraph/backend/query/IdRangeQuery.java | 12 ++++++------ .../hugegraph/backend/store/BackendMutation.java | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/IdRangeQuery.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/IdRangeQuery.java index 5dd8b7ab83..dce032e396 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/IdRangeQuery.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/IdRangeQuery.java @@ -102,12 +102,12 @@ public String toString() { assert sb.length() > 0; sb.deleteCharAt(sb.length() - 1); // Remove the last "`" sb.append(" id in range ") - .append(this.inclusiveStart ? "[" : "(") - .append(this.start) - .append(", ") - .append(this.end) - .append(this.inclusiveEnd ? "]" : ")") - .append("`"); + .append(this.inclusiveStart ? "[" : "(") + .append(this.start) + .append(", ") + .append(this.end) + .append(this.inclusiveEnd ? "]" : ")") + .append("`"); return sb.toString(); } } diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java index 58c907545f..f9c2f1f708 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java @@ -111,6 +111,7 @@ private void optimizeUpdates(BackendEntry entry, Action action) { " transaction between %s and %s", entry, originItem.entry())); } + break; case ELIMINATE: if (originAction == Action.INSERT || originAction == Action.DELETE) { From 4e5200b8c912bb7df749a55fa547328807224a36 Mon Sep 17 00:00:00 2001 From: seagle Date: Wed, 4 May 2022 11:34:06 +0800 Subject: [PATCH 10/14] update sb to builder --- .../hugegraph/backend/query/IdRangeQuery.java | 22 +++++++-------- .../hugegraph/backend/store/BackendStore.java | 28 +++++++++---------- .../backend/tx/GraphIndexTransaction.java | 4 +-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/IdRangeQuery.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/IdRangeQuery.java index dce032e396..340f14ba87 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/IdRangeQuery.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/query/IdRangeQuery.java @@ -98,16 +98,16 @@ public IdRangeQuery copy() { @Override public String toString() { - StringBuilder sb = new StringBuilder(super.toString()); - assert sb.length() > 0; - sb.deleteCharAt(sb.length() - 1); // Remove the last "`" - sb.append(" id in range ") - .append(this.inclusiveStart ? "[" : "(") - .append(this.start) - .append(", ") - .append(this.end) - .append(this.inclusiveEnd ? "]" : ")") - .append("`"); - return sb.toString(); + StringBuilder builder = new StringBuilder(super.toString()); + assert builder.length() > 0; + builder.deleteCharAt(builder.length() - 1); // Remove the last "`" + builder.append(" id in range ") + .append(this.inclusiveStart ? "[" : "(") + .append(this.start) + .append(", ") + .append(this.end) + .append(this.inclusiveEnd ? "]" : ")") + .append("`"); + return builder.toString(); } } diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java index 4e9c923d04..9f8e1e4967 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendStore.java @@ -121,23 +121,23 @@ default void setCounterLowest(HugeType type, long lowest) { } default String olapTableName(HugeType type) { - StringBuilder sb = new StringBuilder(7); - sb.append(this.store()) - .append("_") - .append(HugeType.OLAP.string()) - .append("_") - .append(type.string()); - return sb.toString().toLowerCase(); + StringBuilder builder = new StringBuilder(7); + builder.append(this.store()) + .append("_") + .append(HugeType.OLAP.string()) + .append("_") + .append(type.string()); + return builder.toString().toLowerCase(); } default String olapTableName(Id id) { - StringBuilder sb = new StringBuilder(5 + 4); - sb.append(this.store()) - .append("_") - .append(HugeType.OLAP.string()) - .append("_") - .append(id.asLong()); - return sb.toString().toLowerCase(); + StringBuilder builder = new StringBuilder(5 + 4); + builder.append(this.store()) + .append("_") + .append(HugeType.OLAP.string()) + .append("_") + .append(id.asLong()); + return builder.toString().toLowerCase(); } // Increase next id for specific type diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java index 883782a5b4..26b896d46f 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java @@ -421,10 +421,10 @@ private IdHolderList queryByLabel(ConditionQuery query) { "label index is disabled", schemaLabel); } - ConditionQuery indexQuery; - indexQuery = new ConditionQuery(indexType, query); + ConditionQuery indexQuery = new ConditionQuery(indexType, query); indexQuery.eq(HugeKeys.INDEX_LABEL_ID, il.id()); indexQuery.eq(HugeKeys.FIELD_VALUES, label); + /* * We can avoid redundant element ids if set limit, but if there are * label index overridden by other vertices with different label, From 89e84a9332dd5da4a6d08427b634ad611a7948e3 Mon Sep 17 00:00:00 2001 From: seagle Date: Wed, 4 May 2022 12:11:39 +0800 Subject: [PATCH 11/14] recover old code --- .../java/com/baidu/hugegraph/backend/store/BackendMutation.java | 1 - 1 file changed, 1 deletion(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java index f9c2f1f708..58c907545f 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java @@ -111,7 +111,6 @@ private void optimizeUpdates(BackendEntry entry, Action action) { " transaction between %s and %s", entry, originItem.entry())); } - break; case ELIMINATE: if (originAction == Action.INSERT || originAction == Action.DELETE) { From 52f94deb9a9ccf1a2be833eef472114f42564a7c Mon Sep 17 00:00:00 2001 From: seagle Date: Wed, 4 May 2022 16:14:02 +0800 Subject: [PATCH 12/14] fix switch issue --- .../hugegraph/backend/store/BackendMutation.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java index 58c907545f..e371b3ad7c 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/BackendMutation.java @@ -111,6 +111,19 @@ private void optimizeUpdates(BackendEntry entry, Action action) { " transaction between %s and %s", entry, originItem.entry())); } + + if (originAction == Action.INSERT || + originAction == Action.DELETE) { + throw incompatibleActionException(action, originAction); + } else { + Id subId = entry.subId(); + Id originSubId = originItem.entry().subId(); + assert subId != null; + if (subId == originSubId || subId.equals(originSubId)) { + iter.remove(); + } + } + break; case ELIMINATE: if (originAction == Action.INSERT || originAction == Action.DELETE) { From de6b13529c643e7b4d18072829bd54290d78fdf3 Mon Sep 17 00:00:00 2001 From: seagle Date: Wed, 11 May 2022 17:48:59 +0800 Subject: [PATCH 13/14] update align --- .../baidu/hugegraph/backend/serializer/BinarySerializer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinarySerializer.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinarySerializer.java index c5e01e3451..4702d3a978 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinarySerializer.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/serializer/BinarySerializer.java @@ -871,7 +871,7 @@ public BackendEntry parse(BackendEntry originEntry) { buffer.write(parsedEntry.id().asBytes()); buffer.write(bytes); parsedEntry = new BinaryBackendEntry(originEntry.type(), new BinaryId(buffer.bytes(), - BytesBuffer.wrap(buffer.bytes()).readEdgeId())); + BytesBuffer.wrap(buffer.bytes()).readEdgeId())); for (BackendEntry.BackendColumn col : originEntry.columns()) { parsedEntry.column(buffer.bytes(), col.value); From 4dc6f7b779363bfc60164ce21b45b50a4fcdd079 Mon Sep 17 00:00:00 2001 From: seagle Date: Wed, 11 May 2022 19:34:03 +0800 Subject: [PATCH 14/14] rerun