mirror of
https://github.com/postgres/postgres.git
synced 2025-07-24 14:22:24 +03:00
Add a test for commit ac0e33136a
using the injection point.
This test uses an injection point to bypass the time overhead caused by the idle_replication_slot_timeout GUC, which has a minimum value of one minute. Author: Hayato Kuroda <kuroda.hayato@fujitsu.com> Author: Nisha Moond <nisha.moond412@gmail.com> Reviewed-by: Peter Smith <smithpb2250@gmail.com> Reviewed-by: Vignesh C <vignesh21@gmail.com> Reviewed-by: Amit Kapila <amit.kapila16@gmail.com> Discussion: https://postgr.es/m/CALj2ACW4aUe-_uFQOjdWCEN-xXoLGhmvRFnL8SNw_TZ5nJe+aw@mail.gmail.com
This commit is contained in:
@ -56,6 +56,7 @@
|
||||
#include "storage/procarray.h"
|
||||
#include "utils/builtins.h"
|
||||
#include "utils/guc_hooks.h"
|
||||
#include "utils/injection_point.h"
|
||||
#include "utils/varlena.h"
|
||||
|
||||
/*
|
||||
@ -1669,16 +1670,31 @@ DetermineSlotInvalidationCause(uint32 possible_causes, ReplicationSlot *s,
|
||||
{
|
||||
Assert(now > 0);
|
||||
|
||||
/*
|
||||
* Check if the slot needs to be invalidated due to
|
||||
* idle_replication_slot_timeout GUC.
|
||||
*/
|
||||
if (CanInvalidateIdleSlot(s) &&
|
||||
TimestampDifferenceExceedsSeconds(s->inactive_since, now,
|
||||
idle_replication_slot_timeout_mins * SECS_PER_MINUTE))
|
||||
if (CanInvalidateIdleSlot(s))
|
||||
{
|
||||
*inactive_since = s->inactive_since;
|
||||
return RS_INVAL_IDLE_TIMEOUT;
|
||||
/*
|
||||
* We simulate the invalidation due to idle_timeout as the minimum
|
||||
* time idle time is one minute which makes tests take a long
|
||||
* time.
|
||||
*/
|
||||
#ifdef USE_INJECTION_POINTS
|
||||
if (IS_INJECTION_POINT_ATTACHED("slot-timeout-inval"))
|
||||
{
|
||||
*inactive_since = 0; /* since the beginning of time */
|
||||
return RS_INVAL_IDLE_TIMEOUT;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Check if the slot needs to be invalidated due to
|
||||
* idle_replication_slot_timeout GUC.
|
||||
*/
|
||||
if (TimestampDifferenceExceedsSeconds(s->inactive_since, now,
|
||||
idle_replication_slot_timeout_mins * SECS_PER_MINUTE))
|
||||
{
|
||||
*inactive_since = s->inactive_since;
|
||||
return RS_INVAL_IDLE_TIMEOUT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user