Skip to content

Commit

Permalink
NSFS | Improve list objects performance on top of NS FS (PR 2/3)
Browse files Browse the repository at this point in the history
  • Loading branch information
naveenpaul1 committed Sep 30, 2024
1 parent e24e59a commit 2c43a85
Show file tree
Hide file tree
Showing 10 changed files with 769 additions and 302 deletions.
3 changes: 3 additions & 0 deletions config.js
Original file line number Diff line number Diff line change
Expand Up @@ -798,6 +798,9 @@ config.NSFS_GLACIER_MIGRATE_INTERVAL = 15 * 60 * 1000;
// of `manage_nsfs glacier restore`
config.NSFS_GLACIER_RESTORE_INTERVAL = 15 * 60 * 1000;

// enable/disable unsorted listing application level
config.NSFS_LIST_OBJECTS_V2_UNSORTED_ENABLED = false;

// NSFS_GLACIER_EXPIRY_RUN_TIME must be of the format hh:mm which specifies
// when NooBaa should allow running glacier expiry process
// NOTE: This will also be in the same timezone as specified in
Expand Down
6 changes: 6 additions & 0 deletions src/api/object_api.js
Original file line number Diff line number Diff line change
Expand Up @@ -720,6 +720,9 @@ module.exports = {
limit: {
type: 'integer'
},
list_type: {
type: 'string',
},
}
},
reply: {
Expand Down Expand Up @@ -774,6 +777,9 @@ module.exports = {
limit: {
type: 'integer'
},
list_type: {
type: 'string',
},
}
},
reply: {
Expand Down
1 change: 1 addition & 0 deletions src/endpoint/s3/ops/s3_get_bucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ async function get_bucket(req) {
bucket: req.params.bucket,
prefix: req.query.prefix,
delimiter: req.query.delimiter,
list_type: list_type,
limit: Math.min(max_keys_received, 1000),
key_marker: list_type === '2' ?
(cont_tok_to_key_marker(cont_tok) || start_after) : req.query.marker,
Expand Down
2 changes: 1 addition & 1 deletion src/native/fs/fs_napi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2042,7 +2042,7 @@ struct TellDir : public FSWrapWorker<DirWrap>
}
virtual void OnOK()
{
DBG0("FS::Telldir::OnOK: " << DVAL(_wrap->_path) << DVAL(_tell_res));
DBG1("FS::Telldir::OnOK: " << DVAL(_wrap->_path) << DVAL(_tell_res));
Napi::Env env = Env();
auto res = Napi::BigInt::New(env, _tell_res);
_deferred.Resolve(res);
Expand Down
278 changes: 198 additions & 80 deletions src/sdk/namespace_fs.js

Large diffs are not rendered by default.

17 changes: 17 additions & 0 deletions src/test/system_tests/test_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,22 @@ function get_new_buckets_path_by_test_env(new_buckets_full_path, new_buckets_dir
return is_nc_coretest ? path.join(new_buckets_full_path, new_buckets_dir) : new_buckets_dir;
}

function make_dummy_object_sdk() {
return {
requesting_account: {
force_md5_etag: false,
nsfs_account_config: {
uid: process.getuid(),
gid: process.getgid(),
}
},
abort_controller: new AbortController(),
throw_if_aborted() {
if (this.abort_controller.signal.aborted) throw new Error('request aborted signal');
}
};
}

/**
* write_manual_config_file writes config file directly to the file system without using config FS
* used for creating backward compatibility tests, invalid config files etc
Expand Down Expand Up @@ -525,6 +541,7 @@ exports.delete_fs_user_by_platform = delete_fs_user_by_platform;
exports.set_path_permissions_and_owner = set_path_permissions_and_owner;
exports.set_nc_config_dir_in_config = set_nc_config_dir_in_config;
exports.generate_anon_s3_client = generate_anon_s3_client;
exports.make_dummy_object_sdk = make_dummy_object_sdk;
exports.TMP_PATH = TMP_PATH;
exports.is_nc_coretest = is_nc_coretest;
exports.generate_nsfs_account = generate_nsfs_account;
Expand Down
175 changes: 0 additions & 175 deletions src/test/unit_tests/jest_tests/test_list_object.test.js

This file was deleted.

Loading

0 comments on commit 2c43a85

Please sign in to comment.