Thursday, 1 October 2009

JBossCache 3.2.1GA released


This release includes mainly bug fixes and performance improvements. You can find a detailed list of all items included here.


Friday, 25 September 2009

Release of JBossCache3.2.1CR1


JBossCache3.2.1CR1 [1] has just been released.
Besides other fixes[2], this includes the integration with jgroups 2.6.13.CR2.



Monday, 24 August 2009

JBoss Cache 3.2.0 Malagueta just released!

Another major JBoss Cache release: say hello to Malagueta!

While this is primarily a bug fix release, I have decided to bump up the minor version number (3.1.x -> 3.2.x) due to library compatibility. JBoss Cache 3.1.x could only support JGroups up to and equalling 2.6.x. Due to dependence on certain JGroups classes, 3.1.x will not work with newer JGroups releases (such as JGroups 2.8.x).

JBoss Cache 3.2.0 adds the ability to work with both JGroups 2.6.x as well as 2.8.x and beyond, and as such is more future-proof. Visit JIRA for a full changelog of issues addressed in this release. Downloads and documentation are in the usual places.


Tuesday, 5 May 2009

JBoss Cache 3.1.0 Cascabel in final release

I've just released JBoss Cache 3.1.0.GA, codenamed Cascabel. The big feature in this release is non-blocking state transfer, which allows for state to be transferred to new joiners in a cluster without freezing the cluster. I blogged about non-blocking state transfer some months ago, here.

Other changes include some critical bug fixes such as JBCACHE-1490, JBCACHE-1496, JBCACHE-1507 and JBCACHE-1508. New features - in addition to non-blocking state transfer - include a new lock-per-Fqn scheme for MVCC, which provides greater concurrency than the striped lock mechanism at the cost of memory usage and a slight performance hit.

The complete list of JIRAs addressed is here.

Downloads, documentation, etc are all in the usual place.


Wednesday, 29 April 2009

Announcing Infinispan

I'd like to announce Infinispan, the spiritual successor to JBoss Cache. Read all about it on the Infinispan blog. And for those of you wondering about the future of JBoss Cache, this is addressed in the Infinispan FAQs.

Also note that Infinispan 4.0.0.ALPHA2 is now available for download. Please give it a go, feedback much appreciated.


Thursday, 2 April 2009

JBoss Cache 3.1.0.CR1 released

Announcing the first CR on Cascabel. Click here for the changelog, downloads and docs are in the usual places. Please grab them and provide as much feedback as possible, especially on non-blocking state transfer.


Thursday, 26 March 2009

JBoss Cache and the community

Roberto Tyley, who provided an important fix to JBoss Cache's eviction queue processing code in JBCACHE-1473, has written an excellent article on open source, using the sources, finding, analysing bugs and contributing to the project. He also has an interesting use case for JBoss Cache, using the cache in front of a database on a high-volume site such as The Guardian, a major newspaper here in the UK. I encourage you to have a read, along with Frederik Johansson's article on using JBoss Cache for simulating distributed load for online gaming.

Does anyone else have interesting usage stories they would like to share?


Friday, 20 March 2009

JBoss Cache 3.1.0.BETA1

3.1.0's been somewhat delayed due to problems with Non-blocking State Transfer, but these have finally been overcome.

Here's a quick summary first. The first Beta of JBoss Cache 3.1.0 Cascabel is now available in the usual places (download, docs, forums). The main feature of Cascabel is Non-blocking State Transfer, a new and highly efficient state transfer mechanism. Also, since MVCC was introduced in JBoss Cache 3.0.0 Naga, lock striping was used for the write locks held by nodes. While lock striping is efficient, it always exposes a slight risk of deadlock. In Cascabel, we now offer a lock-per-Fqn option for MVCC, which is more expensive than striped locks but is guaranteed to be deadlock-free. In addition, there are a host of bug fixes across the board, so this is definitely a version you should upgrade to if you use JBoss Cache 3.0.x.

Now for the details, starting with Non-blocking State Transfer (NBST). NBST has certain pre-requisites, specifically, that you use MVCC for locking and that you use JGroups' STREAMING_STATE_TRANSFER protocol. NBST works by allowing state to be read, free of locks thanks to MVCC, streamed to the receiver, all the while allowing the sender to continue changing state. What is key is that the sender also maintains a transaction log for this period. Once the state is delivered to the recipient and applied, the transaction log is then also streamed across, until the transaction log reaches a predetermined, small size - or it is detected that the transaction log grows faster than it can be streamed. In either of these cases, a lock is acquired on all processing, causing the sender to block all new transactions for a short period while the last of the transaction log is streamed and applied. After this, both the sender and receiver release locks and start processing requests, the new joiner now at the same state as the sender.

The main benefit of this approach is that the sender is not blocked for the majority of the time while generating and streaming state (made all the more apparent when there is a lot of state to send) and the cluster proceeds to operate. Naturally, the implementation is a fair deal more complicated than what is described quite simplistically above, with a fair few more details and edge cases to be dealt with. :-)

NBST is disabled by default, but can be enabled by using a simple configuration switch (Configuration.setUseNonBlockingStateTransfer() or <stateretrieval nonblocking="true" />).

So do give it a whirl, feedback, as always, is appreciated.


Tuesday, 24 February 2009

JBoss Cache 3.0.3.GA released

Based on the CR I released 2 weeks back, I have just released 3.0.3.GA. I recommend that everyone who is on JBoss Cache 2.x and 3.x move to this release, it is the fastest, most stable release to date. This incremental release on 3.x contains the following bugfixes and feature requests:

  • [ JBCACHE-1470 ] Option to disable cache event generation for a cache operation.
  • [ JBCACHE-1468 ] JBoss Cache ignores transactions with STATUS_MARKED_ROLLBACK and auto commits data changes
  • [ JBCACHE-1469 ] DummyBaseTransactionManager behaves incorrectly with Status.STATUS_MARKED_ROLLBACK
  • [ JBCACHE-1473 ] Memory leak: Cache Regions lose capacity, evictCommand.perform() causes dead entries in EvictionQueue
  • [ JBCACHE-1474 ] Removing nonexistent key in UnversionedNode causes data loss
  • [ JBCACHE-1477 ] Bug in JDBC cache loader SQL on Informix
  • [ JBCACHE-1478 ] Handle querying node count in an unstarted DataContainer
  • [ JBCACHE-1479 ] Loads nodes from cache loader too aggresively
  • [ JBCACHE-1480 ] getChildrenNames() returns deleted nodes
  • [ JBCACHE-1481 ] Re-adding a node deleted via parent inside transaction breaks the parent
  • [ JBCACHE-1471 ] Slow cache.get for fqn with a large number of key/value entries.
Thanks to Krzysztof Sobolewski, Roberto Tyley, Eduardo Martins, Galder ZamarreƱo and Alex Kluge for useful bug reports, tests and patches.

Downloads and documentation are in the usual place, please use the user forums to discuss this release.


Friday, 13 February 2009

What to expect in JBoss Cache

So we're about to cut JBoss Cache 3.1.0 "Cascabel" - and the main feature here is the high-performance non-blocking state transfer (NBST) scheme we've been planning for a while now, held back due to the lack of non-blocking reads in the past. Thanks to MVCC, we now have non-blocking reads, and thanks to Jason Greene, an impressive non-blocking state transfer implementation. Expect a beta of Cascabel to be made available in the coming days/weeks, along with a detailed write-up of NBST.

But in the meantime, I've just cut JBoss Cache 3.0.3.CR1. This CR fixes a number of bugs - some critical - on Naga, and I strongly recommend anyone using Naga to download and test out 3.0.3.CR1. I expect this to be a very short CR cycle so please test heavily and provide as much feedback as you can, I expect a 3.0.3.GA to be released very soon.

You can download the CR in the usual place on SourceForge, or grab it from our Maven2 repository.


Tuesday, 10 February 2009

JBoss Cache in load testing

I'm always keen to know how the community uses JBoss Cache. I was recently pointed to an excellent article by Frederik Johansson who uses JBoss Cache to build a load test harness to simulate tens of thousands of players in high capacity multiplayer online gaming systems.

Check out his wonderfully detailed yet accessible article on his blog.

If anyone else has success stories they would like to share, I'd love to hear them.


Monday, 26 January 2009

New maintenance release on 1.4.1

I've just released 1.4.1.SP12, a patch release on "Cayenne", which is in maintenance mode.

This contains just one fix over SP11 - JBCACHE-1304 - a backport from 2.x, thanks to Brian Dueck who contributed the patch.

Downloads, etc. are all in their usual places.


Tuesday, 20 January 2009

3.0.2.GA ready for download

I've just cut 3.0.2.GA. Thanks to everyone for all the feedback on the CRs. This is an important micro release, addressing a number of bugs in 3.0.1.GA. For a full list, please visit JIRA for the release notes. In addition to bug fixes, this release comes with some performance (JDBC cache loader) and stability (TcpDelegatingCacheLoader) improvements, and a tighter overall memory footprint.

Thanks to several contributors, including Elias Ross, Jimmy Wilson, Galder ZamarreƱo, J. Baxter, Brian Stansberry and Krzysztof Sobolewski for submitting patches. Keep 'em coming!

Also, useful to note, the parallel test suite is finally in place as of this release. This cuts down our unit test time, running 3500+ tests takes under 10 minutes now. This is down from the 2+ hours it used to take. Thanks to Mircea Markus and Dominik Pospisil for getting this working; I know what a PITA it is debugging threading issues involving Maven Surefure and TestNG. :-)

Download 3.0.2.GA here (or our Maven2 repo), docs and the rest are all in their usual places.


Monday, 12 January 2009

JBoss Cache 3.0.2.CR2 is out

I've just released 3.0.2.CR2, possibly the final CR before I cut 3.0.2.GA. 3.0.2.GA will contain a handful of bugfixes on 3.0.1, including:

  • [ JBCACHE-1447 ] JDBM cache loader remove of the root childeren doesn't clear the data
  • [ JBCACHE-1450 ] putForExternalRead() doesn't use a 0 lock acquisition timeout with MVCC
  • [ JBCACHE-1452 ] JDBCCacheLoader Doesn't Work With Sybase
  • [ JBCACHE-1454 ] Memory leak in CacheStoreInterceptor
  • [ JBCACHE-1455 ] Rollback corrupts nodes loaded from cache loader
  • [ JBCACHE-1456 ] The root node starts with "children loaded" flag
  • [ JBCACHE-1457 ] TcpCacheServer: Listening thread should attempt recovery
  • [ JBCACHE-1459 ] FastCopyHashMaps misbehave when serialized and then deserialized
  • [ JBCACHE-1460 ] Inefficient remove() in JDBCCacheLoader
Please download this, give it a try and provide as much feedback as possible. Downloads are in the usual place.


Sunday, 4 January 2009

A New Year's present from JBCS

Hey guys,

Been quite a while since my last blog but here's an important one. If you thought that you couldn't get enough presents from Santa or you're loving the January sales, well it's getting better now. JBoss Cache Searchable has just got its first GA.

I just want to specify now that you have to pass in your class array when creating your searchable cache. Otherwise it breaks due to changes made in Hibernate Search 3.1.0.Beta and GA.

Apart from that, nothing different externally - go out and download it from sourceforge and tell us all about it on the forums. If you need to, have a look at the wiki or the API documentation.

I know that several people are keen to know about a searchable-pojo cache. A quick update is that I'm working on that and should have a release out soon. I will keep you posted, so watch this space.

Thanks and happy new year!