You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by zh...@apache.org on 2020/05/08 12:34:03 UTC
[pulsar] 17/38: Change nodurable cursor to active (#6769)
This is an automated email from the ASF dual-hosted git repository.
zhaijia pushed a commit to branch branch-2.5
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 0ce7a66999393340d5446d535240179fad7bbd5c
Author: zhaorongsheng <zh...@users.noreply.github.com>
AuthorDate: Wed Apr 22 17:27:58 2020 +0800
Change nodurable cursor to active (#6769)
### Motivation
When use non-durable subscription the cursor is not active which lead to the written entries are not put into cache. This situation would degrade reading performance.
### Modifications
Change the `NonDurableCursorImpl` to active and remove the three override methods: `setActive()/isActive()/setInactive()`
### Verifying this change
This change added tests and can be verified as follows:
*ManagedCursorTest.testNonDurableCursorActive()*
- add test to check `NonDurableCursorImpl` activity
(cherry picked from commit 16ab351455778540831342ba55d1fb2cdaa596dc)
---
.../apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java | 3 ++-
.../bookkeeper/mledger/impl/NonDurableCursorImpl.java | 15 ---------------
.../apache/bookkeeper/mledger/impl/ManagedCursorTest.java | 11 +++++++++++
3 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
index a64f8f5..bf7ad2b 100644
--- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
+++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
@@ -854,6 +854,7 @@ public class ManagedLedgerImpl implements ManagedLedger, CreateCallback {
NonDurableCursorImpl cursor = new NonDurableCursorImpl(bookKeeper, config, this, cursorName,
(PositionImpl) startCursorPosition);
+ cursor.setActive();
log.info("[{}] Opened new cursor: {}", name, cursor);
synchronized (this) {
@@ -2899,7 +2900,7 @@ public class ManagedLedgerImpl implements ManagedLedger, CreateCallback {
}
public boolean isCursorActive(ManagedCursor cursor) {
- return cursor.isDurable() && activeCursors.get(cursor.getName()) != null;
+ return activeCursors.get(cursor.getName()) != null;
}
private boolean currentLedgerIsFull() {
diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NonDurableCursorImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NonDurableCursorImpl.java
index bc57f79..a0720d4 100644
--- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NonDurableCursorImpl.java
+++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NonDurableCursorImpl.java
@@ -93,21 +93,6 @@ public class NonDurableCursorImpl extends ManagedCursorImpl {
}
@Override
- public void setActive() {
- /// No-Op
- }
-
- @Override
- public boolean isActive() {
- return false;
- }
-
- @Override
- public void setInactive() {
- /// No-Op
- }
-
- @Override
public void asyncClose(CloseCallback callback, Object ctx) {
// No-Op
callback.closeComplete(ctx);
diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java
index 7bc0a39..6768e79 100644
--- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java
+++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java
@@ -3001,6 +3001,17 @@ public class ManagedCursorTest extends MockedBookKeeperTestCase {
}
@Test
+ void testNonDurableCursorActive() throws Exception {
+ ManagedLedger ml = factory.open("testInactive");
+ ManagedCursor cursor = ml.newNonDurableCursor(PositionImpl.latest, "c1");
+
+ assertTrue(cursor.isActive());
+
+ cursor.setInactive();
+ assertFalse(cursor.isActive());
+ }
+
+ @Test
public void deleteMessagesCheckhMarkDelete() throws Exception {
ManagedLedger ledger = factory.open("my_test_ledger");
ManagedCursorImpl c1 = (ManagedCursorImpl) ledger.openCursor("c1");