On Dec 28, 7:49 am, Iñaki Baz Castillo <[email protected]> wrote:
> El Lunes, 28 de Diciembre de 2009, Iñaki Baz Castillo escribió:
>
> > El Lunes, 28 de Diciembre de 2009, Iñaki Baz Castillo escribió:
> > > Hi, in my app I'm trying to test if a DB connection works during startup.
> > > However I've realized that, in case the DB host doesn't reply, the emthod
> > > "test_connection" gets blocked forever, and the worst: it blocks the
> > >  entire  Ruby process so threading is not possible:
>
> > It's even worse: Sequel blocks the entire Ruby process when it cannot
> >  connect to a database:
>
> It's a problem of the MySQL driver (also in mysqlplus):
>
> -------------------
> #!/usr/local/bin/ruby1.9
>
> require "mysql"  # Tested also with "mysqlplus"
>
> Thread.new do
>   loop do
>     printf "."
>     sleep 0.1
>   end
> end
>
> sleep 2
> puts "[starting MySQL]"
> my = Mysql.new("1.2.3.4", "qwe", "qwe", "asd")
> puts "[end]"
> -------------------
>
> Produces:
>
>   ....................[starting MySQL]
>
> Now "Ctrl+C" interrupts the script since the blocking MySQL oepration is
> running in the parent thread.

As you can see, it's a problem with the ruby-mysql driver.  There's
nothing Sequel can do about it.  You could try using the DataObjects
adapter and see if that works better in this case.  However, that
adapter doesn't have native prepared statement support.

Jeremy

--

You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en.


Reply via email to