Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit11cec76

Browse files
committed
mark datastateat
1 parente01f970 commit11cec76

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

‎pkg/retrieval/engine/postgres/snapshot/physical.go‎

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,10 @@ func (p *PhysicalInitial) promoteInstance(ctx context.Context, clonePath string)
474474
returnerrors.Wrap(err,"failed to readiness check")
475475
}
476476

477+
iferr:=p.markDSA(ctx,promoteCont.ID);err!=nil {
478+
returnerrors.Wrap(err,"failed to mark dataStateAt")
479+
}
480+
477481
shouldBePromoted,err:=p.checkRecovery(ctx,promoteCont.ID)
478482
iferr!=nil {
479483
returnerrors.Wrap(err,"failed to check recovery mode")
@@ -483,25 +487,6 @@ func (p *PhysicalInitial) promoteInstance(ctx context.Context, clonePath string)
483487

484488
// Detect dataStateAt.
485489
ifshouldBePromoted=="t" {
486-
extractedDataStateAt,err:=p.extractDataStateAt(ctx,promoteCont.ID)
487-
iferr!=nil {
488-
returnerrors.Wrap(err,
489-
`Failed to get data_state_at: PGDATA should be promoted, but pg_last_xact_replay_timestamp() returns empty result.
490-
Check if pg_data is correct, or explicitly define DATA_STATE_AT via an environment variable.`)
491-
}
492-
493-
log.Msg("Extracted Data state at: ",extractedDataStateAt)
494-
495-
ifp.dbMark.DataStateAt!=""&&extractedDataStateAt==p.dbMark.DataStateAt {
496-
returnnewSkipSnapshotErr(fmt.Sprintf(
497-
`The previous snapshot already contains the latest data: %s. Skip taking a new snapshot.`,
498-
p.dbMark.DataStateAt))
499-
}
500-
501-
p.dbMark.DataStateAt=extractedDataStateAt
502-
503-
log.Msg("Data state at: ",p.dbMark.DataStateAt)
504-
505490
// Promote PGDATA.
506491
iferr:=p.runPromoteCommand(ctx,promoteCont.ID,clonePath);err!=nil {
507492
returnerrors.Wrapf(err,"failed to promote PGDATA: %s",clonePath)
@@ -544,6 +529,29 @@ func (p *PhysicalInitial) promoteInstance(ctx context.Context, clonePath string)
544529
returnnil
545530
}
546531

532+
func (p*PhysicalInitial)markDSA(ctx context.Context,containerIDstring)error {
533+
extractedDataStateAt,err:=p.extractDataStateAt(ctx,containerID)
534+
iferr!=nil {
535+
returnerrors.Wrap(err,
536+
`Failed to get data_state_at: PGDATA should be promoted, but pg_last_xact_replay_timestamp() returns empty result.
537+
Check if pg_data is correct, or explicitly define DATA_STATE_AT via an environment variable.`)
538+
}
539+
540+
log.Msg("Extracted Data state at: ",extractedDataStateAt)
541+
542+
ifp.dbMark.DataStateAt!=""&&extractedDataStateAt==p.dbMark.DataStateAt {
543+
returnnewSkipSnapshotErr(fmt.Sprintf(
544+
`The previous snapshot already contains the latest data: %s. Skip taking a new snapshot.`,
545+
p.dbMark.DataStateAt))
546+
}
547+
548+
p.dbMark.DataStateAt=extractedDataStateAt
549+
550+
log.Msg("Data state at: ",p.dbMark.DataStateAt)
551+
552+
returnnil
553+
}
554+
547555
func (p*PhysicalInitial)buildContainerConfig(clonePath,promoteImage,passwordstring)*container.Config {
548556
hcPromotionInterval:=health.DefaultRestoreInterval
549557
hcPromotionRetries:=health.DefaultRestoreRetries

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp