Red Hat
Dec 6, 2012
by The Entire TorqueBox Team

We're very excited to announce the immediate availability of TorqueBox 2.2.0! This release has a substantial amount of new features and bug-fixes over 2.1.2 and is a recommended upgrade for anyone running TorqueBox 2.1.x

What is TorqueBox?

TorqueBox is a Ruby application server built on JBoss AS7 and JRuby. In addition to being one of the fastest Ruby servers around, it supports Rack-based web frameworks, and provides simple Ruby interfaces to standard JavaEE services, including scheduled jobs, caching, messaging, and services.

Highlights of major changes

  • We now ship with JRuby 1.7.1, which is several versions newer with lots of changes compared to the JRuby 1.6.7.2 shipped in TorqueBox 2.1.2.

  • There's a new torquebox-console gem that you may have already seen. It's not shipped with TorqueBox itself - instead, it's an application you deploy to TorqueBox that gives you a web-based and a commandline-based console for interacting with your applications running inside TorqueBox. Note that it's still very young and missing some basic features like authentication so please don't run it on a production server unless you're absolutely sure you've locked it down.

  • Scheduled Jobs and Services can now be inspected and controlled at runtime via our new TorqueBox::ScheduledJob and TorqueBox::Service APIs.

  • If you've had any issues with redeployment of applications, especially ones running in a cluster, those should now be fixed. We've upgraded to a newer version of JBoss AS7 and combined with the newer version of JRuby lots of errors and memory leaks during redeploys are now fixed. If you still experience any memory leaks on application redeployment, please get in touch so we can track down what's causing it.

  • There was a bug where HTTP responses from Rails streaming could get chunked twice - once by Rails and another time by JBoss AS7. If you experienced any issues with Rails streaming before and garbled responses, please try 2.2.0.

  • A thread leak from scheduled jobs with a timeout set was fixed. If you use scheduled jobs with a job timeout on a previous TorqueBox version, you're likely leaking one thread every time the job gets fired and will eventually run out of memory.

Upgrading from 2.1.2

  • We now ship with JRuby 1.7.1, which has major changes over the JRuby 1.6.7.2 we previously shipped. Most applications should work on the newer version without issue. Keep in mind that JRuby 1.7.x defaults to Ruby 1.9 mode instead of Ruby 1.8 mode.

  • If you have customized versions of the AS7 config files (standalone.xml and friends), then there's a minor change you'll need to make to use the config file from TorqueBox 2.1.2 with TorqueBox 2.2.0 - see the diff at https://gist.github.com/4173070.

  • Since TorqueBox now respects the "-J" style JRUBY_OPTS entries, make sure any JVM arguments set in JRUBY_OPTS are ones you want TorqueBox to use.

  • The Rack PATH_INFO value was unintentionally being set to a decoded version of the path and that has now been fixed. As an example, a path of "thumb/633x579%2350%2C50" used to get decoded to "thumb/633x579#50,50" but now stays as "thumb/633x579%2350%2C50". This new behavior follows the Rack specification but has the potential to break applications running on TorqueBox that were expecting the previously incorrect behavior.

  • The previous :clojure message encoding has been replaced by :edn. If you were using messaging to communicate between TorqueBox and Immutant you'll need to replace any references to the :clojure encoding with :edn.

Roadmap update

The next scheduled release is TorqueBox 2.3.0 in early January. That's not very far away, so check out our roadmap and vote for any issues you really want to see in 2.3.0.

Don't be a stranger!

As always, if you have any questions about or issues with TorqueBox, please get in touch.

Issues resolved since 2.1.2

  • [TORQUE-361] - Expose durable option for Backgroundable
  • [TORQUE-544] - Allow services to be started/stopped on demand
  • [TORQUE-549] - Provide TorqueBox Console That Mimics Rails Console But Evaluates Ruby Inside TorqueBox Runtime
  • [TORQUE-751] - Tables in docs are hard to read.
  • [TORQUE-754] - TypeError: assigning non-exception to $! raised in service call can't be rescured
  • [TORQUE-811] - unable to rescue NativeException: javax.jms.JMSException: Failed to create session factory
  • [TORQUE-862] - Allow runtime inspection and manipulation of jobs
  • [TORQUE-879] - app runs much slower after hot deployment than after fully restarting jboss server
  • [TORQUE-891] - always_background doesn't work properly with class methods
  • [TORQUE-894] - Document Backgroundable Usage with Class Methods
  • [TORQUE-908] - Hot deployment into cluster breaks clustering/infinispan
  • [TORQUE-914] - Torquebox hangs after "Error invoking Rack filter: Attempt to unlock a mutex which is locked by another thread"
  • [TORQUE-926] - session-timeout variable is not torquebox.rb DSL-friendly
  • [TORQUE-936] - Support -J style JRUBY_OPTS
  • [TORQUE-938] - torquebox-stomp causes load error when running rake
  • [TORQUE-943] - logging.properties file anywhere in app source tree gets loaded
  • [TORQUE-945] - ERB/encoding error in database.yml reported at startup
  • [TORQUE-946] - Windows .bat files don't work in binary distribution, only when built from source
  • [TORQUE-947] - Update to AS 7.1.x.incremental.129
  • [TORQUE-950] - Deploying via Capistrano Returns Error about jruby_opts
  • [TORQUE-951] - "Could not locate Gemfile" during boot
  • [TORQUE-953] - Upgrade Quartz to 2.1.5
  • [TORQUE-954] - (NameError) undefined method 'new' for class '#<Class:0xe8e8bf> during application deploy
  • [TORQUE-955] - Encoded backslashes in URL are not decoded correctly
  • [TORQUE-956] - Docs for long-lived-destinations do not mention the need to create -knob.yml.dodeploy
  • [TORQUE-958] - Enable code execution in arbitrary ruby runtimes through torquebox-console
  • [TORQUE-963] - Support bundling gems and precompiling assets in 'torquebox archive'
  • [TORQUE-964] - Upgrade to JRuby 1.7.1
  • [TORQUE-965] - The polyglot-stomp socket-binding reverts to "undefined" on restart
  • [TORQUE-966] - Update production setup guide to use current TB version
  • [TORQUE-967] - Make TorqueBox::Logger compatible with Rack::CommonLogger
  • [TORQUE-971] - Allow alternate rackup config files for Rails apps
  • [TORQUE-974] - Replace clojure message encoding with edn
  • [TORQUE-975] - New Rake 10.0.2 causes issues with torquebox-rake-support dependency
  • [TORQUE-976] - Scheduled Tasks with Timeouts Never Clean Up Their Thread Pools
  • [TORQUE-977] - TorqueBox inadvertently decodes path part of URLs
  • [TORQUE-978] - Rails streamed responses come out double-chunk encoded
  • [TORQUE-982] - Workaround race condition in jnr-constant shipped with JRuby 1.7.1