sijie closed pull request #1638: Open ledger returns no ledger exception if
ledger id is negative
URL: https://github.com/apache/bookkeeper/pull/1638
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerOpenOp.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerOpenOp.java
index cf5f3a7aeb..48c93bd851 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerOpenOp.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerOpenOp.java
@@ -33,6 +33,7 @@
import org.apache.bookkeeper.client.AsyncCallback.ReadLastConfirmedCallback;
import org.apache.bookkeeper.client.BookKeeper.DigestType;
import org.apache.bookkeeper.client.SyncCallbackUtils.SyncOpenCallback;
+import org.apache.bookkeeper.client.api.BKException.Code;
import org.apache.bookkeeper.client.api.ReadHandle;
import org.apache.bookkeeper.client.impl.OpenBuilderBase;
import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.GenericCallback;
@@ -245,8 +246,9 @@ void openComplete(int rc, LedgerHandle lh) {
}
private void open(OpenCallback cb) {
- if (!validate()) {
- cb.openComplete(BKException.Code.NoSuchLedgerExistsException,
null, null);
+ final int validateRc = validate();
+ if (Code.OK != validateRc) {
+ cb.openComplete(validateRc, null, null);
return;
}
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/impl/OpenBuilderBase.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/impl/OpenBuilderBase.java
index b22effc3d5..c2c4c35e1f 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/impl/OpenBuilderBase.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/impl/OpenBuilderBase.java
@@ -21,6 +21,7 @@
import java.util.Arrays;
import org.apache.bookkeeper.client.LedgerHandle;
+import org.apache.bookkeeper.client.api.BKException.Code;
import org.apache.bookkeeper.client.api.DigestType;
import org.apache.bookkeeper.client.api.OpenBuilder;
@@ -62,11 +63,11 @@ public OpenBuilder withDigestType(DigestType digestType) {
return this;
}
- protected boolean validate() {
+ protected int validate() {
if (ledgerId < 0) {
LOG.error("invalid ledgerId {} < 0", ledgerId);
- return false;
+ return Code.NoSuchLedgerExistsException;
}
- return true;
+ return Code.OK;
}
}
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MockBookKeeper.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MockBookKeeper.java
index 3b63cfd370..c65e070281 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MockBookKeeper.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/MockBookKeeper.java
@@ -35,6 +35,7 @@
import org.apache.bookkeeper.client.AsyncCallback.CreateCallback;
import org.apache.bookkeeper.client.AsyncCallback.DeleteCallback;
import org.apache.bookkeeper.client.AsyncCallback.OpenCallback;
+import org.apache.bookkeeper.client.api.BKException.Code;
import org.apache.bookkeeper.client.api.OpenBuilder;
import org.apache.bookkeeper.client.api.ReadHandle;
import org.apache.bookkeeper.client.impl.OpenBuilderBase;
@@ -221,8 +222,9 @@ public OpenBuilder newOpenLedgerOp() {
public CompletableFuture<ReadHandle> execute() {
CompletableFuture<ReadHandle> promise = new
CompletableFuture<ReadHandle>();
- if (!validate()) {
- promise.completeExceptionally(new
BKException.BKNoSuchLedgerExistsException());
+ final int validateRc = validate();
+ if (Code.OK != validateRc) {
+
promise.completeExceptionally(BKException.create(validateRc));
return promise;
} else if (getProgrammedFailStatus()) {
if (failReturnCode != BkTimeoutOperation) {
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services