Project

General

Profile

Actions

Bug #7062

closed

Dead lock happend if daemonize

Added by Haomai Wang over 10 years ago. Updated over 10 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
Category:
OSD
Target version:
-
% Done:

0%

Source:
Community (dev)
Tags:
Backport:
Regression:
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

New ceph_osd.cc code did ObjectStore init work before global_init_daemonize(), and WBThrottle thread is created when objectstore constructed. So after daemon(), WBThrottle thread won't exist in new process. It will result in deadlock.

When "cur_ios" which is member of WBThrottle hits hard limit, there exists two ways to decrease "cur_ios". The first is WBThrottle thread which is dead if deamonize, another is SyncThread. SyncThread will block at op_tp.pause() because thread in op_tp(threadpool) block at wbthrottle.throttle(FileStore::_do_op). So no thread will continue process jobs in filestore layer and all threads is waiting.

Turn off daemon is OK

Actions #2

Updated by Sage Weil over 10 years ago

  • Status changed from New to Resolved
  • Source changed from other to Community (dev)
Actions

Also available in: Atom PDF