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
1=== modified file '.bzrignore'
2--- .bzrignore 2012-08-02 04:31:26 +0000
3+++ .bzrignore 2013-05-18 01:41:28 +0000
4@@ -9,3 +9,5 @@
5 ./bench/akiban-persistit-bench.iml
6 ./core/akiban-persistit-core.iml
7 .DS_Store
8+maven-eclipse.xml
9+
10
11=== modified file 'doc/BugList'
12--- doc/BugList 2012-11-30 20:33:30 +0000
13+++ doc/BugList 2013-05-18 01:41:28 +0000
14@@ -1,3 +1,67 @@
15+1055557 : 3.3.0
16+
17+`Trees removed inside transaction can automatically come back`
18+
19+Resolved by support for creating and removing trees within transactions.
20+
21+1174352 : 3.3.0
22+
23+`Transaction commit and abort cannot be performed from a different Thread`
24+
25+A ReentrantLock was replaced by a Semaphore to allow modification of locked
26+state by different threads.
27+
28+1167056 : 3.3.0
29+
30+`Value returned from Accumulator#update() is non-transactional`
31+
32+The issue was unintended use of a value returned from this method. The Accumulator
33+API was reworked to avoid confusion.
34+
35+1161062 : 3.3.0
36+
37+`Missing public constructor for com.persistit.SessionId`
38+
39+Added.
40+
41+1159313 : 3.3.0
42+
43+`Deadlock in Bug882219Test`
44+
45+We determined that a deadlock exists in the Java 7 implementation of
46+AbstractInterruptibleChannel independent of Persistit. Bug number 9002674 was
47+assigned by the Oracle Java Bug Database. In the meantime, the test has been
48+disabled to avoid hung builds.
49+
50+1157809 : 3.3.0
51+
52+`Appending value to a Key causes an ArrayIndexOutOfBoundsException`
53+
54+An attempt to append overflow the backing store of a ``com.persistit.Key`` now
55+throws a ``com.persistit.exceptions.KeyTooLongException``.
56+
57+1133039 : 3.3.0
58+
59+`Pruning incomplete on simple DUPLICATE_KEY error`
60+
61+The actual cause of this bug was inadequate pruning velocity when cleaning up transactions
62+using the new ``com.persistit.Exchange#lock`` method. Locked elements are now
63+pruned synchronously to avoid overloading the cleanup manager.
64+
65+1126868 : 3.3.0
66+
67+`Lock table not pruned`
68+
69+See 1133039 above.
70+
71+1126297 : 3.3.0
72+
73+'Assertion failure in TransactionIndexBucket#allocateTransactionStatus'
74+
75+Corrected by allowing a different thread than the one that created it to
76+abort a transaction.
77+
78+
79 1076517 : 3.2.2
80
81 `InUseExceptions in stress tests`
82
83=== modified file 'doc/ReleaseNotes.rst'
84--- doc/ReleaseNotes.rst 2013-04-30 16:03:38 +0000
85+++ doc/ReleaseNotes.rst 2013-05-18 01:41:28 +0000
86@@ -1,10 +1,17 @@
87 ************************************
88-Akiban Persistit Version 3.3
89+Akiban Persistit Version 3.3.0
90 ************************************
91
92+May 17, 2013
93+
94 Overview
95 ========
96-See http://akiban.github.com/persistit for a summary of features and benefits, licensing information and how to get support.
97+See http://akiban.github.com/persistit for a summary of features and benefits and how to get support.
98+
99+.. note::
100+ This version of Persistit is released under the Apache License, Version 2.0. Previous
101+ releases were licensed under the Eclipse Public License. We made this change for
102+ better compatibility with other open source projects.
103
104 Documentation
105 =============
106@@ -47,7 +54,14 @@
107 =========================
108 For 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
109
110-.. 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.
111+.. note::
112+ Especially when used with multi-gigabyte heaps, the default Hotspot JVM server heuristics are
113+ suboptimal for Persistit applications. Persistit is usually configured to allocate a large
114+ fraction of the heap to Buffer instances that are allocated at startup and held for the
115+ duration of the Persistit instance. For efficient operation, all of the Buffer instances
116+ must fit in the tenured (old) generation of the heap to avoid very significant garbage
117+ collector overhead. Use either -XX:NewSize or -Xmn to adjust the relative sizes of
118+ the new and old generations.
119
120 |
121 |
122@@ -58,15 +72,15 @@
123 +---------+--------------------+--------------------------------------------------------------------------+
124 | Version | Release Date | Summary |
125 +=========+====================+==========================================================================+
126-| 3.3.1 | May 3, 2013 | License changed from Eclipse Public License to Apache License, Version |
127-| | | 2.0 for better compatibility with open source projects. Trees and |
128-| | | volumes are now created and removed correctly within the scope of a |
129-| | | transaction. Better support for session management of transactions. |
130+| 3.3.0 | May 17, 2013 | Change license from Eclipse Public License to Apache License, Version |
131+| | | 2.0. Create and remove Trees correctly within the scope of a transaction.|
132+| | | Correct problems with transaction session management. Modify |
133+| | | Accumulator API to better suggest correct usage. |
134 +---------+--------------------+--------------------------------------------------------------------------+
135-| 3.2.7 | March 22, 2013 | Several new API features, including TreeBuilder, Traverse Visitor, |
136+| 3.2.7 | March 22, 2013 | Add several new API features, including TreeBuilder, Traverse Visitor |
137 | | | and Lock. Fix several non-critical bugs. |
138 +---------+--------------------+--------------------------------------------------------------------------+
139-| 3.2.2 | November 30, 2012 | Better support for Spring Framework. Fix rare but serious bugs found in |
140+| 3.2.2 | November 30, 2012 | Improve support for Spring Framework. Fix rare but serious bugs found in |
141 | | | stress tests. Fix issue related to locale and make sure Persistit builds |
142 | | | everywhere. |
143 +---------+--------------------+--------------------------------------------------------------------------+
144@@ -91,15 +105,52 @@
145 +---------+--------------------+--------------------------------------------------------------------------+
146
147
148-Resolved Issues
149-===============
150-
151-{{bug-list}}
152-
153 Changes and New Features
154 ========================
155
156-Persistit 3.2.7 - TreeBuilder
157+3.3.0 - License
158+-----------------------------------------------------
159+Akiban Persistit is now licensed under the Apache License, Version 2.0.
160+
161+3.3.0 - Creating and Removing Trees in Transactions
162+-------------------------------------------------------------
163+Resolving a long-standing anomaly in the Persistit API, this release now handles
164+creation and deletion of Tree instances correctly inside transactions. As a result,
165+a transaction can create and populate a Tree which becomes visible within other
166+transactions only when the transaction commits, and which is implicitly removed
167+if the transaction aborts. Similarly, the removal of a Tree within a
168+transaction becomes visible to other transactions only upon commit.
169+
170+3.3.0 - Better Session Support
171+-----------------------------------------------------
172+This release corrects issues with session support. Each thread is assigned a
173+``com.persistit.SessionId`` when it uses Persistit, and that SessionId is linked
174+to a unique ``com.persistit.Transaction`` instance. Usually a transaction is confined to a single
175+thread that retains a single SessionId for its entire life. However, for use cases in
176+which a server may support transactions that span multiple
177+network requests, and where each request may be serviced by an arbitrary thread from a
178+thread pool, there is support for changing the association of a SessionId with a thread. See
179+notes in ``com.persistit.Transaction`` for details.
180+
181+This release corrects two issues related to sessions:
182+
183+* The constructor for SessionId is now public.
184+* It is now possible for a thread other than the one that began the transaction
185+ to commit it. Previous versions would throw an IllegalMonitorStateException in this
186+ case.
187+
188+3.3.0 - Accumulator API
189+-----------------------------------------------------
190+The ``com.persistit.Accumulator`` class and its inner classes ``MinAccumulator``
191+``MaxAccumulator``, ``SumAccumulator`` and ``SeqAccumulator`` provide an efficient
192+way to update counts, sums and unique ID counters that would otherwise cause
193+significant contention among concurrent transactions. This release
194+replaces a single method named ``update`` with a use-specific method for each
195+type of Accumulator. For example, the ``com.persistit.Accumulator.SeqAccumulator``
196+class provides the method ``com.persistit.Accumulator.SeqAccumulator#allocate`` to
197+allocate a sequence number. See ``Accumulator`` class JavaDoc for details.
198+
199+3.2.7 - TreeBuilder
200 -----------------------------------------------------
201 Inserting a large set of records with non-sequential keys causes significant I/O overhead. Once the size
202 of the Tree is larger than available main memory, each insertion can result in a disk write (to flush a page
203@@ -113,7 +164,7 @@
204 loaded a billion records with keys generated as UUID instances. See the API documentation for
205 ``com.persistit.TreeBuilder`` for more information.
206
207-Persistit 3.2.7 - Traverse Visitor
208+3.2.7 - Traverse Visitor
209 -----------------------------------------------------
210 The ``com.persistit.Exchange#traverse`` methods provide Persistit's fundamental mechanism for iterating
211 over a collection of keys within a Tree. Each call to ``traverse`` (or ``com.persistit.Exchange#next`` or
212@@ -123,7 +174,7 @@
213 release adds a more efficient mechanism based on the visitor pattern. See ``com.persistit.Exchange.TraverseVisitor``
214 for details.
215
216-Persistit 3.2.7 - Lock to avoid Write Skew Anomalies
217+3.2.7 - Lock to avoid Write Skew Anomalies
218 -----------------------------------------------------
219 Persistit transactions implement Snapshot Isolation to prevent concurrent transactions from interfering with
220 each other. See ``com.persistit.Transaction`` for details.
221@@ -145,10 +196,10 @@
222 result is a database state that could not have occurred if the transactions had run sequentially in any order.
223
224 A well-known solution is to modify the transaction logic to perform an additional write operation to a common
225-key. The ``com.persistit.Exchange#lock`` method provides a convenient and efficient mechanism for doing so. The``lock``
226+key. The ``com.persistit.Exchange#lock`` method provides a convenient and efficient mechanism for doing so. The ``lock``
227 method does not actually lock anything, but is so-named because it serves a similar function.
228
229-Persistit 3.2.7 - Miscellaneous Issues
230+3.2.7 - Miscellaneous Issues
231 -----------------------------------------------------
232 Changes needed to build and run Persistit on Mac OSX under Java 7 were made.
233
234@@ -158,20 +209,20 @@
235
236 displays all of the meta data contained in the volume file.
237
238-Persistit 3.2.2 - Spring Framework
239+3.2.2 - Spring Framework
240 -----------------------------------------------------
241 Prior to this release Persistit was needlessly difficult to configure and initialize within Spring Framework.
242-This version provides new setter methods and constructors on the com.persistit.Persistit object to allow easy
243+This version provides new setter methods and constructors on the ``com.persistit.Persistit`` object to allow easy
244 injection of configuration properties and make it possible to inject a fully instantiated
245 Persistit instance within a Spring project. In addition, new methods were added to the
246-com.persistit.Configuration class to simplify supplying buffer pool and initial volume specifications.
247+``com.persistit.Configuration`` class to simplify supplying buffer pool and initial volume specifications.
248 Three of the ``com.persistit.Persistit#initialize`` methods were deprecated.
249
250 This release also adds a new sample application that shows how a configured Persistit instance can be created. For
251 Maven users, note that the pom.xml file now includes a dependency on Spring Framework in test scope only; Persistit
252 can still be deployed without any external dependencies.
253
254-Persistit 3.2.2 - Bug Fixes
255+3.2.2 - Bug Fixes
256 -----------------------------------------------------
257 Version 3.2.2 corrects two issues that were identified through stress tests. For this release
258 we added hundreds of hours of stress-testing experience and will continue to invest in ongoing testing.
259@@ -179,16 +230,16 @@
260 This version also fixes a unit test with string literals containing numbers formatted according to en_US
261 conventions. The test has been corrected and the Persistit build has been tested in several locales.
262
263-Persistit 3.2.1 - Bug Fixes
264+3.2.1 - Bug Fixes
265 -----------------------------------------------------
266
267 Version 3.2.1 is a maintenance release that fixes a number of non-critical bugs, primarily in less frequently
268 used sections of the API. See the associated bug list for full descriptions of each resolved.
269
270-Persistit 3.2.0 - Default Journal File Format Changed
271+3.2.0 - Default Journal File Format Changed
272 -----------------------------------------------------
273
274-Version 3.2.0 fixes problems related to Volumes created and opened by the com.persistit.Persistit#loadVolume
275+Version 3.2.0 fixes problems related to Volumes created and opened by the ``com.persistit.Persistit#loadVolume``
276 method rather than being specified by the initial system configuration. In previous versions, journal files
277 contained insufficient information to properly recover such volumes, even during normal startup.
278
279@@ -203,12 +254,12 @@
280 (see com.persistit.Configuration#setUseOldVSpec). When this property is +true+, Persistit writes
281 journal files that are backward-compatible, but incapable of supporting dynamically created volumes.
282
283-Persistit 3.2.0 - Performance Improvements
284+3.2.0 - Performance Improvements
285 ------------------------------------------
286
287 Version 3.2.0 significantly improves I/O performance for concurrent transactions and
288 better controls the number of journal files created during by very aggressive loads. A new attribute
289-in the com.persistit.mxbeans.JournalManagerMXBean class called urgentFileCountThreshold controls the
290+in the ``com.persistit.mxbeans.JournalManagerMXBean`` class called ``urgentFileCountThreshold`` controls the
291 maximum number of journal files Persistit will create before ramping the up the urgency of copying pages to
292 allow purging old files. Several other issues related to I/O scheduling and management of
293 dirty pages were resolved.
294@@ -218,7 +269,7 @@
295 significant reduction in the amount of space consumed by obsolete version and also results in better
296 transaction throughput.
297
298-Persistit 3.1.7 - Code Base Reformatted
299+3.1.7 - Code Base Reformatted
300 ---------------------------------------
301
302 To simplify diffs and improve legibility, the entire code base was reformatted and "cleaned up"
303@@ -226,7 +277,7 @@
304 source to ensure coherent diffs in the future. The settings for formatting and code style
305 cleanup by Eclipse are found in the ``src/etc`` directory.
306
307-Persistit 3.1.7 - Buffer Pool Preload
308+3.1.7 - Buffer Pool Preload
309 -------------------------------------
310
311 On a server with a large buffer pool (many gigabytes), a Persistit instance can run for a long
312@@ -241,11 +292,11 @@
313 800,000 16Kbyte buffers in about a minute, which is orders of magnitude faster than the
314 same process would take with reads performed incrementally at random.
315
316-Two new configuration properties com.persistit.Configuration#setBufferInventoryEnabled and
317-com.persistit.Configuration#setBufferPreloadEnabled control this behavior. These settings
318+Two new configuration properties ``com.persistit.Configuration#setBufferInventoryEnabled`` and
319+``com.persistit.Configuration#setBufferPreloadEnabled`` control this behavior. These settings
320 are turned off by default in version 3.1.7.
321
322-Persistit 3.1.4 - Detecting and Ignoring Missing Volumes
323+3.1.4 - Detecting and Ignoring Missing Volumes
324 --------------------------------------------------------
325
326 Every time Persistit writes a modified page to disk, it does so first to the journal.
327@@ -258,10 +309,10 @@
328 volume from an existing Database, this change provides a configurable switch to optionally
329 allow pages from missing volumes to be skipped (with logged warning messages) during recovery
330 processing. The switch can be enabled by setting the configuration parameter
331-com.persistit.Configuration#setIgnoreMissingVolumes to true.
332-
333-
334-Persistit 3.1.4 - Reduce KeyCoder Serialized Object Size
335+``com.persistit.Configuration#setIgnoreMissingVolumes`` to true.
336+
337+
338+3.1.4 - Reduce KeyCoder Serialized Object Size
339 --------------------------------------------------------
340
341 .. note::
342@@ -276,7 +327,7 @@
343 appended to a Key right next to any other type. This is tagged internally with per-class
344 handles. This change lowers the initial offset to reduce and in many cases halve the serialized size.
345
346-Persistit 3.1.4 - Maven POM Changes For Eclipse Juno
347+3.1.4 - Maven POM Changes For Eclipse Juno
348 ----------------------------------------------------
349
350 The latest version of Eclipse, code named Juno, features a wide array of changes, including a
351@@ -285,7 +336,7 @@
352
353 Please contact Akiban if you have encounter any issues getting up and running with Persistit.
354
355-Persistit 3.1.2 - Asserts Added to Check for Correct Exchange Thread Behavior
356+3.1.2 - Asserts Added to Check for Correct Exchange Thread Behavior
357 -----------------------------------------------------------------------------
358
359 A bug in the Akiban Server code caused an Exchange to be used concurrently by two Threads,
360@@ -294,22 +345,14 @@
361 asserts were added to catch such concurrent use by multiple threads. Applications should
362 be tested with asserts enabled to verify correct thread usage.
363
364-
365-
366-Known Issues
367-============
368-
369-Transactional Tree Management
370------------------------------
371-
372-All operations within Trees such as store, fetch, remove and traverse are correctly supported
373-within transactions. However, the operations to create and delete Tree instances currently do
374-not respect transaction boundaries. For example, if a transaction creates a new Tree, it is
375-immediately visible within other Transactions and will continue to exist even if the original
376-transaction aborts. (However, records inserted or modified by the original transaction will
377-not be visible until the transaction commits.) Prior to creating/removing trees, transaction
378-processing should be quiesced and allowed to complete.
379-
380+Resolved Issues
381+===============
382+
383+{{bug-list}}
384+
385+
386+Unresolved Issues
387+=================
388
389 Out of Memory Error, Direct Memory Buffer
390 ------------------------------------------------------
391@@ -327,7 +370,7 @@
392
393 https://bugs.launchpad.net/akiban-persistit/+bug/986465
394
395-The getChangeCount method may return inaccurate results as its not currently transactional.
396+The getChangeCount method may return inaccurate results as it is not currently transactional.
397 The primary consumer is the PersistitMap. As a result of this bug Persistit may not generate
398 java.util.ConcurrentModificationException when it is supposed to.
399
400
401=== modified file 'doc/build/build-doc.sh' (properties changed: -x to +x)
402=== modified file 'doc/conf.py'
403--- doc/conf.py 2013-03-24 17:25:45 +0000
404+++ doc/conf.py 2013-05-18 01:41:28 +0000
405@@ -50,7 +50,7 @@
406 #
407 # version = short X.Y version.
408 # release = full version, including alpha/beta/rc tags.
409-version = '3.2.8'
410+version = '3.3.0'
411 release = version
412
413 # Included while processing every rst file. Used only for working around inability
414@@ -259,7 +259,7 @@
415 epub_title = u'Persistit'
416 epub_author = u'Akiban Technologies'
417 epub_publisher = u'Akiban Technologies'
418-epub_copyright = u'2012, Akiban Technologies'
419+epub_copyright = u'2013, Akiban Technologies'
420
421 # The language of the text. It defaults to the language option
422 # or en if the language is not set.
423
424=== modified file 'examples/FindFile/README.txt'
425--- examples/FindFile/README.txt 2013-04-30 15:26:32 +0000
426+++ examples/FindFile/README.txt 2013-05-18 01:41:28 +0000
427@@ -42,7 +42,7 @@
428
429 - or -
430
431- javac -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar FindFile.java
432+ javac -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar FindFile.java
433
434 To run FindFile:
435
436@@ -50,7 +50,7 @@
437
438 - or -
439
440- java -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar;. FindFile
441+ java -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. FindFile
442
443 Persistit will place a volume file in paths specified by persistit.properties.
444 You can change the location of these files by modifying the datapath property
445
446=== modified file 'examples/HelloWorld/README.txt'
447--- examples/HelloWorld/README.txt 2013-04-30 15:26:32 +0000
448+++ examples/HelloWorld/README.txt 2013-05-18 01:41:28 +0000
449@@ -30,7 +30,7 @@
450
451 - or -
452
453- javac -classpath ../../core.target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar HelloWorld.java
454+ javac -classpath ../../core.target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar HelloWorld.java
455
456 To run HelloWorld:
457
458@@ -38,7 +38,7 @@
459
460 - or -
461
462- java -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar;. HelloWorld
463+ java -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. HelloWorld
464
465 Persistit will place a volume file in paths specified by persistit.properties.
466 You can change the location of these files by modifying the datapath property
467
468=== modified file 'examples/PersistitMapDemo/README.txt'
469--- examples/PersistitMapDemo/README.txt 2013-04-30 15:26:32 +0000
470+++ examples/PersistitMapDemo/README.txt 2013-05-18 01:41:28 +0000
471@@ -27,7 +27,7 @@
472
473 - or -
474
475- javac -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar PersistitMapDemo.java
476+ javac -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar PersistitMapDemo.java
477
478 To run PersistitMapDemo:
479
480@@ -35,7 +35,7 @@
481
482 - or -
483
484- java -classpath ../../core/target/akiban-persistit-xx.yy.zz-SNAPSHOT-jar-with-dependencies-and-tests.jar;. PersistitMapDemo
485+ java -classpath ../../core/target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. PersistitMapDemo
486
487 Persistit will place a volume file in paths specified by persistit.properties.
488 You can change the location of these files by modifying the datapath property
489
490=== modified file 'examples/SimpleBench/README.txt'
491--- examples/SimpleBench/README.txt 2013-04-30 15:26:32 +0000
492+++ examples/SimpleBench/README.txt 2013-05-18 01:41:28 +0000
493@@ -36,7 +36,7 @@
494
495 - or -
496
497- javac -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleBench.java
498+ javac -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleBench.java
499
500 To run SimpleBench:
501
502@@ -44,13 +44,13 @@
503
504 - or -
505
506- java -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleBench
507+ java -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleBench
508
509 By default, SimpleBench will create its volume, prewrite journal and log files
510 in your current working directory. You can change the location of these files
511 by specifying system properties, for example:
512
513- java -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar;.
514+ java -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;.
515 -Dcom.persistit.datapath=/myDataPath
516 -Dcom.persistit.logpath=/myLogPath
517 SimpleBench
518
519=== modified file 'examples/SimpleDemo/README.txt'
520--- examples/SimpleDemo/README.txt 2013-04-30 15:26:32 +0000
521+++ examples/SimpleDemo/README.txt 2013-05-18 01:41:28 +0000
522@@ -34,7 +34,7 @@
523
524 - or -
525
526- javac -classpath ../../lib/persistit_jsa110.jar SimpleDemo.java
527+ javac -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleDemo.java
528
529 To run SimpleDemo:
530
531@@ -42,11 +42,7 @@
532
533 - or -
534
535- java -classpath ../../lib/persistit_jsa110.jar;. SimpleDemo
536-
537-To run SimpleDemo without building it first:
538-
539- java -classpath ../../lib/persistit_jsa110.jar;../../lib/examples.jar SimpleDemo
540+ java -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleDemo
541
542 Persistit will place a volume file in paths specified by persistit.properties.
543 You can change the location of these files by modifying the datapath property
544
545=== modified file 'examples/SimpleTransaction/README.txt'
546--- examples/SimpleTransaction/README.txt 2013-04-30 15:26:32 +0000
547+++ examples/SimpleTransaction/README.txt 2013-05-18 01:41:28 +0000
548@@ -29,7 +29,7 @@
549
550 - or -
551
552- javac -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleTransaction.java
553+ javac -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar SimpleTransaction.java
554
555 To run SimpleTransaction:
556
557@@ -37,7 +37,7 @@
558
559 - or -
560
561- java -classpath ../../target/akiban-persistit-2.1-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleTransaction
562+ java -classpath ../../target/akiban-persistit-x.y.z-SNAPSHOT-jar-with-dependencies-and-tests.jar;. SimpleTransaction
563
564 Persistit will place a volume file in paths specified by persistit.properties.
565 You can change the location of these files by modifying the datapath property
566
567=== modified file 'examples/SpringFrameworkExample/README.txt'
568--- examples/SpringFrameworkExample/README.txt 2013-04-30 15:26:32 +0000
569+++ examples/SpringFrameworkExample/README.txt 2013-05-18 01:41:28 +0000
570@@ -27,7 +27,7 @@
571
572 - or -
573
574- javac -classpath ../../target/akiban-persistit-3.2.2-jar-with-dependencies-and-tests.jar SpringFrameworkExample.java
575+ javac -classpath ../../target/akiban-persistit-x.y.z-jar-with-dependencies-and-tests.jar SpringFrameworkExample.java
576
577 To run SimpleTransaction:
578
579@@ -35,7 +35,7 @@
580
581 - or -
582
583- java -classpath ../../target/akiban-persistit-3.2.2-jar-with-dependencies-and-tests.jar;. SpringFrameworkExample
584+ java -classpath ../../target/akiban-persistit-x.y.z-jar-with-dependencies-and-tests.jar;. SpringFrameworkExample
585
586 Persistit will place a volume file in paths specified by persistit.properties.
587 You can change the location of these files by modifying the datapath property
588
589=== modified file 'pom.xml'
590--- pom.xml 2013-04-30 15:51:52 +0000
591+++ pom.xml 2013-05-18 01:41:28 +0000
592@@ -4,7 +4,7 @@
593
594 <groupId>com.akiban</groupId>
595 <artifactId>akiban-persistit</artifactId>
596- <version>3.3-SNAPSHOT</version>
597+ <version>3.3.0</version>
598 <packaging>jar</packaging>
599
600 <parent>
601@@ -23,8 +23,8 @@
602
603 <licenses>
604 <license>
605- <name>Eclipse Public License - v 1.0</name>
606- <url>http://www.eclipse.org/legal/epl-v10.html</url>
607+ <name>Apache License, Version 2.0</name>
608+ <url>http://http://www.apache.org/licenses/LICENSE-2.0.html</url>
609 <distribution>repo</distribution>
610 </license>
611 </licenses>
612
613=== modified file 'src/main/java/com/persistit/VolumeStructure.java'
614--- src/main/java/com/persistit/VolumeStructure.java 2013-04-30 15:26:32 +0000
615+++ src/main/java/com/persistit/VolumeStructure.java 2013-05-18 01:41:28 +0000
616@@ -257,7 +257,7 @@
617 }
618 } else {
619 final Exchange ex = directoryExchange();
620- if (!tree.isTransactionPrivate(false)) {
621+ if (!tree.isTransactionPrivate(false) || _volume.isLockVolume()) {
622 ex.ignoreTransactions();
623 }
624 ex.getValue().put(tree);
625
626=== modified file 'src/test/java/com/persistit/Bug882219Test.java'
627--- src/test/java/com/persistit/Bug882219Test.java 2013-04-30 15:26:32 +0000
628+++ src/test/java/com/persistit/Bug882219Test.java 2013-05-18 01:41:28 +0000
629@@ -22,6 +22,7 @@
630 import java.util.Timer;
631 import java.util.TimerTask;
632
633+import org.junit.Ignore;
634 import org.junit.Test;
635
636 import com.persistit.Transaction.CommitPolicy;
637@@ -53,7 +54,17 @@
638 // Flush caches:
639 // sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
640 //
641+ /*
642+ * Note: under Java 7 this test sometimes fails due to a bug in the JDK. The
643+ * result is a deadlock that sometimes prevents this test from finishing.
644+ * For this reason the test is currently Ignored, but we enable it for
645+ * special occasions.
646+ *
647+ * Reported under http://bugs.sun.com/ bug #9002674
648+ */
649+
650 @Test
651+ @Ignore
652 public void testInterrupts() throws Exception {
653 final Exchange ex = _persistit.getExchange("persistit", "bug882219", true);
654 final Thread foregroundThread = Thread.currentThread();
655
656=== modified file 'src/test/java/com/persistit/TransactionSessionSwitchTest.java'
657--- src/test/java/com/persistit/TransactionSessionSwitchTest.java 2013-04-30 18:29:45 +0000
658+++ src/test/java/com/persistit/TransactionSessionSwitchTest.java 2013-05-18 01:41:28 +0000
659@@ -16,7 +16,7 @@
660
661 package com.persistit;
662
663-import static org.junit.Assert.*;
664+import static org.junit.Assert.assertEquals;
665
666 import java.util.HashMap;
667 import java.util.Map;
668@@ -55,8 +55,8 @@
669 private final static int THREADS = 17;
670 private final static long TIMEOUT = 10000;
671
672- private Queue<SessionId> sessionQueue = new ArrayBlockingQueue<SessionId>(SESSIONS);
673- private Map<SessionId, AtomicInteger> sessionState = new HashMap<SessionId, AtomicInteger>();
674+ private final Queue<SessionId> sessionQueue = new ArrayBlockingQueue<SessionId>(SESSIONS);
675+ private final Map<SessionId, AtomicInteger> sessionState = new HashMap<SessionId, AtomicInteger>();
676
677 @Test
678 public void sessionManagement() throws Exception {
679@@ -66,15 +66,16 @@
680 sessionState.put(sessionId, new AtomicInteger(0));
681 }
682
683- Thread[] threads = new Thread[THREADS];
684+ final Thread[] threads = new Thread[THREADS];
685
686 final Tree tree = _persistit.getVolume("persistit").getTree("tt", true);
687 for (int i = 0; i < THREADS; i++) {
688 threads[i] = new Thread(new Runnable() {
689+ @Override
690 public void run() {
691 SessionId session;
692 while ((session = sessionQueue.poll()) != null) {
693- int state = sessionState.get(session).get();
694+ final int state = sessionState.get(session).get();
695 try {
696 _persistit.setSessionId(session);
697 final Transaction txn = _persistit.getTransaction();
698@@ -88,12 +89,12 @@
699 }
700 txn.end();
701 } else {
702- Exchange ex = _persistit.getExchange(tree.getVolume(), tree.getName(), false);
703+ final Exchange ex = _persistit.getExchange(tree.getVolume(), tree.getName(), false);
704 ex.getValue().put(Thread.currentThread().getName());
705 ex.clear().append(session.hashCode()).append(state).store();
706 _persistit.releaseExchange(ex);
707 }
708- } catch (PersistitException e) {
709+ } catch (final PersistitException e) {
710 throw new RuntimeException(e);
711 } finally {
712 if (state <= STEPS) {
713@@ -109,7 +110,7 @@
714 ConcurrentUtil.startAndJoinAssertSuccess(TIMEOUT, threads);
715
716 final Exchange ex = _persistit.getExchange(tree.getVolume(), tree.getName(), false);
717- for (SessionId session : sessionState.keySet()) {
718+ for (final SessionId session : sessionState.keySet()) {
719 int count = 0;
720 ex.clear().append(session.hashCode()).append(Key.BEFORE);
721 while (ex.next()) {

Subscribers

People subscribed via source and target branches