Skip to content

Commit 0b05d95

Browse files
committed
more improvements
1 parent 681b64e commit 0b05d95

File tree

4 files changed

+24
-17
lines changed

4 files changed

+24
-17
lines changed

README.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,14 +112,15 @@ Send regular heartbeats:
112112
```ts
113113
import {
114114
registerThread,
115+
registerThreadStateCallback,
115116
threadPoll,
116117
} from "@sentry-internal/node-native-stacktrace";
117118

118-
// Register a global function called `__get_thread_state_callback__` that is called when
119-
// event loop is blocked to get the current thread state. This must return a serializable object.
120-
globalThis.__get_thread_state_callback__ = () => {
121-
return { some_property: "some_value" };
122-
};
119+
// Register a function that is called to get the thread state whenever stack traces are captured.
120+
// This must return a serializable object.
121+
registerThreadStateCallback(() => {
122+
return state.snapshot();
123+
});
123124

124125
// Register this thread
125126
registerThread();
@@ -165,8 +166,8 @@ setInterval(() => {
165166

166167
#### `registerThread(threadName?: string): void`
167168

168-
Registers the current thread for monitoring. Must be called from each thread you
169-
want to capture stack traces from.
169+
Registers the current thread for stack trace capture. Must be called from each
170+
thread you want to capture stack traces from.
170171

171172
- `threadName` (optional): Name for the thread. Defaults to the current thread
172173
ID.

src/index.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,15 @@ export function getThreadsLastSeen(): Record<string, number> {
212212
return native.getThreadsLastSeen();
213213
}
214214

215-
/**
216-
* Type for global object that may contain the callback.
217-
*/
218-
export type GlobalObjectWithCallback = {
215+
type GlobalObjectWithCallback = {
219216
__get_thread_state_callback__?: () => object | undefined;
220217
};
218+
219+
/**
220+
* Registers a callback function on the global object that the native module can call to get the current thread state.
221+
*/
222+
export function registerThreadStateCallback(callback: () => object | undefined): void {
223+
(globalThis as GlobalObjectWithCallback).__get_thread_state_callback__ = callback;
224+
}
225+
226+

test/stalled-disabled.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
const { Worker } = require('node:worker_threads');
22
const { longWork } = require('./long-work.js');
3-
const { registerThread, threadPoll } = require('@sentry-internal/node-native-stacktrace');
3+
const { registerThreadStateCallback, registerThread, threadPoll } = require('@sentry-internal/node-native-stacktrace');
44

5-
globalThis.__get_thread_state_callback__ = () => {
5+
registerThreadStateCallback(() => {
66
return { some_property: 'some_value' };
7-
}
7+
});
88

99
registerThread();
1010

test/stalled.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
const { Worker } = require('node:worker_threads');
22
const { longWork } = require('./long-work.js');
3-
const { registerThread, threadPoll } = require('@sentry-internal/node-native-stacktrace');
3+
const { registerThreadStateCallback, registerThread, threadPoll } = require('@sentry-internal/node-native-stacktrace');
44

5-
globalThis.__get_thread_state_callback__ = () => {
5+
registerThreadStateCallback(() => {
66
return { some_property: 'some_value' };
7-
}
7+
});
88

99
registerThread();
1010

0 commit comments

Comments
 (0)