On 2020/01/30 20:00, Sergei Kornilov wrote:
Hello
Currently during point-in-time recovery with recovery_target_action = 'pause'
we print log lines:
LOG: recovery has paused
HINT: Execute pg_wal_replay_resume() to continue.
My colleague told me that this is a terrible moment: to continue what exactly? It sounds
like "to continue replay", similar to normal
pg_wal_replay_pause/pg_wal_replay_resume behavior. We have just small note in
documentation:
The paused state can be resumed by using pg_wal_replay_resume() (see Table
9.81), which then causes recovery to end.
But I think this is important place and can be improved.
Also the database does not respond to the promote signals at this stage.
Attached patch 0001 with the test will fail.
0002 patch contains my proposed ideas:
- introduce separate message for pause due pg_wal_replay_pause call and for
recovery_target_action.
+1
- check for standby triggers only for recovery_target_action - I am not sure
this would be safe for pg_wal_replay_pause() call case
Agreed. Basically I think that recoveryPausesHere() should the promotion
trigger whether recovery target is reached or not. But one question is;
how should the recovery behave if recovery target is reached with
recovery_target_action=pause after the promotion is requested?
It should pause? Or promote?
Regards,
--
Fujii Masao
NTT DATA CORPORATION
Advanced Platform Technology Group
Research and Development Headquarters