@@ -183,9 +183,7 @@ func (g *GS) ListDir(ctx context.Context, uri string) ([]string, error) {
183
183
}
184
184
185
185
bucket := b .GetGs ().Bucket
186
- path := b .GetGs ().Path
187
- prefix := getPrefix (path )
188
-
186
+ prefix := getPrefix (b .GetGs ().Path )
189
187
names , err := g .readdirNames (bucket , prefix )
190
188
if err != nil {
191
189
return nil , err
@@ -197,10 +195,12 @@ func (g *GS) ListDir(ctx context.Context, uri string) ([]string, error) {
197
195
func (g * GS ) RemoveDir (ctx context.Context , uri string ) error {
198
196
pathInfo , err := g .gcsFS .Stat (uri )
199
197
if errors .Is (err , gcsfs .ErrFileNotFound ) {
198
+ log .Errorf ("URI %s not found" , uri )
200
199
// return early if file doesn't exist
201
200
return nil
202
201
}
203
202
if err != nil {
203
+ log .Errorf ("stat URI %s failed: %v" , uri , err )
204
204
return err
205
205
}
206
206
@@ -272,12 +272,15 @@ func (g *GS) uploadToStorage(key, file string) error {
272
272
//}
273
273
//o = o.If(storage.Conditions{GenerationMatch: attrs.Generation})
274
274
wc := o .NewWriter (context .Background ())
275
- if _ , err = io .Copy (wc , f ); err != nil {
275
+ written , err := io .Copy (wc , f )
276
+ if err != nil {
276
277
return fmt .Errorf ("io.Copy: %w" , err )
277
278
}
278
279
if err := wc .Close (); err != nil {
279
280
return fmt .Errorf ("Writer.Close: %w" , err )
280
281
}
282
+
283
+ log .Infof ("Upload from %s to %s successfully, bytes=%d" , file , key , written )
281
284
return nil
282
285
}
283
286
@@ -302,7 +305,7 @@ func (g *GS) uploadPrefix(prefix, localDir string) error {
302
305
}
303
306
}
304
307
305
- log .Debugf ("Upload from %s to %s recursively. " , localDir , g .backend .Uri ())
308
+ log .Infof ("Upload from %s to %s recursively" , localDir , g .backend .Uri ())
306
309
return nil
307
310
}
308
311
@@ -334,14 +337,16 @@ func (g *GS) downloadToFile(file, key string) error {
334
337
}
335
338
defer rc .Close ()
336
339
337
- if _ , err := io .Copy (f , rc ); err != nil {
340
+ written , err := io .Copy (f , rc )
341
+ if err != nil {
338
342
return fmt .Errorf ("io.Copy: %w" , err )
339
343
}
340
344
341
345
if err = f .Close (); err != nil {
342
346
return fmt .Errorf ("f.Close: %w" , err )
343
347
}
344
348
349
+ log .Infof ("Download from %s to %s successfully, bytes=%d" , key , file , written )
345
350
return nil
346
351
}
347
352
@@ -352,14 +357,16 @@ func (g *GS) downloadPrefix(localPath, uri, baseUri string) error {
352
357
// localPath: /tmp
353
358
// uri: gs://nebula-2024/BACKUP_2024_01_20_01_20_56/data/2/3/...
354
359
// baseUri: gs://nebula-2024/BACKUP_2024_01_20_01_20_56/
355
- // object key: BACKUP_2023_11_14_04_49_54 /data/2/3/data/000009.sst
360
+ // object key: BACKUP_2024_01_20_01_20_56 /data/2/3/data/000009.sst
356
361
func (g * GS ) downloadToDir (localPath , uri , baseUri string ) error {
357
362
pathInfo , err := g .gcsFS .Stat (uri )
358
363
if errors .Is (err , gcsfs .ErrFileNotFound ) {
364
+ log .Errorf ("URI %s not found" , uri )
359
365
// return early if file doesn't exist
360
366
return nil
361
367
}
362
368
if err != nil {
369
+ log .Errorf ("stat URI %s failed: %v" , uri , err )
363
370
return err
364
371
}
365
372
@@ -390,7 +397,7 @@ func (g *GS) downloadToDir(localPath, uri, baseUri string) error {
390
397
return err
391
398
}
392
399
for _ , name := range names {
393
- subUri := uri + "/" + name
400
+ subUri := getSubUri ( uri , name )
394
401
err = g .downloadToDir (localPath , subUri , baseUri )
395
402
if err != nil {
396
403
return err
@@ -432,6 +439,13 @@ func (g *GS) readdirNames(bucket, prefix string) ([]string, error) {
432
439
return names , nil
433
440
}
434
441
442
+ func getSubUri (uri , name string ) string {
443
+ if strings .HasSuffix (uri , "/" ) {
444
+ return uri + name
445
+ }
446
+ return uri + "/" + name
447
+ }
448
+
435
449
func getObjectKey (uri string ) (string , error ) {
436
450
u , err := url .Parse (uri )
437
451
if err != nil {
0 commit comments