From 9a765906cc0430985f7dd273e9476ae92b966cfc Mon Sep 17 00:00:00 2001 From: Ramin Yaghoubzadeh <ryaghoubzadeh@uni-bielefeld.de> Date: Thu, 10 Dec 2015 11:28:56 +0100 Subject: [PATCH] C++: prevent resend_request on retraction; no removal Disabled removal of retracted IUs from InputBuffer to match the Python version - since it is an item of discussion that will be resolved in the next version anyway. --- ipaacalib/cpp/src/ipaaca-buffers.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ipaacalib/cpp/src/ipaaca-buffers.cc b/ipaacalib/cpp/src/ipaaca-buffers.cc index b199377..33efa99 100644 --- a/ipaacalib/cpp/src/ipaaca-buffers.cc +++ b/ipaacalib/cpp/src/ipaaca-buffers.cc @@ -633,7 +633,8 @@ IPAACA_EXPORT void InputBuffer::_trigger_resend_request(EventPtr event) { uid = update->uid(); writerName = update->writer_name(); } else { - IPAACA_WARNING("_trigger_resend_request: unhandled event type " << type) + IPAACA_ERROR("_trigger_resend_request: called for unhandled event type " << type) + return; } if (!writerName.empty()) { @@ -674,7 +675,7 @@ IPAACA_EXPORT void InputBuffer::_handle_iu_events(EventPtr event) it = _iu_store.find(update->uid); if (it == _iu_store.end()) { _trigger_resend_request(event); - IPAACA_INFO("Using UPDATED message for an IU that we did not fully receive before") + IPAACA_INFO("UPDATED message for an IU that we did not fully receive before") return; } it->second->_apply_update(update); @@ -687,7 +688,7 @@ IPAACA_EXPORT void InputBuffer::_handle_iu_events(EventPtr event) it = _iu_store.find(update->uid); if (it == _iu_store.end()) { _trigger_resend_request(event); - IPAACA_INFO("Ignoring LINKSUPDATED message for an IU that we did not fully receive before") + IPAACA_INFO("LINKSUPDATED message for an IU that we did not fully receive before") return; } it->second->_apply_link_update(update); @@ -700,7 +701,7 @@ IPAACA_EXPORT void InputBuffer::_handle_iu_events(EventPtr event) it = _iu_store.find(update->uid()); if (it == _iu_store.end()) { _trigger_resend_request(event); - IPAACA_INFO("Ignoring COMMITTED message for an IU that we did not fully receive before") + IPAACA_INFO("COMMITTED message for an IU that we did not fully receive before") return; } it->second->_apply_commission(); @@ -710,16 +711,15 @@ IPAACA_EXPORT void InputBuffer::_handle_iu_events(EventPtr event) boost::shared_ptr<protobuf::IURetraction> update = boost::static_pointer_cast<protobuf::IURetraction>(event->getData()); it = _iu_store.find(update->uid()); if (it == _iu_store.end()) { - _trigger_resend_request(event); IPAACA_INFO("Ignoring RETRACTED message for an IU that we did not fully receive before") return; } it->second->_revision = update->revision(); it->second->_apply_retraction(); auto final_iu_ref = it->second; - // remove from InputBuffer FIXME: this is a crossover between retracted and deleted behavior - _iu_store.erase(it->first); - // and call the handler. IU reference is still valid for this call, although removed from buffer. + ////// remove from InputBuffer? FIXME: unclear issue - resolve in ipaaca3 + ////_iu_store.erase(it->first); + // and call the handler. IU reference is still valid for this call, even if removed from buffer. call_iu_event_handlers(final_iu_ref, false, IU_RETRACTED, it->second->category() ); // } else { -- GitLab