Code Refactor | Remove Lambda/func_services#9057
Conversation
295c214 to
b3f3177
Compare
b3f3177 to
489d89f
Compare
WalkthroughThis change removes all code, APIs, schemas, endpoints, triggers, and tests related to serverless function (Lambda-like) support and bucket lambda triggers from the codebase. All function management, invocation, statistics, and trigger dispatching logic are deleted, along with associated tests, schemas, SDKs, and migration scripts. Bucket and object APIs, schemas, and services are updated to eliminate all references to lambda triggers and functions. Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant API
participant Server
participant Agent
%% Old flow for function invocation and trigger dispatch (now removed)
Client->>API: Invoke function or perform object operation
API->>Server: RPC call (invoke_func or dispatch_triggers)
Server->>Agent: RPC call (func_node_api.invoke_func)
Agent->>Agent: Execute function (child process)
Agent->>Server: Return result/error
Server->>API: Return result/error
API->>Client: Respond with result/error
%% Old flow for bucket trigger (now removed)
Client->>API: Upload/Delete object
API->>Server: Object operation
Server->>Server: Check for triggers
Server->>Server: Dispatch triggers if needed
Server->>Agent: Invoke lambda function(s)
Agent->>Server: Return trigger results
Note: The above diagrams represent flows that have been entirely removed by this change. Suggested reviewers
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
npm error Exit handler never called! ✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Actionable comments posted: 0
🔭 Outside diff range comments (1)
src/sdk/namespace_merge.js (1)
154-167:⚠️ Potential issueException list lost – benign “NO_SUCH_OBJECT” can now abort the whole delete call
_ns_map(..)used here omits theEXCEPT_REASONSlist, so if a namespace returns
NO_SUCH_OBJECTthe helper treats it as a hard failure and throws, short-circuiting
the request.
Previously these errors were filtered out.Add the list back to keep previous semantics:
-const head_res = await this._ns_map(ns => P.map(/* … */)); +const head_res = await this._ns_map( + ns => P.map(/* … */), + EXCEPT_REASONS +);
🧹 Nitpick comments (2)
src/sdk/namespace_merge.js (1)
170-174: Drop unused parameter to quiet dead-code noise
total_objectsis passed into_merge_multiple_delete_responsesbut never read.
Remove it to avoid misleading future readers:-const merged_res = this._merge_multiple_delete_responses({ - head_res, - deleted_res, - total_objects: params.objects.length -}); +const merged_res = this._merge_multiple_delete_responses({ + head_res, + deleted_res, +});src/server/notifications/dispatcher.js (1)
52-68: Remove the redundantselfaliasInside an
asyncmethod you can directly usethis; retainingconst self = this;
adds noise and confuses static-analysis:-async activity(item) { - const self = this; +async activity(item) {and later:
-const logitem = await self._resolve_activity_item(item, l); -self.send_syslog(JSON.stringify(logitem)); +const logitem = await this._resolve_activity_item(item, l); +this.send_syslog(JSON.stringify(logitem));🧰 Tools
🪛 Biome (1.9.4)
[error] 53-53: This aliasing of this is unnecessary.
Arrow functions inherits
thisfrom their enclosing scope.
Safe fix: Use this instead of an alias.(lint/complexity/noUselessThisAlias)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (57)
src/agent/agent.js(1 hunks)src/agent/func_services/func_node.js(0 hunks)src/agent/func_services/func_proc.js(0 hunks)src/api/api.js(0 hunks)src/api/bucket_api.js(0 hunks)src/api/func_api.js(0 hunks)src/api/func_node_api.js(0 hunks)src/api/object_api.js(0 hunks)src/api/system_api.js(0 hunks)src/endpoint/endpoint.js(1 hunks)src/endpoint/lambda/lambda_errors.js(0 hunks)src/endpoint/lambda/lambda_rest.js(0 hunks)src/endpoint/lambda/lambda_utils.js(0 hunks)src/endpoint/lambda/ops/lambda_create_func.js(0 hunks)src/endpoint/lambda/ops/lambda_delete_func.js(0 hunks)src/endpoint/lambda/ops/lambda_get_func.js(0 hunks)src/endpoint/lambda/ops/lambda_invoke_func.js(0 hunks)src/endpoint/lambda/ops/lambda_list_funcs.js(0 hunks)src/sdk/func_sdk.js(0 hunks)src/sdk/namespace_cache.js(0 hunks)src/sdk/namespace_merge.js(1 hunks)src/sdk/namespace_nb.js(0 hunks)src/sdk/nb.d.ts(0 hunks)src/sdk/object_sdk.js(0 hunks)src/server/func_services/func_indexes.js(0 hunks)src/server/func_services/func_schema.js(0 hunks)src/server/func_services/func_server.js(0 hunks)src/server/func_services/func_stats_indexes.js(0 hunks)src/server/func_services/func_stats_schema.js(0 hunks)src/server/func_services/func_stats_store.js(0 hunks)src/server/func_services/func_store.js(0 hunks)src/server/md_server.js(0 hunks)src/server/notifications/dispatcher.js(2 hunks)src/server/object_services/events_dispatcher.js(0 hunks)src/server/object_services/object_server.js(0 hunks)src/server/server_rpc.js(0 hunks)src/server/system_services/account_server.js(0 hunks)src/server/system_services/bucket_server.js(1 hunks)src/server/system_services/pool_server.js(0 hunks)src/server/system_services/schemas/bucket_schema.js(0 hunks)src/server/system_services/system_server.js(0 hunks)src/server/web_server.js(0 hunks)src/test/framework/system_tests_list.js(0 hunks)src/test/lambda/create_backup_file_func.js(0 hunks)src/test/lambda/delete_backup_file_func.js(0 hunks)src/test/lambda/denial_of_service_func.js(0 hunks)src/test/lambda/dos_event_sample.json(0 hunks)src/test/lambda/test_lambda.sh(0 hunks)src/test/lambda/word_count_func.js(0 hunks)src/test/system_tests/mongodb_defaults.js(0 hunks)src/test/system_tests/sanity_build_test.js(0 hunks)src/test/system_tests/test_bucket_lambda_triggers.js(0 hunks)src/test/unit_tests/coretest.js(0 hunks)src/test/unit_tests/test_namespace_cache.js(0 hunks)src/test/unit_tests/test_system_servers.js(0 hunks)src/tools/mongodb_bucket_blow.js(0 hunks)src/upgrade/migration_to_postgres.js(0 hunks)
💤 Files with no reviewable changes (52)
- src/tools/mongodb_bucket_blow.js
- src/server/web_server.js
- src/test/system_tests/mongodb_defaults.js
- src/test/lambda/dos_event_sample.json
- src/test/framework/system_tests_list.js
- src/api/object_api.js
- src/server/server_rpc.js
- src/test/unit_tests/coretest.js
- src/server/md_server.js
- src/test/unit_tests/test_namespace_cache.js
- src/server/system_services/account_server.js
- src/sdk/nb.d.ts
- src/test/system_tests/sanity_build_test.js
- src/endpoint/lambda/ops/lambda_delete_func.js
- src/api/api.js
- src/test/lambda/create_backup_file_func.js
- src/server/system_services/pool_server.js
- src/api/func_node_api.js
- src/server/func_services/func_stats_schema.js
- src/server/func_services/func_indexes.js
- src/api/system_api.js
- src/endpoint/lambda/ops/lambda_list_funcs.js
- src/server/func_services/func_stats_indexes.js
- src/test/lambda/delete_backup_file_func.js
- src/server/system_services/system_server.js
- src/server/system_services/schemas/bucket_schema.js
- src/endpoint/lambda/lambda_utils.js
- src/endpoint/lambda/ops/lambda_invoke_func.js
- src/test/lambda/test_lambda.sh
- src/server/object_services/events_dispatcher.js
- src/test/unit_tests/test_system_servers.js
- src/endpoint/lambda/ops/lambda_get_func.js
- src/server/object_services/object_server.js
- src/upgrade/migration_to_postgres.js
- src/sdk/func_sdk.js
- src/endpoint/lambda/lambda_rest.js
- src/endpoint/lambda/ops/lambda_create_func.js
- src/sdk/namespace_cache.js
- src/sdk/namespace_nb.js
- src/server/func_services/func_stats_store.js
- src/server/func_services/func_schema.js
- src/test/lambda/denial_of_service_func.js
- src/test/system_tests/test_bucket_lambda_triggers.js
- src/server/func_services/func_store.js
- src/test/lambda/word_count_func.js
- src/agent/func_services/func_proc.js
- src/api/bucket_api.js
- src/api/func_api.js
- src/server/func_services/func_server.js
- src/agent/func_services/func_node.js
- src/endpoint/lambda/lambda_errors.js
- src/sdk/object_sdk.js
🧰 Additional context used
🪛 Biome (1.9.4)
src/server/notifications/dispatcher.js
[error] 53-53: This aliasing of this is unnecessary.
Arrow functions inherits this from their enclosing scope.
Safe fix: Use this instead of an alias.
(lint/complexity/noUselessThisAlias)
[error] 203-203: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: build-noobaa-image
- GitHub Check: run-jest-unit-tests
- GitHub Check: run-package-lock-validation
🔇 Additional comments (4)
src/server/system_services/bucket_server.js (1)
2086-2092: No functional changeOnly a trailing-newline diff here – nothing to review.
src/server/notifications/dispatcher.js (1)
154-206: Potential race: async populate helpers are not awaited
populate_nodes()andpopulate_objects()look like async helpers (their siblings
return promises elsewhere). They’re invoked withoutawait, yet fields they are
supposed to populate are read immediately afterwards (log_item.node,log_item.obj),
which can lead to empty data orundefineddereferences under load.-nodes_client.instance().populate_nodes(...); -MDStore.instance().populate_objects(...); +await nodes_client.instance().populate_nodes(...); +await MDStore.instance().populate_objects(...);Please verify that these helpers are indeed asynchronous; if they are synchronous
no change is needed.🧰 Tools
🪛 Biome (1.9.4)
[error] 203-203: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
src/agent/agent.js (1)
592-602: Removedfunc_node_apifrom the allow-list – change is coherent with feature removal
_authenticate_agent_apinow only whitelistsblock_store_api.
Given that all Lambda/func services were deleted, this tightening is expected and correct. No functional or security regressions spotted here.src/endpoint/endpoint.js (1)
297-305:Details
❓ Verification inconclusive
Lambda routing clause deleted; please verify no stale references remain
With the
/2015-03-31/functionsbranch gone, requests to the former Lambda API will now fall through to the generic S3 handler and ultimately 404—consistent with the complete removal of the feature.
As a quick sanity check, search the codebase for any leftover hard-coded Lambda paths that might now be dead code:If this returns nothing, the routing cleanup is complete.
🏁 Script executed:
#!/bin/bash # Find any remaining references to the old Lambda REST path rg -n "/2015-03-31/functions"Length of output: 29
Let’s double-check with a fixed-string search to ensure no stray references remain:
🏁 Script executed:
#!/bin/bash # Literal search for the Lambda REST path rg -F "/2015-03-31/functions" -nLength of output: 32
Cleanup Verified: No Lambda routes detected; please confirm manually
Automated searches using both plain and fixed-string ripgrep returned no occurrences of
/2015-03-31/functions. As a sanity check, please perform a quick manual review (e.g., search your IDE or run a broader grep) to ensure no stale Lambda endpoints remain.
489d89f to
6692a93
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
src/server/notifications/dispatcher.js (1)
202-203: Leverage optional chaining for cleaner null-checks- l.node.pool = record && record.name; + l.node.pool = record?.name;🧰 Tools
🪛 Biome (1.9.4)
[error] 203-203: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (57)
src/agent/agent.js(1 hunks)src/agent/func_services/func_node.js(0 hunks)src/agent/func_services/func_proc.js(0 hunks)src/api/api.js(0 hunks)src/api/bucket_api.js(0 hunks)src/api/func_api.js(0 hunks)src/api/func_node_api.js(0 hunks)src/api/object_api.js(0 hunks)src/api/system_api.js(0 hunks)src/endpoint/endpoint.js(1 hunks)src/endpoint/lambda/lambda_errors.js(0 hunks)src/endpoint/lambda/lambda_rest.js(0 hunks)src/endpoint/lambda/lambda_utils.js(0 hunks)src/endpoint/lambda/ops/lambda_create_func.js(0 hunks)src/endpoint/lambda/ops/lambda_delete_func.js(0 hunks)src/endpoint/lambda/ops/lambda_get_func.js(0 hunks)src/endpoint/lambda/ops/lambda_invoke_func.js(0 hunks)src/endpoint/lambda/ops/lambda_list_funcs.js(0 hunks)src/sdk/func_sdk.js(0 hunks)src/sdk/namespace_cache.js(0 hunks)src/sdk/namespace_merge.js(1 hunks)src/sdk/namespace_nb.js(0 hunks)src/sdk/nb.d.ts(0 hunks)src/sdk/object_sdk.js(0 hunks)src/server/func_services/func_indexes.js(0 hunks)src/server/func_services/func_schema.js(0 hunks)src/server/func_services/func_server.js(0 hunks)src/server/func_services/func_stats_indexes.js(0 hunks)src/server/func_services/func_stats_schema.js(0 hunks)src/server/func_services/func_stats_store.js(0 hunks)src/server/func_services/func_store.js(0 hunks)src/server/md_server.js(0 hunks)src/server/notifications/dispatcher.js(4 hunks)src/server/object_services/events_dispatcher.js(0 hunks)src/server/object_services/object_server.js(0 hunks)src/server/server_rpc.js(0 hunks)src/server/system_services/account_server.js(0 hunks)src/server/system_services/bucket_server.js(1 hunks)src/server/system_services/pool_server.js(0 hunks)src/server/system_services/schemas/bucket_schema.js(0 hunks)src/server/system_services/system_server.js(0 hunks)src/server/web_server.js(0 hunks)src/test/framework/system_tests_list.js(0 hunks)src/test/lambda/create_backup_file_func.js(0 hunks)src/test/lambda/delete_backup_file_func.js(0 hunks)src/test/lambda/denial_of_service_func.js(0 hunks)src/test/lambda/dos_event_sample.json(0 hunks)src/test/lambda/test_lambda.sh(0 hunks)src/test/lambda/word_count_func.js(0 hunks)src/test/system_tests/mongodb_defaults.js(0 hunks)src/test/system_tests/sanity_build_test.js(0 hunks)src/test/system_tests/test_bucket_lambda_triggers.js(0 hunks)src/test/unit_tests/coretest.js(0 hunks)src/test/unit_tests/test_namespace_cache.js(0 hunks)src/test/unit_tests/test_system_servers.js(0 hunks)src/tools/mongodb_bucket_blow.js(0 hunks)src/upgrade/migration_to_postgres.js(0 hunks)
💤 Files with no reviewable changes (52)
- src/tools/mongodb_bucket_blow.js
- src/server/web_server.js
- src/test/framework/system_tests_list.js
- src/sdk/nb.d.ts
- src/test/unit_tests/coretest.js
- src/server/server_rpc.js
- src/server/md_server.js
- src/api/api.js
- src/endpoint/lambda/ops/lambda_delete_func.js
- src/test/lambda/dos_event_sample.json
- src/server/func_services/func_indexes.js
- src/test/unit_tests/test_system_servers.js
- src/endpoint/lambda/ops/lambda_list_funcs.js
- src/server/system_services/account_server.js
- src/test/system_tests/sanity_build_test.js
- src/test/unit_tests/test_namespace_cache.js
- src/test/lambda/test_lambda.sh
- src/api/system_api.js
- src/endpoint/lambda/ops/lambda_create_func.js
- src/server/func_services/func_stats_schema.js
- src/server/system_services/system_server.js
- src/test/lambda/create_backup_file_func.js
- src/endpoint/lambda/ops/lambda_invoke_func.js
- src/api/func_node_api.js
- src/endpoint/lambda/ops/lambda_get_func.js
- src/server/func_services/func_stats_indexes.js
- src/sdk/func_sdk.js
- src/server/func_services/func_schema.js
- src/sdk/object_sdk.js
- src/endpoint/lambda/lambda_utils.js
- src/test/system_tests/mongodb_defaults.js
- src/test/lambda/denial_of_service_func.js
- src/sdk/namespace_nb.js
- src/api/object_api.js
- src/agent/func_services/func_proc.js
- src/test/lambda/delete_backup_file_func.js
- src/server/system_services/schemas/bucket_schema.js
- src/test/lambda/word_count_func.js
- src/sdk/namespace_cache.js
- src/server/object_services/events_dispatcher.js
- src/upgrade/migration_to_postgres.js
- src/server/func_services/func_stats_store.js
- src/server/system_services/pool_server.js
- src/agent/func_services/func_node.js
- src/api/func_api.js
- src/endpoint/lambda/lambda_rest.js
- src/server/func_services/func_store.js
- src/server/object_services/object_server.js
- src/endpoint/lambda/lambda_errors.js
- src/test/system_tests/test_bucket_lambda_triggers.js
- src/api/bucket_api.js
- src/server/func_services/func_server.js
🚧 Files skipped from review as they are similar to previous changes (4)
- src/agent/agent.js
- src/sdk/namespace_merge.js
- src/endpoint/endpoint.js
- src/server/system_services/bucket_server.js
🧰 Additional context used
🪛 Biome (1.9.4)
src/server/notifications/dispatcher.js
[error] 53-53: This aliasing of this is unnecessary.
Arrow functions inherits this from their enclosing scope.
Safe fix: Use this instead of an alias.
(lint/complexity/noUselessThisAlias)
[error] 203-203: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: ceph-s3-tests / ceph-s3-tests
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
src/server/notifications/dispatcher.js (1)
73-75: Drop the redundantselfaliasInside an
asyncmethod,thisis lexically stable; assigningconst self = thisis obsolete and clutters the code.
Prefer capturingthiswith arrow functions or simply usethisdirectly.- const self = this;If you keep the
functioncallback in theP.map, convert it to an arrow orbind(this).
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
src/server/notifications/dispatcher.js(3 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
src/server/notifications/dispatcher.js
[error] 206-206: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: run-package-lock-validation
- GitHub Check: build-noobaa-image
- GitHub Check: run-jest-unit-tests
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (3)
src/server/notifications/dispatcher.js (3)
71-96: Remove debug dump & drop theselfaliasThe
$-prefixedconsole.logintroduces log noise and potential PII leakage.
Since you already converted surrounding code toasync/await, you can switchP.mapto anasyncarrow and accessthisdirectly—no need for theselfworkaround.- const self = this; ... - const activity_logs = await P.map(logs, async function(log_item) { + const activity_logs = await P.map(logs, async (log_item) => { ... - return await self._resolve_activity_item(log_item, l); + return this._resolve_activity_item(log_item, l); }); - console.log("$$$$$$$$$$$$", activity_logs); + // removed noisy dump
52-69:⚠️ Potential issueBroken syslog payload & leftover debug prints
send_syslog()expects{ description }, but a plain string is supplied, soitem.descriptionbecomesundefinedand nothing meaningful is logged.- The
console.logdump is noisy in production logs._resolve_activity_item()currently returns the raw DB document, not the enriched object, so even if the payload shape were fixed the content would still be wrong.- const logitem = await this._resolve_activity_item(item, l); - console.log("#####################", logitem); - this.send_syslog(JSON.stringify(logitem)); + const enriched = await this._resolve_activity_item(item, l); + this.send_syslog({ description: JSON.stringify(enriched) });Failing to emit the correct description deprives external SIEM/Syslog of vital audit data.
Please fix before merging.
232-235:⚠️ Potential issue
_resolve_activity_item()returns the wrong objectThe function mutates
lbut returnslog_item, defeating the enrichment effort and breaking callers (seeactivity()above).- return log_item; + return l;This issue has been raised previously but is still unresolved—please address it to avoid leaking internal DB shapes.
🧹 Nitpick comments (1)
src/server/notifications/event_server.js (1)
18-20: Avoid the unnecessaryawaitinside areturnstatement
return awaitprovides no benefit here—the promise will already be awaited by the caller ofread_activity_log. Dropping the extraawaitremoves one micro-tick without changing semantics.async function read_activity_log(req) { - return await Dispatcher.instance().read_activity_log(req); + return Dispatcher.instance().read_activity_log(req); }
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
src/server/notifications/dispatcher.js(3 hunks)src/server/notifications/event_server.js(1 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
src/server/notifications/dispatcher.js
[error] 204-204: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: run-package-lock-validation
- GitHub Check: build-noobaa-image
- GitHub Check: run-jest-unit-tests
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
src/server/notifications/dispatcher.js (1)
66-68:send_syslog()is still called with a string instead of{ description }The earlier review already pointed out that
send_syslog()expects an object whosedescriptionfield is forwarded to the native sys-log call.
Passing a raw string keepsitem.descriptionundefined, so nothing meaningful is logged.
🧹 Nitpick comments (3)
src/server/notifications/dispatcher.js (3)
70-73: Drop the unnecessaryselfaliasInside an
asyncmethodthisis perfectly safe to use with the arrow callback below.
The extra alias clutters the scope.- const self = this;
80-96: Left-over debugconsole.logshould be removedVerbose dumps such as
console.log("$$$$$$$$$$$$", activity_logs);leak internal structures to stdout and may flood logs in production.
- console.log("$$$$$$$$$$$$", activity_logs);
218-223: Possible crash whenl.pool.nameis undefined
l.pool.name.split('#')[0]assumesnameis always present.
Safeguard with optional chaining or a nullish coalesce:- l.pool.name = l.pool.name.split('#')[0]; + l.pool.name = l.pool?.name?.split('#')[0] || '';This eliminates the risk of
TypeError: Cannot read property 'split' of undefined.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
src/api/events_api.js(0 hunks)src/server/notifications/dispatcher.js(3 hunks)
💤 Files with no reviewable changes (1)
- src/api/events_api.js
🧰 Additional context used
🪛 Biome (1.9.4)
src/server/notifications/dispatcher.js
[error] 204-204: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: run-package-lock-validation
- GitHub Check: run-jest-unit-tests
- GitHub Check: build-noobaa-image
| async _resolve_activity_item(log_item, l) { | ||
| await nodes_client.instance().populate_nodes(log_item.system, log_item, 'node', 'node', NODE_POPULATE_FIELDS); | ||
| await MDStore.instance().populate_objects(log_item, 'obj', OBJECT_POPULATE_FIELDS); | ||
| if (log_item.node) { | ||
| const { name, pool, os_info, host_seq } = log_item.node; | ||
| l.node = {}; | ||
| if (name) { | ||
| l.node.linkable = true; | ||
| l.node.name = `${os_info.hostname}#${host_seq}`; | ||
| l.node.pool = pool; | ||
|
|
||
| } else { | ||
| l.node.linkable = false; | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
name extracted but never used – pick the right value for l.node.name
You destructure { name, pool, os_info, host_seq } yet ignore name when building the display string:
l.node.name = `${os_info.hostname}#${host_seq}`;If the DB record already carries the canonical node name, prefer it and fall back to the hostname/seq pair only when absent:
- l.node.name = `${os_info.hostname}#${host_seq}`;
+ l.node.name = name || `${os_info.hostname}#${host_seq}`;🤖 Prompt for AI Agents
In src/server/notifications/dispatcher.js around lines 155 to 168, the variable
`name` is destructured from `log_item.node` but not used when setting
`l.node.name`. Update the assignment to use `name` if it exists; otherwise, fall
back to the current format using `os_info.hostname` and `host_seq`. This ensures
the canonical node name is preferred when available.
a283c52 to
74c4680
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (3)
src/server/notifications/dispatcher.js (3)
70-81:selfalias & regular function are redundantThe surrounding method is already
async; switching to an arrow function lets you drop theself = thisworkaround entirely and keepsthislexical.(This has been pointed out in earlier reviews.)
158-163: Node display name ignores the canonicalnamefield
nameis destructured but not used; the UI therefore shows the fallbackhostname#seqeven when a proper node name exists.- l.node.name = `${os_info.hostname}#${host_seq}`; + l.node.name = name || `${os_info.hostname}#${host_seq}`;This was previously suggested and remains unresolved.
60-67:⚠️ Potential issueWrong payload type passed to
send_syslog()
send_syslog()expects an object whosedescriptionfield is forwarded to the native syslog call, but a plain string is supplied, sodescriptionbecomesundefinedin native code.- const logitem = await this._resolve_activity_item(item, l); - this.send_syslog(JSON.stringify(logitem)); + const logitem = await this._resolve_activity_item(item, l); + this.send_syslog({ description: JSON.stringify(logitem) });Same issue was flagged in previous reviews but is still unfixed.
Leaving it breaks external log ingestion.
🧹 Nitpick comments (1)
src/server/notifications/dispatcher.js (1)
192-203: Minor: simplify null-checks with optional chainingThe pattern
const { record } = await …; l.node.pool = record && record.name;can be reduced tol.node.pool = record?.name;improving clarity.🧰 Tools
🪛 Biome (1.9.4)
[error] 203-203: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (59)
src/agent/agent.js(1 hunks)src/agent/func_services/func_node.js(0 hunks)src/agent/func_services/func_proc.js(0 hunks)src/api/api.js(0 hunks)src/api/bucket_api.js(0 hunks)src/api/events_api.js(0 hunks)src/api/func_api.js(0 hunks)src/api/func_node_api.js(0 hunks)src/api/object_api.js(0 hunks)src/api/system_api.js(0 hunks)src/endpoint/endpoint.js(1 hunks)src/endpoint/lambda/lambda_errors.js(0 hunks)src/endpoint/lambda/lambda_rest.js(0 hunks)src/endpoint/lambda/lambda_utils.js(0 hunks)src/endpoint/lambda/ops/lambda_create_func.js(0 hunks)src/endpoint/lambda/ops/lambda_delete_func.js(0 hunks)src/endpoint/lambda/ops/lambda_get_func.js(0 hunks)src/endpoint/lambda/ops/lambda_invoke_func.js(0 hunks)src/endpoint/lambda/ops/lambda_list_funcs.js(0 hunks)src/sdk/func_sdk.js(0 hunks)src/sdk/namespace_cache.js(0 hunks)src/sdk/namespace_merge.js(1 hunks)src/sdk/namespace_nb.js(0 hunks)src/sdk/nb.d.ts(0 hunks)src/sdk/object_sdk.js(0 hunks)src/server/func_services/func_indexes.js(0 hunks)src/server/func_services/func_schema.js(0 hunks)src/server/func_services/func_server.js(0 hunks)src/server/func_services/func_stats_indexes.js(0 hunks)src/server/func_services/func_stats_schema.js(0 hunks)src/server/func_services/func_stats_store.js(0 hunks)src/server/func_services/func_store.js(0 hunks)src/server/md_server.js(0 hunks)src/server/notifications/dispatcher.js(3 hunks)src/server/notifications/event_server.js(1 hunks)src/server/object_services/events_dispatcher.js(0 hunks)src/server/object_services/object_server.js(0 hunks)src/server/server_rpc.js(0 hunks)src/server/system_services/account_server.js(0 hunks)src/server/system_services/bucket_server.js(1 hunks)src/server/system_services/pool_server.js(0 hunks)src/server/system_services/schemas/bucket_schema.js(0 hunks)src/server/system_services/system_server.js(0 hunks)src/server/web_server.js(0 hunks)src/test/framework/system_tests_list.js(0 hunks)src/test/lambda/create_backup_file_func.js(0 hunks)src/test/lambda/delete_backup_file_func.js(0 hunks)src/test/lambda/denial_of_service_func.js(0 hunks)src/test/lambda/dos_event_sample.json(0 hunks)src/test/lambda/test_lambda.sh(0 hunks)src/test/lambda/word_count_func.js(0 hunks)src/test/system_tests/mongodb_defaults.js(0 hunks)src/test/system_tests/sanity_build_test.js(0 hunks)src/test/system_tests/test_bucket_lambda_triggers.js(0 hunks)src/test/unit_tests/coretest.js(0 hunks)src/test/unit_tests/test_namespace_cache.js(0 hunks)src/test/unit_tests/test_system_servers.js(0 hunks)src/tools/mongodb_bucket_blow.js(0 hunks)src/upgrade/migration_to_postgres.js(0 hunks)
💤 Files with no reviewable changes (53)
- src/tools/mongodb_bucket_blow.js
- src/sdk/nb.d.ts
- src/server/web_server.js
- src/api/api.js
- src/endpoint/lambda/ops/lambda_delete_func.js
- src/test/framework/system_tests_list.js
- src/test/system_tests/mongodb_defaults.js
- src/server/server_rpc.js
- src/test/unit_tests/coretest.js
- src/server/md_server.js
- src/server/func_services/func_indexes.js
- src/test/lambda/dos_event_sample.json
- src/test/unit_tests/test_system_servers.js
- src/server/system_services/pool_server.js
- src/test/lambda/delete_backup_file_func.js
- src/test/system_tests/sanity_build_test.js
- src/test/unit_tests/test_namespace_cache.js
- src/endpoint/lambda/ops/lambda_invoke_func.js
- src/test/lambda/test_lambda.sh
- src/api/events_api.js
- src/server/system_services/account_server.js
- src/server/system_services/schemas/bucket_schema.js
- src/api/object_api.js
- src/endpoint/lambda/ops/lambda_list_funcs.js
- src/test/lambda/create_backup_file_func.js
- src/api/system_api.js
- src/server/func_services/func_stats_indexes.js
- src/server/func_services/func_schema.js
- src/server/object_services/object_server.js
- src/server/func_services/func_stats_schema.js
- src/endpoint/lambda/lambda_utils.js
- src/endpoint/lambda/ops/lambda_get_func.js
- src/sdk/object_sdk.js
- src/sdk/func_sdk.js
- src/server/system_services/system_server.js
- src/endpoint/lambda/ops/lambda_create_func.js
- src/test/lambda/word_count_func.js
- src/agent/func_services/func_proc.js
- src/server/object_services/events_dispatcher.js
- src/test/system_tests/test_bucket_lambda_triggers.js
- src/sdk/namespace_nb.js
- src/endpoint/lambda/lambda_rest.js
- src/sdk/namespace_cache.js
- src/upgrade/migration_to_postgres.js
- src/server/func_services/func_stats_store.js
- src/test/lambda/denial_of_service_func.js
- src/api/func_api.js
- src/api/bucket_api.js
- src/api/func_node_api.js
- src/agent/func_services/func_node.js
- src/server/func_services/func_store.js
- src/server/func_services/func_server.js
- src/endpoint/lambda/lambda_errors.js
🚧 Files skipped from review as they are similar to previous changes (5)
- src/server/notifications/event_server.js
- src/agent/agent.js
- src/sdk/namespace_merge.js
- src/server/system_services/bucket_server.js
- src/endpoint/endpoint.js
🧰 Additional context used
🪛 Biome (1.9.4)
src/server/notifications/dispatcher.js
[error] 203-203: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: build-noobaa-image
- GitHub Check: run-package-lock-validation
- GitHub Check: run-jest-unit-tests
74c4680 to
dafdc32
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
src/server/notifications/dispatcher.js (2)
160-165: Nodenameextracted but discarded – repeat of previous feedback
The destructurednameisn’t used; UI still shows the host/seq fallback even when the canonical node name exists.
See earlier review comment (lines 155-168) – please apply.
56-69:⚠️ Potential issue
send_syslog()is fed a plain string –descriptionbecomesundefined
send_syslog()extractsitem.description, but a raw string is supplied, so the native syslog call receives “NooBaa undefined”.
Re-introduces the exact bug fixed in commit 74c4680.- const logitem = await this._resolve_activity_item(activity_doc, l); - this.send_syslog(JSON.stringify(logitem)); + await this._resolve_activity_item(activity_doc, l); + // Native syslog expects an object with a `description` field + this.send_syslog({ description: JSON.stringify(l) });
🧹 Nitpick comments (1)
src/server/notifications/dispatcher.js (1)
71-96: Redundantself = this; switch to lexicalthisfor clarityThe arrow function inside
P.mapalready closes overthis, so the extra alias is unnecessary noise.- const self = this; ... - const logs = await P.map(activity_log, async function(log_item) { + const logs = await P.map(activity_log, async (log_item) => { ... - await self._resolve_activity_item(log_item, l); + await this._resolve_activity_item(log_item, l);
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (59)
src/agent/agent.js(1 hunks)src/agent/func_services/func_node.js(0 hunks)src/agent/func_services/func_proc.js(0 hunks)src/api/api.js(0 hunks)src/api/bucket_api.js(0 hunks)src/api/events_api.js(0 hunks)src/api/func_api.js(0 hunks)src/api/func_node_api.js(0 hunks)src/api/object_api.js(0 hunks)src/api/system_api.js(0 hunks)src/endpoint/endpoint.js(1 hunks)src/endpoint/lambda/lambda_errors.js(0 hunks)src/endpoint/lambda/lambda_rest.js(0 hunks)src/endpoint/lambda/lambda_utils.js(0 hunks)src/endpoint/lambda/ops/lambda_create_func.js(0 hunks)src/endpoint/lambda/ops/lambda_delete_func.js(0 hunks)src/endpoint/lambda/ops/lambda_get_func.js(0 hunks)src/endpoint/lambda/ops/lambda_invoke_func.js(0 hunks)src/endpoint/lambda/ops/lambda_list_funcs.js(0 hunks)src/sdk/func_sdk.js(0 hunks)src/sdk/namespace_cache.js(0 hunks)src/sdk/namespace_merge.js(1 hunks)src/sdk/namespace_nb.js(0 hunks)src/sdk/nb.d.ts(0 hunks)src/sdk/object_sdk.js(0 hunks)src/server/func_services/func_indexes.js(0 hunks)src/server/func_services/func_schema.js(0 hunks)src/server/func_services/func_server.js(0 hunks)src/server/func_services/func_stats_indexes.js(0 hunks)src/server/func_services/func_stats_schema.js(0 hunks)src/server/func_services/func_stats_store.js(0 hunks)src/server/func_services/func_store.js(0 hunks)src/server/md_server.js(0 hunks)src/server/notifications/dispatcher.js(3 hunks)src/server/notifications/event_server.js(1 hunks)src/server/object_services/events_dispatcher.js(0 hunks)src/server/object_services/object_server.js(0 hunks)src/server/server_rpc.js(0 hunks)src/server/system_services/account_server.js(0 hunks)src/server/system_services/bucket_server.js(1 hunks)src/server/system_services/pool_server.js(0 hunks)src/server/system_services/schemas/bucket_schema.js(0 hunks)src/server/system_services/system_server.js(0 hunks)src/server/web_server.js(0 hunks)src/test/framework/system_tests_list.js(0 hunks)src/test/lambda/create_backup_file_func.js(0 hunks)src/test/lambda/delete_backup_file_func.js(0 hunks)src/test/lambda/denial_of_service_func.js(0 hunks)src/test/lambda/dos_event_sample.json(0 hunks)src/test/lambda/test_lambda.sh(0 hunks)src/test/lambda/word_count_func.js(0 hunks)src/test/system_tests/mongodb_defaults.js(0 hunks)src/test/system_tests/sanity_build_test.js(0 hunks)src/test/system_tests/test_bucket_lambda_triggers.js(0 hunks)src/test/unit_tests/coretest.js(0 hunks)src/test/unit_tests/test_namespace_cache.js(0 hunks)src/test/unit_tests/test_system_servers.js(0 hunks)src/tools/mongodb_bucket_blow.js(0 hunks)src/upgrade/migration_to_postgres.js(0 hunks)
💤 Files with no reviewable changes (53)
- src/tools/mongodb_bucket_blow.js
- src/server/web_server.js
- src/test/framework/system_tests_list.js
- src/test/unit_tests/coretest.js
- src/sdk/nb.d.ts
- src/endpoint/lambda/ops/lambda_list_funcs.js
- src/test/lambda/dos_event_sample.json
- src/api/object_api.js
- src/api/api.js
- src/server/server_rpc.js
- src/server/func_services/func_indexes.js
- src/server/md_server.js
- src/server/system_services/account_server.js
- src/test/system_tests/mongodb_defaults.js
- src/server/func_services/func_stats_schema.js
- src/server/func_services/func_stats_indexes.js
- src/test/unit_tests/test_namespace_cache.js
- src/endpoint/lambda/ops/lambda_invoke_func.js
- src/test/lambda/create_backup_file_func.js
- src/api/system_api.js
- src/endpoint/lambda/lambda_utils.js
- src/server/system_services/pool_server.js
- src/endpoint/lambda/ops/lambda_get_func.js
- src/test/system_tests/sanity_build_test.js
- src/test/unit_tests/test_system_servers.js
- src/test/lambda/delete_backup_file_func.js
- src/server/system_services/schemas/bucket_schema.js
- src/server/system_services/system_server.js
- src/endpoint/lambda/ops/lambda_create_func.js
- src/server/func_services/func_schema.js
- src/api/func_node_api.js
- src/sdk/namespace_nb.js
- src/sdk/object_sdk.js
- src/test/lambda/word_count_func.js
- src/test/lambda/denial_of_service_func.js
- src/agent/func_services/func_proc.js
- src/endpoint/lambda/ops/lambda_delete_func.js
- src/api/events_api.js
- src/sdk/namespace_cache.js
- src/endpoint/lambda/lambda_rest.js
- src/agent/func_services/func_node.js
- src/server/object_services/events_dispatcher.js
- src/test/lambda/test_lambda.sh
- src/api/func_api.js
- src/sdk/func_sdk.js
- src/upgrade/migration_to_postgres.js
- src/test/system_tests/test_bucket_lambda_triggers.js
- src/api/bucket_api.js
- src/server/func_services/func_store.js
- src/server/func_services/func_stats_store.js
- src/endpoint/lambda/lambda_errors.js
- src/server/func_services/func_server.js
- src/server/object_services/object_server.js
🚧 Files skipped from review as they are similar to previous changes (5)
- src/server/notifications/event_server.js
- src/agent/agent.js
- src/server/system_services/bucket_server.js
- src/sdk/namespace_merge.js
- src/endpoint/endpoint.js
🧰 Additional context used
🪛 Biome (1.9.4)
src/server/notifications/dispatcher.js
[error] 204-204: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: build-noobaa-image
- GitHub Check: run-jest-unit-tests
- GitHub Check: run-package-lock-validation
| const bucket = await system_store.data.get_by_id(bucket_id); | ||
| if (bucket) { | ||
| l.obj.bucket = bucket.name; | ||
| } else { | ||
| const { record } = await system_store.data.get_by_id_include_deleted(bucket_id, 'buckets'); | ||
| l.obj.bucket = record.name; | ||
| l.obj.linkable = false; | ||
| } | ||
| } |
There was a problem hiding this comment.
Potential crash when bucket is missing from both active & deleted sets
get_by_id_include_deleted() may return null; destructuring const { record } = null will throw.
- const { record } = await system_store.data.get_by_id_include_deleted(bucket_id, 'buckets');
- l.obj.bucket = record.name;
- l.obj.linkable = false;
+ const bucketInfo = await system_store.data.get_by_id_include_deleted(bucket_id, 'buckets');
+ if (bucketInfo) {
+ l.obj.bucket = bucketInfo.record.name;
+ l.obj.linkable = false;
+ } else {
+ l.obj.bucket = `<unknown:${bucket_id}>`;
+ l.obj.linkable = false;
+ }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| const bucket = await system_store.data.get_by_id(bucket_id); | |
| if (bucket) { | |
| l.obj.bucket = bucket.name; | |
| } else { | |
| const { record } = await system_store.data.get_by_id_include_deleted(bucket_id, 'buckets'); | |
| l.obj.bucket = record.name; | |
| l.obj.linkable = false; | |
| } | |
| } | |
| const bucket = await system_store.data.get_by_id(bucket_id); | |
| if (bucket) { | |
| l.obj.bucket = bucket.name; | |
| } else { | |
| - const { record } = await system_store.data.get_by_id_include_deleted(bucket_id, 'buckets'); | |
| - l.obj.bucket = record.name; | |
| - l.obj.linkable = false; | |
| + const bucketInfo = await system_store.data.get_by_id_include_deleted(bucket_id, 'buckets'); | |
| + if (bucketInfo) { | |
| + l.obj.bucket = bucketInfo.record.name; | |
| + l.obj.linkable = false; | |
| + } else { | |
| + l.obj.bucket = `<unknown:${bucket_id}>`; | |
| + l.obj.linkable = false; | |
| + } | |
| } |
🤖 Prompt for AI Agents
In src/server/notifications/dispatcher.js around lines 176 to 184, the code
destructures `record` from the result of `get_by_id_include_deleted(bucket_id,
'buckets')` without checking if the result is null, which can cause a crash. To
fix this, first store the result in a variable, check if it is not null before
destructuring or accessing `record`, and handle the case where it is null to
avoid runtime errors.
Signed-off-by: naveenpaul1 <napaul@redhat.com>
dafdc32 to
4247c09
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (4)
src/server/notifications/dispatcher.js (4)
71-74: Redundantselfalias – stale pattern re-introducedInside an
asyncmethod you can directly usethis; the extraconst self = thisadds noise.- const self = this;
160-165: Prefer canonical node name when available
nameis extracted but ignored. Use it and fall back to
hostname#seqonly when absent.- l.node.name = `${os_info.hostname}#${host_seq}`; + l.node.name = name || `${os_info.hostname}#${host_seq}`;
52-69: Incorrect payload passed tosend_syslog()(again)
send_syslog()expects{ description }, but a plain string is supplied, so the
native call logsundefined.- this.send_syslog(JSON.stringify(logitem)); + this.send_syslog({ description: JSON.stringify(logitem) });
176-183: Potential crash when bucket record is missing
get_by_id_include_deleted()may returnnull; destructuringrecordwill
throw. Guard the call first:- const { record } = await system_store.data.get_by_id_include_deleted(bucket_id, 'buckets'); - l.obj.bucket = record.name; - l.obj.linkable = false; + const bucketInfo = await system_store.data.get_by_id_include_deleted(bucket_id, 'buckets'); + if (bucketInfo) { + l.obj.bucket = bucketInfo.record.name; + } else { + l.obj.bucket = `<unknown:${bucket_id}>`; + } + l.obj.linkable = false;
🧹 Nitpick comments (4)
src/sdk/namespace_merge.js (2)
163-180: Typo in accumulator variable name may confuse future readers
ns_conslusionis consistently miss-spelled – should bens_conclusion.
Renaming avoids “search & replace” misses later on.- let ns_conslusion; + let ns_conclusion; ... - if (ns_conslusion) { + if (ns_conclusion) { … - ns_conslusion[obj_index] = + ns_conclusion[obj_index] = this._pick_ns_obj_reply({ curr: ns_conclusion[obj_index], cand: ns_merged[obj_index] }); ... - ns_conslusion = ns_merged; + ns_conclusion = ns_merged;
185-193: Simplify undefined-check with optional chaining
_.isUndefined(res && res.err_code)is easy to mis-read and trips static-analysis.
Use optional-chaining (supported in the codebase) for clarity:- if (_.isUndefined(res && res.err_code)) { + if (_.isUndefined(res?.err_code)) {src/server/notifications/dispatcher.js (1)
203-206: Optional-chain keeps crash-free when pool lookup fails
const pool = await system_store.data.get_by_id(pool_id);may benull; the
next line dereferences.name. Either guard or use optional-chaining.- l.node.pool = pool.name; + l.node.pool = pool?.name;src/server/system_services/bucket_server.js (1)
2086-2092: Nit: extraneous blank line markerThe solitary change only adds a comment separator; no functional impact. If it
was accidental, feel free to drop it to keep history clean.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (59)
src/agent/agent.js(1 hunks)src/agent/func_services/func_node.js(0 hunks)src/agent/func_services/func_proc.js(0 hunks)src/api/api.js(0 hunks)src/api/bucket_api.js(0 hunks)src/api/events_api.js(0 hunks)src/api/func_api.js(0 hunks)src/api/func_node_api.js(0 hunks)src/api/object_api.js(0 hunks)src/api/system_api.js(0 hunks)src/endpoint/endpoint.js(1 hunks)src/endpoint/lambda/lambda_errors.js(0 hunks)src/endpoint/lambda/lambda_rest.js(0 hunks)src/endpoint/lambda/lambda_utils.js(0 hunks)src/endpoint/lambda/ops/lambda_create_func.js(0 hunks)src/endpoint/lambda/ops/lambda_delete_func.js(0 hunks)src/endpoint/lambda/ops/lambda_get_func.js(0 hunks)src/endpoint/lambda/ops/lambda_invoke_func.js(0 hunks)src/endpoint/lambda/ops/lambda_list_funcs.js(0 hunks)src/sdk/func_sdk.js(0 hunks)src/sdk/namespace_cache.js(0 hunks)src/sdk/namespace_merge.js(3 hunks)src/sdk/namespace_nb.js(0 hunks)src/sdk/nb.d.ts(0 hunks)src/sdk/object_sdk.js(0 hunks)src/server/func_services/func_indexes.js(0 hunks)src/server/func_services/func_schema.js(0 hunks)src/server/func_services/func_server.js(0 hunks)src/server/func_services/func_stats_indexes.js(0 hunks)src/server/func_services/func_stats_schema.js(0 hunks)src/server/func_services/func_stats_store.js(0 hunks)src/server/func_services/func_store.js(0 hunks)src/server/md_server.js(0 hunks)src/server/notifications/dispatcher.js(3 hunks)src/server/notifications/event_server.js(1 hunks)src/server/object_services/events_dispatcher.js(0 hunks)src/server/object_services/object_server.js(0 hunks)src/server/server_rpc.js(0 hunks)src/server/system_services/account_server.js(0 hunks)src/server/system_services/bucket_server.js(1 hunks)src/server/system_services/pool_server.js(0 hunks)src/server/system_services/schemas/bucket_schema.js(0 hunks)src/server/system_services/system_server.js(0 hunks)src/server/web_server.js(0 hunks)src/test/framework/system_tests_list.js(0 hunks)src/test/lambda/create_backup_file_func.js(0 hunks)src/test/lambda/delete_backup_file_func.js(0 hunks)src/test/lambda/denial_of_service_func.js(0 hunks)src/test/lambda/dos_event_sample.json(0 hunks)src/test/lambda/test_lambda.sh(0 hunks)src/test/lambda/word_count_func.js(0 hunks)src/test/system_tests/mongodb_defaults.js(0 hunks)src/test/system_tests/sanity_build_test.js(0 hunks)src/test/system_tests/test_bucket_lambda_triggers.js(0 hunks)src/test/unit_tests/coretest.js(0 hunks)src/test/unit_tests/test_namespace_cache.js(0 hunks)src/test/unit_tests/test_system_servers.js(0 hunks)src/tools/mongodb_bucket_blow.js(0 hunks)src/upgrade/migration_to_postgres.js(0 hunks)
💤 Files with no reviewable changes (53)
- src/tools/mongodb_bucket_blow.js
- src/test/unit_tests/coretest.js
- src/test/framework/system_tests_list.js
- src/server/web_server.js
- src/api/object_api.js
- src/server/server_rpc.js
- src/test/unit_tests/test_namespace_cache.js
- src/endpoint/lambda/ops/lambda_list_funcs.js
- src/test/system_tests/sanity_build_test.js
- src/test/lambda/dos_event_sample.json
- src/sdk/nb.d.ts
- src/api/events_api.js
- src/endpoint/lambda/ops/lambda_delete_func.js
- src/server/system_services/schemas/bucket_schema.js
- src/server/md_server.js
- src/test/system_tests/mongodb_defaults.js
- src/api/api.js
- src/server/system_services/account_server.js
- src/api/func_node_api.js
- src/test/lambda/delete_backup_file_func.js
- src/server/object_services/events_dispatcher.js
- src/api/system_api.js
- src/upgrade/migration_to_postgres.js
- src/server/func_services/func_indexes.js
- src/sdk/object_sdk.js
- src/sdk/namespace_cache.js
- src/test/unit_tests/test_system_servers.js
- src/server/func_services/func_stats_indexes.js
- src/endpoint/lambda/ops/lambda_create_func.js
- src/agent/func_services/func_proc.js
- src/endpoint/lambda/ops/lambda_invoke_func.js
- src/sdk/namespace_nb.js
- src/endpoint/lambda/ops/lambda_get_func.js
- src/server/func_services/func_schema.js
- src/server/func_services/func_stats_schema.js
- src/test/lambda/test_lambda.sh
- src/server/system_services/pool_server.js
- src/test/lambda/denial_of_service_func.js
- src/server/func_services/func_store.js
- src/endpoint/lambda/lambda_utils.js
- src/test/lambda/create_backup_file_func.js
- src/sdk/func_sdk.js
- src/test/system_tests/test_bucket_lambda_triggers.js
- src/endpoint/lambda/lambda_rest.js
- src/test/lambda/word_count_func.js
- src/server/object_services/object_server.js
- src/server/func_services/func_stats_store.js
- src/server/system_services/system_server.js
- src/api/func_api.js
- src/agent/func_services/func_node.js
- src/api/bucket_api.js
- src/endpoint/lambda/lambda_errors.js
- src/server/func_services/func_server.js
🚧 Files skipped from review as they are similar to previous changes (3)
- src/server/notifications/event_server.js
- src/endpoint/endpoint.js
- src/agent/agent.js
🧰 Additional context used
🪛 Biome (1.9.4)
src/sdk/namespace_merge.js
[error] 188-188: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
src/server/notifications/dispatcher.js
[error] 204-204: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
⏰ Context from checks skipped due to timeout of 90000ms (4)
- GitHub Check: build-noobaa-image
- GitHub Check: run-package-lock-validation
- GitHub Check: run-jest-unit-tests
- GitHub Check: Summary
Describe the Problem
Explain the Changes
Issues: Fixed #xxx / Gap #xxx
Testing Instructions:
Summary by CodeRabbit
Removals
Chores