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 2018/10/23 15:01:14 UTC
activemq git commit: AMQ-7084 - ensure allocated and unused free
pages are visible to subsequent transactions,
fix and test with test updates to reflect proper usage
Repository: activemq
Updated Branches:
refs/heads/master fb1e642c1 -> 8a1abd9bb
AMQ-7084 - ensure allocated and unused free pages are visible to subsequent transactions, fix and test with test updates to reflect proper usage
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/8a1abd9b
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/8a1abd9b
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/8a1abd9b
Branch: refs/heads/master
Commit: 8a1abd9bb2744de70af11053f1755116c40ec55f
Parents: fb1e642
Author: gtully <ga...@gmail.com>
Authored: Tue Oct 23 16:00:57 2018 +0100
Committer: gtully <ga...@gmail.com>
Committed: Tue Oct 23 16:00:57 2018 +0100
----------------------------------------------------------------------
.../store/kahadb/disk/page/Transaction.java | 4 ++++
.../store/kahadb/disk/index/BTreeIndexTest.java | 7 ++----
.../kahadb/disk/index/HashIndexBenchMark.java | 5 +++--
.../store/kahadb/disk/index/HashIndexTest.java | 5 ++---
.../store/kahadb/disk/index/ListIndexTest.java | 5 ++---
.../store/kahadb/disk/page/PageFileTest.java | 23 +++++++++++++++++++-
6 files changed, 35 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/8a1abd9b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/Transaction.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/Transaction.java b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/Transaction.java
index 3761a94..bdb7896 100644
--- a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/Transaction.java
+++ b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/Transaction.java
@@ -670,6 +670,8 @@ public class Transaction implements Iterable<Page> {
allocateList.clear();
writes.clear();
writeTransactionId = -1;
+ } else {
+ freePages(allocateList);
}
size = 0;
}
@@ -692,6 +694,8 @@ public class Transaction implements Iterable<Page> {
allocateList.clear();
writes.clear();
writeTransactionId = -1;
+ } else {
+ freePages(allocateList);
}
size = 0;
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/8a1abd9b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/BTreeIndexTest.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/BTreeIndexTest.java b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/BTreeIndexTest.java
index fa0c541..cd29471 100644
--- a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/BTreeIndexTest.java
+++ b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/BTreeIndexTest.java
@@ -57,11 +57,12 @@ public class BTreeIndexTest extends IndexTestSupport {
protected Index<String, Long> createIndex() throws Exception {
long id = tx.allocate().getPageId();
- tx.commit();
BTreeIndex<String, Long> index = new BTreeIndex<String,Long>(pf, id);
index.setKeyMarshaller(StringMarshaller.INSTANCE);
index.setValueMarshaller(LongMarshaller.INSTANCE);
+ index.load(tx);
+ tx.commit();
return index;
}
@@ -231,8 +232,6 @@ public class BTreeIndexTest extends IndexTestSupport {
this.index.load(tx);
long id = tx.allocate().getPageId();
- tx.commit();
-
BTreeIndex<String, String> sindex = new BTreeIndex<String,String>(pf, id);
sindex.setKeyMarshaller(StringMarshaller.INSTANCE);
sindex.setValueMarshaller(StringMarshaller.INSTANCE);
@@ -273,7 +272,6 @@ public class BTreeIndexTest extends IndexTestSupport {
this.index.load(tx);
long id = tx.allocate().getPageId();
- tx.commit();
BTreeIndex<String, String> sindex = new BTreeIndex<String,String>(pf, id);
sindex.setKeyMarshaller(StringMarshaller.INSTANCE);
@@ -364,7 +362,6 @@ public class BTreeIndexTest extends IndexTestSupport {
pf.load();
tx = pf.tx();
long id = tx.allocate().getPageId();
- tx.commit();
BTreeIndex<Long, HashSet<String>> test = new BTreeIndex<Long, HashSet<String>>(pf, id);
test.setKeyMarshaller(LongMarshaller.INSTANCE);
http://git-wip-us.apache.org/repos/asf/activemq/blob/8a1abd9b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexBenchMark.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexBenchMark.java b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexBenchMark.java
index 16fa8b1..5667b01 100644
--- a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexBenchMark.java
+++ b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexBenchMark.java
@@ -27,12 +27,13 @@ public class HashIndexBenchMark extends IndexBenchmark {
Transaction tx = pf.tx();
long id = tx.allocate().getPageId();
- tx.commit();
HashIndex<String, Long> index = new HashIndex<String, Long>(pf, id);
index.setKeyMarshaller(StringMarshaller.INSTANCE);
index.setValueMarshaller(LongMarshaller.INSTANCE);
-
+ index.load(tx);
+ tx.commit();
+
return index;
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/8a1abd9b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexTest.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexTest.java b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexTest.java
index 8fbee56..d4b5e45 100644
--- a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexTest.java
+++ b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/HashIndexTest.java
@@ -25,13 +25,12 @@ public class HashIndexTest extends IndexTestSupport {
protected Index<String, Long> createIndex() throws Exception {
long id = tx.allocate().getPageId();
- tx.commit();
-
HashIndex<String, Long> index = new HashIndex<String,Long>(pf, id);
index.setBinCapacity(12);
index.setKeyMarshaller(StringMarshaller.INSTANCE);
index.setValueMarshaller(LongMarshaller.INSTANCE);
-
+ index.load(tx);
+ tx.commit();
return index;
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/8a1abd9b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/ListIndexTest.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/ListIndexTest.java b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/ListIndexTest.java
index fea1e7a..5e7cdcc 100644
--- a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/ListIndexTest.java
+++ b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/index/ListIndexTest.java
@@ -57,12 +57,11 @@ public class ListIndexTest extends IndexTestSupport {
protected Index<String, Long> createIndex() throws Exception {
long id = tx.allocate().getPageId();
- tx.commit();
-
ListIndex<String, Long> index = new ListIndex<String, Long>(pf, id);
index.setKeyMarshaller(StringMarshaller.INSTANCE);
index.setValueMarshaller(LongMarshaller.INSTANCE);
-
+ index.load(tx);
+ tx.commit();
return index;
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/8a1abd9b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/page/PageFileTest.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/page/PageFileTest.java b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/page/PageFileTest.java
index 0f919f2..3a5cefd 100644
--- a/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/page/PageFileTest.java
+++ b/activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/page/PageFileTest.java
@@ -136,7 +136,6 @@ public class PageFileTest extends TestCase {
Transaction tx = pf.tx();
Page page = tx.allocate();
- tx.commit();
OutputStream pos = tx.openOutputStream(page, true);
DataOutputStream os = new DataOutputStream(pos);
@@ -240,4 +239,26 @@ public class PageFileTest extends TestCase {
pf2.unload();
}
}
+
+ public void testAllocatedAndUnusedAreFree() throws Exception {
+
+ PageFile pf = new PageFile(new File("target/test-data"), getName());
+ pf.delete();
+ pf.load();
+
+ Transaction tx = pf.tx();
+ tx.allocate(10);
+ tx.commit();
+
+ assertEquals(10, pf.getPageCount());
+ assertEquals(pf.getFreePageCount(), 10);
+
+ // free pages should get reused
+
+ tx.allocate(10);
+ tx.rollback();
+ assertEquals(10, pf.getPageCount());
+ assertEquals(pf.getFreePageCount(), 10);
+
+ }
}