pg_stash_advice: Don't forget unsaved changes after a failed write. If the persistence worker hits an error while writing pg_stash_advice.tsv, it exits and the postmaster restarts it. The new worker doesn't think the file needs to be rewritten until something changes or the server shuts down. Instead, it should retry the failed write.
This also fixes a second bug. The worker should record the current change count before, rather than after, setting stashes_ready. Failure to do so creates a narrow window during which any changes won't trigger the persistence worker to rewrite the file. Zsolt's original patch included a test case, but I've left that out here because it doesn't seem worth the cycles for a bug that seems unlikely to be reintroduced. If others disagree, we can revisit. Oversight in commit c10edb102ada607eb054bc9e23690109d86849ef. Reported-by: Zsolt Parragi <[email protected]> Author: Zsolt Parragi <[email protected]> Reviewed-by: Dongpo Liu <[email protected]> Discussion: http://postgr.es/m/CAN4CZFMoWWdXhrNRk1id=n_k4o5kae3kqttji__ufzreoeu...@mail.gmail.com Backpatch-through: 19 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/61553eacadbca0a084c7ae46214ffdee71208823 Modified Files -------------- contrib/pg_stash_advice/stashpersist.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
