Skip to content

Commit 5e9c280

Browse files
author
Hans-Peter Klett
committed
Added thread safety to the objects remaining.
1 parent 2b8f436 commit 5e9c280

File tree

1 file changed

+5
-5
lines changed
  • sdk/src/main/java/com/spectralogic/ds3client/helpers

1 file changed

+5
-5
lines changed

sdk/src/main/java/com/spectralogic/ds3client/helpers/JobState.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,23 @@
2525
import java.nio.channels.SeekableByteChannel;
2626
import java.util.Collection;
2727
import java.util.HashSet;
28+
import java.util.concurrent.atomic.AtomicInteger;
2829

29-
//TODO: concurrency
3030
class JobState implements AutoCloseable {
31-
private int objectsRemaining;
31+
private final AtomicInteger objectsRemaining;
3232
private final AutoCloseableCache<String, WindowedChannelFactory> channelCache;
3333
private final JobPartTracker partTracker;
3434

3535
public JobState(final ObjectChannelBuilder channelBuilder, final Collection<Objects> filteredChunks) {
36-
this.objectsRemaining = getObjectCount(filteredChunks);
36+
this.objectsRemaining = new AtomicInteger(getObjectCount(filteredChunks));
3737
this.channelCache = buildCache(channelBuilder);
3838
this.partTracker = JobPartTrackerFactory
3939
.buildPartTracker(Iterables.concat(filteredChunks))
4040
.attachObjectCompletedListener(new ObjectCompletedListenerImplementation());
4141
}
4242

4343
public boolean hasObjects() {
44-
return this.objectsRemaining > 0;
44+
return this.objectsRemaining.get() > 0;
4545
}
4646

4747
private static int getObjectCount(final Collection<Objects> chunks) {
@@ -82,7 +82,7 @@ public JobPartTracker getPartTracker() {
8282
private final class ObjectCompletedListenerImplementation implements ObjectCompletedListener {
8383
@Override
8484
public void objectCompleted(final String name) {
85-
JobState.this.objectsRemaining--;
85+
JobState.this.objectsRemaining.decrementAndGet();
8686
try {
8787
JobState.this.channelCache.close(name);
8888
} catch (final Exception e) {

0 commit comments

Comments
 (0)