ultramysql icon indicating copy to clipboard operation
ultramysql copied to clipboard

umysql can hang forever

Open thomasj02 opened this issue 11 years ago • 4 comments

I've found the frequently when starting a large number of simultaneous jobs that all hit a MySQL server at once, sometimes umysql will hang indefinitely when trying to connect. Stacktrace is:

(gdb) bt #0 0x00007f64612d14cc in recv () from /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x00000000004fb139 in ?? () #2 0x0000000000510b4b in ?? () #3 0x00000000004cbb0a in PyObject_CallMethodObjArgs () #4 0x00007f645e2ee69c in API_recvSocket (sock=0x4f03d00, buffer=0x7f644774b010 "", cbBuffer=cbBuffer@entry=65536) at ./python/io_cpython.c:229 #5 0x00007f645e2ef1c0 in Connection::readSocket (this=this@entry=0x5301720) at ./lib/Connection.cpp:153 #6 0x00007f645e2ef264 in Connection::recvPacket (this=this@entry=0x5301720) at ./lib/Connection.cpp:354 #7 0x00007f645e2efd84 in Connection::connect (this=0x5301720, _host=, _port=, _username=,

_password=<optimized out>, _database=<optimized out>, _autoCommit=0x0, _charset=MCS_utf8_general_ci) at ./lib/Connection.cpp:487

#8 0x00007f645e2ee8aa in UMConnection_Connect (conn=, _host=, _port=, _username=,

_password=<optimized out>, _database=<optimized out>, _autoCommit=0x0, _charset=33) at ./lib/capi.cpp:84

#9 0x00007f645e2ed74e in Connection_connect (self=0x510fcd8, args=) at ./python/umysql.c:860 #10 0x00000000004ac5ce in PyEval_EvalFrameEx () #11 0x00000000004b3fd8 in PyEval_EvalCodeEx () #12 0x00000000004b4b4c in ?? () #13 0x0000000000481cc4 in ?? () #14 0x00000000004613b4 in ?? () #15 0x0000000000463cc2 in ?? () #16 0x00000000004acc66 in PyEval_EvalFrameEx () #17 0x00000000004acde0 in PyEval_EvalFrameEx () #18 0x00000000004b3fd8 in PyEval_EvalCodeEx () #19 0x00000000004acb98 in PyEval_EvalFrameEx () #20 0x00000000004b3fd8 in PyEval_EvalCodeEx () #21 0x0000000000536723 in ?? () #22 0x0000000000446bf2 in PyRun_FileExFlags () #23 0x00000000004470ec in PyRun_SimpleFileExFlags () #24 0x0000000000447cdc in Py_Main () #25 0x00007f64606b6ead in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6 #26 0x00000000004c7f39 in _start ()

thomasj02 avatar Jun 04 '14 23:06 thomasj02

Interesting, have you been able to figure out a repro for this?

Jahaja avatar Oct 20 '14 16:10 Jahaja

Happens basically every time I fire up a ton of jobs at once, but I don't have a small test case that reproduces

thomasj02 avatar Oct 20 '14 16:10 thomasj02

Do you have a repro with any other driver for MySQL? Being stuck in the recv syscall would indicate that you've just sent your query and are expecting result data from the server which for some reason is never received.

What does the SQL server say about what these jobs are doing?

jskorpan avatar Oct 21 '14 07:10 jskorpan

I haven't tried with the standard python driver. I filed the bug a while ago, so unfortunately I'm not using the exact setup I had back then. (I'm not complaining about response time, just saying that my setup has changed a bit).

My real concern was that there should be some kind of timeout somewhere in that call stack where umysql throws an exception if it hasn't heard anything back at all in X minutes.

On Tue, Oct 21, 2014 at 2:19 AM, Jonas Tärnström [email protected] wrote:

Do you have a repro with any other driver for MySQL? Being stuck in the recv syscall would indicate that you've just sent your query and are expecting result data from the server which for some reason is never received.

What does the SQL server say about what these jobs are doing?

— Reply to this email directly or view it on GitHub https://github.com/esnme/ultramysql/issues/53#issuecomment-59888463.

thomasj02 avatar Oct 21 '14 13:10 thomasj02