Tuesday, September 29, 2009

Native transactions - cross post

I had a few things to say about the latest presentation from Spring on transactions. Worth a look if you're thinking about whether or not you need to use a transaction manager (from anyone, not just us) since the presentation isn't always as accurate as it could (should) be.

Friday, September 18, 2009

Byteman 1.1.0 now available

Byteman 1.1.0 has now been tagged, released and made available for download.

This release includes one major new feature:
  • support for dynamic upload of rules into running programs
Note that this includes the ability to retransform already loaded classes, injecting rules into code while the program is executing it. This feature allows Byteman to complement conventional debugging tools, injecting tracing code or fixes into programs on the fly. In order to support this feature Byteman now only runs on JDK 6 upwards.

The release also provides several bug fixes, most notably:
  • full support for injection into bootstrap loader classes (only java.lang.* is exempt -- here be dragons ;-)
  • retrospective injection of rules into bootstrap classes loaded prior to Byteman agent installation
  • fixing of several problems with array types/instances and throw action

Friday, September 4, 2009

New (old) Byteman release now available, New (new) Byteman release in the works

Yesterday I published the latest release of the 1.0 Byteman series, version 1.0.3. That's the new old release in the title. This is a maintenance release which fixes about 15 bugs/features discovered while using Byteman to fix timing issues in various of the JBossTS unit tests. This version has also been used for testing on the MicroContainer project and plans are afoot to extend its use to other JBoss projects.

New features in 1.0.3 include: the ability to reference method parameters by name in rule conditions and actions; option to omit empty BIND clauses; and new helper built-ins to enforce waits on thread exits and to provide better management of rendezvous. Bug fixes include: better parser error detection; and correct reporting of line numbers in parser/type checker errors. Binaries, sources and full release notes are included on the download site.

The new new Byteman release is 1.1.0 which I have been developing in parallel with the maintenance release. It will only run on JDK 6 upwards, allowing it to profit from the retransform capability introduced into the JDK 6 instrumentation package. This new new release will support dynamic loading/reloading of rules into a running program much as is possible using the btrace package. The byteman agent can be configured to open a listener which, currently, can be used either to list all currently applied bytecode transformations or to upload new rules or redefinitions of existing rules. The rule upload capability includes applying rule injection retrospectively to already loaded classes.

This dynamic upload capability should simplify development of rule sets. It should also make it a lot easier to use Byteman as a debugging aid. Hopefully, it will also pave the way for automation of rule injection via IDE plug-ins. Developing tool support is definitely on the agenda for the project so anyone who wants to contribute is more than welcome to respond.

I have just checked in a first draft of the dynamic upload functionality into the byteman repository trunk and I already have a community user lined up to try out the redefine capability. Feedback and suggestions for improvements will be graciously (and, quite possibly, gratefully :-) received.