最近我的Undertow应用程序触发了Cloud Run报告以下内容:
Container Sandbox Limitation: Unsupported syscall setsockopt(0x13,0x1,0xa,0x3e05747fe5a0,0x4,0xfc1abc10). Please, refer to https://gvisor.dev/c/linux/amd64/setsockopt for more information.
我已经对它进行了strace,看起来Undertow正在发送启用带外内联(SO_OOBINLINE)的套接字选项。 我已经在配置中明确告诉它不要这样做(两种方法),但仍然发生了。 在Cloud Run中使用Undertow似乎是一个合理的用例,但如果没有更多关于Undertow使用带外内联的信息以及gVisor为什么不支持它的洞察力,我将无法确定哪个程序是不合理的。是Undertow做了其他Web服务器没有做的事情,还是gVisor过于不成熟,无法处理这种特定的套接字功能?也许gVisor将来会支持它,我只需要等待吗?
def main(args: Array[String]): Unit = {
val server = Undertow.builder
.addHttpListener("8080", "0.0.0.0")
.setHandler(defaultHandler)
.setSocketOption[java.lang.Boolean](XnioOptions.TCP_OOB_INLINE, false)
.setWorkerOption[java.lang.Boolean](XnioOptions.TCP_OOB_INLINE, false)
.build
server.start()
}