Immutant 2.1.4 Release

We just released Immutant 2.1.4. There are just a couple of small changes in this release, only one of which is notable: you can now provide a handler deal with any errors that occur when writing the ring response. For details, see the immutant.web/run docstring and the example in IMMUTANT-615.

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.

Get In Touch

As always, 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.4

  • [IMMUTANT-613] - Add boot-immutant to WildFly guide
  • [IMMUTANT-614] - Using a dev war prints out a deprecation warning for app-relative
  • [IMMUTANT-615] - User can't catch errors that occur when writing the ring response
  • [IMMUTANT-616] - Allow adding extensions to undertow's WebSocket handshake handler

Immutant 2.1.3 Release

We just released Immutant 2.1.3. Most issues addressed in this release are minor bug fixes and documentation enhancements.

One not-so-minor bug was discovering that our :dispatch? false option has been broken since 2.1.0. That's fixed now, and should help to improve compute-bound benchmark results.

One other minor change worth noting is the addition of two functions to the immutant.web.undertow namespace: http-handler, which turns a Ring handler into an Undertow HttpHandler, and graceful-shutdown, which invokes Undertow's ability to gracefully shutdown a web server by prohibiting new requests while pending ones complete. See IMMUTANT-605 for a simple example.

We also had a couple of community contributions in this release: Dave Della Costa fixed our issue with decoded :path-info, and Matthias Nehlsen fixed some documentation issues with our web namespace. Thanks guys!

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.

Get In Touch

As always, 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.3

  • [IMMUTANT-599] - An async call in WildFly can result in a TimeoutException that permanently breaks an app
  • [IMMUTANT-600] - Deploying a servlet to EAP fails if websockets isn't activated
  • [IMMUTANT-601] - Document that a queue shouldn't be shared between 'listen and 'respond
  • [IMMUTANT-604] - Using web/run :filter-map option causes ClassCastException
  • [IMMUTANT-605] - Graceful Shutdown of Web Server
  • [IMMUTANT-606] - deprecate util/app-root and util/app-relative
  • [IMMUTANT-607] - Caching tests fail under WildFly 10.0.0.Final
  • [IMMUTANT-609] - document org.immutant/wildfly dependency in installation & wildfly guides
  • [IMMUTANT-610] - provide a non-decoded :path-info to ring
  • [IMMUTANT-611] - Impossible to run handlers on IO thread (:dispatch? false)
  • [IMMUTANT-612] - Passing undertow options to web/run can result in wrong :port in result

Immutant 2.1.2 Release

We just released Immutant 2.1.2. The only significant change is an option to more easily enable HTTP/2.0 in immutant/web. We've had a few people ask about it and got tired of telling them to use an incremental release while we waited to fix enough bugs to justify an "official" release.

But there simply aren't any bugs to fix. ;)

We updated our Feature Demo with an HTTP/2.0 example using a self-signed certificate since, as you may know, HTTP/2.0 requires SSL.

(Configuring SSL in Java is still terrible, by the way. This release doesn't address that.)

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.

Get In Touch

As always, 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.2

  • [IMMUTANT-597] - Destination names segmented with / can shadow each other Inside the container
  • [IMMUTANT-596] - Messaging docs are incorrect wrt specifying destinations in standalone.xml
  • [IMMUTANT-595] - HTTP2 setup problems

Immutant 2.1.1 Release

We just released Immutant 2.1.1! This is mostly a bugfix/documentation release. Specific issues are listed 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.

lein-immutant/boot-immutant Releases

We've also released new versions of lein-immutant and boot-immutant (2.1.0 and 0.5.0, respectively). You'll need to update the appropriate plugin if you use Immutant with WildFly - we rearranged some of our upstream dependencies in 2.1.1 that are used in-container, and the new plugins recognize that structure.

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.1

  • [IMMUTANT-576] - WebSockets can't be used from a user-provided servlet
  • [IMMUTANT-578] - Singleton daemons don't get started on another node if the thread dies
  • [IMMUTANT-579] - Luminus now has :main
  • [IMMUTANT-580] - Support for setting HTTP response headers in the WebSocket handshake
  • [IMMUTANT-581] - Pedestal servlet handler overrides handlers specified using :path
  • [IMMUTANT-583] - Registered closeables aren't closed when a destination is stopped (regression from 2.0.0)
  • [IMMUTANT-585] - Fix infinispan section in EAP guide
  • [IMMUTANT-586] - Expose :filter-map option to web/run for deploying Servlet Filters
  • [IMMUTANT-587] - Immutant seems to be sending "" for query string when it should be sending nil
  • [IMMUTANT-588] - Improve docs for listen to explain the explicit transaction
  • [IMMUTANT-589] - Only reuse the context given to request for the response listener if it is remote
  • [IMMUTANT-590] - Implement all methods on reified JDBC interfaces we return from our factory
  • [IMMUTANT-591] - Immutant doesn't work with clojure 1.8.0-beta2
  • [IMMUTANT-592] - Don't fail a WildFly deployment if the repl fails to start
  • [IMMUTANT-593] - See if we need to use the default listener concurrency for response listeners
  • [IMMUTANT-594] - scheduling docs point to caching/stop instead of scheduling/stop

Immutant 2.1.0 Release

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