Wednesday, 4 June 2008

Poblano CR2 out

Marching steadily along towards 2.2.0.GA, we've just released 2.2.0.CR2. This CR is pretty complete, nothing outstanding, very stable and no known issues. The bext 2.X release we have done to date. :-)

I expect 2.2.0.GA to be out soon as well, provided there are no major issues reported with this CR. So this is your last chance to give 2.2.0 a sound thrashing before GA! So please download this, try it out, and provide as much feedback as you can!

Important links are as follows:

Enjoy!
Manik

Tuesday, 20 May 2008

Poblano's first release candidate now available

After our recent announcement re: JBoss Cache 2.2.0 (a.k.a. Poblano) BETA1 being released, we've been working on further stability improvements, even more performance tuning, and a couple of bugs that needed fixing. Poblano is now a release candidate, so please download it and stress it out in your system. Feedback is hugely important to us.

Important links are as follows:

Enjoy!
Manik

Tuesday, 6 May 2008

JBoss Cache 2.1.1.GA released

I've just released a minor version on 2.1.0 "Alegrias", with some pretty important bug fixes. These include:

  • [ JBCACHE-1329 ] double removal on optimistic locking leaving stale nodes
  • [ JBCACHE-1170 ] Leakage of marshalling region stored in ThreadLocal causes partial state transfer to fail when multiple regions present
  • [ JBCACHE-1309 ] Unguarded adding of nodes to workspace
  • [ JBCACHE-1310 ] Marshalling failure with optimistic PREPARE
  • [ JBCACHE-1325 ] ClassLoader and probable memory leak in ReusableObjectInputStream
  • [ JBCACHE-1326 ] TxInterceptor leaks MethodCall to thread
  • [ JBCACHE-1316 ] recycleQueue.put() could block forever halting evictions and eventually any replications
Other improvements include enhancements to configuration and performance:
For a full list of JIRAs included in this release, please see the release note report. As this is the latest and greatest of JBoss Cache 2.X, I would encourage anyone who is using a 2.X release to switch to 2.1.1.GA.

Enjoy!
Manik

Friday, 2 May 2008

2.2.0 "Poblano" and the evolution of JBoss Cache

So we've finally cut JBoss Cache 2.2.0.Beta1. This is meant to be a minor release on 2.1.0, with some new features (JBCACHE-1258 and JBCACHE-1320 - both involving better cleanup of buddy backup regions when buddy groups no longer exist or when data is gravitated away), and some bug fixes and minor enhancements. And, pretty severe internal refactoring.

Before I bore you with details, here's a summary. The refactoring has provided us with a much more flexible architecture, where everything is far easier to extend, build upon and unit test, and in the process we've gained on average a 15% performance increase over 2.1.0, based on your cache mode. Enough said. :-) Read on for gory details, or skip to the bottom for benchmarks download links and the like.

Now the gory details. The original architecture of JBoss Cache involved a CacheImpl class, which contained most of the core functionality, and a series of interceptors which added aspects such as replication, cache loading and locking among others. Invocations were made on CacheImpl (exposed via a Cache interface), which created an invocation object - a subclass of JGroups' MethodCall object - and passed it up the interceptor chain. The final interceptor would then invoke an internal method on CacheImpl via reflection.

This gradually simplified (in 2.1.0, Alegrias) to use a separate delegate class which implemented the Cache interface, which pushed an invocation up the interceptor chain to end up as an invocation on the CacheImpl, as well as a ComponentRegistry which managed lifecycle and dependencies between different components in the cache such as the BuddyManager, RPCManager, NodeFactory, Notifier, etc. and inject these into interceptors that declare their dependencies on such components. This made things a lot more flexible and extensible, necessary to develop the host of new features we have planned for upcoming releases.

With Poblano, we've implemented a design by Mircea Markus, which uses Command/Visitor pattern and double dispatch to achieve strongly typed callbacks into interceptors. This involves scrapping the CacheImpl altogether, and implementing each public API method as a VisitableCommand. VisitableCommands can be visited by interceptors (which now implement Visitor), each visitXXX() method on each interceptor receiving a strongly typed VisitableCommand implementation with strongly typed payloads and parameters. The final interceptor - the CallInterceptor - now simply invokes VisitableCommand.perform(). Commands also have all the knowledge they need on how to roll back, via a rollback() method, which removes the need for an undo log for each transaction. The modification list is adequate for performing rollbacks as well.

Apart from the minor gains in stronger type safety (no more casting of MethodCall arguments) and doing away with the need for reflection in the CallInterceptor, the primary benefit of this approach is much better code readability, maintainability and unit testability (how many "-ity"s can you use on once sentence?!). Interceptors and commands alike can now be isolated and unit tested, rather than end-to-end functional tests for every combination of configurations, and the overall architecture is much easier to work with when adding features.

In terms of backward compatibility, even with the new architecture this release is 100% compatible with other 2.X releases, in terms of wire protocol (a 2.2.0 cache instance can talk to a 2.1.0 one, thanks to a new Marshaller implementation that is aware of and can translate between commands and MethodCalls being replicated) as well as in terms of plugins and extensions. Custom interceptors extending the abstract (and now deprecated) Interceptor class will still work, although the preferred approach now is to extend CommandInterceptor and use the strongly typed callbacks.

And now for the big surprise - as I said before, the real goal behind this was to improve the architecture for ease of use, robustness and maintainability, and as long as we didn't regress in terms of performance, I would have been quite happy with things. After the last week benchmarking and profiling things, we've had a very pleasant surprise, with pretty interesting performance gains. I'll let the numbers speak for themselves - Mircea has published his benchmark numbers here, on this wiki page, along with extensive information on how the test was run. Along with pretty charts. We all like pretty charts. :-)

So Poblano is now available as a beta, and I would very strongly encourage everyone to download and try this out. We want to make sure this release works as well for everyone as we hope it will. Check out the release notes, userguide and javadocs and benchmarks while you download the release, and comment and feedback on the user forums!

Enjoy!
Manik

Friday, 4 April 2008

Patch release on JBoss Cache 1.4.1

JBoss Cache 1.4.1.SP9 has just been released on SourceForge. This is a maintenance release containing a few fixes. Visit JBoss Cache's JIRA page for details on what's been fixed in this release.

Thanks to Jimmy Wilson and Mircea Markus for pushing out this release.

It is recommended that anyone on 1.4.x upgrade to this release.

Cheers
Manik

Thursday, 20 March 2008

JBoss Cache 2.1.0 "Alegrias" in GA

The much-awaited JBoss Cache 2.1.0.GA release is now public and available.

In addition to a few bugfixes on 2.0.0, 2.1.0 adds a few new features such as a reconnectable TcpDelegatingCacheLoader, some new API convenience methods (reminiscent of the 1.x API), and a new notifier callback to inform listeners when a buddy group changes membership. And a lot of internal refactoring to make the code leaner, faster and more robust/maintainable. See JIRA for the full list of changes and enhancements.

Downloads are in the usual place. Everyone on 2.0.0 should upgrade - there are some pretty significant bug fixes here.

I must give special thanks to Mark Newton, JBoss.org's content lead who has helped with revamping the JBoss Cache documentation making it much more readable and easy to follow. Check out the very cool code-snippet syntax highlighting!!

Finally, a couple of things have changed with our user forums as well - there are now separate forums for Core and POJO editions of the cache; please use the relevant forum when discussing JBoss Cache. It helps us organise information better, helping you find stuff on older threads.

Enjoy!
Manik

Friday, 22 February 2008

New JBossCache release candidate

We at JBoss Cache are proud to announce a forth release candidate for Alegrias - JBoss Cache 2.1.0.CR4.

Please do download and try this release out - it has substantial stability improvements, lot of it based on community feedback. Your suggestions are important to us, please join the user forums if you already haven't done so, and provide us with as much feedback as you can. Also don't forget about our Month Of Bugs!

The download is available on the JBoss Cache downloads page, and the docs on the JBoss Cache docs page. The user forums are in the usual place.

Have fun!
Mircea