diff --git a/debian/changelog b/debian/changelog index 6ed250f04364295e7f3bb1c859362a04b6d673bc..8635588b77866d6b18e073444c96aac0870dd3cf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +tarantool (1.5.1.302.gd906190-1) unstable; urgency=low + + * New Debian snapshot. + - box.session.storage, + - bugfixes + + -- Dmitry E. Oboukhov <unera@debian.org> Mon, 09 Dec 2013 16:23:49 +0400 + tarantool (1.5.1.218.g1a69fd6-1) unstable; urgency=low * New Debian snapshot diff --git a/src/replica.cc b/src/replica.cc index dae3e9a063c31cd6615313f38a0aed9d0f9d8d5c..600bdf6c43d41d043e497bfe962e83419ae809bc 100644 --- a/src/replica.cc +++ b/src/replica.cc @@ -147,8 +147,23 @@ pull_from_remote(va_list ap) warning_said = true; } evio_close(&coio); - fiber_sleep(reconnect_delay); } + + /* Put fiber_sleep() out of catch block. + * + * This is done to avoid situation, when two or more + * fibers yield's inside their try/catch blocks and + * throws an exceptions. Seems like exception unwinder + * stores some global state while being inside a catch + * block. + * + * This could lead to incorrect exception processing + * and crash the server. + * + * See: https://github.com/tarantool/tarantool/issues/136 + */ + if (! evio_is_active(&coio)) + fiber_sleep(reconnect_delay); } }