You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Document that the ObjectWrap example code doesn't work for multi-context usage #711
After spending a day trying to debug why I had so many seemingly random issues with my code, I finally understood why: the object wrap example code is not compatible with a multi-context usage of the addon.
Explanation: this example set the constructor static member of the class to a reference of the constructor function but if the addon is loaded multiple time (with worker_threads for example), the value is overwritten by a new reference in the new context. That makes this reference unusable to create new instances of this wrapped class from other C++ code and makes any code wanting to use this reference in another context crash.
We should at least make sure there is a warning about this in the documentation. The best would be to provide a workaround with the new addon instance data support maybe.
I am seeing some errors with HandleScopes in an AsyncWorker's OnOk() when using worker_threads. Looking at similar issues across other repos, it seems the issue is 'context-aware addons', but being a node-addon-api addon (and therefore a N-API addon) I don't think I'm doing anything wrong as far as declaring the module.
I'm not sure if this is the same issue you are running into, but seems possible.
Activity
mhdawson commentedon May 6, 2020
@geekuillaume any chance you'd like to submit a PR to the docs to cover this?
markirish commentedon May 11, 2020
@geekuillaume what kind of errors were you seeing?
I am seeing some errors with
HandleScopes in anAsyncWorker'sOnOk()when usingworker_threads. Looking at similar issues across other repos, it seems the issue is 'context-aware addons', but being a node-addon-api addon (and therefore a N-API addon) I don't think I'm doing anything wrong as far as declaring the module.I'm not sure if this is the same issue you are running into, but seems possible.
doc: update ObjectWrap example
doc: update ObjectWrap example
doc: update ObjectWrap example
doc: update ObjectWrap example
doc: update ObjectWrap example
doc: update ObjectWrap example
doc: update ObjectWrap example
doc: update ObjectWrap example