| 644 | } |
| 645 | |
| 646 | void Objecter::_linger_commit(LingerOp *info, bs::error_code ec, |
| 647 | cb::list& outbl) |
| 648 | { |
| 649 | std::unique_lock wl(info->watch_lock); |
| 650 | ldout(cct, 10) << "_linger_commit " << info->linger_id << dendl; |
| 651 | if (info->on_reg_commit) { |
| 652 | asio::defer(service.get_executor(), |
| 653 | asio::append(std::move(info->on_reg_commit), |
| 654 | ec, cb::list{})); |
| 655 | } |
| 656 | if (ec && info->on_notify_finish) { |
| 657 | asio::defer(service.get_executor(), |
| 658 | asio::append(std::move(info->on_notify_finish), |
| 659 | ec, cb::list{})); |
| 660 | } |
| 661 | |
| 662 | // only tell the user the first time we do this |
| 663 | info->registered = true; |
| 664 | info->pobjver = NULL; |
| 665 | |
| 666 | if (!info->is_watch) { |
| 667 | // make note of the notify_id |
| 668 | auto p = outbl.cbegin(); |
| 669 | try { |
| 670 | decode(info->notify_id, p); |
| 671 | ldout(cct, 10) << "_linger_commit notify_id=" << info->notify_id |
| 672 | << dendl; |
| 673 | } |
| 674 | catch (cb::error& e) { |
| 675 | } |
| 676 | } |
| 677 | } |
| 678 | |
| 679 | class CB_DoWatchError { |
| 680 | Objecter *objecter; |
no test coverage detected