Skip to content

Fix flaky test #96

@chirino

Description

@chirino

Looks like we might have to review the thread safety. Noticed the CI failure:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running io.roastedroot.proxywasm.jaxrs.example.tests.HttpCallTest
Jun 03, 2025 5:27:49 PM org.glassfish.jersey.message.internal.MessagingBinders$EnabledProvidersBinder bindToBinder
WARNING: A class jakarta.activation.DataSource for a default provider MessageBodyWriter<jakarta.activation.DataSource> was not found. The provider is not available.
Jun 03, 2025 5:27:49 PM org.glassfish.jersey.server.wadl.WadlFeature configure
WARNING: JAX-B API not found . WADL feature is disabled.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v9.Java9 (file:/Users/runner/.m2/repository/org/apache/groovy/groovy/4.0.22/groovy-4.0.22.jar) to constructor java.lang.AssertionError(java.lang.String)
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v9.Java9
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
panic: invalid context id on proxy_on_response_headers

goroutine 1 [running]:
github.com/proxy-wasm/proxy-wasm-go-sdk/proxywasm/internal.proxyOnResponseHeaders(0x2, 0xe, 0x0)
	/go/pkg/mod/github.com/proxy-wasm/[email protected]/proxywasm/internal/abi_callback_l7.go:70 +0x11
Jun 03, 2025 5:27:55 PM org.glassfish.jersey.server.ServerRuntime$Responder process
SEVERE: Error occurred when processing a response created from an already mapped exception.
Jun 03, 2025 5:27:55 PM org.glassfish.jersey.server.ServerRuntime$Responder process
WARNING: An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper.
org.glassfish.jersey.server.internal.process.MappableException: com.dylibso.chicory.runtime.TrapException: Trapped on unreachable instruction
	at org.glassfish.jersey.server.ContainerFilteringStage$ResponseFilterStage.apply(ContainerFilteringStage.java:174)
	at org.glassfish.jersey.server.ContainerFilteringStage$ResponseFilterStage.apply(ContainerFilteringStage.java:139)
	at org.glassfish.jersey.process.internal.Stages.process(Stages.java:147)
	at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:396)
	at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:450)
	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:282)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266)
	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253)
	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696)
	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:397)
	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:349)
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358)
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312)
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:529)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1580)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1381)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1553)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
	at org.eclipse.jetty.server.Server.handle(Server.java:563)
	at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.dylibso.chicory.runtime.TrapException: Trapped on unreachable instruction
	at com.dylibso.chicory.$gen.CompiledMachineShaded.throwTrapException(Shaded.java:187)
	at com.dylibso.chicory.$gen.CompiledMachineFuncGroup_0.func_1281(Unknown Source)
	at com.dylibso.chicory.$gen.CompiledMachineFuncGroup_0.func_646(Unknown Source)
	at com.dylibso.chicory.$gen.CompiledMachineFuncGroup_0.func_1219(Unknown Source)
	at com.dylibso.chicory.$gen.CompiledMachineFuncGroup_0.func_1750(Unknown Source)
	at com.dylibso.chicory.$gen.CompiledMachineFuncGroup_0.func_1789(Unknown Source)
	at com.dylibso.chicory.$gen.CompiledMachineFuncGroup_0.call_1789(Unknown Source)
	at com.dylibso.chicory.$gen.CompiledMachineDispatch_0.call_dispatch_0(Unknown Source)
	at com.dylibso.chicory.$gen.CompiledMachineMachineCall.call(Unknown Source)
	at com.dylibso.chicory.$gen.CompiledMachine.call(wasm)
	at com.dylibso.chicory.runtime.Instance$Exports.lambda$function$0(Instance.java:214)
	at io.roastedroot.proxywasm.internal.ABI.proxyOnResponseHeaders(ABI.java:1230)
	at io.roastedroot.proxywasm.internal.HttpContext.callOnResponseHeaders(HttpContext.java:36)
	at io.roastedroot.proxywasm.jaxrs.ProxyWasmFilter.filter(ProxyWasmFilter.java:[258](https://github.com/roastedroot/proxy-wasm-java-host/actions/runs/15423840134/job/43405677268#step:4:259))
	at io.roastedroot.proxywasm.jaxrs.ProxyWasmFilter.filter(ProxyWasmFilter.java:239)
	at org.glassfish.jersey.server.ContainerFilteringStage$ResponseFilterStage.apply(ContainerFilteringStage.java:172)
	... 43 more

panic: invalid context id on proxy_on_response_headers
fatal error: panic during malloc
panic during panic

goroutine 1 gp=0x4001c0 m=0 mp=0x194920 [running]:
runtime.throw({0x35742, 0x13})
	/usr/local/go/src/runtime/panic.go:1101 +0x3 fp=0x43eda8 sp=0x43ed80 pc=0x14ad0003
panic({0x14840, 0x5baf0})
	/usr/local/go/src/runtime/panic.go:763 +0x4d fp=0x43ee50 sp=0x43eda8 pc=0x14a8004d
github.com/proxy-wasm/proxy-wasm-go-sdk/proxywasm/internal.proxyOnResponseHeaders(0x2, 0x2, 0x0)
	/go/pkg/mod/github.com/proxy-wasm/[email protected]/proxywasm/internal/abi_callback_l7.go:70 +0x11 fp=0x43ee80 sp=0x43ee50 pc=0x16bb0011
proxy_on_response_headers()
	<autogenerated>:1 +0x1 fp=0x43eea0 sp=0x43ee80 pc=0x16e20001
runtime.crash(...)
	/usr/local/go/src/runtime/os_wasm.go:100
runtime.fatalpanic(0x43ef10)
	/usr/local/go/src/runtime/panic.go:1328 +0x6 fp=0x43eee8 sp=0x43eea0 pc=0x126b0006
panic({0x14840, 0x5baf0})
	/usr/local/go/src/runtime/panic.go:811 +0x23 fp=0x43ef90 sp=0x43eee8 pc=0x14a80023
github.com/proxy-wasm/proxy-wasm-go-sdk/proxywasm/internal.proxyOnResponseHeaders(0x2, 0xe, 0x0)
	/go/pkg/mod/github.com/proxy-wasm/[email protected]/proxywasm/internal/abi_callback_l7.go:70 +0x11 fp=0x43efc0 sp=0x43ef90 pc=0x16bb0011
proxy_on_response_headers()
	<autogenerated>:1 +0x1 fp=0x43efe0 sp=0x43efc0 pc=0x16e20001
runtime.goexit({})
	/usr/local/go/src/runtime/asm_wasm.s:434 +0x1 fp=0x43efe8 sp=0x43efe0 pc=0x150f0001

goroutine 2 gp=0x400380 m=nil [force gc (idle)]:
runtime.gopark(0x3cda0, 0x1937d0, 0x11, 0xa, 0x1)
	/usr/local/go/src/runtime/proc.go:435 +0x22 fp=0x42efb0 sp=0x42ef88 pc=0x14ae0022
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:441
runtime.forcegchelper()
	/usr/local/go/src/runtime/proc.go:348 +0x1b fp=0x42efe0 sp=0x42efb0 pc=0x128a001b
runtime.goexit({})
	/usr/local/go/src/runtime/asm_wasm.s:434 +0x1 fp=0x42efe8 sp=0x42efe0 pc=0x150f0001
created by runtime.init.6 in goroutine 1
	/usr/local/go/src/runtime/proc.go:336 +0x2

goroutine 3 gp=0x400540 m=nil [GC sweep wait]:
runtime.gopark(0x3cda0, 0x193920, 0xc, 0x9, 0x1)
	/usr/local/go/src/runtime/proc.go:435 +0x22 fp=0x42f790 sp=0x42f768 pc=0x14ae0022
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:441
runtime.bgsweep(0x432000)
	/usr/local/go/src/runtime/mgcsweep.go:276 +0xc fp=0x42f7d0 sp=0x42f790 pc=0x11aa000c
runtime.gcenable.gowrap1()
	/usr/local/go/src/runtime/mgc.go:204 +0x2 fp=0x42f7e0 sp=0x42f7d0 pc=0x112e0002
runtime.goexit({})
	/usr/local/go/src/runtime/asm_wasm.s:434 +0x1 fp=0x42f7e8 sp=0x42f7e0 pc=0x150f0001
created by runtime.gcenable in goroutine 1
	/usr/local/go/src/runtime/mgc.go:204 +0x6

goroutine 4 gp=0x400700 m=nil [GC scavenge wait]:
runtime.gopark(0x3cda0, 0x193b40, 0xd, 0xa, 0x2)
	/usr/local/go/src/runtime/proc.go:435 +0x22 fp=0x42ff80 sp=0x42ff58 pc=0x14ae0022
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:441
runtime.(*scavengerState).park(0x193b40)
	/usr/local/go/src/runtime/mgcscavenge.go:425 +0xc fp=0x42ffa8 sp=0x42ff80 pc=0x1188000c
runtime.bgscavenge(0x432000)
	/usr/local/go/src/runtime/mgcscavenge.go:653 +0x4 fp=0x42ffd0 sp=0x42ffa8 pc=0x118d0004
runtime.gcenable.gowrap2()
	/usr/local/go/src/runtime/mgc.go:205 +0x2 fp=0x42ffe0 sp=0x42ffd0 pc=0x112d0002
runtime.goexit({})
	/usr/local/go/src/runtime/asm_wasm.s:434 +0x1 fp=0x42ffe8 sp=0x42ffe0 pc=0x150f0001
created by runtime.gcenable in goroutine 1
	/usr/local/go/src/runtime/mgc.go:205 +0xa

goroutine 5 gp=0x4008c0 m=nil [runnable]:
runtime.runfinq()
	/usr/local/go/src/runtime/mfinal.go:179 fp=0x42e7e0 sp=0x42e7d8 pc=0x11240000
runtime.goexit({})
	/usr/local/go/src/runtime/asm_wasm.s:434 +0x1 fp=0x42e7e8 sp=0x42e7e0 pc=0x150f0001
created by runtime.createfing in goroutine 1
	/usr/local/go/src/runtime/mfinal.go:166 +0xc
fatal error: unlock of unlocked lock
stack trace unavailable
Jun 03, 2025 5:27:57 PM org.glassfish.jersey.server.wadl.WadlFeature configure
WARNING: JAX-B API not found . WADL feature is disabled.
Error:  Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 14.38 s <<< FAILURE! -- in io.roastedroot.proxywasm.jaxrs.example.tests.HttpCallTest
Error:  io.roastedroot.proxywasm.jaxrs.example.tests.HttpCallTest.httpCallTestsAndFFI -- Time elapsed: 11.09 s <<< FAILURE!
java.lang.AssertionError: 
1 expectation failed.
Expected status code <200> but was <500>.

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:73)
	at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:60)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:86)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:[263](https://github.com/roastedroot/proxy-wasm-java-host/actions/runs/15423840134/job/43405677268#step:4:264))
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:277)
	at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure.validate(ResponseSpecificationImpl.groovy:512)
	at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure$validate$1.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
	at io.restassured.internal.ResponseSpecificationImpl.validateResponseIfRequired(ResponseSpecificationImpl.groovy:696)
	at io.restassured.internal.ResponseSpecificationImpl.this$2$validateResponseIfRequired(ResponseSpecificationImpl.groovy)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:198)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:62)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185)
	at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:135)
	at io.restassured.specification.ResponseSpecification$statusCode$0.callCurrent(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185)
	at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:143)
	at io.restassured.internal.ValidatableResponseOptionsImpl.statusCode(ValidatableResponseOptionsImpl.java:89)
	at io.roastedroot.proxywasm.jaxrs.example.tests.HttpCallTest.httpCallTestsAndFFI(HttpCallTest.java:28)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)

[INFO] Running io.roastedroot.proxywasm.jaxrs.example.tests.HeadersTest
Jun 03, 2025 5:28:00 PM org.glassfish.jersey.server.wadl.WadlFeature configure
WARNING: JAX-B API not found . WADL feature is disabled.
Jun 03, 2025 5:28:03 PM org.glassfish.jersey.server.wadl.WadlFeature configure
WARNING: JAX-B API not found . WADL feature is disabled.
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.456 s -- in io.roastedroot.proxywasm.jaxrs.example.tests.HeadersTest
[INFO] Running io.roastedroot.proxywasm.jaxrs.example.tests.FFITest
Jun 03, 2025 5:28:07 PM org.glassfish.jersey.server.wadl.WadlFeature configure
WARNING: JAX-B API not found . WADL feature is disabled.
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.[291](https://github.com/roastedroot/proxy-wasm-java-host/actions/runs/15423840134/job/43405677268#step:4:292) s -- in io.roastedroot.proxywasm.jaxrs.example.tests.FFITest
[INFO] Running io.roastedroot.proxywasm.jaxrs.example.tests.TickTest
Jun 03, 2025 5:28:11 PM org.glassfish.jersey.server.wadl.WadlFeature configure
WARNING: JAX-B API not found . WADL feature is disabled.
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.217 s -- in io.roastedroot.proxywasm.jaxrs.example.tests.TickTest
[INFO] 
[INFO] Results:
[INFO] 
Error:  Failures: 
Error:    HttpCallTest.httpCallTestsAndFFI:28 1 expectation failed.
Expected status code <200> but was <500>.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions