Merge lp:~pbeaman/akiban-persistit/release-3.3 into lp:akiban-persistit
- release-3.3
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Akiban Technologies | Pending | ||
Review via email: mp+164565@code.launchpad.net |
Commit message
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 : | # |
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()) { |
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.