relay: cleanup error handling
A few changes intended to make error messages more clear, remove duplicates, etc: - Don't log an error when xstream_write() fails in recover_xlog() - it's a responsibility of the caller. Logging it there results in the same error occuring twice in the log. - If recover_xlog() fails to apply a row and continues due to force_recovery flag, log the row's LSN - it might be useful for problem analysis. - Don't override relay error in relay_process_wal_event(), otherwise we can get 'fiber is cancelled' error in the status, which is meaningless. - Break replication if we fail to send an ack as it's pointless to continue then. - Log a relay error only once - when the relay thread is exiting. Don't log subsequent errors - they don't make much sense. - Set the relay cord name before setting WAL watcher: the WAL watcher sends an event as soon as it's installed, which starts xlog recovery, which is logged by the relay so we want the relay name to be valid. Note, there's a catch here: we used the original cord name as cbus endpoint name so now we have to pass endpoint name explicitly - this looks better anyway. While we are at it, let's also add some comments to relay_subscribe_f() and remove diag_is_empty() check as diag is always set when relay exits. Part of #3910
Loading
Please register or sign in to comment