puniverse / comsat

Fibers and actors for web development
docs.paralleluniverse.co/comsat
Other
598 stars 103 forks source link

Fiber blocking methods throwing "Uninstrumented Method" warning in Dropwizard + jOOQ #94

Open sirsavary opened 7 years ago

sirsavary commented 7 years ago

The application is running with the Quasar java agent and the verifyinstrumentation flag. Any and all fiber blocking methods (tested both Strand.sleep and Fiber.sleep) or comsat-jOOQ related stuff throws errors. I have verified that the datasource instance is wrapped and the main application class is extending FiberApplication. The request itself is running in a fiber (verified with Strand.currentStrand).

UsersResource.kt

@Path("/users")
@Produces(MediaType.TEXT_PLAIN)
class UsersResource {
    @GET
    @Timed
    @Throws(SuspendExecution::class)
    fun sayHello(): String {
        DSL.using(Main.dataSource, SQLDialect.DEFAULT).use { ctx ->
            UsersDao(ctx.configuration()).insert(Users(1, "username", "password"))
            return "ok"
        }
    }
}

Error

WARNING: Uninstrumented methods (marked '**') or call-sites (marked '!!') detected on the call stack: 
    at co.paralleluniverse.common.util.ExtendedStackTrace.here (ExtendedStackTrace.java:44 bci: 8)
    at co.paralleluniverse.fibers.Fiber.checkInstrumentation (Fiber.java:1613 bci: 0)
    at co.paralleluniverse.fibers.Fiber.verifySuspend (Fiber.java:1586 bci: 6)
    at co.paralleluniverse.fibers.FiberAsync.run (FiberAsync.java:118 bci: 92)
    at co.paralleluniverse.fibers.FiberAsync.runBlocking (FiberAsync.java:409 bci: 113)
    at co.paralleluniverse.fibers.jdbc.JDBCFiberAsync.exec (JDBCFiberAsync.java:29 bci: 119)
    at co.paralleluniverse.fibers.jdbc.FiberDataSource.getConnection (FiberDataSource.java:76 bci: 97)
    at co.paralleluniverse.fibers.jdbc.FiberDataSource.getConnection (FiberDataSource.java:35 bci: 1) (optimized)
    at org.jooq.impl.DataSourceConnectionProvider.acquire) (DataSourceConnectionProvider.java:86 bci: 4) **
    at org.jooq.impl.DefaultExecuteContext.connection (DefaultExecuteContext.java:582 bci: 38) **
    at org.jooq.impl.AbstractQuery.execute (AbstractQuery.java:316 bci: 337) !! (instrumented suspendable calls at: [])
    at org.jooq.impl.TableRecordImpl.storeInsert0 (TableRecordImpl.java:198 bci: 73) **
    at org.jooq.impl.TableRecordImpl$1.operate (TableRecordImpl.java:169 bci: 13) **
    at org.jooq.impl.RecordDelegate.operate (RecordDelegate.java:128 bci: 491)
    at org.jooq.impl.TableRecordImpl.storeInsert (TableRecordImpl.java:165 bci: 25) **
    at org.jooq.impl.TableRecordImpl.insert (TableRecordImpl.java:153 bci: 2) **
    at org.jooq.impl.TableRecordImpl.insert (TableRecordImpl.java:148 bci: 11) **
    at org.jooq.impl.DAOImpl.insert (DAOImpl.java:166 bci: 62) **
    at org.jooq.impl.DAOImpl.insert (DAOImpl.java:147 bci: 5) **
    at me.sirsavary.resources.UsersResource.sayHello (UsersResource.kt:23 bci: 154) !! (instrumented suspendable calls at: [])
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62 bci: 100)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43 bci: 6)
    at java.lang.reflect.Method.invoke (Method.java:498 bci: 56)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke (ResourceMethodInvocationHandlerFactory.java:81 bci: 163)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run (AbstractJavaResourceMethodDispatcher.java:144 bci: 364)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke (AbstractJavaResourceMethodDispatcher.java:161 bci: 237)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch (JavaResourceMethodDispatcherProvider.java:205 bci: 165)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch (AbstractJavaResourceMethodDispatcher.java:99 bci: 5) (optimized)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke (ResourceMethodInvoker.java:389 bci: 170)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:347 bci: 280)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:102 bci: 5) (optimized)
    at org.glassfish.jersey.server.ServerRuntime$2.run (ServerRuntime.java:326 bci: 385)
    at org.glassfish.jersey.internal.Errors$1.call (Errors.java:271 bci: 76)
    at org.glassfish.jersey.internal.Errors$1.call (Errors.java:267 bci: 1) (optimized)
    at org.glassfish.jersey.internal.Errors.process (Errors.java:315 bci: 170)
    at org.glassfish.jersey.internal.Errors.process (Errors.java:297 bci: 113)
    at org.glassfish.jersey.internal.Errors.process (Errors.java:267 bci: 106)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope (RequestScope.java:317 bci: 249)
    at org.glassfish.jersey.server.ServerRuntime.process (ServerRuntime.java:305 bci: 449)
    at org.glassfish.jersey.server.ApplicationHandler.handle (ApplicationHandler.java:1154 bci: 113)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl (WebComponent.java:473 bci: 293)
    at org.glassfish.jersey.servlet.WebComponent.service (WebComponent.java:427 bci: 6) (optimized)
    at org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:388 bci: 230)
    at org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:341 bci: 571)
    at org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:228 bci: 226)
    at co.paralleluniverse.fibers.dropwizard.FiberServletContainer.service (FiberServletContainer.java:89 bci: 136)
    at co.paralleluniverse.fibers.servlet.FiberHttpServlet.exec0 (FiberHttpServlet.java:228 bci: 19) **
    at co.paralleluniverse.fibers.servlet.FiberHttpServlet.exec (FiberHttpServlet.java:203 bci: 13) **
    at co.paralleluniverse.fibers.servlet.FiberHttpServlet$ServletSuspendableRunnable.run (FiberHttpServlet.java:176 bci: 144)
    at co.paralleluniverse.strands.SuspendableUtils$VoidSuspendableCallable.run (SuspendableUtils.java:44 bci: 4)
    at co.paralleluniverse.strands.SuspendableUtils$VoidSuspendableCallable.run (SuspendableUtils.java:32 bci: 1)
    at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1019 bci: 11)
    at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1014 bci: 1)

This is using Dropwizard v1.1.0, Quasar v0.72, and Comsat v0.7.0.

I can provide more information if needed.