Bug #2681
client: got push without mds session
Status:
Resolved
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
% Done:
0%
Source:
Development
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(FS):
Labels (FS):
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
Core was generated by `./ceph-syn --syn makedirs 3 3 3'. Program terminated with signal 11, Segmentation fault. #0 0x00007f745ea57efb in raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:41 41 ../nptl/sysdeps/unix/sysv/linux/pt-raise.c: No such file or directory. (gdb) bt #0 0x00007f745ea57efb in raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:41 #1 0x00000000009c0184 in reraise_fatal (signum=11) at global/signal_handler.cc:58 #2 0x00000000009c041d in handle_fatal_signal (signum=11) at global/signal_handler.cc:104 #3 <signal handler called> #4 0x000000000077849a in Client::got_mds_push (this=0x184d010, mds=1) at client/Client.cc:1699 #5 0x000000000078484f in Client::handle_caps (this=0x184d010, m=0x18a85c0) at client/Client.cc:2917 #6 0x00000000007766e0 in Client::ms_dispatch (this=0x184d010, m=0x18a85c0) at client/Client.cc:1513 #7 0x00000000008d025a in Messenger::ms_deliver_dispatch (this=0x184b410, m=0x18a85c0) at msg/Messenger.h:504 #8 0x00000000008b6e04 in SimpleMessenger::DispatchQueue::entry (this=0x184b4f0) at msg/SimpleMessenger.cc:367 #9 0x00000000008b7090 in SimpleMessenger::dispatch_entry (this=0x184b410) at msg/SimpleMessenger.cc:384 #10 0x000000000086fb6e in SimpleMessenger::DispatchThread::entry (this=0x184b638) at msg/SimpleMessenger.h:807 #11 0x00000000008da0d1 in Thread::_entry_func (arg=0x184b638) at common/Thread.cc:41 #12 0x00007f745ea4fb50 in start_thread (arg=<optimized out>) at pthread_create.c:304 #13 0x00007f745d4f26dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #14 0x0000000000000000 in ?? () (gdb) f 4 #4 0x000000000077849a in Client::got_mds_push (this=0x184d010, mds=1) at client/Client.cc:1699 1699 s->seq++; (gdb) p s $1 = (MetaSession *) 0x0 (gdb) list 1694 1695 void Client::got_mds_push(int mds) 1696 { 1697 MetaSession *s = mds_sessions[mds]; 1698 1699 s->seq++; 1700 ldout(cct, 10) << " mds." << mds << " seq now " << s->seq << dendl; 1701 if (s->closing) 1702 messenger->send_message(new MClientSession(CEPH_SESSION_REQUEST_CLOSE, s->seq), 1703 s->inst); (gdb) p mds $2 = 1 (gdb) up #5 0x000000000078484f in Client::handle_caps (this=0x184d010, m=0x18a85c0) at client/Client.cc:2917 2917 got_mds_push(mds);
Associated revisions
mds: explicitly queue messages for unconnected clients
Previously, the messenger would queue messages for a destination that
didn't exist when you were a server; that changed a while back with the
wip-msgr merge (circa v0.52). The result is that when we force open
client sessions and queue messages, they are dropped on the floor and the
client--when it does connect--gets confusing stuff from the MDS.
Instead, explicitly queue and send these messages. Also, always send
via the Connection* instead of the inst.
Fixes: #2681
Signed-off-by: Sage Weil <sage@inktank.com>
History
#1 Updated by Sage Weil about 11 years ago
this was with 'ms inject socket failure = 200'
#2 Updated by Sage Weil almost 11 years ago
- Project changed from Ceph to CephFS
- Category deleted (
26)
#3 Updated by Sage Weil almost 11 years ago
- Status changed from 12 to Resolved
commit:db976663a50ce7ab2448c42cb0c6bfd4f58d25a5