Skip to content

Commit 88604cf

Browse files
committed
backend entry iter
1 parent a402ddb commit 88604cf

File tree

5 files changed

+38
-22
lines changed

5 files changed

+38
-22
lines changed

hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/traversers/KoutAPI.java

+19-15
Original file line numberDiff line numberDiff line change
@@ -103,26 +103,30 @@ public String get(@Context GraphManager manager,
103103
(TaskMemoryPool) currentTaskPool);
104104
MemoryPool currentOperationPool = currentTaskPool.addChildPool("kout-main-operation");
105105

106-
ApiMeasurer measure = new ApiMeasurer();
106+
try {
107+
ApiMeasurer measure = new ApiMeasurer();
107108

108-
Id sourceId = VertexAPI.checkAndParseVertexId(source);
109-
Directions dir = Directions.convert(EdgeAPI.parseDirection(direction));
109+
Id sourceId = VertexAPI.checkAndParseVertexId(source);
110+
Directions dir = Directions.convert(EdgeAPI.parseDirection(direction));
110111

111-
HugeGraph g = graph(manager, graph);
112+
HugeGraph g = graph(manager, graph);
112113

113-
Set<Id> ids;
114-
try (KoutTraverser traverser = new KoutTraverser(g)) {
115-
ids = traverser.kout(sourceId, dir, edgeLabel, depth,
116-
nearest, maxDegree, capacity, limit);
117-
measure.addIterCount(traverser.vertexIterCounter.get(),
118-
traverser.edgeIterCounter.get());
119-
}
114+
Set<Id> ids;
115+
try (KoutTraverser traverser = new KoutTraverser(g)) {
116+
ids = traverser.kout(sourceId, dir, edgeLabel, depth,
117+
nearest, maxDegree, capacity, limit);
118+
measure.addIterCount(traverser.vertexIterCounter.get(),
119+
traverser.edgeIterCounter.get());
120+
}
120121

121-
if (count_only) {
122-
return manager.serializer(g, measure.measures())
123-
.writeMap(ImmutableMap.of("vertices_size", ids.size()));
122+
if (count_only) {
123+
return manager.serializer(g, measure.measures())
124+
.writeMap(ImmutableMap.of("vertices_size", ids.size()));
125+
}
126+
return manager.serializer(g, measure.measures()).writeList("vertices", ids);
127+
} finally {
128+
queryPool.releaseSelf("Complete kout query", false);
124129
}
125-
return manager.serializer(g, measure.measures()).writeList("vertices", ids);
126130
}
127131

128132
@POST

hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendTable.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.apache.hugegraph.backend.query.ConditionQuery;
2828
import org.apache.hugegraph.backend.query.Query;
2929
import org.apache.hugegraph.backend.serializer.BytesBuffer;
30+
import org.apache.hugegraph.memory.MemoryManager;
31+
import org.apache.hugegraph.memory.pool.MemoryPool;
3032
import org.apache.hugegraph.type.HugeType;
3133
import org.apache.hugegraph.type.define.Directions;
3234
import org.apache.hugegraph.type.define.HugeKeys;
@@ -135,7 +137,14 @@ public static final String joinTableName(String prefix, String table) {
135137

136138
public abstract void clear(Session session);
137139

138-
public abstract Iterator<BackendEntry> query(Session session, Query query);
140+
public Iterator<BackendEntry> query(Session session, Query query) {
141+
MemoryPool currentTaskPool = MemoryManager.getInstance()
142+
.getCorrespondingTaskMemoryPool(
143+
Thread.currentThread().getName());
144+
MemoryPool currentOperationPool =
145+
currentTaskPool.addChildPool("BackendTable-Iterator");
146+
return null;
147+
}
139148

140149
public Iterator<BackendEntry> queryOlap(Session session, Query query) {
141150
throw new NotImplementedException();

hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/util/Consumers.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,13 @@ public void start(String name) {
118118
}
119119

120120
private Void runAndDone(MemoryPool queryPool) {
121+
MemoryPool currentTaskPool = queryPool.addChildPool("kout-consume-task");
122+
MemoryManager.getInstance()
123+
.bindCorrespondingTaskMemoryPool(Thread.currentThread().getName(),
124+
(TaskMemoryPool) currentTaskPool);
125+
MemoryPool currentOperationPool =
126+
currentTaskPool.addChildPool("kout-consume-operation");
121127
try {
122-
MemoryPool currentTaskPool = queryPool.addChildPool("kout-consume-task");
123-
MemoryManager.getInstance()
124-
.bindCorrespondingTaskMemoryPool(Thread.currentThread().getName(),
125-
(TaskMemoryPool) currentTaskPool);
126-
MemoryPool currentOperationPool =
127-
currentTaskPool.addChildPool("kout-consume-operation");
128128
this.run();
129129
} catch (Throwable e) {
130130
if (e instanceof StopExecution) {
@@ -139,6 +139,7 @@ private Void runAndDone(MemoryPool queryPool) {
139139
} finally {
140140
this.done();
141141
this.latch.countDown();
142+
currentTaskPool.releaseSelf("Complete kout consume task", false);
142143
}
143144
return null;
144145
}

hugegraph-server/hugegraph-hstore/src/main/java/org/apache/hugegraph/backend/store/hstore/HstoreTable.java

+1
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ public Number queryNumber(Session session, Query query) {
312312

313313
@Override
314314
public Iterator<BackendEntry> query(Session session, Query query) {
315+
super.query(session, query);
315316
if (query.limit() == 0L && !query.noLimit()) {
316317
// LOG.debug("Return empty result(limit=0) for query {}", query);
317318
return Collections.emptyIterator();

hugegraph-server/hugegraph-rocksdb/src/main/java/org/apache/hugegraph/backend/store/rocksdb/RocksDBTable.java

+1
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ public Number queryNumber(RocksDBSessions.Session session, Query query) {
143143

144144
@Override
145145
public Iterator<BackendEntry> query(RocksDBSessions.Session session, Query query) {
146+
super.query(session, query);
146147
if (query.limit() == 0L && !query.noLimit()) {
147148
LOG.debug("Return empty result(limit=0) for query {}", query);
148149
return Collections.emptyIterator();

0 commit comments

Comments
 (0)