@@ -1239,9 +1239,14 @@ func (b *Backuper) restoreDataRegularByAttach(ctx context.Context, backupName st
1239
1239
return fmt .Errorf ("can't copy data to storage '%s.%s': %v" , table .Database , table .Table , err )
1240
1240
}
1241
1241
log .Debug ("data to 'storage' copied" )
1242
- if err := b .downloadObjectDiskParts (ctx , backupName , backupMetadata , table , diskMap , diskTypes , disks ); err != nil {
1242
+ log .Info ("download object_disks start" )
1243
+ var size int64
1244
+ var err error
1245
+ start := time .Now ()
1246
+ if size , err = b .downloadObjectDiskParts (ctx , backupName , backupMetadata , table , diskMap , diskTypes , disks ); err != nil {
1243
1247
return fmt .Errorf ("can't restore object_disk server-side copy data parts '%s.%s': %v" , table .Database , table .Table , err )
1244
1248
}
1249
+ log .WithField ("duration" , utils .HumanizeDuration (time .Since (start ))).WithField ("size" , utils .FormatBytes (uint64 (size ))).Info ("download object_disks finish" )
1245
1250
if err := b .ch .AttachTable (ctx , table , dstTable ); err != nil {
1246
1251
return fmt .Errorf ("can't attach table '%s.%s': %v" , table .Database , table .Table , err )
1247
1252
}
@@ -1253,16 +1258,21 @@ func (b *Backuper) restoreDataRegularByParts(ctx context.Context, backupName str
1253
1258
return fmt .Errorf ("can't copy data to detached '%s.%s': %v" , table .Database , table .Table , err )
1254
1259
}
1255
1260
log .Debug ("data to 'detached' copied" )
1256
- if err := b .downloadObjectDiskParts (ctx , backupName , backupMetadata , table , diskMap , diskTypes , disks ); err != nil {
1261
+ log .Info ("download object_disks start" )
1262
+ var size int64
1263
+ var err error
1264
+ start := time .Now ()
1265
+ if size , err = b .downloadObjectDiskParts (ctx , backupName , backupMetadata , table , diskMap , diskTypes , disks ); err != nil {
1257
1266
return fmt .Errorf ("can't restore object_disk server-side copy data parts '%s.%s': %v" , table .Database , table .Table , err )
1258
1267
}
1268
+ log .WithField ("duration" , utils .HumanizeDuration (time .Since (start ))).WithField ("size" , utils .FormatBytes (uint64 (size ))).Info ("download object_disks finish" )
1259
1269
if err := b .ch .AttachDataParts (table , dstTable ); err != nil {
1260
1270
return fmt .Errorf ("can't attach data parts for table '%s.%s': %v" , table .Database , table .Table , err )
1261
1271
}
1262
1272
return nil
1263
1273
}
1264
1274
1265
- func (b * Backuper ) downloadObjectDiskParts (ctx context.Context , backupName string , backupMetadata metadata.BackupMetadata , backupTable metadata.TableMetadata , diskMap , diskTypes map [string ]string , disks []clickhouse.Disk ) error {
1275
+ func (b * Backuper ) downloadObjectDiskParts (ctx context.Context , backupName string , backupMetadata metadata.BackupMetadata , backupTable metadata.TableMetadata , diskMap , diskTypes map [string ]string , disks []clickhouse.Disk ) ( int64 , error ) {
1266
1276
log := apexLog .WithFields (apexLog.Fields {
1267
1277
"operation" : "downloadObjectDiskParts" ,
1268
1278
"table" : fmt .Sprintf ("%s.%s" , backupTable .Database , backupTable .Table ),
@@ -1276,7 +1286,7 @@ func (b *Backuper) downloadObjectDiskParts(ctx context.Context, backupName strin
1276
1286
for diskName , parts := range backupTable .Parts {
1277
1287
diskType , exists := diskTypes [diskName ]
1278
1288
if ! exists {
1279
- return fmt .Errorf ("%s disk doesn't present in diskTypes: %v" , diskName , diskTypes )
1289
+ return 0 , fmt .Errorf ("%s disk doesn't present in diskTypes: %v" , diskName , diskTypes )
1280
1290
}
1281
1291
isObjectDiskEncrypted := false
1282
1292
if diskType == "encrypted" {
@@ -1297,18 +1307,18 @@ func (b *Backuper) downloadObjectDiskParts(ctx context.Context, backupName strin
1297
1307
isObjectDisk := b .isDiskTypeObject (diskType )
1298
1308
if isObjectDisk || isObjectDiskEncrypted {
1299
1309
if err = config .ValidateObjectDiskConfig (b .cfg ); err != nil {
1300
- return err
1310
+ return 0 , err
1301
1311
}
1302
1312
if _ , exists := diskMap [diskName ]; ! exists {
1303
1313
for _ , part := range parts {
1304
1314
if part .RebalancedDisk != "" {
1305
1315
if err = object_disk .InitCredentialsAndConnections (ctx , b .ch , b .cfg , part .RebalancedDisk ); err != nil {
1306
- return err
1316
+ return 0 , err
1307
1317
}
1308
1318
}
1309
1319
}
1310
1320
} else if err = object_disk .InitCredentialsAndConnections (ctx , b .ch , b .cfg , diskName ); err != nil {
1311
- return err
1321
+ return 0 , err
1312
1322
}
1313
1323
start := time .Now ()
1314
1324
downloadObjectDiskPartsWorkingGroup , downloadCtx := errgroup .WithContext (ctx )
@@ -1326,7 +1336,7 @@ func (b *Backuper) downloadObjectDiskParts(ctx context.Context, backupName strin
1326
1336
var findRecursiveErr error
1327
1337
srcBackupName , srcDiskName , findRecursiveErr = b .findObjectDiskPartRecursive (ctx , backupMetadata , backupTable , part , diskName , log )
1328
1338
if findRecursiveErr != nil {
1329
- return findRecursiveErr
1339
+ return 0 , findRecursiveErr
1330
1340
}
1331
1341
}
1332
1342
walkErr := filepath .Walk (partPath , func (fPath string , fInfo fs.FileInfo , err error ) error {
@@ -1385,17 +1395,17 @@ func (b *Backuper) downloadObjectDiskParts(ctx context.Context, backupName strin
1385
1395
return nil
1386
1396
})
1387
1397
if walkErr != nil {
1388
- return walkErr
1398
+ return 0 , walkErr
1389
1399
}
1390
1400
}
1391
1401
if wgWaitErr := downloadObjectDiskPartsWorkingGroup .Wait (); wgWaitErr != nil {
1392
- return fmt .Errorf ("one of downloadObjectDiskParts go-routine return error: %v" , wgWaitErr )
1402
+ return 0 , fmt .Errorf ("one of downloadObjectDiskParts go-routine return error: %v" , wgWaitErr )
1393
1403
}
1394
1404
log .WithField ("disk" , diskName ).WithField ("duration" , utils .HumanizeDuration (time .Since (start ))).WithField ("size" , utils .FormatBytes (uint64 (size ))).Info ("object_disk data downloaded" )
1395
1405
}
1396
1406
}
1397
1407
1398
- return nil
1408
+ return size , nil
1399
1409
}
1400
1410
1401
1411
func (b * Backuper ) findObjectDiskPartRecursive (ctx context.Context , backup metadata.BackupMetadata , table metadata.TableMetadata , part metadata.Part , diskName string , log * apexLog.Entry ) (string , string , error ) {
0 commit comments