Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(core): Reduce logging overhead for levels that do not output #7479

Merged
merged 2 commits into from
Oct 20, 2023

Conversation

netroy
Copy link
Member

@netroy netroy commented Oct 20, 2023

all current logging calls execute callsites() to figure out what code tried to log. This happens even for logging methods that aren't supposed to create any output. Under moderate load, this can take up quite a lot of resources. This PR changes the logger to make all ignorable logging methods a No-Op.

In a small benchmark with a simple webhook, with log-level set to warn, and using ab -c 50 -n 500 http://localhost:5678/webhook/testing, these were the response times:

Before

Before

After

After

all current logging calls execute `callsites()` to figure out what code tried to log. This happens even for logging methods that aren't supposed to create any output.
Under moderate load, this can take up quite a lot of resources.
This PR changes the logger to make all ignorable logging methods a No-Op.
@n8n-assistant n8n-assistant bot added core Enhancement outside /nodes-base and /editor-ui n8n team Authored by the n8n team labels Oct 20, 2023
@github-actions
Copy link
Contributor

Great PR! Please pay attention to the following items before merging:

Files matching packages/**:

  • If fixing bug, added test to cover scenario.
  • If addressing forum or Github issue, added link to description.

Files matching packages/**/*.ts:

  • Added unit tests to cover new or updated functionality.

Make sure to check off this list before asking for review.

@netroy netroy requested a review from krynble October 20, 2023 14:41
@codecov
Copy link

codecov bot commented Oct 20, 2023

Codecov Report

Attention: 7 lines in your changes are missing coverage. Please review.

Comparison is base (0b42d1a) 33.55% compared to head (52b0b5e) 33.55%.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #7479      +/-   ##
==========================================
- Coverage   33.55%   33.55%   -0.01%     
==========================================
  Files        3398     3398              
  Lines      207577   207582       +5     
  Branches    22421    22419       -2     
==========================================
+ Hits        69649    69650       +1     
- Misses     136806   136810       +4     
  Partials     1122     1122              
Files Coverage Δ
packages/cli/src/Logger.ts 75.51% <71.42%> (-1.77%) ⬇️
packages/workflow/src/LoggerProxy.ts 10.52% <0.00%> (ø)

... and 2 files with indirect coverage changes

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@cypress
Copy link

cypress bot commented Oct 20, 2023

1 flaky test on run #2532 ↗︎

0 257 0 0 Flakiness 1

Details:

🌳 🖥️ browsers:node18.12.0-chrome107 🤖 netroy 🗃️ e2e/*
Project: n8n Commit: 52b0b5e5a1
Status: Passed Duration: 08:27 💡
Started: Oct 20, 2023 4:14 PM Ended: Oct 20, 2023 4:23 PM
Flakiness  cypress/e2e/18-user-management.cy.ts • 1 flaky test

View Output Video

Test Artifacts
User Management > should delete user and transfer their data Output Screenshots Video

Review all test suite changes for PR #7479 ↗︎

@github-actions
Copy link
Contributor

✅ All Cypress E2E specs passed

@github-actions
Copy link
Contributor

✅ All Cypress E2E specs passed

@netroy netroy merged commit 76c0481 into master Oct 20, 2023
67 of 68 checks passed
@netroy netroy deleted the noOp-logging branch October 20, 2023 16:26
netroy added a commit that referenced this pull request Oct 23, 2023
all current logging calls execute `callsites()` to figure out what code
tried to log. This happens even for logging methods that aren't supposed
to create any output. Under moderate load, this can take up quite a lot
of resources. This PR changes the logger to make all ignorable logging
methods a No-Op.

In a small benchmark with a simple webhook, with log-level set to
`warn`, and using `ab -c 50 -n 500
http://localhost:5678/webhook/testing`, these were the response times:

### Before

![Before](https://github.com/n8n-io/n8n/assets/196144/01680fd9-3d2a-4f7f-bb1c-5b03bd7d5bc3)

### After

![After](https://github.com/n8n-io/n8n/assets/196144/ccacb20a-48ca-455a-a8cb-098c9c0e352e)
@github-actions github-actions bot mentioned this pull request Oct 23, 2023
netroy added a commit that referenced this pull request Oct 23, 2023
## [1.11.2](https://github.com/n8n-io/n8n/compare/n8n@1.11.1...n8n@1.11.2)
(2023-10-23)


### Bug Fixes

* **core:** Handle gzip and deflate compressed request payloads
([#7461](#7461))
([f43ff71](f43ff71))
* **core:** Prevent false stalled jobs in queue mode from displaying as
errored ([#7435](#7435))
([465a952](465a952))
* **core:** Reduce logging overhead for levels that do not output
([#7479](#7479))
([010aa57](010aa57))
* **editor:** Allow importing the same workflow multiple times
([#7458](#7458))
([33e3df8](33e3df8)),
closes [#7457](#7457)
* **editor:** Fix canvas selection breaking after interacting with node
actions ([#7466](#7466))
([90ce8de](90ce8de))
* **editor:** Fix connections disappearing after reactivating canvas and
renaming a node ([#7483](#7483))
([b0bd0d8](b0bd0d8))
* **editor:** Open only one tab with plans page
([#7377](#7377))
([d14e9cb](d14e9cb))
* **Ldap Node:** Fix issue with connections not closing correctly
([#7432](#7432))
([60ca02e](60ca02e))
* **MySQL Node:** Resolve expressions in v1
([#7464](#7464))
([2b18909](2b18909))
* **TheHive 5 Node:** Observable encoding in alert > create fix
([#7450](#7450))
([b9547ad](b9547ad))

Co-authored-by: netroy <netroy@users.noreply.github.com>
@janober
Copy link
Member

janober commented Oct 23, 2023

Got released with n8n@1.11.2

netroy added a commit that referenced this pull request Oct 23, 2023
all current logging calls execute `callsites()` to figure out what code
tried to log. This happens even for logging methods that aren't supposed
to create any output. Under moderate load, this can take up quite a lot
of resources. This PR changes the logger to make all ignorable logging
methods a No-Op.

In a small benchmark with a simple webhook, with log-level set to
`warn`, and using `ab -c 50 -n 500
http://localhost:5678/webhook/testing`, these were the response times:

### Before

![Before](https://github.com/n8n-io/n8n/assets/196144/01680fd9-3d2a-4f7f-bb1c-5b03bd7d5bc3)

### After

![After](https://github.com/n8n-io/n8n/assets/196144/ccacb20a-48ca-455a-a8cb-098c9c0e352e)
@github-actions github-actions bot mentioned this pull request Oct 23, 2023
netroy added a commit that referenced this pull request Oct 23, 2023
## [1.12.1](https://github.com/n8n-io/n8n/compare/n8n@1.12.0...n8n@1.12.1)
(2023-10-23)


### Bug Fixes

* **core:** Do not return `inviteAcceptUrl` in response if email was
sent ([#7465](#7465))
([4a1f4da](4a1f4da))
* **core:** Handle gzip and deflate compressed request payloads
([#7461](#7461))
([75981fb](75981fb))
* **core:** Reduce logging overhead for levels that do not output
([#7479](#7479))
([4a1641d](4a1641d))
* **Customer.io Node:** Fix api endpoint when using EU region
([#7485](#7485))
([ea1b503](ea1b503)),
closes [#7484](#7484)
* **editor:** Allow importing the same workflow multiple times
([#7458](#7458))
([15e1737](15e1737)),
closes [#7457](#7457)
* **editor:** Fix canvas selection breaking after interacting with node
actions ([#7466](#7466))
([d84c367](d84c367))
* **editor:** Fix connections disappearing after reactivating canvas and
renaming a node ([#7483](#7483))
([368e3ee](368e3ee))
* **Google Sheets Node:** Append or update runs forever when without
column headers ([#7463](#7463))
([0d52490](0d52490))
* **MySQL Node:** Resolve expressions in v1
([#7464](#7464))
([70a10a9](70a10a9))

Co-authored-by: netroy <netroy@users.noreply.github.com>
@github-actions github-actions bot mentioned this pull request Oct 25, 2023
netroy added a commit that referenced this pull request Oct 25, 2023
# [1.13.0](https://github.com/n8n-io/n8n/compare/n8n@1.12.0...n8n@1.13.0)
(2023-10-25)


### Bug Fixes

* **core:** Do not return `inviteAcceptUrl` in response if email was
sent ([#7465](#7465))
([55c6a1b](55c6a1b))
* **core:** Ensure nodes post-processors run in the correct order
([#7500](#7500))
([6f45298](6f45298))
* **core:** Fix `frontend.settings` external hook execution
([#7496](#7496))
([774fe20](774fe20))
* **core:** Handle gzip and deflate compressed request payloads
([#7461](#7461))
([83762e0](83762e0))
* **core:** Reduce logging overhead for levels that do not output
([#7479](#7479))
([76c0481](76c0481))
* **Customer.io Node:** Fix api endpoint when using EU region
([#7485](#7485))
([519680c](519680c))
* **editor:** Allow importing the same workflow multiple times
([#7458](#7458))
([3c0a166](3c0a166))
* **editor:** Fix canvas selection breaking after interacting with node
actions ([#7466](#7466))
([bc47365](bc47365))
* **editor:** Fix connections disappearing after reactivating canvas and
renaming a node ([#7483](#7483))
([450e0cc](450e0cc))
* **Google Sheets Node:** Append or update runs forever when without
column headers ([#7463](#7463))
([ab6a9bb](ab6a9bb))
* **Microsoft SQL Node:** Prevent SQL injection
([#7467](#7467))
([a739245](a739245))
* **MQTT Trigger Node:** Fix node causing a start up hang when active
([#7498](#7498))
([baecb93](baecb93))
* **MySQL Node:** Resolve expressions in v1
([#7464](#7464))
([5c46bb0](5c46bb0))
* **Redis Node:** Fix adding sets data types
([#7444](#7444))
([4e66023](4e66023))
* **Spreadsheet File Node:** Fix include empty cells not working with v2
([#7505](#7505))
([05e6f2a](05e6f2a))


### Features

* **core:** Add support for oauth based service accounts with UM SMTP
([#7311](#7311))
([647372b](647372b))
* **editor:** Add PH tracking to event
([#7511](#7511))
([c47d27d](c47d27d))
* **Facebook Lead Ads Trigger Node:** Add Facebook Lead Ads Trigger Node
([#7113](#7113))
([ac814a9](ac814a9))
* **Ghost Node:** Add support for lexical format
([#7488](#7488))
([7b1973c](7b1973c))
* **RSS Feed Trigger Node:** Add RSS feed trigger node
([#7386](#7386))
([689360e](689360e))

Co-authored-by: netroy <netroy@users.noreply.github.com>
ivov added a commit that referenced this pull request Oct 1, 2024
Setting methods to no-op exists for performance reasons: #7479
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Enhancement outside /nodes-base and /editor-ui n8n team Authored by the n8n team Released
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants