On Fri, Feb 25, 2022 at 08:53:50PM +0530, Nitin Jadhav wrote: > > > > I'm not sure what Matthias meant, but as far as I know there's no > > fundamental > > difference between checkpoint with and without the CHECKPOINT_IMMEDIATE > > flag, > > and there's also no scheduling for multiple checkpoints. > > > > Yes, the flags will remain the same but checkpoint.c will test both the > > passed > > flags and the shmem flags to see whether a delay should be added or not, > > which > > is the only difference in checkpoint processing for this flag. See the > > call to > > ImmediateCheckpointRequested() which will look at the value in shmem: > > > > /* > > * Perform the usual duties and take a nap, unless we're behind > > schedule, > > * in which case we just try to catch up as quickly as possible. > > */ > > if (!(flags & CHECKPOINT_IMMEDIATE) && > > !ShutdownRequestPending && > > !ImmediateCheckpointRequested() && > > IsCheckpointOnSchedule(progress)) > > I understand that the checkpointer considers flags as well as the > shmem flags and if CHECKPOINT_IMMEDIATE flag is set, it affects the > current checkpoint operation (No further delay) but does not change > the current flag value. Should we display this change in the kind > field of the view or not? Please share your thoughts.
I think the fields should be added. It's good to know that a checkpoint was trigger due to normal activity and should be spreaded, and then something upgraded it to an immediate checkpoint. If you're desperately waiting for the end of a checkpoint for some reason and ask for an immediate checkpoint, you'll certainly be happy to see that the checkpointer is aware of it. But maybe I missed something in the code, so let's wait for Matthias input about it.