You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2018/09/06 21:14:34 UTC
[bookkeeper] branch branch-4.8 updated: Open ledger returns no
ledger exception if ledger id is negative
This is an automated email from the ASF dual-hosted git repository.
sijie pushed a commit to branch branch-4.8
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/branch-4.8 by this push:
new be41178 Open ledger returns no ledger exception if ledger id is negative
be41178 is described below
commit be41178599fa2ab367841f6f139fd1c6c696bfc5
Author: Qi Wang <co...@gmail.com>
AuthorDate: Thu Sep 6 14:14:13 2018 -0700
Open ledger returns no ledger exception if ledger id is negative
Descriptions of the changes in this PR:
### Motivation
if I open a ledger with negative value, bookkeeper client responds 'NoSuchLedgerException'. But I think it should return `IllegalOpException`, because it is an illegal exception.
Author: Qi Wang <co...@gmail.com>
Reviewers: Enrico Olivelli <eo...@gmail.com>, Sijie Guo <si...@apache.org>
This closes #1638 from codingwangqi/fix_return_code
(cherry picked from commit 40185e1f39fafd0c796cec38d463ebd55edaa250)
Signed-off-by: Sijie Guo <si...@apache.org>
---
.../src/main/java/org/apache/bookkeeper/client/LedgerOpenOp.java | 6 ++++--
.../java/org/apache/bookkeeper/client/impl/OpenBuilderBase.java | 7 ++++---
.../src/test/java/org/apache/bookkeeper/client/MockBookKeeper.java | 6 ++++--
3 files changed, 12 insertions(+), 7 deletions(-)
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 c3a69bd..5580c06 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.OpenCallback;
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;
@@ -242,8 +243,9 @@ class LedgerOpenOp implements GenericCallback<LedgerMetadata> {
}
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 b22effc..c2c4c35 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 @@ package org.apache.bookkeeper.client.impl;
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 abstract class OpenBuilderBase implements OpenBuilder {
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 3b63cfd..c65e070 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 java.util.concurrent.atomic.AtomicLong;
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 class MockBookKeeper extends BookKeeper {
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) {