@@ -21,7 +21,8 @@ const { CONFIG_SUBDIRS } = require('../manage_nsfs/manage_nsfs_constants');
21
21
22
22
const KeysSemaphore = require ( '../util/keys_semaphore' ) ;
23
23
const { get_umasked_mode, isDirectory, validate_bucket_creation,
24
- create_config_file, delete_config_file, get_bucket_tmpdir_full_path, folder_delete } = require ( '../util/native_fs_utils' ) ;
24
+ create_config_file, delete_config_file, get_bucket_tmpdir_full_path, folder_delete,
25
+ entity_enum, translate_error_codes } = require ( '../util/native_fs_utils' ) ;
25
26
const NoobaaEvent = require ( '../manage_nsfs/manage_nsfs_events_utils' ) . NoobaaEvent ;
26
27
const { anonymous_access_key } = require ( './object_sdk' ) ;
27
28
@@ -86,16 +87,6 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
86
87
}
87
88
}
88
89
89
- _translate_bucket_error_codes ( err ) {
90
- if ( err . rpc_code ) return err ;
91
- if ( err . code === 'ENOENT' ) err . rpc_code = 'NO_SUCH_BUCKET' ;
92
- if ( err . code === 'EEXIST' ) err . rpc_code = 'BUCKET_ALREADY_EXISTS' ;
93
- if ( err . code === 'EPERM' || err . code === 'EACCES' ) err . rpc_code = 'UNAUTHORIZED' ;
94
- if ( err . code === 'IO_STREAM_ITEM_TIMEOUT' ) err . rpc_code = 'IO_STREAM_ITEM_TIMEOUT' ;
95
- if ( err . code === 'INTERNAL_ERROR' ) err . rpc_code = 'INTERNAL_ERROR' ;
96
- return err ;
97
- }
98
-
99
90
async read_account_by_access_key ( { access_key } ) {
100
91
try {
101
92
if ( ! access_key ) throw new Error ( 'no access key' ) ;
@@ -178,7 +169,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
178
169
}
179
170
return bucket ;
180
171
} catch ( err ) {
181
- const rpc_error = this . _translate_bucket_error_codes ( err ) ;
172
+ const rpc_error = translate_error_codes ( err , entity_enum . BUCKET ) ;
182
173
if ( err . rpc_code === 'INVALID_SCHEMA' ) err . rpc_code = 'INVALID_BUCKET_STATE' ;
183
174
new NoobaaEvent ( NoobaaEvent [ rpc_error . rpc_code ] ) . create_event ( name , { bucket_name : name } , err ) ;
184
175
throw rpc_error ;
@@ -222,7 +213,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
222
213
dbg . error ( 'BucketSpaceFS: root dir not found' , err , this . bucket_schema_dir ) ;
223
214
throw new S3Error ( S3Error . NoSuchBucket ) ;
224
215
}
225
- throw this . _translate_bucket_error_codes ( err ) ;
216
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
226
217
}
227
218
228
219
const account = object_sdk . requesting_account ;
@@ -302,7 +293,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
302
293
await create_config_file ( this . fs_context , this . bucket_schema_dir , bucket_config_path , bucket_config ) ;
303
294
} catch ( err ) {
304
295
new NoobaaEvent ( NoobaaEvent . BUCKET_CREATION_FAILED ) . create_event ( name , { bucket_name : name } , err ) ;
305
- throw this . _translate_bucket_error_codes ( err ) ;
296
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
306
297
}
307
298
308
299
// create bucket's underlying storage directory
@@ -313,7 +304,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
313
304
dbg . error ( 'BucketSpaceFS: create_bucket could not create underlying directory - nsfs, deleting bucket' , err ) ;
314
305
new NoobaaEvent ( NoobaaEvent . BUCKET_DIR_CREATION_FAILED ) . create_event ( name , { bucket : name , path : bucket_storage_path } , err ) ;
315
306
await nb_native ( ) . fs . unlink ( this . fs_context , bucket_config_path ) ;
316
- throw this . _translate_bucket_error_codes ( err ) ;
307
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
317
308
}
318
309
} ) ;
319
310
}
@@ -359,13 +350,27 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
359
350
if ( ! namespace_bucket_config ) throw new RpcError ( 'INTERNAL_ERROR' , 'Invalid Bucket configuration' ) ;
360
351
361
352
if ( namespace_bucket_config . should_create_underlying_storage ) {
362
- // 1. delete underlying storage
353
+ // 1. delete underlying storage (ULS = Underline Storage)
363
354
dbg . log1 ( 'BucketSpaceFS.delete_bucket: deleting uls' , this . fs_root , namespace_bucket_config . write_resource . path ) ;
364
355
const bucket_storage_path = path . join ( this . fs_root , namespace_bucket_config . write_resource . path ) ; // includes write_resource.path + bucket name (s3 flow)
365
- await ns . delete_uls ( { name, full_path : bucket_storage_path } , object_sdk ) ;
356
+ try {
357
+ await ns . delete_uls ( { name, full_path : bucket_storage_path } , object_sdk ) ;
358
+ } catch ( err ) {
359
+ dbg . warn ( 'delete_bucket: bucket name' , name , 'with bucket_storage_path' , bucket_storage_path ,
360
+ 'got an error while trying to delete_uls' , err ) ;
361
+ // in case the ULS was deleted - we will continue
362
+ if ( err . rpc_code !== 'NO_SUCH_BUCKET' ) throw err ;
363
+ }
366
364
} else {
367
365
// 2. delete only bucket tmpdir
368
- const list = await ns . list_objects ( { ...params , bucket : name , limit : 1 } , object_sdk ) ;
366
+ let list ;
367
+ try {
368
+ list = await ns . list_objects ( { ...params , bucket : name , limit : 1 } , object_sdk ) ;
369
+ } catch ( err ) {
370
+ dbg . warn ( 'delete_bucket: bucket name' , name , 'got an error while trying to list_objects' , err ) ;
371
+ // in case the ULS was deleted - we will continue
372
+ if ( err . rpc_code !== 'NO_SUCH_BUCKET' ) throw err ;
373
+ }
369
374
if ( list && list . objects && list . objects . length > 0 ) throw new RpcError ( 'NOT_EMPTY' , 'underlying directory has files in it' ) ;
370
375
const bucket_tmpdir_path = get_bucket_tmpdir_full_path ( namespace_bucket_config . write_resource . path , bucket . _id ) ;
371
376
await folder_delete ( bucket_tmpdir_path , this . fs_context , true ) ;
@@ -375,10 +380,10 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
375
380
await delete_config_file ( this . fs_context , this . bucket_schema_dir , bucket_config_path ) ;
376
381
new NoobaaEvent ( NoobaaEvent . BUCKET_DELETE ) . create_event ( name , { bucket_name : name } ) ;
377
382
} catch ( err ) {
378
- dbg . error ( 'BucketSpaceFS: delete_bucket: error' , err ) ;
383
+ dbg . error ( 'BucketSpaceFS: delete_bucket: bucket name' , name , ' error', err ) ;
379
384
new NoobaaEvent ( NoobaaEvent . BUCKET_DELETE_FAILED ) . create_event ( name ,
380
385
{ bucket_name : name , bucket_path : bucket_config_path } , err ) ;
381
- throw this . _translate_bucket_error_codes ( err ) ;
386
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
382
387
}
383
388
} ) ;
384
389
}
@@ -426,7 +431,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
426
431
}
427
432
) ;
428
433
} catch ( err ) {
429
- throw this . _translate_bucket_error_codes ( err ) ;
434
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
430
435
}
431
436
}
432
437
@@ -484,7 +489,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
484
489
}
485
490
) ;
486
491
} catch ( err ) {
487
- throw this . _translate_bucket_error_codes ( err ) ;
492
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
488
493
}
489
494
}
490
495
@@ -508,7 +513,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
508
513
}
509
514
) ;
510
515
} catch ( err ) {
511
- throw this . _translate_bucket_error_codes ( err ) ;
516
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
512
517
}
513
518
}
514
519
@@ -521,7 +526,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
521
526
const bucket = JSON . parse ( data . toString ( ) ) ;
522
527
return bucket . logging ;
523
528
} catch ( err ) {
524
- throw this . _translate_bucket_error_codes ( err ) ;
529
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
525
530
}
526
531
}
527
532
@@ -550,7 +555,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
550
555
{ mode : get_umasked_mode ( config . BASE_MODE_CONFIG_FILE ) }
551
556
) ;
552
557
} catch ( err ) {
553
- throw this . _translate_bucket_error_codes ( err ) ;
558
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
554
559
}
555
560
}
556
561
@@ -563,7 +568,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
563
568
const bucket = JSON . parse ( data . toString ( ) ) ;
564
569
return bucket . encryption ;
565
570
} catch ( err ) {
566
- throw this . _translate_bucket_error_codes ( err ) ;
571
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
567
572
}
568
573
}
569
574
@@ -586,7 +591,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
586
591
{ mode : get_umasked_mode ( config . BASE_MODE_CONFIG_FILE ) }
587
592
) ;
588
593
} catch ( err ) {
589
- throw this . _translate_bucket_error_codes ( err ) ;
594
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
590
595
}
591
596
}
592
597
@@ -614,7 +619,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
614
619
{ mode : get_umasked_mode ( config . BASE_MODE_CONFIG_FILE ) }
615
620
) ;
616
621
} catch ( err ) {
617
- throw this . _translate_bucket_error_codes ( err ) ;
622
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
618
623
}
619
624
}
620
625
@@ -637,7 +642,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
637
642
{ mode : get_umasked_mode ( config . BASE_MODE_CONFIG_FILE ) }
638
643
) ;
639
644
} catch ( err ) {
640
- throw this . _translate_bucket_error_codes ( err ) ;
645
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
641
646
}
642
647
}
643
648
@@ -654,7 +659,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
654
659
const bucket = JSON . parse ( data . toString ( ) ) ;
655
660
return { website : bucket . website } ;
656
661
} catch ( err ) {
657
- throw this . _translate_bucket_error_codes ( err ) ;
662
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
658
663
}
659
664
}
660
665
@@ -685,7 +690,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
685
690
{ mode : get_umasked_mode ( config . BASE_MODE_CONFIG_FILE ) }
686
691
) ;
687
692
} catch ( err ) {
688
- throw this . _translate_bucket_error_codes ( err ) ;
693
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
689
694
}
690
695
}
691
696
@@ -708,7 +713,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
708
713
{ mode : get_umasked_mode ( config . BASE_MODE_CONFIG_FILE ) }
709
714
) ;
710
715
} catch ( err ) {
711
- throw this . _translate_bucket_error_codes ( err ) ;
716
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
712
717
}
713
718
}
714
719
@@ -722,7 +727,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
722
727
policy : bucket_policy_info . s3_policy
723
728
} ;
724
729
} catch ( err ) {
725
- throw this . _translate_bucket_error_codes ( err ) ;
730
+ throw translate_error_codes ( err , entity_enum . BUCKET ) ;
726
731
}
727
732
}
728
733
0 commit comments