@@ -1273,6 +1273,89 @@ def test_tablespace_handling_2(self):
12731273 # Clean after yourself
12741274 self .del_test_dir (module_name , fname )
12751275
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+
12761359 # @unittest.skip("skip")
12771360 def test_drop_rel_during_backup_delta (self ):
12781361 """"""
@@ -1288,6 +1371,8 @@ def test_drop_rel_during_backup_delta(self):
12881371 self .set_archiving (backup_dir , 'node' , node )
12891372 node .slow_start ()
12901373
1374+ node .pgbench_init (scale = 10 )
1375+
12911376 node .safe_psql (
12921377 "postgres" ,
12931378 "create table t_heap as select i"
0 commit comments