Merge lp:~pbeaman/akiban-persistit/fix_doc_20120611 into lp:akiban-persistit
- fix_doc_20120611
- Merge into trunk
Proposed by
Peter Beaman
Status: | Merged |
---|---|
Approved by: | Nathan Williams |
Approved revision: | 319 |
Merged at revision: | 319 |
Proposed branch: | lp:~pbeaman/akiban-persistit/fix_doc_20120611 |
Merge into: | lp:akiban-persistit |
Diff against target: |
312 lines (+40/-28) 11 files modified
doc/BasicAPI.rst (+6/-6) doc/Configuration.rst (+2/-2) doc/GettingStarted.rst (+2/-1) doc/Management.rst (+10/-3) doc/Miscellaneous.rst (+3/-2) doc/PhysicalStorage.rst (+7/-5) doc/Security.rst (+4/-3) doc/Serialization.rst (+2/-2) doc/Transactions.rst (+2/-2) doc/build/build-doc.sh (+1/-1) doc/build/src/SphinxDocPrep.java (+1/-1) |
To merge this branch: | bzr merge lp:~pbeaman/akiban-persistit/fix_doc_20120611 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Nathan Williams | Approve | ||
Review via email: mp+109738@code.launchpad.net |
Commit message
Description of the change
Fixes typos, grammar and formatting issues noted in
https:/
on 6/8/2012. No code other than SphinxDocPrep is modified.
To post a comment you must log in.
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-05-31 18:51:41 +0000 |
3 | +++ doc/BasicAPI.rst 2012-06-11 21:28:19 +0000 |
4 | @@ -3,7 +3,7 @@ |
5 | Basic API |
6 | ========= |
7 | |
8 | -Akiban Persistit stores data as key-value pairs in highly optimized B+Tree. (Actually, implements `B-Link Tree <http://www.cs.cornell.edu/courses/cs4411/2009sp/blink.pdf>`_ trees for greater concurrency). Like a Java Map implementation, Persistit associates at most one value with each unique instance of a Key value. |
9 | +Akiban Persistit stores data as key-value pairs in highly optimized B+Tree. (Actually, Akiban Persistit implements `B-Link Tree <http://www.cs.cornell.edu/courses/cs4411/2009sp/blink.pdf>`_ architecture for greater concurrency). Like a Java Map implementation, Persistit associates at most one value with each unique instance of a Key value. |
10 | |
11 | Persistit provides classes and methods to access and modify keys and their associated values. Application code calls Persistit API methods to store, fetch, traverse and remove keys and records to and from the database. |
12 | |
13 | @@ -170,7 +170,7 @@ |
14 | |
15 | The primary low-level interface for interacting with Persistit is ``com.persistit.Exchange``. The Exchange class provides all methods for storing, deleting, fetching and traversing key/value pairs. These methods are summarized here and described in detail in the Javadoc API documentation. |
16 | |
17 | -An Exchange instance contains references to a ``Key`` and a ``Value``. The methods ``com.persistit.Exchange.getKey()`` and ``com.persistit.Exchange.getValue()`` access these instances. |
18 | +An Exchange instance contains references to a ``Key`` and a ``Value``. The methods ``com.persistit.Exchange#getKey()`` and ``com.persistit.Exchange#getValue()`` access these instances. |
19 | |
20 | To construct an Exchange you specify a Volume (or alias) and a tree name in its constructor. The constructor will optionally create a new tree in that Volume if a tree having the specified name has not already been created. An application may construct an arbitrary number of Exchange objects. Creating a new Exchange has no effect on the database if the specified tree already exists. Tree creation is thread-safe: multiple threads concurrently constructing Exchanges using the same Tree name will safely result in the creation of only one new tree. |
21 | |
22 | @@ -183,7 +183,7 @@ |
23 | Concurrent Operations on Exchanges |
24 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
25 | |
26 | -Although the underlying Persistit database is designed for highly concurrent multi-threaded operation, the ``Exchange`` class and its associated ``Key`` and ``Value`` instances are *not* thread-safe. Each thread should acquire and use its own Exchange objects when accessing the database. Nonetheless, multiple threads can execute database operations on overlapping data concurrently using their thread-private ``Exchange`` instances. |
27 | +Although the underlying Persistit database is designed for highly concurrent multi-threaded operation, the ``Exchange`` class and its associated ``Key`` and ``Value`` instances are *not* thread-safe. Each thread should acquire and use its own Exchange object when accessing the database. Nonetheless, multiple threads can execute database operations on overlapping data concurrently using their thread-private ``Exchange`` instances. |
28 | |
29 | Because Persistit permits concurrent operations by multiple threads, there is no guarantee that the underlying database will remain unchanged after an Exchange fetches or modifies its data. However, each operation on an Exchange is atomic, meaning that the inputs and outputs of each method are consistent with some valid state of the underlying Persistit backing store at some instant in time. The Exchange’s Value and Key objects represent that consistent state even if another thread subsequently modifies the database. Transactions, described below, allow multiple database operations to be performed atomically and consistently. |
30 | |
31 | @@ -252,7 +252,7 @@ |
32 | dbex.getValue().get()); |
33 | } |
34 | |
35 | -In general, the traversal methods let you find a key in a tree related to the key you supply. In Persistit programs you frequently prime a key value by appending either ``com.persistit.Key#BEFORE`` or ``com.persistit.Key#AFTER``. A key containing either of these special values can never be stored in a tree; these are reserved to represent positions in key traversal order before the first valid key and after the last valid key, respectively. You then invoke next or previous, or any of the other traverse family variants, to enumerate keys within the tree. |
36 | +In general, the traversal methods let you find a key in a tree related to the key you supply. In Persistit programs you frequently prime a key value by appending either ``Key#BEFORE`` or ``Key#AFTER``. A key containing either of these special values can never be stored in a tree; these are reserved to represent positions in key traversal order before the first valid key and after the last valid key, respectively. You then invoke next or previous, or any of the other traverse family variants, to enumerate keys within the tree. |
37 | |
38 | You can specify whether traversal is *deep* or *shallow*. Deep traversal traverses the logical children (see com.persistit.Key) of a key. Shallow traversal traverses only the logical siblings. |
39 | |
40 | @@ -270,13 +270,13 @@ |
41 | .. code-block:: java |
42 | |
43 | Exchange ex = new Exchange("myVolume", "myTree", true); |
44 | - KeyFilter kf = new KeyFilter("{\"Bellini\":\"Britten\"}"); |
45 | + KeyFilter kf = new KeyFilter("{\"Beethoven\":\"Britten\"}"); |
46 | ex.append(Key.BEFORE); |
47 | while (ex.next(kf)){ |
48 | System.out.println(ex.getKey().reset().decodeString()); |
49 | } |
50 | |
51 | -This simple example emits the string-valued keys within Tree “myTree” whose values fall alphabetically between “Bellini” and “Britten”, inclusive. |
52 | +This simple example emits the string-valued keys within Tree “myTree” whose values fall alphabetically between “Beethoven” and “Britten”, inclusive. |
53 | |
54 | |
55 | You will find an example with a KeyFilter in the examples/FindFileDemo directory. |
56 | |
57 | === modified file 'doc/Configuration.rst' |
58 | --- doc/Configuration.rst 2012-05-31 18:49:39 +0000 |
59 | +++ doc/Configuration.rst 2012-06-11 21:28:19 +0000 |
60 | @@ -70,7 +70,7 @@ |
61 | memoryToUse = fraction * (maxHeap - reservedMemory) |
62 | memoryToUse = min(memoryToUse, maximumMemory) |
63 | bufferCount = memoryToUse / bufferSizeWithOverhead |
64 | - bufferCount = max(minimumCount, min(maximumCount, count)) |
65 | + bufferCount = max(minimumCount, min(maximumCount, bufferCount)) |
66 | if (bufferCount * bufferSize > maximumMemory) then FAIL |
67 | if ((bufferCount + 1) * bufferSize < minimumMemory) then FAIL |
68 | allocate bufferCount buffers |
69 | @@ -214,7 +214,7 @@ |
70 | ``com.persistit.Management`` interface at the specified external registry. The ``rmihost`` and ``rmiport`` |
71 | properties are mutually exclusive. |
72 | |
73 | - ``jmx``: (``com.persistit.Configuration#setJmxEnabled``), True or false (default). |
74 | + ``jmx``: (``com.persistit.Configuration#setJmxEnabled``), True (default) or false. |
75 | Specifies whether Persistit registers MXBeans with the platform MBean server. Set this value to ``true`` to enable |
76 | access from ``jconsole`` and other management tools. |
77 | |
78 | |
79 | === modified file 'doc/GettingStarted.rst' |
80 | --- doc/GettingStarted.rst 2012-05-31 19:16:14 +0000 |
81 | +++ doc/GettingStarted.rst 2012-06-11 21:28:19 +0000 |
82 | @@ -234,6 +234,7 @@ |
83 | Persistit creates one or more background threads that lazily write data to the Volume files and perform other maintenance activities. Be sure to invoke the ``com.persistit.Persistit#close`` method to allow these threads to finish their work and exit properly. The pattern illustrated in ``HelloWorld.java``, using a *try/finally* block to invoke ``close``, is strongly recommended. |
84 | |
85 | The ``com.persistit.Persistit#close(boolean)`` method optionally flushes all data to disk from the buffer pool before shutting down. Specifying the ``false`` option will close Persistit more quickly will lose recent updates if they were not performed inside of transactions, or will potentially require a longer recovery process during the next startup to reapply committed transactions. |
86 | + |
87 | Additional Topics |
88 | ----------------- |
89 | |
90 | @@ -251,7 +252,7 @@ |
91 | Transactions |
92 | ^^^^^^^^^^^^ |
93 | |
94 | -Persistit provides ACID Transaction support with multi-version concurrency control (MCC) and adjustable durability policy. |
95 | +Persistit provides ACID Transaction support with multi-version concurrency control (MVCC) and adjustable durability policy. |
96 | |
97 | See :ref:`Transactions`. |
98 | |
99 | |
100 | === modified file 'doc/Management.rst' |
101 | --- doc/Management.rst 2012-05-31 18:49:39 +0000 |
102 | +++ doc/Management.rst 2012-06-11 21:28:19 +0000 |
103 | @@ -15,30 +15,37 @@ |
104 | |
105 | where classpath includes the Persistit ``com.persistit.ui`` package. |
106 | |
107 | -The JMX interface can be used by third-party management utilities, from applications such as ``jconsole`` and ``visualvm``, and from command-line JMX clients such as ``jmxterm``. To enable JMX access, the configuration must specify the property ``jmx=true``. This causes Persistit to register several MBeans with the platform MBean server during initialization. |
108 | - |
109 | MXBeans |
110 | ------- |
111 | + |
112 | +The JMX interface can be used by third-party management utilities, from applications such as ``jconsole`` and ``visualvm``, and from command-line JMX clients such as ``jmxterm``. To enable JMX access, the configuration must specify the property ``jmx=true``. This causes Persistit to register several MBeans with the platform MBean server during initialization. |
113 | + |
114 | The following JMX MXBeans are available: |
115 | |
116 | ``com.persistit:type=Persistit`` |
117 | See ``com.persistit.mxbeans.ManagementMXBean`` |
118 | ``com.persistit:type=Persistit,class=AlertMonitorMXBean`` |
119 | + See ``com.persistit.mxbeans.AlertMonitorMXBean``. |
120 | Accumulates, logs and emits notifications about abnormal events such as IOExceptions and measurements outside of |
121 | expected thresholds. |
122 | ``com.persistit:type=Persistit,class=CleanupManagerMXBean`` |
123 | + See ``com.persistit.mxbeans.CleanupManagerMXBean``. |
124 | View current state of the Cleanup Manager. The Cleanup Manager performs background pruning and tree maintenance |
125 | activities. |
126 | ``com.persistit:type=Persistit,class=IOMeter`` |
127 | + See ``com.persistit.mxbeans.IOMeterMXBean``. |
128 | Maintains statistics on file system I/O operations. |
129 | ``com.persistit.type=Persistit,class=JournalManager`` |
130 | + See ``com.persistit.mxbeans.JournalManagerMXBean``. |
131 | Views current journal status. |
132 | ``com.persistit.type=Persistit,class=RecoveryManager`` |
133 | + See ``com.persistit.mxbeans.RecoveryManagerMXBean``. |
134 | Views current status of the recovery process. Attributes of this MXBean change only during the recovery process. |
135 | ``com.persistit:type=Persistit,class=TransactionIndexMXBean`` |
136 | + See ``com.persistit.mxbeans.TransactionIndexMXBean``. |
137 | View internal state of transaction index queues and tables. |
138 | ``com.persistit.type=Persistit,class=BufferPool.*SSSS*`` |
139 | - where *SSSS* is a buffer size (512, 1024, 2048, 4096 or 16394). View utilization statistics for buffers of the |
140 | + where *SSSS* is a buffer size (512, 1024, 2048, 4096 or 16394). See ``com.persistit.mxbeans.BufferPoolMXBean``. View utilization statistics for buffers of the |
141 | selected size. |
142 | |
143 | |
144 | |
145 | === modified file 'doc/Miscellaneous.rst' |
146 | --- doc/Miscellaneous.rst 2012-05-30 16:25:09 +0000 |
147 | +++ doc/Miscellaneous.rst 2012-06-11 21:28:19 +0000 |
148 | @@ -22,9 +22,10 @@ |
149 | Logging |
150 | ------- |
151 | |
152 | -By default Persistit emits log messages to a file called persistit.log and also writes high level log messages to System.out. You can change this behavior by plugging in a different logging implementation. In particular, Persistit provides pluggable adapters for various other logging implementations, including Log4J, SLF4J, and the Java logging API introduced in JDK 1.4. For details see the API documentation for com.persistit.logging.AbstractPersistitLogger. |
153 | +By default Persistit emits log messages to a file called persistit.log and also writes high level log messages to System.out. You can change this behavior by plugging in a different logging implementation. In particular, Persistit provides pluggable adapters for various other logging implementations, including Log4J, SLF4J, and the Java logging API introduced in JDK 1.4. |
154 | +An adapter must implement the interface ``com.persistit.logging.PersistitLogger``. For example, see source code for ``com.persistit.logging.Slf4jAdapter``. |
155 | |
156 | -Using one of these logging frameworks is simple. For example, the following code connects Persistit to an application-supplied SLF4J logger: |
157 | +Using one of these logging frameworks is simple. For example, the following code connects Persistit to an application-supplied SLF4J logger: |
158 | |
159 | .. code-block:: java |
160 | |
161 | |
162 | === modified file 'doc/PhysicalStorage.rst' |
163 | --- doc/PhysicalStorage.rst 2012-05-31 18:51:41 +0000 |
164 | +++ doc/PhysicalStorage.rst 2012-06-11 21:28:19 +0000 |
165 | @@ -26,7 +26,7 @@ |
166 | |
167 | The *journal* is a set of files containing variable length records. The journal is append-only. New records are written only at the end; existing records are never overwritten. The journal consists of a numbered series of files having a configurable maximum size. When a journal file becomes full Persistit closes it and begins a new file with the next counter value. The maximum size of a journal file is determined by a configuration property called its block size. The default block size value is 1,000,000,000 bytes which works well with today’s standard server hardware. |
168 | |
169 | -Every record in the journal has a 64-bit integer *journal address*. The journal address denotes which file contains the record and the record’s offset within that file. Journal addresses start at zero in a new database instance and grow perpetually. footnote:[Even on a system executing 1 million transactions per second the address space is large enough to last for hundreds of years.] |
170 | +Every record in the journal has a 64-bit integer *journal address*. The journal address denotes which file contains the record and the record’s offset within that file. Journal addresses start at zero in a new database instance and grow perpetually [#f1]_. |
171 | |
172 | Persistit writes two major types of records to journal files. |
173 | |
174 | @@ -60,7 +60,7 @@ |
175 | Data Pages |
176 | ^^^^^^^^^^ |
177 | |
178 | -A data page contains a representation of one or more variable-length key/value pairs. The number of key/value pairs depends on the page size, and the sizes of the serialized keys and values. The first key in each data page is stored in its entirety, while subsequent keys are stored with *prefix compression* to reduce storage footprint and accelerate searches. Therefore the storage size of the second and subsequent keys in a data page depend on how many of the leading bytes of its serialized form match its predecessor. (See :ref:`Key` and :ref:`Value` for information on how Persistit encodes logical Java values into the byte arrays stored in a data page.) |
179 | +A data page contains a representation of one or more variable-length key/value pairs. The number of key/value pairs depends on the page size, and the sizes of the serialized keys and values. The first key in each data page is stored in its entirety, while subsequent keys are stored with *prefix compression* to reduce storage footprint and accelerate searches. Therefore the storage sizes of the second and subsequent keys in a data page depend on how many of the leading bytes of their serialized form match their predecessors. (See :ref:`Key` and :ref:`Value` for information on how Persistit encodes logical Java values into the byte arrays stored in a data page.) |
180 | |
181 | Index Pages |
182 | ^^^^^^^^^^^ |
183 | @@ -78,13 +78,13 @@ |
184 | |
185 | To do this, Persistit performs a process called *recovery* every time it starts up. The recovery process is generally very fast after a normal shutdown. However, it can take a considerable amount of time after a crash because many committed transactions may need to be executed. |
186 | |
187 | -Recovery performs two major activities: |
188 | +Recovery performs three major activities: |
189 | |
190 | - Restores all B+Trees to an internally consistent state with a known timestamp. |
191 | - Replays all transaction that committed after that timestamp. |
192 | - Prunes multi-version values belonging to certain aborted transactions (see :ref:`Pruning`). |
193 | |
194 | -To accomplish this, Persistit writes all updates first to the :ref:`Journal`. Persistit also periodically writes *checkpoint* records to the journal. During recovery, Persistit finds the last valid checkpoint written before shutdown or crash, restores B+Trees to state consistent with that checkpoint, and then replays transactions that committed after the checkpoint. |
195 | +To accomplish this, Persistit writes all updates first to the journal. Persistit also periodically writes *checkpoint* records to the journal. During recovery, Persistit finds the last valid checkpoint written before shutdown or crash, restores B+Trees to state consistent with that checkpoint, and then replays transactions that committed after the checkpoint. |
196 | |
197 | Recovery depends on the availability of the volume and journal files as they existed prior to abrupt termination. If these are modified or destroyed outside of Persistit, successful recovery is unlikely. |
198 | |
199 | @@ -111,7 +111,7 @@ |
200 | |
201 | ``com.persistit.Persistit#flush`` |
202 | causes Persistit to write all pending updates to the journal. Upon successful completion of flush any pages that needed writing prior to the call to flush are |
203 | - guaranteed to have been written to their respective volume files. |
204 | + guaranteed to have been written to the journal or their respective volume files. |
205 | ``com.persistit.Persistit#force`` |
206 | forces the underlying operating system to write pending updates from the operating system’s write-behind cache to the actual disk. (This operation relies on |
207 | the underlying ``java.io.Filechannel#force(boolean)`` method.) |
208 | @@ -139,4 +139,6 @@ |
209 | |
210 | The command-line interface (see :ref:`CLI`) includes tools you can use to examine pages in volumes and records in the journal. Two of these include the ``jview`` and ``pview`` tasks. The ``jview`` command displays journal records selected within an address range, by type, by page address, and using other selection criteria in a readable form. The ``pview`` command displays the contents of pages selected by page address or key from a volume, or by journal address from the journal. |
211 | |
212 | +.. rubric:: Footnotes |
213 | |
214 | +.. [#f1] Even on a system executing 1 million transactions per second the address space is large enough to last for hundreds of years. |
215 | |
216 | === modified file 'doc/Security.rst' |
217 | --- doc/Security.rst 2012-05-31 18:49:39 +0000 |
218 | +++ doc/Security.rst 2012-06-11 21:28:19 +0000 |
219 | @@ -5,11 +5,12 @@ |
220 | |
221 | Akiban Persistit provides no built-in data access control because it is intended for embedded use in applications that provide their own logical access control. Security-conscious applications must also prevent unauthorized access to Persistit's physical files and to the Persistit API. The following resources must be protected from unauthorized access: |
222 | |
223 | -- Persistit volume files |
224 | +- volume and journal files |
225 | - configuration properties file, if one is used |
226 | - access by unauthorized code to the API exposed by the Persistit library |
227 | - the port opened and exposed by Persistit when either the ``com.persistit.rmiport`` or ``com.persistit.rmihost`` property is set. If you are using Persistit's remote administration feature, be sure to block unauthorized access to the RMI port. |
228 | -- the :ref:`cliserver` if instantiated |
229 | +- access to MXBeans via JMX |
230 | +- the CLI server (see :ref:`cliserver`) if instantiated |
231 | |
232 | In addition to these general deployment considerations, Persistit requires certain permissions in an environment controlled by a security manager. |
233 | |
234 | @@ -18,7 +19,7 @@ |
235 | Security Domains |
236 | ---------------- |
237 | |
238 | -This section assumes a basic understanding of the Java security model. See http://download.oracle.com/javase/1.5.0/docs/guide/security/spec/security-spec.doc2.html[New Protection Mechanisms - Overview of Basic Concepts] for further information. |
239 | +This section assumes a basic understanding of the Java security model. See `New Protection Mechanisms - Overview of Basic Concepts <http://docs.oracle.com/javase/1.5.0/docs/guide/security/spec/security-spec.doc2.html>`_ for further information. |
240 | |
241 | Note that when Java is started from the command line, as is often the case in server applications, all security privileges are granted by default. The information in this section is intended for cases where security privileges need to be controlled. |
242 | |
243 | |
244 | === modified file 'doc/Serialization.rst' |
245 | --- doc/Serialization.rst 2012-05-31 18:49:39 +0000 |
246 | +++ doc/Serialization.rst 2012-06-11 21:28:19 +0000 |
247 | @@ -16,7 +16,7 @@ |
248 | |
249 | * An application can register a custom ``com.persistit.encoding.ValueCoder`` to handle serialization of a particular class |
250 | * Default serialization using Persistit's built-in serialization mechanism described below, or |
251 | -* Standard Java serialization as described in http://download.oracle.com/javase/1.5.0/docs/guide/serialization/spec/serial-arch.html[Java Object Serialization Specification]. |
252 | +* Standard Java serialization as described in `Java Object Serialization Specification <http://docs.oracle.com/javase/7/docs/platform/serialization/spec/serialTOC.html>`_. |
253 | |
254 | Persistit's default serialization method serializes objects into approximately 33% fewer bytes, and depending on the structure of objects being serialized, is about 40% faster than Java serialization. |
255 | |
256 | @@ -39,7 +39,7 @@ |
257 | |
258 | The resulting MyClass instance is a newly constructed object instance that is equivalent - subject to the accuracy of the serialization code - to the original object. This process is equivalent to the serialization and deserialization capabilities provided by java.io.ObjectOutputStream and java.io.ObjectInputStream. |
259 | |
260 | -Persistit makes use of helper classes called “coders” to marshal data between live objects and their stored byte-array representations. Value coders, which implement ``com.persistit.encoding.ValueCoder``, marshal data to and from Value objects; ``com.persistit.encoding.KeyCoder`` implementations do the same for ``com.persistit.Key``s. A value coder provides capability somewhat like the custom serialization logic implemented through ``readObject``, ``writeObject``, ``readExternal`` and ``writeExternal``. However, a value coder can provide this logic for any class without modifying the class itself, which may be important if the class is part of a closed library. |
261 | +Persistit makes use of helper classes called “coders” to marshal data between live objects and their stored byte-array representations. Value coders, which implement ``com.persistit.encoding.ValueCoder``, marshal data to and from Value objects; ``com.persistit.encoding.KeyCoder`` implementations do the same for instances of ``com.persistit.Key``. A ``ValueCoder`` provides capability somewhat like the custom serialization logic implemented through ``readObject``, ``writeObject``, ``readExternal`` and ``writeExternal``. However, a ``ValueCoder`` can provide this logic for any class without modifying the class itself, which may be important if the class is part of a closed library. |
262 | |
263 | You may create and register a value coder for almost any class, including classes that are not marked Serializable. The exceptions are those listed which have built-in, non-overridable serialization logic. |
264 | |
265 | |
266 | === modified file 'doc/Transactions.rst' |
267 | --- doc/Transactions.rst 2012-05-31 18:49:39 +0000 |
268 | +++ doc/Transactions.rst 2012-06-11 21:28:19 +0000 |
269 | @@ -5,7 +5,7 @@ |
270 | |
271 | Akiban Persistit supports transactions with multi-version concurrency control (MVCC) using a protocol called Snapshot Isolation (SI). An application calls ``com.persistit.Transaction#begin``, ``com.persistit.Transaction#commit``, ``com.persistit.Transaction#rollback`` and ``com.persistit.Transaction#end`` methods to control the current transaction scope explicitly. A Transaction allows an application to execute multiple database operations in an atomic, consistent, isolated and durable (ACID) manner. |
272 | |
273 | -Applications manage transactions through an instance of a ``com.persistit.Transaction`` object. ``Transaction`` does not represent a single transaction, but is instead a context in which a thread may perform many sequential transactions. The general pattern is that the application gets the current thread’s ``Transaction`` instance, calls its ``begin`` method, performs work, calls ``commit`` and finally ``end``. The thread uses the same ``Transaction`` instance repeatedly. Generally each thread has one ``Transaction`` that lasts for the entire life of the thread (but see com.persistit.Transaction#_threadManagement for a mechanism that allows a transaction to be serviced by multiple threads). |
274 | +Applications manage transactions through an instance of a ``com.persistit.Transaction`` object. ``Transaction`` does not represent a single transaction, but is instead a context in which a thread may perform many sequential transactions. The general pattern is that the application gets the current thread’s ``Transaction`` instance, calls its ``begin`` method, performs work, calls ``commit`` and finally ``end``. The thread uses the same ``Transaction`` instance repeatedly. Generally each thread has one ``Transaction`` that lasts for the entire life of the thread (but see com.persistit.Transaction for a mechanism that allows a transaction to be serviced by multiple threads). |
275 | |
276 | Using Transactions |
277 | ------------------ |
278 | @@ -152,7 +152,7 @@ |
279 | |
280 | Persistit provides the ``com.persistit.Accumulator`` class to avoid this problem. An accumulator is designed to manage contributions from multiple concurrent transactions without causing write-write dependencies. Accumulators are durable in the sense that each transaction’s contribution is made durable with the transaction itself, and Persistit automatically recovers a correct state for each Accumulator in the event of a system crash. |
281 | |
282 | -There are four types of accumulator in Persistit. Each a concrete subclass of the abstract ``com.persistit.Accumulator`` class: |
283 | +There are four types of accumulator in Persistit. Each is a concrete subclass of the abstract ``com.persistit.Accumulator`` class: |
284 | |
285 | ``SUM`` |
286 | Tallies a count or sum of contributions by each transaction |
287 | |
288 | === modified file 'doc/build/build-doc.sh' |
289 | --- doc/build/build-doc.sh 2012-05-31 19:16:14 +0000 |
290 | +++ doc/build/build-doc.sh 2012-06-11 21:28:19 +0000 |
291 | @@ -36,7 +36,7 @@ |
292 | # |
293 | |
294 | APIDOC_INDEX="../../target/site/apidocs/index-all.html" |
295 | -APIDOC_URL=${APIDOC_URL:-"http://www.akiban.com/ak-docs/admin/persistit-api"} |
296 | +APIDOC_URL=${APIDOC_URL:-"http://www.akiban.com/sites/all/libraries/persistit-api"} |
297 | DOCPREP_CLASS="SphinxDocPrep" |
298 | DOCPREP_CLASSPATH="../../target/sphinx/classes:../../target/classes" |
299 | |
300 | |
301 | === modified file 'doc/build/src/SphinxDocPrep.java' |
302 | --- doc/build/src/SphinxDocPrep.java 2012-05-30 16:25:09 +0000 |
303 | +++ doc/build/src/SphinxDocPrep.java 2012-06-11 21:28:19 +0000 |
304 | @@ -68,7 +68,7 @@ |
305 | } |
306 | |
307 | private void processLine(final String line) throws Exception { |
308 | - if (line.contains(".. code-block:")) { |
309 | + if (line.contains(".. code-block:") || line.endsWith("::")) { |
310 | block = BlockState.WAIT_FIRST_BLANK_LINE; |
311 | } else if (line.isEmpty()) { |
312 | switch (block) { |
Skimmed doc changes (looks good) and no code changes so sending through.