55
55
*/
56
56
public class InMemoryProducerQueues implements ProducerQueues {
57
57
58
- private final int amountOfQueues ;
59
-
60
58
private final int bucketsPerQueue ;
61
59
62
60
private final @ NotNull AtomicBoolean shutdown = new AtomicBoolean (false );
@@ -75,7 +73,6 @@ public class InMemoryProducerQueues implements ProducerQueues {
75
73
public InMemoryProducerQueues (final int persistenceBucketCount , final int amountOfQueues ) {
76
74
77
75
this .persistenceBucketCount = persistenceBucketCount ;
78
- this .amountOfQueues = amountOfQueues ;
79
76
bucketsPerQueue = persistenceBucketCount / amountOfQueues ;
80
77
shutdownGracePeriod = InternalConfigurations .PERSISTENCE_SHUTDOWN_GRACE_PERIOD_MSEC .get ();
81
78
@@ -94,7 +91,8 @@ public InMemoryProducerQueues(final int persistenceBucketCount, final int amount
94
91
}
95
92
96
93
@ VisibleForTesting
97
- @ NotNull ImmutableList <Integer > createBucketIndexes (final int queueIndex , final int bucketsPerQueue ) {
94
+ @ NotNull
95
+ ImmutableList <Integer > createBucketIndexes (final int queueIndex , final int bucketsPerQueue ) {
98
96
final ImmutableList .Builder <Integer > builder = ImmutableList .builder ();
99
97
for (int i = bucketsPerQueue * queueIndex ; i < bucketsPerQueue * (queueIndex + 1 ); i ++) {
100
98
builder .add (i );
@@ -104,60 +102,32 @@ public InMemoryProducerQueues(final int persistenceBucketCount, final int amount
104
102
105
103
public <R > @ NotNull ListenableFuture <R > submit (final @ NotNull String key , final @ NotNull Task <R > task ) {
106
104
//noinspection ConstantConditions (future is never null if the callbacks are null)
107
- return submitInternal (getBucket (key ), task , null , null , false );
105
+ return submitInternal (getBucket (key ), task , false );
108
106
}
109
107
110
108
public <R > @ NotNull ListenableFuture <R > submit (final int bucketIndex , @ NotNull final Task <R > task ) {
111
109
//noinspection ConstantConditions (futuer is never null if the callbacks are null)
112
- return submitInternal (bucketIndex , task , null , null , false );
113
- }
114
-
115
-
116
- public <R > @ Nullable ListenableFuture <R > submit (
117
- final int bucketIndex ,
118
- final @ NotNull Task <R > task ,
119
- @ Nullable final SingleWriterService .SuccessCallback <R > successCallback ,
120
- @ Nullable final SingleWriterService .FailedCallback failedCallback ) {
121
-
122
- return submitInternal (bucketIndex , task , successCallback , failedCallback , false );
110
+ return submitInternal (bucketIndex , task , false );
123
111
}
124
112
125
-
126
113
private <R > @ Nullable ListenableFuture <R > submitInternal (
127
114
final int bucketIndex ,
128
115
final @ NotNull Task <R > task ,
129
- @ Nullable final SingleWriterService .SuccessCallback <R > successCallback ,
130
- @ Nullable final SingleWriterService .FailedCallback failedCallback ,
131
116
final boolean ignoreShutdown ) {
132
117
if (!ignoreShutdown && shutdown .get () && System .currentTimeMillis () - shutdownStartTime > shutdownGracePeriod ) {
133
118
return SettableFuture .create (); // Future will never return since we are shutting down.
134
119
}
135
120
final int queueIndex = bucketIndex / bucketsPerQueue ;
136
- final SettableFuture <R > resultFuture ;
137
- if (successCallback == null ) {
138
- resultFuture = SettableFuture .create ();
139
- } else {
140
- resultFuture = null ;
141
- }
121
+ final SettableFuture <R > resultFuture = SettableFuture .create ();
142
122
143
123
final MpscUnboundedArrayQueue <Runnable > queue = queues [queueIndex ];
144
124
final AtomicInteger wip = wips [queueIndex ];
145
125
queue .offer (() -> {
146
126
try {
147
127
final R result = task .doTask (bucketIndex );
148
- if (resultFuture != null ) {
149
- resultFuture .set (result );
150
- } else {
151
- successCallback .afterTask (result );
152
- }
128
+ resultFuture .set (result );
153
129
} catch (final Throwable e ) {
154
- if (resultFuture != null ) {
155
- resultFuture .setException (e );
156
- } else {
157
- if (failedCallback != null ) {
158
- failedCallback .afterTask (e );
159
- }
160
- }
130
+ resultFuture .setException (e );
161
131
}
162
132
});
163
133
@@ -194,7 +164,8 @@ public InMemoryProducerQueues(final int persistenceBucketCount, final int amount
194
164
* @return a list of listenableFutures of type R
195
165
*/
196
166
public @ NotNull <R > List <ListenableFuture <R >> submitToAllBuckets (
197
- final @ NotNull Task <R > task , final boolean parallel ) {
167
+ final @ NotNull Task <R > task ,
168
+ final boolean parallel ) {
198
169
if (parallel ) {
199
170
return submitToAllBucketsParallel (task , false );
200
171
} else {
@@ -214,11 +185,12 @@ public InMemoryProducerQueues(final int persistenceBucketCount, final int amount
214
185
}
215
186
216
187
private @ NotNull <R > List <ListenableFuture <R >> submitToAllBucketsParallel (
217
- final @ NotNull Task <R > task , final boolean ignoreShutdown ) {
188
+ final @ NotNull Task <R > task ,
189
+ final boolean ignoreShutdown ) {
218
190
final ImmutableList .Builder <ListenableFuture <R >> builder = ImmutableList .builder ();
219
191
for (int bucket = 0 ; bucket < persistenceBucketCount ; bucket ++) {
220
192
//noinspection ConstantConditions (futuer is never null if the callbacks are null)
221
- builder .add (submitInternal (bucket , task , null , null , ignoreShutdown ));
193
+ builder .add (submitInternal (bucket , task , ignoreShutdown ));
222
194
}
223
195
return builder .build ();
224
196
}
@@ -239,12 +211,10 @@ public InMemoryProducerQueues(final int persistenceBucketCount, final int amount
239
211
return builder .build ();
240
212
}
241
213
242
-
243
214
public int getBucket (final @ NotNull String key ) {
244
215
return BucketUtils .getBucket (key , persistenceBucketCount );
245
216
}
246
217
247
-
248
218
@ NotNull
249
219
public ListenableFuture <Void > shutdown (final @ Nullable Task <Void > finalTask ) {
250
220
if (shutdown .getAndSet (true )) {
@@ -288,5 +258,4 @@ public void onFailure(final @NotNull Throwable throwable) {
288
258
}, executorService );
289
259
return closeFuture ;
290
260
}
291
-
292
261
}
0 commit comments