Merge lp:~pbeaman/akiban-persistit/release-notes-3.2.2 into lp:akiban-persistit
- release-notes-3.2.2
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Peter Beaman | Approve | ||
Review via email: mp+137319@code.launchpad.net |
Commit message
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
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 |
Discussed with Nathan. Approving this to get the release out.