File tree Expand file tree Collapse file tree 3 files changed +24
-1
lines changed Expand file tree Collapse file tree 3 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -396,10 +396,10 @@ func (p *PostgresKeeper) createRecoveryParameters(standbySettings *cluster.Stand
396
396
if recoveryTargetSettings .RecoveryTargetXid != "" {
397
397
parameters ["recovery_target_xid" ] = recoveryTargetSettings .RecoveryTargetXid
398
398
}
399
-
400
399
if recoveryTargetSettings .RecoveryTargetTimeline != "" {
401
400
parameters ["recovery_target_timeline" ] = recoveryTargetSettings .RecoveryTargetTimeline
402
401
}
402
+ parameters ["recovery_target_action" ] = "promote"
403
403
}
404
404
405
405
return parameters
Original file line number Diff line number Diff line change @@ -461,6 +461,9 @@ func (os *ClusterSpec) Validate() error {
461
461
if s .PITRConfig .DataRestoreCommand == "" {
462
462
return fmt .Errorf ("pitrConfig.DataRestoreCommand undefined" )
463
463
}
464
+ if s .PITRConfig .RecoveryTargetSettings != nil && * s .Role == ClusterRoleStandby {
465
+ return fmt .Errorf ("cannot define pitrConfig.RecoveryTargetSettings when required cluster role is standby" )
466
+ }
464
467
default :
465
468
return fmt .Errorf ("unknown initMode: %q" , * s .InitMode )
466
469
Original file line number Diff line number Diff line change @@ -33,6 +33,16 @@ import (
33
33
func TestPITR (t * testing.T ) {
34
34
t .Parallel ()
35
35
36
+ testPITR (t , false )
37
+ }
38
+
39
+ func TestPITRRecoveryTarget (t * testing.T ) {
40
+ t .Parallel ()
41
+
42
+ testPITR (t , true )
43
+ }
44
+
45
+ func testPITR (t * testing.T , recoveryTarget bool ) {
36
46
dir , err := ioutil .TempDir ("" , "stolon" )
37
47
if err != nil {
38
48
t .Fatalf ("unexpected err: %v" , err )
@@ -109,6 +119,9 @@ func TestPITR(t *testing.T) {
109
119
t .Fatalf ("unexpected err: %v" , err )
110
120
}
111
121
122
+ // save current time used to define recovery_target_time
123
+ now := time .Now ()
124
+
112
125
// ioutil.Tempfile already creates files with 0600 permissions
113
126
pgpass , err := ioutil .TempFile ("" , "pgpass" )
114
127
if err != nil {
@@ -155,6 +168,13 @@ func TestPITR(t *testing.T) {
155
168
"max_prepared_transactions" : "100" ,
156
169
}),
157
170
}
171
+
172
+ if recoveryTarget {
173
+ initialClusterSpec .PITRConfig .RecoveryTargetSettings = & cluster.RecoveryTargetSettings {
174
+ RecoveryTargetTime : now .Format (time .RFC3339 ),
175
+ }
176
+ }
177
+
158
178
initialClusterSpecFile , err = writeClusterSpec (dir , initialClusterSpec )
159
179
if err != nil {
160
180
t .Fatalf ("unexpected err: %v" , err )
You can’t perform that action at this time.
0 commit comments