Skip to content

Commit 090a873

Browse files
committed
fix(task): preserve result-loading compatibility
1 parent 47fb2f9 commit 090a873

2 files changed

Lines changed: 51 additions & 26 deletions

File tree

hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/task/TaskAndResultScheduler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public <V> HugeTask<V> task(Id id, boolean withResult) {
129129

130130
@Override
131131
public <V> Iterator<HugeTask<V>> tasks(List<Id> ids) {
132-
return this.tasks(ids, false);
132+
return this.tasks(ids, true);
133133
}
134134

135135
@Override
@@ -144,7 +144,7 @@ public <V> Iterator<HugeTask<V>> tasks(List<Id> ids,
144144
@Override
145145
public <V> Iterator<HugeTask<V>> tasks(TaskStatus status, long limit,
146146
String page) {
147-
return this.tasks(status, limit, page, false);
147+
return this.tasks(status, limit, page, true);
148148
}
149149

150150
@Override

hugegraph-server/hugegraph-test/src/main/java/org/apache/hugegraph/core/TaskCoreTest.java

Lines changed: 49 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.util.Arrays;
2121
import java.util.Iterator;
2222
import java.util.Random;
23-
import java.util.concurrent.CountDownLatch;
2423
import java.util.concurrent.TimeoutException;
2524

2625
import org.apache.hugegraph.HugeException;
@@ -120,46 +119,42 @@ public void testTask() throws TimeoutException {
120119
public void testTaskWithoutResult() throws TimeoutException {
121120
HugeGraph graph = graph();
122121
TaskScheduler scheduler = graph.taskScheduler();
123-
CountDownLatch latch = new CountDownLatch(1);
124-
125-
TaskCallable<String> callable = new TaskCallable<String>() {
126-
@Override
127-
public String call() throws Exception {
128-
latch.await();
129-
return "metadata-result";
130-
}
131-
132-
@Override
133-
protected void done() {
134-
scheduler.save(this.task());
135-
}
136-
};
137122

138123
Id id = IdGenerator.of(88889);
139-
HugeTask<?> task = new HugeTask<>(id, null, callable);
124+
HugeTask<?> task = new HugeTask<>(id, null, new SleepCallable<>());
140125
task.type("test");
141-
task.name("metadata-task");
126+
task.name("metadata-task-in-memory");
142127
scheduler.schedule(task);
143128

144129
try {
145130
Whitebox.setInternalState(task, "result", "\"in-memory-result\"");
146131

147132
HugeTask<?> taskWithoutResult = scheduler.task(id, false);
148-
Assert.assertEquals("metadata-task", taskWithoutResult.name());
133+
Assert.assertEquals("metadata-task-in-memory",
134+
taskWithoutResult.name());
149135
Assert.assertNull(taskWithoutResult.result());
150136

151137
Iterator<HugeTask<Object>> iter = scheduler.tasks(ImmutableList.of(id),
152138
false);
153139
Assert.assertTrue(iter.hasNext());
154140
taskWithoutResult = iter.next();
155-
Assert.assertEquals("metadata-task", taskWithoutResult.name());
141+
Assert.assertEquals("metadata-task-in-memory",
142+
taskWithoutResult.name());
156143
Assert.assertNull(taskWithoutResult.result());
157144
Assert.assertFalse(iter.hasNext());
158145
} finally {
159146
Whitebox.setInternalState(task, "result", null);
160-
latch.countDown();
161147
}
162148

149+
scheduler.waitUntilTaskCompleted(id, 10);
150+
scheduler.delete(id, false);
151+
152+
id = IdGenerator.of(88890);
153+
task = new HugeTask<>(id, null, new MetadataResultCallable());
154+
task.type("test");
155+
task.name("metadata-task");
156+
scheduler.schedule(task);
157+
163158
scheduler.waitUntilTaskCompleted(id, 10);
164159

165160
HugeTask<?> taskWithResult = scheduler.task(id, true);
@@ -169,8 +164,14 @@ protected void done() {
169164
Assert.assertEquals("metadata-task", taskWithoutResult.name());
170165
Assert.assertNull(taskWithoutResult.result());
171166

172-
Iterator<HugeTask<Object>> iter = scheduler.tasks(ImmutableList.of(id),
173-
false);
167+
Iterator<HugeTask<Object>> iter = scheduler.tasks(ImmutableList.of(id));
168+
Assert.assertTrue(iter.hasNext());
169+
taskWithResult = iter.next();
170+
Assert.assertEquals("metadata-task", taskWithResult.name());
171+
Assert.assertEquals("\"metadata-result\"", taskWithResult.result());
172+
Assert.assertFalse(iter.hasNext());
173+
174+
iter = scheduler.tasks(ImmutableList.of(id), false);
174175
Assert.assertTrue(iter.hasNext());
175176
taskWithoutResult = iter.next();
176177
Assert.assertEquals("metadata-task", taskWithoutResult.name());
@@ -183,9 +184,16 @@ protected void done() {
183184
Assert.assertEquals("metadata-task", taskWithoutResult.name());
184185
Assert.assertNull(taskWithoutResult.result());
185186

186-
scheduler.delete(id, false);
187+
iter = scheduler.tasks(TaskStatus.SUCCESS, 10, null);
188+
Assert.assertTrue(iter.hasNext());
189+
taskWithResult = iter.next();
190+
Assert.assertEquals("metadata-task", taskWithResult.name());
191+
Assert.assertEquals("\"metadata-result\"", taskWithResult.result());
192+
193+
Id taskId = id;
194+
scheduler.delete(taskId, false);
187195
Assert.assertThrows(NotFoundException.class, () -> {
188-
scheduler.task(id);
196+
scheduler.task(taskId);
189197
});
190198
}
191199

@@ -788,4 +796,21 @@ public void done() {
788796
this.graph().taskScheduler().save(this.task());
789797
}
790798
}
799+
800+
public static class MetadataResultCallable extends TaskCallable<String> {
801+
802+
public MetadataResultCallable() {
803+
// pass
804+
}
805+
806+
@Override
807+
public String call() {
808+
return "metadata-result";
809+
}
810+
811+
@Override
812+
public void done() {
813+
this.graph().taskScheduler().save(this.task());
814+
}
815+
}
791816
}

0 commit comments

Comments
 (0)