JBoss Community

View feed: JBoss Cache Blogs

JBoss Cache 3.1.0 Cascabel in final release

Posted on 2009-05-05 04:58:00.0 by Manik Surtani [ View original post ]

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.

Enjoy!
Manikc

Announcing Infinispan

Posted on 2009-04-29 10:57:00.0 by Manik Surtani [ View original post ]

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.

Cheers
Manik

JBoss Cache 3.1.0.CR1 released

Posted on 2009-04-02 12:26:00.0 by Manik Surtani [ View original post ]

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.

Cheers
Manik

JBoss Cache and the community

Posted on 2009-03-26 06:15:00.0 by Manik Surtani [ View original post ]

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?

Cheers
Manik

JBoss Cache 3.1.0.BETA1

Posted on 2009-03-20 11:29:00.0 by Manik Surtani [ View original post ]

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.

Cheers
Manik

JBoss Cache 3.0.3.GA released

Posted on 2009-02-24 05:07:00.0 by Manik Surtani [ View original post ]

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.

Enjoy!
Manik

What to expect in JBoss Cache

Posted on 2009-02-13 10:32:00.0 by Manik Surtani [ View original post ]

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.

Cheers
Manik

JBoss Cache in load testing

Posted on 2009-02-10 15:08:00.0 by Manik Surtani [ View original post ]

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.

Cheers
Manik

New maintenance release on 1.4.1

Posted on 2009-01-26 06:06:00.0 by Manik Surtani [ View original post ]

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.

Enjoy!
Manik

3.0.2.GA ready for download

Posted on 2009-01-20 11:18:00.0 by Manik Surtani [ View original post ]

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.

Enjoy!
Manik