Skip to content

Commit

Permalink
FIX: getOperationStatus method in asyncCollectionPipedInsert/Update.
Browse files Browse the repository at this point in the history
  • Loading branch information
brido4125 committed Jun 16, 2023
1 parent 0119a75 commit e8e053d
Showing 1 changed file with 24 additions and 36 deletions.
60 changes: 24 additions & 36 deletions src/main/java/net/spy/memcached/ArcusClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -952,9 +952,6 @@ <T> CollectionFuture<Map<Integer, CollectionOperationStatus>> asyncCollectionPip

final CountDownLatch latch = new CountDownLatch(updateList.size());

final List<OperationStatus> mergedOperationStatus = Collections
.synchronizedList(new ArrayList<OperationStatus>(updateList.size()));

final Map<Integer, CollectionOperationStatus> mergedResult =
new ConcurrentHashMap<Integer, CollectionOperationStatus>();

Expand All @@ -966,15 +963,12 @@ <T> CollectionFuture<Map<Integer, CollectionOperationStatus>> asyncCollectionPip
new CollectionPipedUpdateOperation.Callback() {
// each result status
public void receivedStatus(OperationStatus status) {
CollectionOperationStatus cstatus;

if (status instanceof CollectionOperationStatus) {
cstatus = (CollectionOperationStatus) status;
} else {
getLogger().warn("Unhandled state: " + status);
cstatus = new CollectionOperationStatus(status);
}
mergedOperationStatus.add(cstatus);
/*
* Nothing to do here.
* Because the result status is handled in gotStatus method.
* gotStatus method put failed status into mergedResult.
* If mergedResult was not empty, the merged operation status is failed.
* */
}

// complete
Expand Down Expand Up @@ -1058,12 +1052,12 @@ public Map<Integer, CollectionOperationStatus> get(long duration,

@Override
public CollectionOperationStatus getOperationStatus() {
for (OperationStatus status : mergedOperationStatus) {
if (!status.isSuccess()) {
return new CollectionOperationStatus(status);
}
}
return new CollectionOperationStatus(true, "END", CollectionResponse.END);
return isDone() ?
(mergedResult.isEmpty()
? new CollectionOperationStatus(true, "END", CollectionResponse.END)
: new CollectionOperationStatus(false, "END", CollectionResponse.END)
)
: null;
}

@Override
Expand Down Expand Up @@ -3907,9 +3901,6 @@ <T> CollectionFuture<Map<Integer, CollectionOperationStatus>> asyncCollectionPip

final CountDownLatch latch = new CountDownLatch(insertList.size());

final List<OperationStatus> mergedOperationStatus = Collections
.synchronizedList(new ArrayList<OperationStatus>(insertList.size()));

final Map<Integer, CollectionOperationStatus> mergedResult =
new ConcurrentHashMap<Integer, CollectionOperationStatus>();

Expand All @@ -3921,15 +3912,12 @@ <T> CollectionFuture<Map<Integer, CollectionOperationStatus>> asyncCollectionPip
new CollectionPipedInsertOperation.Callback() {
// each result status
public void receivedStatus(OperationStatus status) {
CollectionOperationStatus cstatus;

if (status instanceof CollectionOperationStatus) {
cstatus = (CollectionOperationStatus) status;
} else {
getLogger().warn("Unhandled state: " + status);
cstatus = new CollectionOperationStatus(status);
}
mergedOperationStatus.add(cstatus);
/*
* Nothing to do here.
* Because the result status is handled in gotStatus method.
* gotStatus method put failed status into mergedResult.
* If mergedResult was not empty, the merged operation status is failed.
* */
}

// complete
Expand Down Expand Up @@ -4012,12 +4000,12 @@ public Map<Integer, CollectionOperationStatus> get(long duration,

@Override
public CollectionOperationStatus getOperationStatus() {
for (OperationStatus status : mergedOperationStatus) {
if (!status.isSuccess()) {
return new CollectionOperationStatus(status);
}
}
return new CollectionOperationStatus(true, "END", CollectionResponse.END);
return isDone() ?
(mergedResult.isEmpty()
? new CollectionOperationStatus(true, "END", CollectionResponse.END)
: new CollectionOperationStatus(false, "END", CollectionResponse.END)
)
: null;
}

@Override
Expand Down

0 comments on commit e8e053d

Please sign in to comment.