|
16 | 16 | public class CustomJoiner<T> implements Joiner<T,List<T>> { |
17 | 17 | private static final String LOG_PREFIX = "TRACER CustomJoiner "; |
18 | 18 |
|
19 | | - private AtomicInteger successCounter = new AtomicInteger(0); |
20 | | - private AtomicBoolean hasReachedThreshold = new AtomicBoolean(false); |
21 | | - private int numTasksForSuccess = 0; |
22 | | - private List<T> results = new CopyOnWriteArrayList<>(); |
| 19 | + private final AtomicInteger successCounter = new AtomicInteger(0); |
| 20 | + private final AtomicBoolean hasReachedThreshold = new AtomicBoolean(false); |
| 21 | + private final int numTasksForSuccess; |
| 22 | + private final List<T> results = new CopyOnWriteArrayList<>(); |
23 | 23 |
|
24 | 24 | // sanity check: |
25 | 25 | private AtomicInteger failCounter = new AtomicInteger(0); |
@@ -57,49 +57,14 @@ public boolean onComplete(StructuredTaskScope.Subtask<? extends T> subtask) { |
57 | 57 |
|
58 | 58 | @Override |
59 | 59 | public List<T> result() { |
| 60 | + String stats = " num ok: " + successCounter.get() + " num failed: " + failCounter.get(); |
60 | 61 | if (! hasReachedThreshold.get()) { |
| 62 | + System.out.println(LOG_PREFIX + " failed. stats: " + stats); |
61 | 63 | throw new IllegalStateException("success threshold not met"); |
62 | 64 | } |
63 | | - System.out.println(LOG_PREFIX + " success! num ok: " + numTasksForSuccess + |
64 | | - " num failed: " + failCounter.get()); |
65 | 65 |
|
66 | | - return results; |
67 | | - } |
68 | | - |
69 | | - /* |
70 | | - * |
71 | | - @Override |
72 | | - protected void handleComplete(StructuredTaskScope.Subtask<? extends T> subtask) { |
73 | | - try { |
74 | | - var state = subtask.state(); |
75 | | - if (state == StructuredTaskScope.Subtask.State.SUCCESS) { |
76 | | - int numSuccess = successCounter.incrementAndGet(); |
77 | | - if (numSuccess <= numTasksForSuccess) { |
78 | | - results.add(subtask.get()); |
79 | | - } |
| 66 | + System.out.println(LOG_PREFIX + " success. stats: " + stats); |
80 | 67 |
|
81 | | - if (numSuccess == numTasksForSuccess) { |
82 | | - hasReachedThreshold.getAndSet(true); |
83 | | - System.out.println(LOG_PREFIX + " success threshold reached..."); |
84 | | - shutdown(); |
85 | | - } |
86 | | - } else if (state == StructuredTaskScope.Subtask.State.FAILED) { |
87 | | - failCounter.incrementAndGet(); |
88 | | - } |
89 | | - } catch (Exception ex) { |
90 | | - System.err.println(LOG_PREFIX + " ERROR caught ex: " + ex.getMessage()); |
91 | | - } |
92 | | - } |
93 | | -
|
94 | | - // TODO: deep copy? |
95 | | - public List<T> results() { |
96 | | - if (! hasReachedThreshold.get()) { |
97 | | - throw new IllegalStateException("success threshold not met"); |
98 | | - } |
99 | | - System.out.println(LOG_PREFIX + " success! num ok: " + numTasksForSuccess + |
100 | | - " num failed: " + failCounter.get()); |
101 | | -
|
102 | | - return new ArrayList<T>(results); |
| 68 | + return results; |
103 | 69 | } |
104 | | - */ |
105 | 70 | } |
0 commit comments