@@ -1273,6 +1273,89 @@ def test_tablespace_handling_2(self):
1273
1273
# Clean after yourself
1274
1274
self .del_test_dir (module_name , fname )
1275
1275
1276
+ # @unittest.skip("skip")
1277
+ def test_drop_rel_during_full_backup (self ):
1278
+ """"""
1279
+ fname = self .id ().split ('.' )[3 ]
1280
+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
1281
+ node = self .make_simple_node (
1282
+ base_dir = os .path .join (module_name , fname , 'node' ),
1283
+ set_replication = True ,
1284
+ initdb_params = ['--data-checksums' ])
1285
+
1286
+ self .init_pb (backup_dir )
1287
+ self .add_instance (backup_dir , 'node' , node )
1288
+ self .set_archiving (backup_dir , 'node' , node )
1289
+ node .slow_start ()
1290
+
1291
+
1292
+ for i in range (1 , 512 ):
1293
+ node .safe_psql (
1294
+ "postgres" ,
1295
+ "create table t_heap_{0} as select i"
1296
+ " as id from generate_series(0,100) i" .format (i ))
1297
+
1298
+ node .safe_psql (
1299
+ "postgres" ,
1300
+ "VACUUM" )
1301
+
1302
+ node .pgbench_init (scale = 10 )
1303
+
1304
+ relative_path_1 = node .safe_psql (
1305
+ "postgres" ,
1306
+ "select pg_relation_filepath('t_heap_1')" ).rstrip ()
1307
+
1308
+ relative_path_2 = node .safe_psql (
1309
+ "postgres" ,
1310
+ "select pg_relation_filepath('t_heap_1')" ).rstrip ()
1311
+
1312
+ absolute_path_1 = os .path .join (node .data_dir , relative_path_1 )
1313
+ absolute_path_2 = os .path .join (node .data_dir , relative_path_2 )
1314
+
1315
+ # FULL backup
1316
+ gdb = self .backup_node (
1317
+ backup_dir , 'node' , node ,
1318
+ options = ['--stream' , '--log-level-file=LOG' , '--log-level-console=LOG' , '--progress' ],
1319
+ gdb = True )
1320
+
1321
+ gdb .set_breakpoint ('backup_files' )
1322
+ gdb .run_until_break ()
1323
+
1324
+ # REMOVE file
1325
+ for i in range (1 , 512 ):
1326
+ node .safe_psql (
1327
+ "postgres" ,
1328
+ "drop table t_heap_{0}" .format (i ))
1329
+
1330
+ node .safe_psql (
1331
+ "postgres" ,
1332
+ "CHECKPOINT" )
1333
+
1334
+ node .safe_psql (
1335
+ "postgres" ,
1336
+ "CHECKPOINT" )
1337
+
1338
+ # File removed, we can proceed with backup
1339
+ gdb .continue_execution_until_exit ()
1340
+
1341
+ pgdata = self .pgdata_content (node .data_dir )
1342
+
1343
+ #with open(os.path.join(backup_dir, 'log', 'pg_probackup.log')) as f:
1344
+ # log_content = f.read()
1345
+ # self.assertTrue(
1346
+ # 'LOG: File "{0}" is not found'.format(absolute_path) in log_content,
1347
+ # 'File "{0}" should be deleted but it`s not'.format(absolute_path))
1348
+
1349
+ node .cleanup ()
1350
+ self .restore_node (backup_dir , 'node' , node )
1351
+
1352
+ # Physical comparison
1353
+ pgdata_restored = self .pgdata_content (node .data_dir )
1354
+ self .compare_pgdata (pgdata , pgdata_restored )
1355
+
1356
+ # Clean after yourself
1357
+ self .del_test_dir (module_name , fname )
1358
+
1276
1359
# @unittest.skip("skip")
1277
1360
def test_drop_rel_during_backup_delta (self ):
1278
1361
""""""
@@ -1288,6 +1371,8 @@ def test_drop_rel_during_backup_delta(self):
1288
1371
self .set_archiving (backup_dir , 'node' , node )
1289
1372
node .slow_start ()
1290
1373
1374
+ node .pgbench_init (scale = 10 )
1375
+
1291
1376
node .safe_psql (
1292
1377
"postgres" ,
1293
1378
"create table t_heap as select i"
0 commit comments