File Release Notes and Changelog
Release Name: 2.3
Notes:
There have been no issues reported since Prevayler 2.3 was
released as "beta" nearly a year ago, so we are promoting
exactly the same release files to "production" status.
Changes:
Changes from Prevayler 2.0 to Prevayler 2.3
------------------------
SureTransactionWithQuery
The Prevayler interface now supports an additional variation on execute(), for
transactions that return a result but don't throw Exception. A new interface
has been introduced, SureTransactionWithQuery, and a new execute() method has
been added to Prevayler taking an instance of this interface.
----------------------
Journal file extension
The default filename extension for transaction journals has been changed from
'.transactionLog' to '.journal'. We always recommend taking a snapshot before
upgrading either Prevayler or your own Prevayler-based code, so there shouldn't
be any need to migrate old journal files. (The format of journal files has also
changed, so migrating old journals would require more than just renaming the
files anyway.)
-------------------
Journal file format
Transaction journals now have an internal structure of their own, rather than
relying on ObjectOutputStream, in order to support configurable journal
serializers. We always recommend taking a snapshot before upgrading either
Prevayler or your own Prevayler-based code, so there shouldn't be any need to
migrate old journal files.
------------------
Optimized rollback
When using the StrictTransactionCensor, the deep-copy of the prevalent system
to perform a rollback is now implemented in a pipelined manner so as to use
significantly less memory.
------------------------
Configurable serializers
A new Serializer interface has been introduced to support configuring
serialization strategies for journals and snapshots. (The existing
SnapshotManager abstract class, which had allowed limited customization of
snapshot serialization, has been eliminated.)
For snapshots, multiple Serializers may be configured, each with a different
filename extension (though the extension must always end with "snapshot" or
"Snapshot"). Only one will be used for writing snapshots, but others may be
configured to support migration from earlier versions of your own code. For
example, you might configure .v7snapshot with a Serializer including some
schema migration code, while .v8snapshot is optimized for the current version
of your business object model. The default is just .snapshot, using the
JavaSerializer.
For transaction journals, only a single Serializer may be configured, since we
recommend always taking a snapshot before upgrading Prevayler or your own
Prevayler-based code, so you will never need to migrate an old journal file.
The filename extension may still be configured if desired, however (which must
end with "journal" or "Journal"). The default is .journal, using the
JavaSerializer.
------------------
Other enhancements
Prevayler 2.3 includes some other behind-the-scenes improvements, including
further increased transaction throughput and fewer threads created internally.
Work on replication and an improved monitoring interface are still in progress.