You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2012/10/17 17:11:30 UTC
svn commit: r1399300 - in /activemq/trunk:
activemq-core/src/test/java/org/apache/activemq/usecases/
kahadb/src/main/java/org/apache/kahadb/index/
kahadb/src/main/java/org/apache/kahadb/util/
kahadb/src/test/java/org/apache/kahadb/index/
Author: gtully
Date: Wed Oct 17 15:11:30 2012
New Revision: 1399300
URL: http://svn.apache.org/viewvc?rev=1399300&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-4094 - ensure list is split down to single entry before page over flow for a value, ensures the smallest marshall size for a page
Modified:
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubsOfflineSelectorIndexUseTest.java
activemq/trunk/kahadb/src/main/java/org/apache/kahadb/index/ListNode.java
activemq/trunk/kahadb/src/main/java/org/apache/kahadb/util/SequenceSet.java
activemq/trunk/kahadb/src/test/java/org/apache/kahadb/index/ListIndexTest.java
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubsOfflineSelectorIndexUseTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubsOfflineSelectorIndexUseTest.java?rev=1399300&r1=1399299&r2=1399300&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubsOfflineSelectorIndexUseTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubsOfflineSelectorIndexUseTest.java Wed Oct 17 15:11:30 2012
@@ -167,6 +167,12 @@ public class DurableSubsOfflineSelectorI
assertEquals(messageCount / 2, listenerT.count);
assertEquals(messageCount / 2, listenerF.count);
+ consumerTrue.close();
+ session.unsubscribe("true");
+
+ consumerFalse.close();
+ session.unsubscribe("false");
+
session.close();
con.close();
@@ -195,14 +201,6 @@ public class DurableSubsOfflineSelectorI
}
- private void dumpstats() throws Exception {
- //TimeUnit.SECONDS.sleep(2);
- //ThreadTracker.result();
- TimeUnit.SECONDS.sleep(4);
-
-
- }
-
public static class Listener implements MessageListener {
int count = 0;
String id = null;
Modified: activemq/trunk/kahadb/src/main/java/org/apache/kahadb/index/ListNode.java
URL: http://svn.apache.org/viewvc/activemq/trunk/kahadb/src/main/java/org/apache/kahadb/index/ListNode.java?rev=1399300&r1=1399299&r2=1399300&view=diff
==============================================================================
--- activemq/trunk/kahadb/src/main/java/org/apache/kahadb/index/ListNode.java (original)
+++ activemq/trunk/kahadb/src/main/java/org/apache/kahadb/index/ListNode.java Wed Oct 17 15:11:30 2012
@@ -309,19 +309,14 @@ public final class ListNode<Key, Value>
}
public void storeUpdate(Transaction tx) throws IOException {
- getContainingList().storeNode(tx, this, true);
+ store(tx, ADD_LAST);
}
private void store(Transaction tx, boolean addFirst) throws IOException {
try {
- // When we split to a node of one element we can span multiple pages for that
- // entry, otherwise we keep the entries on one page to avoid fragmented reads
- // and segment the list traversal.
- if (this.entries.size() == 1) {
- getContainingList().storeNode(tx, this, true);
- } else {
- getContainingList().storeNode(tx, this, false);
- }
+ // keeping splitting till we get down to a single entry
+ // then we need to overflow the value
+ getContainingList().storeNode(tx, this, entries.size() == 1);
if (this.next == -1) {
getContainingList().setTailPageId(getPageId());
@@ -347,6 +342,7 @@ public final class ListNode<Key, Value>
this.setNext(extension.getPageId());
} else {
extension.setEntries(entries.getTail().getPrevious().splitAfter());
+ extension.setNext(this.getNext());
extension.store(tx, isAddFirst);
getContainingList().setTailPageId(extension.getPageId());
this.setNext(extension.getPageId());
Modified: activemq/trunk/kahadb/src/main/java/org/apache/kahadb/util/SequenceSet.java
URL: http://svn.apache.org/viewvc/activemq/trunk/kahadb/src/main/java/org/apache/kahadb/util/SequenceSet.java?rev=1399300&r1=1399299&r2=1399300&view=diff
==============================================================================
--- activemq/trunk/kahadb/src/main/java/org/apache/kahadb/util/SequenceSet.java (original)
+++ activemq/trunk/kahadb/src/main/java/org/apache/kahadb/util/SequenceSet.java Wed Oct 17 15:11:30 2012
@@ -107,7 +107,14 @@ public class SequenceSet extends LinkedN
return true;
}
- Sequence sequence = getHead();
+ // check for append
+ Sequence sequence = getTail();
+ if (sequence.isAdjacentToLast(value)) {
+ sequence.last = value;
+ return true;
+ }
+
+ sequence = getHead();
while (sequence != null) {
if (sequence.isAdjacentToLast(value)) {
Modified: activemq/trunk/kahadb/src/test/java/org/apache/kahadb/index/ListIndexTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/kahadb/src/test/java/org/apache/kahadb/index/ListIndexTest.java?rev=1399300&r1=1399299&r2=1399300&view=diff
==============================================================================
--- activemq/trunk/kahadb/src/test/java/org/apache/kahadb/index/ListIndexTest.java (original)
+++ activemq/trunk/kahadb/src/test/java/org/apache/kahadb/index/ListIndexTest.java Wed Oct 17 15:11:30 2012
@@ -516,7 +516,7 @@ public class ListIndexTest extends Index
int expectedListEntries = 0;
int nextSequenceId = 0;
- LOG.info("Loading up the ListIndex with "+NUM_ITERATIONS+" entires and sparsely populating the sequences.");
+ LOG.info("Loading up the ListIndex with "+NUM_ITERATIONS+" entries and sparsely populating the sequences.");
for (int i = 0; i < NUM_ITERATIONS; ++i) {
test.add(tx, String.valueOf(expectedListEntries++), new SequenceSet());