We just released Immutant 2.1.0! New features include support for EAP and the latest WildFly pre-release, as well as experimental support for HTTP/2, and better compatibility with Datomic. Plus a few bug fixes, doc improvements, and small API tweaks. Details below.

What is Immutant?

Immutant is an integrated suite of Clojure libraries backed by Undertow for web, HornetQ for messaging, Infinispan for caching, Quartz for scheduling, and Narayana for transactions. Applications built with Immutant can optionally be deployed to a WildFly cluster for enhanced features. Its fundamental goal is to reduce the inherent incidental complexity in real world applications.

What's in this release?

  • Immutant's messaging library can now be used with Datomic either in or out of container, as explained more fully in this post.
  • We had always planned for Immutant to work with Red Hat's commercially-supported EAP product by making it work with WildFly, which will form the foundation for EAP 7, expected to be released next year. But we had enough EAP 6 subscribers asking to run Immutant that it made sense to try and backport it. So we did! See our EAP guide for more details.
  • We upgraded our Undertow dependency to its latest official release, which gives us experimental support for HTTP/2.
  • You can now set a timeout for a WebSocket or HTTP stream. See the async docs for more details.
  • We now support 4 -- count 'em, FOUR!!! -- major versions of Infinispan for immutant.caching. Out of container, we bumped Immutant's dependency to Infinispan 7, but when run in EAP, version 5 is used. And inside WildFly 8.2, version 6 is used, and inside Wildfly 10, version 8 is used. Crazy, right? :) We're not yet using Infinispan 8 out of container, since it requires Java 8.
  • One potentially breaking change is that we switched the default value of the :singleton option for immutant.scheduling/schedule from true to false, because although singleton jobs need a unique identifier, we weren't requiring the :id option, so our previous default behavior was to fail with a warning. As a convenience, you may now pass in the id as the value of :singleton, thereby collapsing two arguments into one.
  • By default, if the action of a scheduled job is running when the same job fires again, the two executions happen in parallel. Thanks to Fabio Bernasconi, you can now disable this on a per-job basis, causing subsequent executions to wait for prior executions to finish.

All of these issues and more are linked below.

Get In Touch

If you have any questions, issues, or other feedback about Immutant, you can always find us on #immutant on freenode or our mailing lists.

Issues resolved in 2.1.0

  • [IMMUTANT-454] - Recreating a persistent cache fails with a NullPointerException
  • [IMMUTANT-497] - Immutant messaging and datomic can't be used together outside of WildFly
  • [IMMUTANT-523] - support timeouts for asnyc channels
  • [IMMUTANT-567] - transactions and messaging bring in two different versions of HornetQ
  • [IMMUTANT-568] - Allow disabling concurrent job execution
  • [IMMUTANT-569] - Support deploying to EAP 6
  • [IMMUTANT-570] - Expose Undertow's new support for HTTP/2
  • [IMMUTANT-571] - Reconcile default values of :singleton and :id for jobs
  • [IMMUTANT-572] - HTTP streams leak connections when closed from the client
  • [IMMUTANT-573] - onClose for HTTP channel doesn't get called when channel is closed inside undertow
  • [IMMUTANT-574] - Support WildFly 10
  • [IMMUTANT-575] - Make public immutant.wildfly fns safe to call out of container