Thanks for finding time for that as well. Appreciated! Patrick Ohly wrote:
> On Sat, 2016-02-20 at 13:32 +0100, deloptes wrote: >> Hi Patrick, all, >> >> a stupid shortcut activation got the previous mail sent incomplete. >> >> So in the LocalTransportAgent >> >> we have >> >> while (! m_reportSent && m_parent && s.getState() == >> SuspendFlags::NORMAL ) { >> step("waiting for parent's ACK for sync report"); >> } >> >> which never completes. > > Yes, that's where the "waiting for parent's ACK for sync report" comes > from that we've seen earlier in a stack backtrace. > Right before the loop it says m_parent->m_storeSyncReport.start(report, boost::bind(&LocalTransportAgentChild::syncReportReceived, this, _1)); but I do not see "sending sync report to parent" in the log It looks like it never gets called or something else, so m_reportSent stays false and the loop never ends. I am afraid I was wrong about this previous time , or perhaps confused. > > The sync may complete, but there's no guarantee anymore that the sending > of the report really works, because the client may proceed before the > parent got the report (IO not flushed). > > Yes, it would be interesting to learn more about the state of the > process when it gets stuck. Even just the full log may be useful, in > particular the ordering of the "waiting for parent's ACK for sync > report" entries and the "sending sync report to parent: done" (assuming > it succeeds). See syncReportReceived() and the lines above it where it > is used as an asynchronous completion callback. After I terminate I do not see this in the logs. I see "waiting for parent's ACK for sync report" only in the backtrace. I also do not see "child sending sync report" in the log. Do you mean I should upload/attach some log (the html ones?) > > Looking at step() itself once more I am no longer sure whether it is > really as atomic as it needs to be. The SE_LOG_DEBUG() might involve > operations which clear the pending events such that the > g_main_context_iteration() gets stuck. > > If you remove that one SE_LOG_DEBUG() in step(), does that help? No. > > > Which close() function? > I mean "TrackingSyncSource::close()" implemented in the plugin. If I understand correctly I should put there the logic for saving changes. In open() I set the resource/database and request a ticket, which would close saving all changes if only close() would have been called. In the log/dbg I see open finishing but no trace of close(). This could be related to the above problem as well, but please confirm that I understand the usage properly. thanks again and regards _______________________________________________ SyncEvolution mailing list SyncEvolution@syncevolution.org https://lists.syncevolution.org/mailman/listinfo/syncevolution