Merge lp:~pbeaman/akiban-persistit/release-notes-3.2.2 into lp:akiban-persistit

Proposed by Peter Beaman
Status: Merged
Approved by: Peter Beaman
Approved revision: 405
Merged at revision: 403
Proposed branch: lp:~pbeaman/akiban-persistit/release-notes-3.2.2
Merge into: lp:akiban-persistit
Diff against target: 270 lines (+90/-23)
8 files modified
doc/BasicAPI.rst (+3/-2)
doc/BugList (+40/-0)
doc/Configuration.rst (+8/-5)
doc/GettingStarted.rst (+4/-2)
doc/ReleaseNotes.rst (+26/-1)
src/main/java/com/persistit/Configuration.java (+7/-11)
src/main/java/com/persistit/Persistit.java (+1/-1)
src/main/java/com/persistit/Transaction.java (+1/-1)
To merge this branch: bzr merge lp:~pbeaman/akiban-persistit/release-notes-3.2.2
Reviewer Review Type Date Requested Status
Peter Beaman Approve
Review via email: mp+137319@code.launchpad.net

Description of the change

Release nodes and doc updates for 3.2.2. Note that some Javadoc comments needed to change.

LBJ:NO_BUILD

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

Typos and doc tweaks

405. By Peter Beaman

Source code cleanup

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

Discussed with Nathan. Approving this to get the release out.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'doc/BasicAPI.rst'
2--- doc/BasicAPI.rst 2012-06-11 21:25:37 +0000
3+++ doc/BasicAPI.rst 2012-11-30 23:08:31 +0000
4@@ -20,14 +20,15 @@
5 //
6 // register any Coder and Renderer instances before initialization
7 //
8- db.initialize(configProperties);
9+ db.setConfiguration(config);
10+ db.initialize();
11 try {
12 // do application work
13 } finally {
14 db.close();
15 }
16
17-The ``configProperties`` describe the memory allocation, initial set of volumes, the journal, and other settings needed to get Persistit started. See :ref:`Configuration` for details.
18+where ``config`` is a ``com.persistit.Configuration`` that describes the memory allocation, initial set of volumes, journal file name, and other settings needed to get Persistit started. The configuration can also be specified as a ``java.util.Properties`` collection, or by name of a properties file. See :ref:`Configuration` for details.
19
20 The ``com.persistit.Persistit#close`` method gracefully flushes all modified data to disk, stops background threads and unregisters JMX MBeans.
21
22
23=== modified file 'doc/BugList'
24--- doc/BugList 2012-11-14 15:36:30 +0000
25+++ doc/BugList 2012-11-30 23:08:31 +0000
26@@ -1,3 +1,43 @@
27+1076517 : 3.2.2
28+
29+`InUseExceptions in stress tests`
30+
31+Stress tests occasionally experienced InUseExceptions, usually signifying
32+a deadlock. Two mechanisms were discovered and fixed. Note that an InUseException
33+occurs when an attempt to lock a resource such as a Tree or a Buffer is
34+unsatisfied for 60 seconds (the current default timeout). This exception can
35+occur for reasons other than deadlock such as an extraordinarily slow I/O
36+operation or as a result of a debug breakpoint in sensitive code.
37+
38+1079288 : 3.2.2
39+
40+`Persistit build success is sensitive to locale`
41+
42+One Persistit unit test depended on locale-specific text formatting, and therefore
43+failed when built in a locale which does not conform to en_US formatting rules.
44+
45+1079406 : 3.2.2
46+
47+`Design flaw makes Persistit needlessly difficult to use in Spring Framework`
48+
49+Persistit initialization API was modified to make it easy to create and use
50+a Persistit instance within Spring Framework.
51+
52+1081659 : 3.2.2
53+
54+`isNull(true) leaves Value in unsafe state for stream mode get`
55+
56+The implementation of isNull(boolean) added in Version 3.2.1 contained a bug that
57+made stream-mode get operations fail.
58+
59+1074372 : 3.2.2
60+
61+`Stress tests induce RebalanceException`
62+
63+Code was added to handle a rare situation
64+in which removing a key at the boundary between two pages requires one of the pages to split. Formerly this condition
65+was not handled properly and instead caused the application thread to receive a RebalanceException.
66+
67 1076403 : 3.2.1
68
69 `NPE while starting AdminUI`
70
71=== modified file 'doc/Configuration.rst'
72--- doc/Configuration.rst 2012-09-11 21:02:25 +0000
73+++ doc/Configuration.rst 2012-11-30 23:08:31 +0000
74@@ -3,14 +3,14 @@
75 Configuration
76 =============
77
78-To initialize Akiban Persistit the embedding application defines a configuration and then invokes one of the ``com.persistit.Persistit#initialize`` methods. The configuration defines parameters used to determine locations of files, sizes of buffer pool and journal files, policies and other elements required when Persistit starts up. These parameters are managed by the ``com.persistit.Configuration`` class.
79+To initialize Akiban Persistit the embedding application specifies a configuration and then invokes the ``com.persistit.Persistit#initialize()`` method. The configuration defines parameters used to determine locations of files, sizes of buffer pool and journal files, policies and other elements required when Persistit starts up. These parameters are managed by the ``com.persistit.Configuration`` class.
80
81 An application can define the configuration in one of two equivalent ways:
82
83 - Create a ``com.persistit.Configuration`` instance and set its properties through methods such as ``com.persistit.Configuration#setJournalPath``.
84 - Specify properties by name in a ``java.util.Properties`` instance and then pass the ``Properties`` to a ``Configuration`` constructor.
85
86-The following code samples show different ways of using the ``com.persistit.Persistit#initialize`` method to configure and start Persistit:
87+The following code samples show different ways of configuring and starting Persistit:
88
89 .. code-block:: java
90
91@@ -19,12 +19,14 @@
92 p.setProperty("buffer.count.16384", "1000");
93 p.setProperty("journalpath", "/home/akiban/data/journal");
94 ...
95- db.initialize(p);
96+ db.setProperties(p);
97+ db.initialize();
98
99 .. code-block:: java
100
101 final Persistit db = new Persistit();
102- db.initialize("/home/akiban/my_config.properties");
103+ db.setPropertiesFromFile("/home/akiban/my_config.properties");
104+ db.initialize();
105
106 .. code-block:: java
107
108@@ -33,7 +35,8 @@
109 c.getBufferPoolMap().get(16384).setCount(1000);
110 c.setJournalPath("/home/akiban/data/journal");
111 ...
112- db.initialize(c);
113+ db.setConfiguration(c);
114+ db.initialize();
115
116 There are three essential elements in a Persistit configuration:
117
118
119=== modified file 'doc/GettingStarted.rst'
120--- doc/GettingStarted.rst 2012-08-02 04:51:48 +0000
121+++ doc/GettingStarted.rst 2012-11-30 23:08:31 +0000
122@@ -48,8 +48,10 @@
123 example demonstrating use of Persisit’s multi-version currency control (MVCC) transactions
124 ``examples/FindFile``
125 a somewhat larger example that uses Persistit as the backing store for file finder utility
126- ``example/PersistitMapDemo``
127+ ``examples/PersistitMapDemo``
128 demonstration of the PersistitMap interface
129+ ``examples/SpringFrameworkExample``
130+ configures and initializes a Persistit instance through Spring Framework
131
132 HelloWorld
133 ----------
134@@ -123,7 +125,7 @@
135 Initialization and Configuration
136 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
137
138-Before accessing any data, ``HelloWorld.java`` calls one of the ``com.persistit.Persistit#initialize`` methods of ``com.persistit.Persistit``. This sets up the memory configuration for buffers and the path names of Persistit volume and journal files. Alternative versions of the initialize method accept configuration information from a ``java.util.Properties`` object, from a specified properties file, or by default from the file named ``persistit.properties``.
139+Before accessing any data, ``HelloWorld.java`` calls the ``com.persistit.Persistit#initialize()``. This sets up the memory configuration for buffers and the path names of Persistit volume and journal files. Alternative methods accept configuration information from a ``com.persistit.Configuration`` object, a ``java.util.Properties`` object, a specified properties file, or by default from the file named ``persistit.properties`` in the current working directory.
140
141 In this example, ``persistit.properties`` looks like this::
142
143
144=== modified file 'doc/ReleaseNotes.rst'
145--- doc/ReleaseNotes.rst 2012-11-14 15:36:30 +0000
146+++ doc/ReleaseNotes.rst 2012-11-30 23:08:31 +0000
147@@ -1,5 +1,5 @@
148 ************************************
149-Akiban Persistit Version 3.2.1
150+Akiban Persistit Version 3.2.2
151 ************************************
152
153 Overview
154@@ -50,6 +50,10 @@
155 +---------+--------------------+--------------------------------------------------------------------------+
156 | Version | Release Date | Summary |
157 +=========+====================+==========================================================================+
158+| 3.2.2 | November 30, 2012 | Better support for Spring Framework. Fix rare but serious bugs found in |
159+| | | stress tests. Fix issue related to locale and make sure Persistit builds |
160+| | | everywhere. |
161++---------+--------------------+--------------------------------------------------------------------------+
162 | 3.2.1 | November 13, 2012 | Fix several low-priority bugs. |
163 +---------+--------------------+--------------------------------------------------------------------------+
164 | 3.2.0 | October 15, 2012 | Fix several critical and other bugs, one of which requires a modified |
165@@ -79,6 +83,27 @@
166 Changes and New Features
167 ========================
168
169+Persistit 3.2.2 - Spring Framework
170+-----------------------------------------------------
171+Prior to this release Persistit was needlessly difficult to configure and initialize within Spring Framework.
172+This version provides new setter methods and constructors on the com.persistit.Persistit object to allow easy
173+injection of configuration properties and make it possible to inject a fully instantiated
174+Persistit instance within a Spring project. In addition, new methods were added to the
175+com.persistit.Configuration class to simplify supplying buffer pool and initial volume specifications.
176+Three of the ``com.persistit.Persistit#initialize`` methods were deprecated.
177+
178+This release also adds a new sample application that shows how a configured Persistit instance can be created. For
179+Maven users, note that the pom.xml file now includes a dependency on Spring Framework in test scope only; Persistit
180+can still be deployed without any external dependencies.
181+
182+Persistit 3.2.2 - Bug Fixes
183+-----------------------------------------------------
184+Version 3.2.2 corrects two issues that were identified through stress tests. For this release
185+we added hundreds of hours of stress-testing experience and will continue to invest in ongoing testing.
186+
187+This version also fixes a unit test with string literals containing numbers formatted according to en_US
188+conventions. The test has been corrected and the Persistit build has been tested in several locales.
189+
190 Persistit 3.2.1 - Bug Fixes
191 -----------------------------------------------------
192
193
194=== modified file 'src/main/java/com/persistit/Configuration.java'
195--- src/main/java/com/persistit/Configuration.java 2012-11-20 17:45:51 +0000
196+++ src/main/java/com/persistit/Configuration.java 2012-11-30 23:08:31 +0000
197@@ -45,7 +45,6 @@
198 import com.persistit.exception.PersistitIOException;
199 import com.persistit.exception.PropertiesNotFoundException;
200 import com.persistit.logging.DefaultPersistitLogger;
201-import com.persistit.mxbeans.CheckpointManagerMXBean;
202 import com.persistit.policy.JoinPolicy;
203 import com.persistit.policy.SplitPolicy;
204 import com.persistit.util.Util;
205@@ -63,13 +62,13 @@
206 * <code>Configuration</code>. This object is used directly or indirectly by the
207 * following methods:
208 * <ul>
209- * <li>{@link Persistit#initialize(Configuration)} - uses a supplied
210+ * <li>{@link Persistit#setConfiguration(Configuration)} - assigns a supplied
211 * <code>Configuration</code> directly.</li>
212- * <li>{@link Persistit#initialize(Properties)} - creates and loads a
213+ * <li>{@link Persistit#setProperties(Properties)} - creates and loads a
214 * <code>Configuration</code> from the supplied <code>Properties</code>.</li>
215- * <li>{@link Persistit#initialize(String)} - loads a properties file from the
216- * specified file name, and then constructs a <code>Configuration</code> from
217- * the loaded <code>Properties</code>.
218+ * <li>{@link Persistit#setPropertiesFromFile(String)} - loads a properties file
219+ * from the specified file name, and then constructs a
220+ * <code>Configuration</code> from the loaded <code>Properties</code>.
221 * <li>{@link Persistit#initialize()} - loads a properties file from a default
222 * name and then constructs a <code>Configuration</code> from the loaded
223 * <code>Properties</code>.
224@@ -1160,10 +1159,6 @@
225 * value is invalid.
226 * @param str
227 * The string representation, e.g., "100K".
228- * @param min
229- * Minimum permissible value
230- * @param max
231- * Maximum permissible value
232 * @return The numeric value of the supplied String, as a floag.
233 * @throws IllegalArgumentException
234 * if the supplied String is not a valid floating point
235@@ -1440,7 +1435,8 @@
236 * from an abrupt termination (crash) to take more time.
237 * </p>
238 * Default size is
239- * {@value CheckpointManagerMXBean#DEFAULT_CHECKPOINT_INTERVAL_S} <br/>
240+ * {@value com.persistit.mxbeans.CheckpointManagerMXBean#DEFAULT_CHECKPOINT_INTERVAL_S}
241+ * <br/>
242 * Property name is {@value #CHECKPOINT_INTERVAL_PROPERTY_NAME}
243 */
244 public void setCheckpointInterval(final long checkpointInterval) {
245
246=== modified file 'src/main/java/com/persistit/Persistit.java'
247--- src/main/java/com/persistit/Persistit.java 2012-11-28 23:13:46 +0000
248+++ src/main/java/com/persistit/Persistit.java 2012-11-30 23:08:31 +0000
249@@ -2009,7 +2009,7 @@
250
251 /**
252 * This property can be configured with the configuration property
253- * {@value #TRANSACTION_COMMIT_POLICY_NAME}.
254+ * {@value com.persistit.Configuration#COMMIT_POLICY_PROPERTY_NAME}.
255 *
256 * @return The default system commit policy.
257 */
258
259=== modified file 'src/main/java/com/persistit/Transaction.java'
260--- src/main/java/com/persistit/Transaction.java 2012-10-10 16:08:07 +0000
261+++ src/main/java/com/persistit/Transaction.java 2012-11-30 23:08:31 +0000
262@@ -97,7 +97,7 @@
263 * </dl>
264 * <p>
265 * You can specify a default policy in the Persistit initialization properties
266- * using the {@value com.persistit.Persistit#TRANSACTION_COMMIT_POLICY_NAME}
267+ * using the {@value com.persistit.Configuration#COMMIT_POLICY_PROPERTY_NAME}
268 * property or under program control using
269 * {@link Persistit#setDefaultTransactionCommitPolicy} . The default policy
270 * applies to the {@link #commit()} method. You can override the default policy

Subscribers

People subscribed via source and target branches