... what does 'J' stand for in JRuby ?
we've come a long way (since)
it will pay off (and not just due faster tests)
serialport gem's API - simple to re-implement
on your own unless you absolutely must
Thread.new
you better deal with itjruby.thread.pool.enabled=true
a (simplified)
piece
of ActionController::Live::Response
Thread.new
hide the async nature of the response "under" a middleware
there's (still) no "official" rack env['async.callback']
support
Rails.logger
ain't thread-safesilencing the logger is still not thread-safe (and maybe never will be)
Rails.logger.silencer
is on by default (even on production)Rails.logger
ain't thread-safelogger.silence
got
deprecated
on 3.2 (for removal)
ActiveRecord::ConnectionAdapter::ConnectionPool
synchronized
very appreciated step but took quite some time (4.0) to "smooth" out
SUMMARY: lots of (concurrency) issues ... along the way
pool might often be the performance bottleneck
pool: size
high >= 100 (depending on server's max-requests)
config.middleware.delete 'ActiveRecord::QueryCache'
this middleware forces each request to check-out a connection
what if the pool stands in your way
jndi: jdbc/MyDS
pooling "hacks" ... in a relaxed 'spa' fashion!
this is an (early-stage) experiment for now
ActiveRecord::Bogacs::FalsePool
pool: size
and similar)jndi: jdbc/MyDS
case perfectlyActiveRecord::Bogacs::DefaultPool
initial: size
- very easy to support and quite useful in the cloudThread.current.object_id
issue with JRuby's thread-backed fibersActiveRecord::Bogacs::ShareablePool
with_shared_connection
... and have fun with JRuby (on Rails)
hand-(c)rafted for JRubyConf 2014 by http://kares.org