New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

msg/async: fix deleted_conn is out of sync with conns #15645

Merged
merged 2 commits into from Jun 14, 2017

Conversation

Projects
None yet
4 participants
@yuyuyu101
Member

yuyuyu101 commented Jun 13, 2017

http://tracker.ceph.com/issues/20230#change-92630

there is two problems:

  1. connection stuck into infini loop with existing->state == STATE_CLOSED, it's a legacy judgement before implement lazy delete. even so it won't happen because we lookup to get a real existing connection will check deleted_conns. if state is STATE_CLOSED, it must be in deleted_conns.
  2. accept_conns make deleted_conns out of sync with conns. it delete entry in deleted_conns but not in conns, so it cause unexpected result.
ldout(async_msgr->cct, 1) << __func__ << " existing racing replace or mark_down happened while replacing."
if (existing->state == STATE_CLOSED) {
ldout(async_msgr->cct, 1) << __func__ << " existing already closed." << dendl;
existing = NULL;

This comment has been minimized.

@asheplyakov

asheplyakov Jun 13, 2017

Is it OK to leave existing->lock locked?

This comment has been minimized.

@yuyuyu101

yuyuyu101 Jun 13, 2017

Member

thx!, done

@yuriw yuriw merged commit 6006aff into ceph:master Jun 14, 2017

3 of 4 checks passed

arm64 make check arm64 make check started
Details
Signed-off-by all commits in this PR are signed
Details
Unmodified Submodules submodules for project are unmodified
Details
make check make check succeeded
Details

@yuyuyu101 yuyuyu101 deleted the yuyuyu101:wip-20230 branch Jun 15, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment