-
Notifications
You must be signed in to change notification settings - Fork 7.1k
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
feat: Collect usage metrics on license renewal (no-changelog) #7486
Conversation
Great PR! Please pay attention to the following items before merging: Files matching
Files matching
Make sure to check off this list before asking for review. |
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## master #7486 +/- ##
==========================================
- Coverage 33.56% 33.55% -0.02%
==========================================
Files 3399 3398 -1
Lines 207458 207603 +145
Branches 22425 22429 +4
==========================================
+ Hits 69632 69652 +20
- Misses 136698 136829 +131
+ Partials 1128 1122 -6
☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Only minor comments.
{ | ||
name: 'activeWorkflows', | ||
value: await Container.get(WorkflowRepository).count({ where: { active: true } }), | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Products can be configured to support the collection of usage metrics from consumers.
product.metrics
is an array of{name: string, type: 'counter' | 'gauge'}
objects
Why the difference between value
and type
? Are the docs outdated?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
product.metrics
refers to the metric definitions maintained in License Server, whereas the SDK's collectUsageMetrics()
callback expects an array of name / value pairs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Not very familiar with the setup.
Passing run #2553 ↗︎
Details:
Review all test suite changes for PR #7486 ↗︎ |
✅ All Cypress E2E specs passed |
|
✅ All Cypress E2E specs passed |
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
5056686
to
8f93a15
Compare
@@ -65,6 +69,7 @@ export class License { | |||
loadCertStr: async () => this.loadCertStr(), | |||
saveCertStr, | |||
deviceFingerprint: () => this.instanceSettings.instanceId, | |||
collectUsageMetrics, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm guessing this isn't going to be called frequently enough to try to optimize the DB calls made here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
collectUsageMetrics()
is only called prior license renewal, which happens once every 10 days by default. It is also triggered when n8n starts up and when the usage and plan page is opened, but probably not often enough to optimize DB calls 😄
✅ All Cypress E2E specs passed |
* master: (30 commits) 🚀 Release 1.14.0 (#7514) ci: Fix oclif manifest generation feat(Switch Node): Add support for infinite Switch outputs (#7499) 🚀 Release 1.13.0 (#7512) fix(core): Ensure nodes post-processors run in the correct order (#7500) feat(editor): Add PH tracking to event (#7511) fix(core): Fix workflow activation with history and workflow history for EE (no-changelog) (#7508) refactor(core): Make executions pruning more resilient (#7480) fix(Spreadsheet File Node): Fix include empty cells not working with v2 (#7505) fix(core): Create instance settings directory recursively (no-changelog) (#7506) fix(Microsoft SQL Node): Prevent SQL injection (#7467) refactor(core): Make pruning via lifecycle configuration in S3 mode mandatory (#7482) fix(core): Always derive `instanceId` from the encryption key (no-changlog) (#7501) fix(MQTT Trigger Node): Fix node causing a start up hang when active (#7498) feat: Collect usage metrics on license renewal (no-changelog) (#7486) fix(core): Fix `frontend.settings` external hook execution (#7496) fix(Redis Node): Fix adding sets data types (#7444) fix: Save new version of the workflow instead of the previous (no-changelog) (#7428) refactor(core): Abstract away InstanceSettings and `encryptionKey` into injectable services (no-changelog) (#7471) fix(Customer.io Node): Fix api endpoint when using EU region (#7485) ...
Got released with |
No description provided.