Merge lp:~pbeaman/akiban-persistit/release-3.3 into lp:akiban-persistit

Proposed by Peter Beaman
Status: Merged
Approved by: Peter Beaman
Approved revision: 440
Merged at revision: 432
Proposed branch: lp:~pbeaman/akiban-persistit/release-3.3
Merge into: lp:akiban-persistit
Diff against target: 721 lines (+206/-89)
15 files modified
.bzrignore (+2/-0)
doc/BugList (+64/-0)
doc/ReleaseNotes.rst (+99/-56)
doc/conf.py (+2/-2)
examples/FindFile/README.txt (+2/-2)
examples/HelloWorld/README.txt (+2/-2)
examples/PersistitMapDemo/README.txt (+2/-2)
examples/SimpleBench/README.txt (+3/-3)
examples/SimpleDemo/README.txt (+2/-6)
examples/SimpleTransaction/README.txt (+2/-2)
examples/SpringFrameworkExample/README.txt (+2/-2)
pom.xml (+3/-3)
src/main/java/com/persistit/VolumeStructure.java (+1/-1)
src/test/java/com/persistit/Bug882219Test.java (+11/-0)
src/test/java/com/persistit/TransactionSessionSwitchTest.java (+9/-8)
To merge this branch: bzr merge lp:~pbeaman/akiban-persistit/release-3.3
Reviewer Review Type Date Requested Status
Akiban Technologies Pending
Review via email: mp+164565@code.launchpad.net

Description of the change

Change version from 3.3 to 3.3.0 for consistency with other releases.

Fix documentation, including ReleaseNotes.rst

Fix issue in which Exchange#lock() creates a tree inside a transaction and consequently writes s transaction record with an unknown tree handle causing subsequent recovery failure.

To post a comment you must log in.
439. By Peter Beaman

ReleaseNotes typos

440. By Peter Beaman

ReleaseNotes typos

Revision history for this message
Peter Beaman (pbeaman) wrote :

Because this branch contains only one minor functional change - a bug fix needed to run akiban-server - I am Approving this myself in preparation for release.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file '.bzrignore'
--- .bzrignore 2012-08-02 04:31:26 +0000
+++ .bzrignore 2013-05-18 01:41:28 +0000
@@ -9,3 +9,5 @@
9./bench/akiban-persistit-bench.iml9./bench/akiban-persistit-bench.iml
10./core/akiban-persistit-core.iml10./core/akiban-persistit-core.iml
11.DS_Store11.DS_Store
12maven-eclipse.xml
13
1214
=== modified file 'doc/BugList'
--- doc/BugList 2012-11-30 20:33:30 +0000
+++ doc/BugList 2013-05-18 01:41:28 +0000
@@ -1,3 +1,67 @@
11055557 : 3.3.0
2
3`Trees removed inside transaction can automatically come back`
4
5Resolved by support for creating and removing trees within transactions.
6
71174352 : 3.3.0
8
9`Transaction commit and abort cannot be performed from a different Thread`
10
11A ReentrantLock was replaced by a Semaphore to allow modification of locked
12state by different threads.
13
141167056 : 3.3.0
15
16`Value returned from Accumulator#update() is non-transactional`
17
18The issue was unintended use of a value returned from this method. The Accumulator
19API was reworked to avoid confusion.
20
211161062 : 3.3.0
22
23`Missing public constructor for com.persistit.SessionId`
24
25Added.
26
271159313 : 3.3.0
28
29`Deadlock in Bug882219Test`
30
31We determined that a deadlock exists in the Java 7 implementation of
32AbstractInterruptibleChannel independent of Persistit. Bug number 9002674 was
33assigned by the Oracle Java Bug Database. In the meantime, the test has been
34disabled to avoid hung builds.
35
361157809 : 3.3.0
37
38`Appending value to a Key causes an ArrayIndexOutOfBoundsException`
39
40An attempt to append overflow the backing store of a ``com.persistit.Key`` now
41throws a ``com.persistit.exceptions.KeyTooLongException``.
42
431133039 : 3.3.0
44
45`Pruning incomplete on simple DUPLICATE_KEY error`
46
47The actual cause of this bug was inadequate pruning velocity when cleaning up transactions
48using the new ``com.persistit.Exchange#lock`` method. Locked elements are now
49pruned synchronously to avoid overloading the cleanup manager.
50
511126868 : 3.3.0
52
53`Lock table not pruned`
54
55See 1133039 above.
56
571126297 : 3.3.0
58
59'Assertion failure in TransactionIndexBucket#allocateTransactionStatus'
60
61Corrected by allowing a different thread than the one that created it to
62abort a transaction.
63
64
11076517 : 3.2.2651076517 : 3.2.2
266
3`InUseExceptions in stress tests`67`InUseExceptions in stress tests`
468
=== modified file 'doc/ReleaseNotes.rst'
--- doc/ReleaseNotes.rst 2013-04-30 16:03:38 +0000
+++ doc/ReleaseNotes.rst 2013-05-18 01:41:28 +0000
@@ -1,10 +1,17 @@
1************************************1************************************
2Akiban Persistit Version 3.32Akiban Persistit Version 3.3.0
3************************************3************************************
44
5May 17, 2013
6
5Overview7Overview
6========8========
7See http://akiban.github.com/persistit for a summary of features and benefits, licensing information and how to get support.9See http://akiban.github.com/persistit for a summary of features and benefits and how to get support.
10
11.. note::
12 This version of Persistit is released under the Apache License, Version 2.0. Previous
13 releases were licensed under the Eclipse Public License. We made this change for
14 better compatibility with other open source projects.
815
9Documentation16Documentation
10=============17=============
@@ -47,7 +54,14 @@
47=========================54=========================
48For optimal performance, proper configuration of the Persistit buffer pool is required. See section "Configuring the Buffer Pool" in the configuration document http://akiban.github.com/persistit/docs/Configuration.html55For optimal performance, proper configuration of the Persistit buffer pool is required. See section "Configuring the Buffer Pool" in the configuration document http://akiban.github.com/persistit/docs/Configuration.html
4956
50.. note:: Especially when used with multi-gigabyte heaps, the default Hotspot JVM server heuristics are be suboptimal for Persistit applications. Persistit is usually configured to allocate a large fraction of the heap to Buffer instances that are allocated at startup and held for the duration of the Persistit instance. For efficient operation, all of the Buffer instances must fit in the tenured (old) generation of the heap to avoid very significant garbage collector overhead. Use either -XX:NewSize or -Xmn to adjust the relative sizes of the new and old generations.57.. note::
58 Especially when used with multi-gigabyte heaps, the default Hotspot JVM server heuristics are
59 suboptimal for Persistit applications. Persistit is usually configured to allocate a large
60 fraction of the heap to Buffer instances that are allocated at startup and held for the
61 duration of the Persistit instance. For efficient operation, all of the Buffer instances
62 must fit in the tenured (old) generation of the heap to avoid very significant garbage
63 collector overhead. Use either -XX:NewSize or -Xmn to adjust the relative sizes of
64 the new and old generations.
5165
52|66|
53|67|
@@ -58,15 +72,15 @@
58+---------+--------------------+--------------------------------------------------------------------------+72+---------+--------------------+--------------------------------------------------------------------------+
59| Version | Release Date | Summary |73| Version | Release Date | Summary |
60+=========+====================+==========================================================================+74+=========+====================+==========================================================================+
61| 3.3.1 | May 3, 2013 | License changed from Eclipse Public License to Apache License, Version |75| 3.3.0 | May 17, 2013 | Change license from Eclipse Public License to Apache License, Version |
62| | | 2.0 for better compatibility with open source projects. Trees and |76| | | 2.0. Create and remove Trees correctly within the scope of a transaction.|
63| | | volumes are now created and removed correctly within the scope of a |77| | | Correct problems with transaction session management. Modify |
64| | | transaction. Better support for session management of transactions. |78| | | Accumulator API to better suggest correct usage. |
65+---------+--------------------+--------------------------------------------------------------------------+79+---------+--------------------+--------------------------------------------------------------------------+
66| 3.2.7 | March 22, 2013 | Several new API features, including TreeBuilder, Traverse Visitor, |80| 3.2.7 | March 22, 2013 | Add several new API features, including TreeBuilder, Traverse Visitor |
67| | | and Lock. Fix several non-critical bugs. |81| | | and Lock. Fix several non-critical bugs. |
68+---------+--------------------+--------------------------------------------------------------------------+82+---------+--------------------+--------------------------------------------------------------------------+
69| 3.2.2 | November 30, 2012 | Better support for Spring Framework. Fix rare but serious bugs found in |83| 3.2.2 | November 30, 2012 | Improve support for Spring Framework. Fix rare but serious bugs found in |
70| | | stress tests. Fix issue related to locale and make sure Persistit builds |84| | | stress tests. Fix issue related to locale and make sure Persistit builds |
71| | | everywhere. |85| | | everywhere. |
72+---------+--------------------+--------------------------------------------------------------------------+86+---------+--------------------+--------------------------------------------------------------------------+
@@ -91,15 +105,52 @@
91+---------+--------------------+--------------------------------------------------------------------------+105+---------+--------------------+--------------------------------------------------------------------------+
92106
93107
94Resolved Issues
95===============
96
97{{bug-list}}
98
99Changes and New Features108Changes and New Features
100========================109========================
101110
102Persistit 3.2.7 - TreeBuilder1113.3.0 - License
112-----------------------------------------------------
113Akiban Persistit is now licensed under the Apache License, Version 2.0.
114
1153.3.0 - Creating and Removing Trees in Transactions
116-------------------------------------------------------------
117Resolving a long-standing anomaly in the Persistit API, this release now handles
118creation and deletion of Tree instances correctly inside transactions. As a result,
119a transaction can create and populate a Tree which becomes visible within other
120transactions only when the transaction commits, and which is implicitly removed
121if the transaction aborts. Similarly, the removal of a Tree within a
122transaction becomes visible to other transactions only upon commit.
123
1243.3.0 - Better Session Support
125-----------------------------------------------------
126This release corrects issues with session support. Each thread is assigned a
127``com.persistit.SessionId`` when it uses Persistit, and that SessionId is linked
128to a unique ``com.persistit.Transaction`` instance. Usually a transaction is confined to a single
129thread that retains a single SessionId for its entire life. However, for use cases in
130which a server may support transactions that span multiple
131network requests, and where each request may be serviced by an arbitrary thread from a
132thread pool, there is support for changing the association of a SessionId with a thread. See
133notes in ``com.persistit.Transaction`` for details.
134
135This release corrects two issues related to sessions:
136
137* The constructor for SessionId is now public.
138* It is now possible for a thread other than the one that began the transaction
139 to commit it. Previous versions would throw an IllegalMonitorStateException in this
140 case.
141
1423.3.0 - Accumulator API
143-----------------------------------------------------
144The ``com.persistit.Accumulator`` class and its inner classes ``MinAccumulator``
145``MaxAccumulator``, ``SumAccumulator`` and ``SeqAccumulator`` provide an efficient
146way to update counts, sums and unique ID counters that would otherwise cause
147significant contention among concurrent transactions. This release
148replaces a single method named ``update`` with a use-specific method for each
149type of Accumulator. For example, the ``com.persistit.Accumulator.SeqAccumulator``
150class provides the method ``com.persistit.Accumulator.SeqAccumulator#allocate`` to
151allocate a sequence number. See ``Accumulator`` class JavaDoc for details.
152
1533.2.7 - TreeBuilder
103-----------------------------------------------------154-----------------------------------------------------
104Inserting a large set of records with non-sequential keys causes significant I/O overhead. Once the size155Inserting a large set of records with non-sequential keys causes significant I/O overhead. Once the size
105of the Tree is larger than available main memory, each insertion can result in a disk write (to flush a page156of the Tree is larger than available main memory, each insertion can result in a disk write (to flush a page
@@ -113,7 +164,7 @@
113loaded a billion records with keys generated as UUID instances. See the API documentation for164loaded a billion records with keys generated as UUID instances. See the API documentation for
114``com.persistit.TreeBuilder`` for more information.165``com.persistit.TreeBuilder`` for more information.
115166
116Persistit 3.2.7 - Traverse Visitor1673.2.7 - Traverse Visitor
117-----------------------------------------------------168-----------------------------------------------------
118The ``com.persistit.Exchange#traverse`` methods provide Persistit's fundamental mechanism for iterating169The ``com.persistit.Exchange#traverse`` methods provide Persistit's fundamental mechanism for iterating
119over a collection of keys within a Tree. Each call to ``traverse`` (or ``com.persistit.Exchange#next`` or170over a collection of keys within a Tree. Each call to ``traverse`` (or ``com.persistit.Exchange#next`` or
@@ -123,7 +174,7 @@
123release adds a more efficient mechanism based on the visitor pattern. See ``com.persistit.Exchange.TraverseVisitor``174release adds a more efficient mechanism based on the visitor pattern. See ``com.persistit.Exchange.TraverseVisitor``
124for details.175for details.
125176
126Persistit 3.2.7 - Lock to avoid Write Skew Anomalies1773.2.7 - Lock to avoid Write Skew Anomalies
127-----------------------------------------------------178-----------------------------------------------------
128Persistit transactions implement Snapshot Isolation to prevent concurrent transactions from interfering with179Persistit transactions implement Snapshot Isolation to prevent concurrent transactions from interfering with
129each other. See ``com.persistit.Transaction`` for details.180each other. See ``com.persistit.Transaction`` for details.
@@ -145,10 +196,10 @@
145result is a database state that could not have occurred if the transactions had run sequentially in any order.196result is a database state that could not have occurred if the transactions had run sequentially in any order.
146197
147A well-known solution is to modify the transaction logic to perform an additional write operation to a common198A well-known solution is to modify the transaction logic to perform an additional write operation to a common
148key. The ``com.persistit.Exchange#lock`` method provides a convenient and efficient mechanism for doing so. The``lock``199key. The ``com.persistit.Exchange#lock`` method provides a convenient and efficient mechanism for doing so. The ``lock``
149method does not actually lock anything, but is so-named because it serves a similar function.200method does not actually lock anything, but is so-named because it serves a similar function.
150201
151Persistit 3.2.7 - Miscellaneous Issues2023.2.7 - Miscellaneous Issues
152-----------------------------------------------------203-----------------------------------------------------
153Changes needed to build and run Persistit on Mac OSX under Java 7 were made.204Changes needed to build and run Persistit on Mac OSX under Java 7 were made.
154205
@@ -158,20 +209,20 @@
158209
159displays all of the meta data contained in the volume file. 210displays all of the meta data contained in the volume file.
160211
161Persistit 3.2.2 - Spring Framework2123.2.2 - Spring Framework
162-----------------------------------------------------213-----------------------------------------------------
163Prior to this release Persistit was needlessly difficult to configure and initialize within Spring Framework.214Prior to this release Persistit was needlessly difficult to configure and initialize within Spring Framework.
164This version provides new setter methods and constructors on the com.persistit.Persistit object to allow easy215This version provides new setter methods and constructors on the ``com.persistit.Persistit`` object to allow easy
165injection of configuration properties and make it possible to inject a fully instantiated216injection of configuration properties and make it possible to inject a fully instantiated
166Persistit instance within a Spring project. In addition, new methods were added to the 217Persistit instance within a Spring project. In addition, new methods were added to the
167com.persistit.Configuration class to simplify supplying buffer pool and initial volume specifications.218``com.persistit.Configuration`` class to simplify supplying buffer pool and initial volume specifications.
168Three of the ``com.persistit.Persistit#initialize`` methods were deprecated.219Three of the ``com.persistit.Persistit#initialize`` methods were deprecated.
169220
170This release also adds a new sample application that shows how a configured Persistit instance can be created. For221This release also adds a new sample application that shows how a configured Persistit instance can be created. For
171Maven users, note that the pom.xml file now includes a dependency on Spring Framework in test scope only; Persistit 222Maven users, note that the pom.xml file now includes a dependency on Spring Framework in test scope only; Persistit
172can still be deployed without any external dependencies.223can still be deployed without any external dependencies.
173224
174Persistit 3.2.2 - Bug Fixes2253.2.2 - Bug Fixes
175-----------------------------------------------------226-----------------------------------------------------
176Version 3.2.2 corrects two issues that were identified through stress tests. For this release227Version 3.2.2 corrects two issues that were identified through stress tests. For this release
177we added hundreds of hours of stress-testing experience and will continue to invest in ongoing testing.228we added hundreds of hours of stress-testing experience and will continue to invest in ongoing testing.
@@ -179,16 +230,16 @@
179This version also fixes a unit test with string literals containing numbers formatted according to en_US230This version also fixes a unit test with string literals containing numbers formatted according to en_US
180conventions. The test has been corrected and the Persistit build has been tested in several locales.231conventions. The test has been corrected and the Persistit build has been tested in several locales.
181232
182Persistit 3.2.1 - Bug Fixes2333.2.1 - Bug Fixes
183-----------------------------------------------------234-----------------------------------------------------
184235
185Version 3.2.1 is a maintenance release that fixes a number of non-critical bugs, primarily in less frequently236Version 3.2.1 is a maintenance release that fixes a number of non-critical bugs, primarily in less frequently
186used sections of the API. See the associated bug list for full descriptions of each resolved.237used sections of the API. See the associated bug list for full descriptions of each resolved.
187238
188Persistit 3.2.0 - Default Journal File Format Changed2393.2.0 - Default Journal File Format Changed
189-----------------------------------------------------240-----------------------------------------------------
190241
191Version 3.2.0 fixes problems related to Volumes created and opened by the com.persistit.Persistit#loadVolume 242Version 3.2.0 fixes problems related to Volumes created and opened by the ``com.persistit.Persistit#loadVolume``
192method rather than being specified by the initial system configuration. In previous versions, journal files 243method rather than being specified by the initial system configuration. In previous versions, journal files
193contained insufficient information to properly recover such volumes, even during normal startup.244contained insufficient information to properly recover such volumes, even during normal startup.
194245
@@ -203,12 +254,12 @@
203(see com.persistit.Configuration#setUseOldVSpec). When this property is +true+, Persistit writes 254(see com.persistit.Configuration#setUseOldVSpec). When this property is +true+, Persistit writes
204journal files that are backward-compatible, but incapable of supporting dynamically created volumes.255journal files that are backward-compatible, but incapable of supporting dynamically created volumes.
205256
206Persistit 3.2.0 - Performance Improvements2573.2.0 - Performance Improvements
207------------------------------------------258------------------------------------------
208259
209Version 3.2.0 significantly improves I/O performance for concurrent transactions and260Version 3.2.0 significantly improves I/O performance for concurrent transactions and
210better controls the number of journal files created during by very aggressive loads. A new attribute261better controls the number of journal files created during by very aggressive loads. A new attribute
211in the com.persistit.mxbeans.JournalManagerMXBean class called urgentFileCountThreshold controls the262in the ``com.persistit.mxbeans.JournalManagerMXBean`` class called ``urgentFileCountThreshold`` controls the
212maximum number of journal files Persistit will create before ramping the up the urgency of copying pages to263maximum number of journal files Persistit will create before ramping the up the urgency of copying pages to
213allow purging old files. Several other issues related to I/O scheduling and management of 264allow purging old files. Several other issues related to I/O scheduling and management of
214dirty pages were resolved.265dirty pages were resolved.
@@ -218,7 +269,7 @@
218significant reduction in the amount of space consumed by obsolete version and also results in better269significant reduction in the amount of space consumed by obsolete version and also results in better
219transaction throughput.270transaction throughput.
220271
221Persistit 3.1.7 - Code Base Reformatted2723.1.7 - Code Base Reformatted
222---------------------------------------273---------------------------------------
223274
224To simplify diffs and improve legibility, the entire code base was reformatted and "cleaned up" 275To simplify diffs and improve legibility, the entire code base was reformatted and "cleaned up"
@@ -226,7 +277,7 @@
226source to ensure coherent diffs in the future. The settings for formatting and code style 277source to ensure coherent diffs in the future. The settings for formatting and code style
227cleanup by Eclipse are found in the ``src/etc`` directory.278cleanup by Eclipse are found in the ``src/etc`` directory.
228279
229Persistit 3.1.7 - Buffer Pool Preload2803.1.7 - Buffer Pool Preload
230-------------------------------------281-------------------------------------
231282
232On a server with a large buffer pool (many gigabytes), a Persistit instance can run for a long 283On a server with a large buffer pool (many gigabytes), a Persistit instance can run for a long
@@ -241,11 +292,11 @@
241800,000 16Kbyte buffers in about a minute, which is orders of magnitude faster than the 292800,000 16Kbyte buffers in about a minute, which is orders of magnitude faster than the
242same process would take with reads performed incrementally at random.293same process would take with reads performed incrementally at random.
243294
244Two new configuration properties com.persistit.Configuration#setBufferInventoryEnabled and 295Two new configuration properties ``com.persistit.Configuration#setBufferInventoryEnabled`` and
245com.persistit.Configuration#setBufferPreloadEnabled control this behavior. These settings 296``com.persistit.Configuration#setBufferPreloadEnabled`` control this behavior. These settings
246are turned off by default in version 3.1.7.297are turned off by default in version 3.1.7.
247298
248Persistit 3.1.4 - Detecting and Ignoring Missing Volumes2993.1.4 - Detecting and Ignoring Missing Volumes
249--------------------------------------------------------300--------------------------------------------------------
250301
251Every time Persistit writes a modified page to disk, it does so first to the journal. 302Every time Persistit writes a modified page to disk, it does so first to the journal.
@@ -258,10 +309,10 @@
258volume from an existing Database, this change provides a configurable switch to optionally 309volume from an existing Database, this change provides a configurable switch to optionally
259allow pages from missing volumes to be skipped (with logged warning messages) during recovery 310allow pages from missing volumes to be skipped (with logged warning messages) during recovery
260processing. The switch can be enabled by setting the configuration parameter 311processing. The switch can be enabled by setting the configuration parameter
261com.persistit.Configuration#setIgnoreMissingVolumes to true.312``com.persistit.Configuration#setIgnoreMissingVolumes`` to true.
262313
263314
264Persistit 3.1.4 - Reduce KeyCoder Serialized Object Size3153.1.4 - Reduce KeyCoder Serialized Object Size
265--------------------------------------------------------316--------------------------------------------------------
266317
267.. note::318.. note::
@@ -276,7 +327,7 @@
276appended to a Key right next to any other type. This is tagged internally with per-class 327appended to a Key right next to any other type. This is tagged internally with per-class
277handles. This change lowers the initial offset to reduce and in many cases halve the serialized size. 328handles. This change lowers the initial offset to reduce and in many cases halve the serialized size.
278329
279Persistit 3.1.4 - Maven POM Changes For Eclipse Juno 3303.1.4 - Maven POM Changes For Eclipse Juno
280----------------------------------------------------331----------------------------------------------------
281332
282The latest version of Eclipse, code named Juno, features a wide array of changes, including a 333The latest version of Eclipse, code named Juno, features a wide array of changes, including a
@@ -285,7 +336,7 @@
285336
286Please contact Akiban if you have encounter any issues getting up and running with Persistit. 337Please contact Akiban if you have encounter any issues getting up and running with Persistit.
287338
288Persistit 3.1.2 - Asserts Added to Check for Correct Exchange Thread Behavior3393.1.2 - Asserts Added to Check for Correct Exchange Thread Behavior
289-----------------------------------------------------------------------------340-----------------------------------------------------------------------------
290341
291A bug in the Akiban Server code caused an Exchange to be used concurrently by two Threads, 342A bug in the Akiban Server code caused an Exchange to be used concurrently by two Threads,
@@ -294,22 +345,14 @@
294asserts were added to catch such concurrent use by multiple threads. Applications should 345asserts were added to catch such concurrent use by multiple threads. Applications should
295be tested with asserts enabled to verify correct thread usage.346be tested with asserts enabled to verify correct thread usage.
296347
297348Resolved Issues
298349===============
299Known Issues350
300============351{{bug-list}}
301352
302Transactional Tree Management353
303-----------------------------354Unresolved Issues
304355=================
305All operations within Trees such as store, fetch, remove and traverse are correctly supported
306within transactions. However, the operations to create and delete Tree instances currently do
307not respect transaction boundaries. For example, if a transaction creates a new Tree, it is
308immediately visible within other Transactions and will continue to exist even if the original
309transaction aborts. (However, records inserted or modified by the original transaction will
310not be visible until the transaction commits.) Prior to creating/removing trees, transaction
311processing should be quiesced and allowed to complete.
312
313356
314Out of Memory Error, Direct Memory Buffer357Out of Memory Error, Direct Memory Buffer
315------------------------------------------------------358------------------------------------------------------
@@ -327,7 +370,7 @@
327370
328https://bugs.launchpad.net/akiban-persistit/+bug/986465371https://bugs.launchpad.net/akiban-persistit/+bug/986465
329372
330The getChangeCount method may return inaccurate results as its not currently transactional. 373The getChangeCount method may return inaccurate results as it is not currently transactional.
331The primary consumer is the PersistitMap. As a result of this bug Persistit may not generate 374The primary consumer is the PersistitMap. As a result of this bug Persistit may not generate
332java.util.ConcurrentModificationException when it is supposed to.375java.util.ConcurrentModificationException when it is supposed to.
333376
334377
=== modified file 'doc/build/build-doc.sh' (properties changed: -x to +x)
=== modified file 'doc/conf.py'
--- doc/conf.py 2013-03-24 17:25:45 +0000
+++ doc/conf.py 2013-05-18 01:41:28 +0000
@@ -50,7 +50,7 @@
50#50#
51# version = short X.Y version.51# version = short X.Y version.
52# release = full version, including alpha/beta/rc tags.52# release = full version, including alpha/beta/rc tags.
53version = '3.2.8'53version = '3.3.0'
54release = version54release = version
5555
56# Included while processing every rst file. Used only for working around inability56# Included while processing every rst file. Used only for working around inability
@@ -259,7 +259,7 @@
259epub_title = u'Persistit'259epub_title = u'Persistit'
260epub_author = u'Akiban Technologies'260epub_author = u'Akiban Technologies'
261epub_publisher = u'Akiban Technologies'261epub_publisher = u'Akiban Technologies'
262epub_copyright = u'2012, Akiban Technologies'262epub_copyright = u'2013, Akiban Technologies'
263263
264# The language of the text. It defaults to the language option264# The language of the text. It defaults to the language option
265# or en if the language is not set.265# or en if the language is not set.
266266
=== modified file 'examples/FindFile/README.txt'
--- examples/FindFile/README.txt 2013-04-30 15:26:32 +0000
+++ examples/FindFile/README.txt 2013-05-18 01:41:28 +0000
@@ -42,7 +42,7 @@
42 42
43 - or -43 - or -
44 44
45 javac -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar FindFile.java45 javac -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar FindFile.java
4646
47To run FindFile:47To run FindFile:
4848
@@ -50,7 +50,7 @@
50 50
51 - or -51 - or -
52 52
53 java -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar;. FindFile53 java -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. FindFile
5454
55Persistit will place a volume file in paths specified by persistit.properties.55Persistit will place a volume file in paths specified by persistit.properties.
56You can change the location of these files by modifying the datapath property 56You can change the location of these files by modifying the datapath property
5757
=== modified file 'examples/HelloWorld/README.txt'
--- examples/HelloWorld/README.txt 2013-04-30 15:26:32 +0000
+++ examples/HelloWorld/README.txt 2013-05-18 01:41:28 +0000
@@ -30,7 +30,7 @@
30 30
31 - or -31 - or -
32 32
33 javac -classpath ../../core.target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar HelloWorld.java33 javac -classpath ../../core.target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar HelloWorld.java
3434
35To run HelloWorld:35To run HelloWorld:
3636
@@ -38,7 +38,7 @@
38 38
39 - or -39 - or -
40 40
41 java -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar;. HelloWorld41 java -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. HelloWorld
4242
43Persistit will place a volume file in paths specified by persistit.properties.43Persistit will place a volume file in paths specified by persistit.properties.
44You can change the location of these files by modifying the datapath property44You can change the location of these files by modifying the datapath property
4545
=== modified file 'examples/PersistitMapDemo/README.txt'
--- examples/PersistitMapDemo/README.txt 2013-04-30 15:26:32 +0000
+++ examples/PersistitMapDemo/README.txt 2013-05-18 01:41:28 +0000
@@ -27,7 +27,7 @@
27 27
28 - or -28 - or -
29 29
30 javac -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar PersistitMapDemo.java30 javac -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar PersistitMapDemo.java
3131
32To run PersistitMapDemo:32To run PersistitMapDemo:
3333
@@ -35,7 +35,7 @@
35 35
36 - or -36 - or -
37 37
38 java -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar;. PersistitMapDemo38 java -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. PersistitMapDemo
3939
40Persistit will place a volume file in paths specified by persistit.properties.40Persistit will place a volume file in paths specified by persistit.properties.
41You can change the location of these files by modifying the datapath property41You can change the location of these files by modifying the datapath property
4242
=== modified file 'examples/SimpleBench/README.txt'
--- examples/SimpleBench/README.txt 2013-04-30 15:26:32 +0000
+++ examples/SimpleBench/README.txt 2013-05-18 01:41:28 +0000
@@ -36,7 +36,7 @@
36 36
37 - or -37 - or -
38 38
39 javac -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleBench.java39 javac -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleBench.java
4040
41To run SimpleBench:41To run SimpleBench:
4242
@@ -44,13 +44,13 @@
44 44
45 - or -45 - or -
46 46
47 java -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleBench47 java -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleBench
4848
49By default, SimpleBench will create its volume, prewrite journal and log files49By default, SimpleBench will create its volume, prewrite journal and log files
50in your current working directory. You can change the location of these files50in your current working directory. You can change the location of these files
51by specifying system properties, for example:51by specifying system properties, for example:
5252
53 java -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar;.53 java -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;.
54 -Dcom.persistit.datapath=/myDataPath54 -Dcom.persistit.datapath=/myDataPath
55 -Dcom.persistit.logpath=/myLogPath55 -Dcom.persistit.logpath=/myLogPath
56 SimpleBench56 SimpleBench
5757
=== modified file 'examples/SimpleDemo/README.txt'
--- examples/SimpleDemo/README.txt 2013-04-30 15:26:32 +0000
+++ examples/SimpleDemo/README.txt 2013-05-18 01:41:28 +0000
@@ -34,7 +34,7 @@
34 34
35 - or -35 - or -
36 36
37 javac -classpath ../../lib/persistit_jsa110.jar SimpleDemo.java37 javac -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleDemo.java
3838
39To run SimpleDemo:39To run SimpleDemo:
4040
@@ -42,11 +42,7 @@
42 42
43 - or -43 - or -
44 44
45 java -classpath ../../lib/persistit_jsa110.jar;. SimpleDemo45 java -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleDemo
46
47To run SimpleDemo without building it first:
48
49 java -classpath ../../lib/persistit_jsa110.jar;../../lib/examples.jar SimpleDemo
5046
51Persistit will place a volume file in paths specified by persistit.properties.47Persistit will place a volume file in paths specified by persistit.properties.
52You can change the location of these files by modifying the datapath property48You can change the location of these files by modifying the datapath property
5349
=== modified file 'examples/SimpleTransaction/README.txt'
--- examples/SimpleTransaction/README.txt 2013-04-30 15:26:32 +0000
+++ examples/SimpleTransaction/README.txt 2013-05-18 01:41:28 +0000
@@ -29,7 +29,7 @@
29 29
30 - or -30 - or -
31 31
32 javac -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleTransaction.java32 javac -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleTransaction.java
3333
34To run SimpleTransaction:34To run SimpleTransaction:
3535
@@ -37,7 +37,7 @@
37 37
38 - or -38 - or -
39 39
40 java -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleTransaction40 java -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleTransaction
4141
42Persistit will place a volume file in paths specified by persistit.properties.42Persistit will place a volume file in paths specified by persistit.properties.
43You can change the location of these files by modifying the datapath property43You can change the location of these files by modifying the datapath property
4444
=== modified file 'examples/SpringFrameworkExample/README.txt'
--- examples/SpringFrameworkExample/README.txt 2013-04-30 15:26:32 +0000
+++ examples/SpringFrameworkExample/README.txt 2013-05-18 01:41:28 +0000
@@ -27,7 +27,7 @@
27 27
28 - or -28 - or -
29 29
30 javac -classpath ../../target/akiban-persistit-3.2.2-jar-with-dependencies-and-tests.jar SpringFrameworkExample.java30 javac -classpath ../../target/akiban-persistit-x.y.z-jar-with-dependencies-and-tests.jar SpringFrameworkExample.java
3131
32To run SimpleTransaction:32To run SimpleTransaction:
3333
@@ -35,7 +35,7 @@
35 35
36 - or -36 - or -
37 37
38 java -classpath ../../target/akiban-persistit-3.2.2-jar-with-dependencies-and-tests.jar;. SpringFrameworkExample38 java -classpath ../../target/akiban-persistit-x.y.z-jar-with-dependencies-and-tests.jar;. SpringFrameworkExample
3939
40Persistit will place a volume file in paths specified by persistit.properties.40Persistit will place a volume file in paths specified by persistit.properties.
41You can change the location of these files by modifying the datapath property41You can change the location of these files by modifying the datapath property
4242
=== modified file 'pom.xml'
--- pom.xml 2013-04-30 15:51:52 +0000
+++ pom.xml 2013-05-18 01:41:28 +0000
@@ -4,7 +4,7 @@
44
5 <groupId>com.akiban</groupId>5 <groupId>com.akiban</groupId>
6 <artifactId>akiban-persistit</artifactId>6 <artifactId>akiban-persistit</artifactId>
7 <version>3.3-SNAPSHOT</version>7 <version>3.3.0</version>
8 <packaging>jar</packaging>8 <packaging>jar</packaging>
99
10 <parent>10 <parent>
@@ -23,8 +23,8 @@
2323
24 <licenses>24 <licenses>
25 <license>25 <license>
26 <name>Eclipse Public License - v 1.0</name>26 <name>Apache License, Version 2.0</name>
27 <url>http://www.eclipse.org/legal/epl-v10.html</url>27 <url>http://http://www.apache.org/licenses/LICENSE-2.0.html</url>
28 <distribution>repo</distribution>28 <distribution>repo</distribution>
29 </license>29 </license>
30 </licenses>30 </licenses>
3131
=== modified file 'src/main/java/com/persistit/VolumeStructure.java'
--- src/main/java/com/persistit/VolumeStructure.java 2013-04-30 15:26:32 +0000
+++ src/main/java/com/persistit/VolumeStructure.java 2013-05-18 01:41:28 +0000
@@ -257,7 +257,7 @@
257 }257 }
258 } else {258 } else {
259 final Exchange ex = directoryExchange();259 final Exchange ex = directoryExchange();
260 if (!tree.isTransactionPrivate(false)) {260 if (!tree.isTransactionPrivate(false) || _volume.isLockVolume()) {
261 ex.ignoreTransactions();261 ex.ignoreTransactions();
262 }262 }
263 ex.getValue().put(tree);263 ex.getValue().put(tree);
264264
=== modified file 'src/test/java/com/persistit/Bug882219Test.java'
--- src/test/java/com/persistit/Bug882219Test.java 2013-04-30 15:26:32 +0000
+++ src/test/java/com/persistit/Bug882219Test.java 2013-05-18 01:41:28 +0000
@@ -22,6 +22,7 @@
22import java.util.Timer;22import java.util.Timer;
23import java.util.TimerTask;23import java.util.TimerTask;
2424
25import org.junit.Ignore;
25import org.junit.Test;26import org.junit.Test;
2627
27import com.persistit.Transaction.CommitPolicy;28import com.persistit.Transaction.CommitPolicy;
@@ -53,7 +54,17 @@
53 // Flush caches:54 // Flush caches:
54 // sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"55 // sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
55 //56 //
57 /*
58 * Note: under Java 7 this test sometimes fails due to a bug in the JDK. The
59 * result is a deadlock that sometimes prevents this test from finishing.
60 * For this reason the test is currently Ignored, but we enable it for
61 * special occasions.
62 *
63 * Reported under http://bugs.sun.com/ bug #9002674
64 */
65
56 @Test66 @Test
67 @Ignore
57 public void testInterrupts() throws Exception {68 public void testInterrupts() throws Exception {
58 final Exchange ex = _persistit.getExchange("persistit", "bug882219", true);69 final Exchange ex = _persistit.getExchange("persistit", "bug882219", true);
59 final Thread foregroundThread = Thread.currentThread();70 final Thread foregroundThread = Thread.currentThread();
6071
=== modified file 'src/test/java/com/persistit/TransactionSessionSwitchTest.java'
--- src/test/java/com/persistit/TransactionSessionSwitchTest.java 2013-04-30 18:29:45 +0000
+++ src/test/java/com/persistit/TransactionSessionSwitchTest.java 2013-05-18 01:41:28 +0000
@@ -16,7 +16,7 @@
1616
17package com.persistit;17package com.persistit;
1818
19import static org.junit.Assert.*;19import static org.junit.Assert.assertEquals;
2020
21import java.util.HashMap;21import java.util.HashMap;
22import java.util.Map;22import java.util.Map;
@@ -55,8 +55,8 @@
55 private final static int THREADS = 17;55 private final static int THREADS = 17;
56 private final static long TIMEOUT = 10000;56 private final static long TIMEOUT = 10000;
5757
58 private Queue<SessionId> sessionQueue = new ArrayBlockingQueue<SessionId>(SESSIONS);58 private final Queue<SessionId> sessionQueue = new ArrayBlockingQueue<SessionId>(SESSIONS);
59 private Map<SessionId, AtomicInteger> sessionState = new HashMap<SessionId, AtomicInteger>();59 private final Map<SessionId, AtomicInteger> sessionState = new HashMap<SessionId, AtomicInteger>();
6060
61 @Test61 @Test
62 public void sessionManagement() throws Exception {62 public void sessionManagement() throws Exception {
@@ -66,15 +66,16 @@
66 sessionState.put(sessionId, new AtomicInteger(0));66 sessionState.put(sessionId, new AtomicInteger(0));
67 }67 }
6868
69 Thread[] threads = new Thread[THREADS];69 final Thread[] threads = new Thread[THREADS];
7070
71 final Tree tree = _persistit.getVolume("persistit").getTree("tt", true);71 final Tree tree = _persistit.getVolume("persistit").getTree("tt", true);
72 for (int i = 0; i < THREADS; i++) {72 for (int i = 0; i < THREADS; i++) {
73 threads[i] = new Thread(new Runnable() {73 threads[i] = new Thread(new Runnable() {
74 @Override
74 public void run() {75 public void run() {
75 SessionId session;76 SessionId session;
76 while ((session = sessionQueue.poll()) != null) {77 while ((session = sessionQueue.poll()) != null) {
77 int state = sessionState.get(session).get();78 final int state = sessionState.get(session).get();
78 try {79 try {
79 _persistit.setSessionId(session);80 _persistit.setSessionId(session);
80 final Transaction txn = _persistit.getTransaction();81 final Transaction txn = _persistit.getTransaction();
@@ -88,12 +89,12 @@
88 }89 }
89 txn.end();90 txn.end();
90 } else {91 } else {
91 Exchange ex = _persistit.getExchange(tree.getVolume(), tree.getName(), false);92 final Exchange ex = _persistit.getExchange(tree.getVolume(), tree.getName(), false);
92 ex.getValue().put(Thread.currentThread().getName());93 ex.getValue().put(Thread.currentThread().getName());
93 ex.clear().append(session.hashCode()).append(state).store();94 ex.clear().append(session.hashCode()).append(state).store();
94 _persistit.releaseExchange(ex);95 _persistit.releaseExchange(ex);
95 }96 }
96 } catch (PersistitException e) {97 } catch (final PersistitException e) {
97 throw new RuntimeException(e);98 throw new RuntimeException(e);
98 } finally {99 } finally {
99 if (state <= STEPS) {100 if (state <= STEPS) {
@@ -109,7 +110,7 @@
109 ConcurrentUtil.startAndJoinAssertSuccess(TIMEOUT, threads);110 ConcurrentUtil.startAndJoinAssertSuccess(TIMEOUT, threads);
110111
111 final Exchange ex = _persistit.getExchange(tree.getVolume(), tree.getName(), false);112 final Exchange ex = _persistit.getExchange(tree.getVolume(), tree.getName(), false);
112 for (SessionId session : sessionState.keySet()) {113 for (final SessionId session : sessionState.keySet()) {
113 int count = 0;114 int count = 0;
114 ex.clear().append(session.hashCode()).append(Key.BEFORE);115 ex.clear().append(session.hashCode()).append(Key.BEFORE);
115 while (ex.next()) {116 while (ex.next()) {

Subscribers

People subscribed via source and target branches