Type | Changes | By |
---|
 | Introduced new caching policies in addition to the standard LRU. FIFO and LFU
were added. LRU remains
the default unless explicitly set in each cache's configuration. Thanks to
Surya Suravarapu for working
with me on these. The documentation has a new section on caching policies and
when to use what. | Surya Suravarapu |
 | Introduced CacheManagerEventListener and CacheEventListener interfaces and
default implementations.
These can be configured in ehcache.xml or set programmatically. Thanks to steve
at jofti dot com for
help with the specification for these. | Greg Luck |
 | After requests from Jo Walnes, Paul Hammant and others, I have added normal
instance constructers to
CacheManager which do not act as singletons. The factory singleton methods
remain for backward
compatibility. CacheManager can now be constructed with a Configuration object
programmatically. | Greg Luck |
 | Since version 1.1, ehcache has had a persistent diskStore, which makes it
suitable for storing
application state. Added a flush method so that, if the cache is
diskPersistent, it can be
programmatically flushed, in addition to the automatic flush which happens at
shutdown. | Greg Luck |
 | Pluggable Distributed Caching. The default implementation supports cache
discovery via multicast or
manual configuration. Updates are delivered asynchronously or synchronously via
custom RMI connections.
Additional discovery or delivery schemes can be plugged in by third parties. | Greg Luck |
 | DiskStore is now up to 12 times faster in certain operations and much more
scalable. | Greg Luck |
 | Significant (up to 7 fold) DiskStore performance increases, after introduction
of finer grained
threading. Thanks to Robert Watkins for reporting on the performance limits. | Greg Luck |
 | Clover test coverage raised to 86%. | Greg Luck |
 | Feature Request 431481 Distributed: The ability to notify cache event listeners
excluding
CacheReplicators | Greg Luck |
 | Feature Request 1431393 Events from remote in distributed cache should be
received by any non
CacheReplicator listeners | Greg Luck |
 | Patch 1158788. Fix for dependencies list... MemoryStore.java to remove Apache
commons-collections for JDK1.4
users | Greg Luck |
 | change default configuration to use context classloader Fixes 1122734 . | Greg Luck |
 | Fix for DiskStore to deserialize using
Thread.currentThread().getContextClassLoader() Fixes 1324221 . | Greg Luck |
 | CacheManager.shutdown now uses a Class rather than an instance lock. Fixes 1261613 . | Greg Luck |
 | Configurator gets a file not found when files contain spaces. Fixes 1237017 . | Greg Luck |
 | DiskStore degrades under load. Fixes 1332728 . | Greg Luck |
 | Change classloader to Thread.currentThread().getContextClassLoader() for
ehache.xml. Fixes 1079529 . | Greg Luck |
 | DiskStore data file is not deleted when index is corrupt. Fixes 1414674 . | Greg Luck |
 | JavaDoc documentation fix for element.getLastAccessTime returns 0 for element
just created Fixes 1224325 . | Greg Luck |
 | Documentation should advise using the Hibernate supplied plugin rather than the
older one in
ehcache which is now deprecated. Fixes 1247019 . | Greg Luck |
 | Fix bug introduced in 1.2 beta series. Removed Boolean.parseBoolean and
java.util.Queue which were introduced
in the JDK1.5 API to preserve backward compatibility. Fixes . | Greg Luck |
 | Fix bug introduced in 1.2 beta series. Changed ant script to avoid compiling
with clover in dists Fixes . | Greg Luck |
 | Fix bug introduced in 1.2 beta series. Cannot load configuration from jar (or
any non-file URL). Fixes 1410374 . | Greg Luck |
 | Fix bug introduced in 1.2 beta series. NPE on
RMICacheManagerPeerProviderFactory when rmiUrls not
specified. Now throws a meaningful CacheException. Fixes 1432074 . | Greg Luck |
 | Fix bug introduced in 1.2 beta series. Deadlock on deserialization of a cache
entry. Thanks to Felix Meschberger
for reporting the bug and uploading a patch. Fixes 1445694 . | Greg Luck |
 | Fix bug introduced in 1.2 beta series. Caches created with
Cache.addCache(String) share a RegisteredEventListeners instance.
Thanks to Olaf Ontaine for for reporting the bug and showing how it happens. Fixes 1457268 . | Greg Luck |
 | Fix bug introduced in 1.2 beta series. RMIAsynchronousCacheReplicator
mishandling non-copy updates.
Thanks to Randy Puro for a patch. Fixes 1451780 . | Greg Luck |
Release 1.1 - 2004-11-23
Type | Changes | By |
---|
 | Split out the entire constructs package. These are now in a new subproject:
ehcache-constructs, which
has been released.
See http://ehcache.sf.net/ehcache-constructs for more details. | Greg Luck |
 | removed the dependency on Doug Lea's concurrency library. | Greg Luck |
 | Add new documentation on cache configuration and hibernate performance tuning. | Greg Luck |
 | Extra check to make sure that we always close persistent disk store's
FileInputStream in the
rare case where the ObjectInputStream is null. Fixes 1063908 . | Greg Luck |
Release 1.0 - 2004-9-28
Type | Changes | By |
---|
 | Added SelfPopulatingCacheManager | Greg Luck |
 | Added a new diskExpiryThreadIntervalSeconds configuration option to
ehcache.xml, to allow
tuning of the expiry thread per cache. | Greg Luck |
 | Added a new diskPersistent feature and configuration option. diskPersistent
makes disk stores
persistent between CacheManager and JVM restarts. It enables very long held
caches to be configured,
useful
for very expensive cache entries that are long lives, such as mapping geocodes. | Greg Luck |
 | Expiry Thread now has a default time of 2 minutes, not 25. Fixes . | Greg Luck |
 | Expiry Thread now dies immediately on DiskStore disposal. Fixes . | Greg Luck |
 | cache.calculateInMemorySize() now returns a non-zero value Fixes . | Greg Luck |
 | Bug 1025130 - Null Pointer Exception when no default cache configured. Now we
throw a CacheException
with a
meaningful message. Fixes . | Greg Luck |
 | Bug 1025128 IBM Websphere alway requires commons-collection.jar, even though it
is never used. Updated
requirements
to note this. Fixes . | Greg Luck |
 | Patch 1030960. JDK1.4 and higher now chain exception thrown from
SelfPopulatingCache. Fixes . | Greg Luck |
 | 1033061 Fix to Thread naming in SelfPopulatingCache so that the old name is
always put back. Fixes . | Greg Luck |
 | 1003659 build script unfriendly to IDE: IDE builds should now work. Fixes . | Greg Luck |
Release 0.9 - 2004-7-5
Type | Changes | By |
---|
 | ehcache.xml cache definitions can now omit timeToIdle and/or timeToLive, which
are now optional
attributes.
This will make cache config easier to read for eternal caches.
Either omitting the attributes or setting them to 0 causes them not to be
considered when calculating
expiry.
Earlier versions of ehcache would have immediately expired all elements if
either attribute was set to
0,
so this change should not break any existing code. | Greg Luck |
 | Added getQuiet and putQuiet methods to Cache. These methods are the same as get
and put
but do not affect statistics. | Greg Luck |
 | Implemented an Element clone method. | Greg Luck |
 | Added calculateInMemorySize() method to Cache to measure the approximate size
of a cache's
memory footprint. | Greg Luck |
 | Increased Clover test coverage to above 80%. | Greg Luck |
 | Added many new tests for idle expiry. | Greg Luck |
 | Added tests for the new constructs package. These tests demonstrate concurrency
performance
differences between blocking cache designs based on notify/notifyAll and Doug
Lea's concurrency package. | Greg Luck |
 | Test new xml format scenarios for eternal, time to idle and time to live | Greg Luck |
 | Started adding performance tests to ensure there are no regressions over time. | Greg Luck |
 | Added a new constructs package. There are blocking, self populating and self
populating collections
caches.
These are all pull-through caches. They are useful where the cost of creating
an entry is high.
Details follow:
BlockingCache - a cache which blocks subsequent threads until the first read thread
populates a cache entry
SelfPopulatingCache - a read-through cache. A cache that populates elements as they are requested
without requiring the caller to know how the entries are populated. It also enables refreshes
of cache entries without blocking reads on the same entries.
SelfPopulatingCollectionsCache - a SelfPopulatingCache that adds threading safety where it is known
in advance that all entries will be collections.
The package is useful for, inter alia, :
- Web Page caches
- Search Engine caches
See the tests for examples of how to use this package.
This package requires Doug Lea's concurrency library. A copy is provided in the tools directory
when you check out the project by cvs. Or, you can get it from http://gee.cs.oswego.edu/dl/cpj/
Note that if you are not using the constructs package, you do not need the concurrency library. | Greg Luck |
 | JavaDoc fixups Fixes . | Greg Luck |
 | Fixed time to idle which was not expiring elements after the idle time had
expired. This feature did
not seem to be getting used. It is now useable. Fixed the test which was also
broken Fixes . | Greg Luck |
 | Fixed bugs with getSize and getKeys, which were not checking for duplicate keys
between
the memory and disk stores. Fixes . | Greg Luck |
Release 0.8 - 2004-5-15
Type | Changes | By |
---|
 | Investigated a Hibernate SessionFactory bug and clarified it was not a
Hibernate bug. Added test. | Greg Luck |
 | Investigated a cache size possible bug and clarified it is not in EHCache.
Added test. | Greg Luck |
 | Added Clover test coverage reporting. Clover instrumentation is not included in
release jars. | Greg Luck |
 | Updated Hibernate testing to version 2.1.1 | Greg Luck |
 | Modified the Apache license at the request of the Apache Cocoon project. | Greg Luck |
 | Fixed a very rare null pointer exception, when retrieving a cache entry. Fixes . | Greg Luck |
Release 0.7 - 2004-1-2
Type | Changes | By |
---|
 | Cache Configuration
Fixed null pointer exception where the disk store path was not specified when
use disk store is set to
false Fixes . | Greg Luck |
 | JDK1.3 Compatibility Replaced JDK1.4 Exception constructors with simple message
constructors compatible
with JDK1.2 and 1.3 Fixes . | Greg Luck |
 | Problem with Element expiry
Fixed bug where expiry checking on get was calling remove with the element
rather than the key. Fixes . | Greg Luck |
 | Expire thread should not run if the cache is not active
Changed the expire thread to while(active) Fixes . | Greg Luck |
 | Expiry thread
unnecessarily being created for eternal caches
Skipped creating the expiry thread if caches are eternal. Fixes . | Greg Luck |
Release 0.6 - 2003-12-8
Type | Changes | By |
---|
 | Remove SoftReferences
SoftReferences for cache element values has been replaced with standard
references.
The JDK 1.4.2 JVM was found to remove SoftReferences in normal operation,
rather than
the expected behaviour of use only to avoid memory exhaustion. Caches will now
behave deterministically. Element values will only be removed when the element
is
garbage collected. | Greg Luck |
 | Hibernate Cache Provider.
Fixed bug where incompatible timestamps were generated Fixes . | Greg Luck |
 | Time to Idle" documentation bug. Fixes . | Greg Luck |
 | Fixed documentation bug in ehcache.xml and ehcache-failsafe.xml where "Time to
Live" was
incorrectly referred to as "Time to Idle" Fixes . | Greg Luck |
Release 0.5 - 2003-11-18
Type | Changes | By |
---|
 | Changed from JDK1.4 Logging to Commons Logging. This is to permit JDK1.2 and
JDK1.3 to use EHCache. | Greg Luck |
 | Added Apache Commons Collections LRUMap as an alternative backing Map for the
MemoryStore. The
java.util.LinkedHashMap has been retained and is used automatically for JDK1.4
and higher. | Greg Luck |
 | Added LICENSE.txt to the jar in the distribution | Greg Luck |
 | Don't create a Disk Store when overflowToDisk="false" is set in ehcache.xml Fixes . | Greg Luck |
 | toString() methods now report on all fields Fixes . | Greg Luck |
 | Fixed documentation bug in ehcache.xml and ehcache-failsafe.xml where "Time to
Live" was
incorrectly referred to as "Time to Idle" Fixes . | Greg Luck |
Release 0.4 - 2003-11-13
Type | Changes | By |
---|
 | Initial version, originally based on a fork from JCS plus donated patches. | Greg Luck |