view COPYING.MIT @ 22930:bfeda12bb54a

lib-index: mail_index_sync_map() - Don't try to-resync extension updates This was done to call extension record sync handlers, but the previous commit removes them. Fixes a problem where obsolete cache offsets were used in some situations: - Some cache updates are from external transactions and some are from non-external transactions. This is because cache offset updates are being added by whatever the parent index transaction is. - When mail_index_sync_map() is mapping MAIL_INDEX_SYNC_HANDLER_FILE, it has already synced the map. But it's calling mail_index_sync_record() for non-external transactions to call expunge handlers and extension update handlers. It's calling the regular mail_index_sync_record() to do this work. - But mail_index_sync_record() is actually still updating the map. So now mail_index_sync_record() is called for all non-external cache updates, but not for external cache updates! And since these are somewhat randomly either external or non-external, the end result is that the cache offset may be obsolete.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sun, 29 Apr 2018 12:31:23 +0300
parents 9df02b1533b3
children
line wrap: on
line source

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.