首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TerminateExecution、IsExecutionTerminating和Clearing V8中断

TerminateExecution、IsExecutionTerminating和Clearing V8中断
EN

Stack Overflow用户
提问于 2022-08-09 13:28:15
回答 1查看 55关注 0票数 1

语境

plv8 javascript语言数据库的postgreSQL扩展使用V8隔离来计算javascript代码作为查询。当基于plv8 8的查询被取消时,信号处理代码将执行分离方法。这最终引发中断,将线程本地interrupt_flags设置为终止。假定,当隔离继续执行时,中断处理程序将抛出终止异常。稍后,语言扩展使用IsExecutionTerminating方法来确定隔离器是否收到了异常,并使用CancelTerminateExecution清除异常。

问题所在

但是,在某些情况下,在执行新的javascript查询之前,对TerminateExecution的调用是与隔离器的最后一次交互。在这种情况下,隔离仍然被中断,但是IsExecutionTerminating将返回false,因为中断。然后,当它开始执行下一个查询时,会抛出中断被处理。和异常,并且由于取消了先前的查询,当前查询将失败。

问题是

我对v8专家的问题是:在运行隔离程序中的js之前,有什么方法可以有效地清除中断吗?或者,是否有任何简单的方法来触发抛出的异常,以便在任何基于查询的代码之前取消异常?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-09 15:23:07

你试过无条件地打电话给CancelTerminateExecution吗?这应该能起作用。

(如果您愿意,您还可以在您的终端上跟踪TerminateExecution以前是否被调用过,但我认为CancelTerminateExecution太便宜了,根本不值得。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73292695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档