Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proxies are not created in GraalVM #661

Open
juliuskrah opened this issue Mar 18, 2024 · 5 comments
Open

Proxies are not created in GraalVM #661

juliuskrah opened this issue Mar 18, 2024 · 5 comments

Comments

@juliuskrah
Copy link

Defining new classes at runtime is not supported

When running in native mode, mongock migration fails with the following exception:

2024-03-18T15:11:33.437+01:00 ERROR 39217 --- [           main] i.m.r.core.executor.MongockRunnerImpl    : Error in mongock process. ABORTED OPERATION

io.mongock.api.exception.MongockException: java.lang.UnsupportedOperationException: Defining new classes at runtime is not supported
	at io.mongock.runner.core.executor.MongockRunnerImpl.execute(MongockRunnerImpl.java:71) ~[na:na]
	at io.mongock.runner.springboot.base.MongockApplicationRunner.run(MongockApplicationRunner.java:18) ~[graphql-demo:na]
	at org.springframework.boot.SpringApplication.lambda$callRunner$4(SpringApplication.java:794) ~[graphql-demo:3.2.1]
	at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83) ~[na:na]
	at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[graphql-demo:6.1.2]
	at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88) ~[na:na]
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:806) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:794) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:782) ~[graphql-demo:3.2.1]
	at java.base@21/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na]
	at java.base@21/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na]
	at java.base@21/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[graphql-demo:na]
	at java.base@21/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[graphql-demo:na]
	at java.base@21/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[graphql-demo:na]
	at java.base@21/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na]
	at java.base@21/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[graphql-demo:na]
	at java.base@21/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[graphql-demo:na]
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:782) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:341) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347) ~[graphql-demo:3.2.1]
	at com.example.graph.ApplicationKt.main(Application.kt:16) ~[graphql-demo:na]
	at java.base@21/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH) ~[na:na]
Caused by: java.lang.UnsupportedOperationException: Defining new classes at runtime is not supported
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unimplemented(VMError.java:195) ~[na:na]
	at java.base@21/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:45) ~[graphql-demo:na]
	at javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:295) ~[na:na]
	at javassist.util.proxy.DefineClassHelper$Java11.defineClass(DefineClassHelper.java:48) ~[na:na]
	at javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:260) ~[na:na]
	at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:154) ~[na:na]
	at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:640) ~[na:na]
	at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:624) ~[na:na]
	at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:560) ~[na:na]
	at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:481) ~[na:na]
	at io.mongock.driver.api.lock.guard.proxy.LockGuardProxyFactory.createProxy(LockGuardProxyFactory.java:92) ~[na:na]
	at io.mongock.driver.api.lock.guard.proxy.LockGuardProxyFactory.getRawProxy(LockGuardProxyFactory.java:62) ~[na:na]
	at io.mongock.runner.core.executor.dependency.DependencyManager.getDependency(DependencyManager.java:52) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.dependency.DependencyManagerWithContext.getDependency(DependencyManagerWithContext.java:40) ~[na:na]
	at io.mongock.runner.core.executor.ChangeLogRuntimeImpl.getParameter(ChangeLogRuntimeImpl.java:120) ~[na:na]
	at io.mongock.runner.core.executor.ChangeLogRuntimeImpl.getInvokationParameters(ChangeLogRuntimeImpl.java:108) ~[na:na]
	at io.mongock.runner.core.executor.ChangeLogRuntimeImpl.getInstance(ChangeLogRuntimeImpl.java:92) ~[na:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.getChangeLogInstance(ChangeExecutorBase.java:140) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.processSingleChangeLog(ChangeExecutorBase.java:117) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.processChangeLogs(ChangeExecutorBase.java:107) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.lambda$processMigration$1(ChangeExecutorBase.java:101) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.NonTransactioner.executeInTransaction(NonTransactioner.java:17) ~[na:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.processMigration(ChangeExecutorBase.java:101) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.operation.migrate.MigrateExecutorBase.executeMigration(MigrateExecutorBase.java:66) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.operation.migrate.MigrateExecutorBase.executeMigration(MigrateExecutorBase.java:18) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.MongockRunnerImpl.execute(MongockRunnerImpl.java:57) ~[na:na]
	... 22 common frames omitted

PRIORITY

NORMAL

Version and environment

  • kotlin:1.9.21
  • Oracle GraalVM 21+35.1 (build 21+35-jvmci-23.1-b15)

Mongock

  • Mongock version
    • io.mongock:mongodb-reactive-driver:5.4.0
    • io.mongock:mongock-springboot:5.4.0
  • Modules involved(springboot, MongoDB)
  • How Mongock is used(builder and annotation approach)

Environment

  • Framework and libraries versions. (Spring, Spring data, MongoDB driver)
  • Infrastructure: Docker Compose.

Steps to Reproduce

Given the change unit class:

@ChangeUnit(id = "create-product-collection-202401151530", order = "202401151530", author = "Julius Krah")
class CreateProductCollectionChangeUnit202401151530(
    private val database: MongoDatabase,
    private val session: ClientSession,
    private val jackson: ObjectMapper
) {
    private val log: System.Logger = System.getLogger(CreateProductCollectionChangeUnit202401151530::class.simpleName, ResourceBundle.getBundle("messages.messages"))

    companion object {
        @JvmStatic
        val PRODUCT_COLLECTION_NAME = "products"
    }

    @BeforeExecution
    fun createProductCollection() {
        val bsonType = "bsonType"
        val description = "description"
        val schema: Bson = Document(mapOf(
            bsonType to "object",
            "title" to "Product Object validation",
            "required" to setOf("createdAt", "updatedAt", "createdBy", "updatedBy", "title"),
            "properties" to Document("title", Document(bsonType, "string").append(description, "'title' must be a string and is required"))
                .append("createdAt", Document(bsonType, "date").append(description, "'createdAt' must be a date and is required"))
                .append("updatedAt", Document(bsonType, "date").append(description, "'updatedAt' must be a date and is required"))
                .append("createdBy", Document(bsonType, "string").append(description, "'createdBy' must be a string and is required"))
                .append("updatedBy", Document(bsonType, "string").append(description, "'updatedBy' must be a string and is required"))
                .append("mediaUrls", Document(bsonType, "array").append("items", Document(bsonType, "string")))
        ))
        val validator: Bson = Filters.jsonSchema(schema)
        val validationOptions = ValidationOptions().validator(validator)
        val options = CreateCollectionOptions().validationOptions(validationOptions)
        val subscriber = MongoSubscriberSync<Void>()
        this.database.createCollection(this.session, PRODUCT_COLLECTION_NAME, options).subscribe(subscriber)
        subscriber.await()
    }

    @RollbackBeforeExecution
    fun deleteProductCollection() {
        val subscriber = MongoSubscriberSync<Void>()
        this.database.getCollection(PRODUCT_COLLECTION_NAME).drop(this.session).subscribe(subscriber)
        subscriber.await()
    }

    @Execution
    fun addDataProductCollection() {
        val jsonProducts = readFile("data/products.json")
        log.log(INFO, "log.migration.json.data", jsonProducts)
        val products = jsonProducts.map{
            it["createdAt"] = Instant.ofEpochSecond((it["createdAt"] as Int).toLong())
            it["updatedAt"] = Instant.ofEpochSecond((it["updatedAt"] as Int).toLong())
            it
        }.map(::Document)
        val subscriber = MongoSubscriberSync<InsertManyResult>()
        this.database.getCollection(PRODUCT_COLLECTION_NAME).insertMany(this.session, products).subscribe(subscriber)
        subscriber.await()
    }

    @RollbackExecution
    fun removeDataProductCollection() {
        val subscriber = MongoSubscriberSync<DeleteResult>()
        this.database.getCollection(PRODUCT_COLLECTION_NAME).deleteMany(this.session, Filters.empty()).subscribe(subscriber)
        subscriber.await()
    }

    @Throws(IOException::class)
    private fun readFile(filePath: String): List<MutableMap<String, Any>> {
        val inputStream = ClassPathResource(filePath).inputStream
        return this.jackson.readValue(inputStream, object: TypeReference<List<MutableMap<String, Any>>>(){})
    }
}

when configured with change unit class:

val builder: RunnerSpringbootBuilder = MongockSpringboot.builder()
builder.addMigrationClass(CreateProductCollectionChangeUnit202401151530::class.java)
builder.buildRunner()

// ...
@Bean
@ConditionalOnExpression("'\${mongock.runner-type:ApplicationRunner}'.toLowerCase().equals('applicationrunner')")
fun applicationRunner(mongockRunner: MongockRunner): MongockApplicationRunner {
    return MongockApplicationRunner(mongockRunner)
}

and built in native mode ./gradlew nativeCompile; fails to start migration

Behaviour

Expected behavior: Migration should run

Actual behavior: Migration does not run

How often the bug happens: When the changeunit is run the first time

Link to repository using Mongock: https://github.com/juliuskrah/graphql-demo

@tms0
Copy link
Contributor

tms0 commented Mar 25, 2024

Hi @juliuskrah,

I encountered this issue too and didn't find a way to fix it, but you can disable proxying beans, then it will work : https://docs.mongock.io/v4/custom-injections/index.html#advance-configuration%3A-prevent-proxing-my-beans

I will continue to search for a proper solution.

@tms0
Copy link
Contributor

tms0 commented Mar 26, 2024

It seems GraalVM supports dynamic proxies implemented by java.lang.reflect.Proxy : https://www.graalvm.org/latest/reference-manual/native-image/dynamic-features/DynamicProxy/, but Mongock use the javassist library to implement dynamic proxies (because we want to proxy classes, not only interfaces).

Ultimately, there is a way to collect classes created dynamically, but it works only with the native image agent : https://www.graalvm.org/latest/reference-manual/native-image/metadata/ExperimentalAgentOptions/#support-for-predefined-classes

On my side, I totally disabled the lock guard while building the MongockRunner, there is an option for it : https://github.com/mongock/mongock/blob/master/mongock-core/mongock-runner/mongock-runner-core/src/main/java/io/mongock/runner/core/builder/roles/ChangeLogScanner.java#L12

@juliuskrah
Copy link
Author

Sorry it has taken me this long to get back to you; I was on vacation.

I disabled the lock guard and got the following exception. Apparently the connection is getting closed before the migration is completed:

mongock:
  enabled: true
  lock-guard-enabled: false
2024-04-09T10:28:42.254+02:00  INFO 81888 --- [       Thread-3] i.m.driver.core.lock.LockManagerDefault  : Starting mongock lock daemon...
2024-04-09T10:28:42.267+02:00  INFO 81888 --- [           main] i.m.r.c.e.o.migrate.MigrateExecutorBase  : Mongock starting the data migration sequence id[2024-04-09T10:28:42.171415-373]...
2024-04-09T10:28:42.267+02:00  INFO 81888 --- [           main] i.m.r.c.executor.ChangeLogRuntimeImpl    : method[com.example.graph.migration.CreateProductCollectionChangeUnit202401151530] with arguments: [com.mongodb.reactivestreams.client.internal.MongoDatabaseImpl, com.mongodb.reactivestreams.client.internal.ClientSessionPublisherImpl, com.fasterxml.jackson.databind.ObjectMapper]
2024-04-09T10:28:42.267+02:00  INFO 81888 --- [           main] i.m.r.c.executor.ChangeLogRuntimeImpl    : method[createProductCollection] with arguments: []
2024-04-09T10:28:42.268+02:00  INFO 81888 --- [           main] i.m.r.core.executor.ChangeExecutorBase   : APPLIED - {"id"="create-product-collection-202401151530_before", "type"="before-execution", "author"="Julius Krah", "class"="CreateProductCollectionChangeUnit202401151530", "method"="createProductCollection"}
2024-04-09T10:28:42.271+02:00  INFO 81888 --- [           main] i.m.r.c.executor.ChangeLogRuntimeImpl    : method[addDataProductCollection] with arguments: []
2024-04-09T10:28:42.271+02:00  INFO 81888 --- [           main] i.m.r.core.executor.ChangeExecutorBase   : FAILED OVER - {"id"="create-product-collection-202401151530", "type"="execution", "author"="Julius Krah", "class"="CreateProductCollectionChangeUnit202401151530", "method"="addDataProductCollection"}
2024-04-09T10:28:42.273+02:00  INFO 81888 --- [           main] i.m.r.core.executor.ChangeExecutorBase   : Mongock migration aborted and DB transaction not enabled. Starting manual rollback process
2024-04-09T10:28:42.273+02:00  INFO 81888 --- [           main] i.m.r.c.executor.ChangeLogRuntimeImpl    : method[deleteProductCollection] with arguments: []
2024-04-09T10:28:42.273+02:00  INFO 81888 --- [           main] i.m.r.core.executor.ChangeExecutorBase   : ROLL BACK FAILED- {"id"="create-product-collection-202401151530_before", "type"="before-execution", "author"="Julius Krah", "class"="CreateProductCollectionChangeUnit202401151530", "method"="createProductCollection"}
2024-04-09T10:28:42.275+02:00  INFO 81888 --- [           main] i.m.driver.core.lock.LockManagerDefault  : Mongock waiting to release the lock
2024-04-09T10:28:42.281+02:00  INFO 81888 --- [       Thread-3] i.m.driver.core.lock.LockManagerDefault  : Cancelled mongock lock daemon
2024-04-09T10:28:42.281+02:00  INFO 81888 --- [           main] i.m.driver.core.lock.LockManagerDefault  : Mongock releasing the lock
2024-04-09T10:28:42.283+02:00  INFO 81888 --- [           main] i.m.driver.core.lock.LockManagerDefault  : Mongock released the lock
2024-04-09T10:28:42.283+02:00  INFO 81888 --- [           main] i.m.r.c.e.o.migrate.MigrateExecutorBase  : Mongock has finished
2024-04-09T10:28:42.283+02:00 ERROR 81888 --- [           main] i.m.r.core.executor.MongockRunnerImpl    : Error in mongock process. ABORTED OPERATION

io.mongock.api.exception.MongockException: java.lang.reflect.InvocationTargetException
	at io.mongock.runner.core.executor.ChangeExecutorBase.lambda$rollbackProcessedChangeSetsIfApply$4(ChangeExecutorBase.java:182) ~[graphql-demo:na]
	at java.base@21/java.util.ArrayDeque.forEach(ArrayDeque.java:887) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.rollbackProcessedChangeSetsIfApply(ChangeExecutorBase.java:178) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.processSingleChangeLog(ChangeExecutorBase.java:130) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.processChangeLogs(ChangeExecutorBase.java:107) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.lambda$processMigration$1(ChangeExecutorBase.java:101) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.NonTransactioner.executeInTransaction(NonTransactioner.java:17) ~[na:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.processMigration(ChangeExecutorBase.java:101) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.operation.migrate.MigrateExecutorBase.executeMigration(MigrateExecutorBase.java:66) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.operation.migrate.MigrateExecutorBase.executeMigration(MigrateExecutorBase.java:18) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.MongockRunnerImpl.execute(MongockRunnerImpl.java:57) ~[na:na]
	at io.mongock.runner.springboot.base.MongockApplicationRunner.run(MongockApplicationRunner.java:18) ~[graphql-demo:na]
	at org.springframework.boot.SpringApplication.lambda$callRunner$4(SpringApplication.java:794) ~[graphql-demo:3.2.1]
	at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83) ~[na:na]
	at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[graphql-demo:6.1.2]
	at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88) ~[na:na]
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:806) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:794) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:782) ~[graphql-demo:3.2.1]
	at java.base@21/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na]
	at java.base@21/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na]
	at java.base@21/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[graphql-demo:na]
	at java.base@21/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[graphql-demo:na]
	at java.base@21/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[graphql-demo:na]
	at java.base@21/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na]
	at java.base@21/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[graphql-demo:na]
	at java.base@21/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[graphql-demo:na]
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:782) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:341) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358) ~[graphql-demo:3.2.1]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347) ~[graphql-demo:3.2.1]
	at com.example.graph.ApplicationKt.main(Application.kt:16) ~[graphql-demo:na]
	at java.base@21/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH) ~[na:na]
Caused by: java.lang.reflect.InvocationTargetException: null
	at java.base@21/java.lang.reflect.Method.invoke(Method.java:580) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeLogRuntimeImpl.runChangeSet(ChangeLogRuntimeImpl.java:82) ~[na:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.executeChangeSetMethod(ChangeExecutorBase.java:397) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.rollbackIfPresentAndTrackChangeEntry(ChangeExecutorBase.java:281) ~[graphql-demo:na]
	at io.mongock.runner.core.executor.ChangeExecutorBase.lambda$rollbackProcessedChangeSetsIfApply$4(ChangeExecutorBase.java:180) ~[graphql-demo:na]
	... 32 common frames omitted
Caused by: java.lang.IllegalStateException: state should be: open
	at com.mongodb.assertions.Assertions.isTrue(Assertions.java:109) ~[na:na]
	at com.mongodb.internal.session.BaseClientSessionImpl.getServerSession(BaseClientSessionImpl.java:125) ~[graphql-demo:na]
	at com.mongodb.internal.session.ClientSessionContext.getSessionId(ClientSessionContext.java:48) ~[graphql-demo:na]
	at com.mongodb.internal.connection.ClusterClockAdvancingSessionContext.getSessionId(ClusterClockAdvancingSessionContext.java:50) ~[na:na]
	at com.mongodb.internal.connection.CommandMessage.getExtraElements(CommandMessage.java:230) ~[na:na]
	at com.mongodb.internal.connection.CommandMessage.encodeMessageBodyWithMetadata(CommandMessage.java:155) ~[na:na]
	at com.mongodb.internal.connection.RequestMessage.encode(RequestMessage.java:136) ~[graphql-demo:na]
	at com.mongodb.internal.connection.CommandMessage.encode(CommandMessage.java:59) ~[na:na]
	at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceiveAsync(InternalStreamConnection.java:492) ~[na:na]
	at com.mongodb.internal.connection.UsageTrackingInternalConnection.sendAndReceiveAsync(UsageTrackingInternalConnection.java:157) ~[graphql-demo:na]
	at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.sendAndReceiveAsync(DefaultConnectionPool.java:802) ~[na:na]
	at com.mongodb.internal.connection.CommandProtocolImpl.executeAsync(CommandProtocolImpl.java:83) ~[na:na]
	at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor.executeAsync(DefaultServer.java:232) ~[na:na]
	at com.mongodb.internal.connection.DefaultServerConnection.executeProtocolAsync(DefaultServerConnection.java:122) ~[na:na]
	at com.mongodb.internal.connection.DefaultServerConnection.commandAsync(DefaultServerConnection.java:102) ~[na:na]
	at com.mongodb.internal.connection.DefaultServerConnection.commandAsync(DefaultServerConnection.java:93) ~[na:na]
	at com.mongodb.internal.connection.DefaultServer$AsyncOperationCountTrackingConnection.commandAsync(DefaultServer.java:361) ~[na:na]
	at com.mongodb.internal.operation.AsyncOperationHelper.executeCommandAsync(AsyncOperationHelper.java:207) ~[na:na]
	at com.mongodb.internal.operation.DropCollectionOperation$ProcessCommandsCallback.onResult(DropCollectionOperation.java:254) ~[na:na]
	at com.mongodb.internal.operation.DropCollectionOperation.lambda$executeAsync$2(DropCollectionOperation.java:121) ~[na:na]
	at com.mongodb.internal.operation.AsyncOperationHelper.lambda$withAsyncConnectionSourceCallableConnection$4(AsyncOperationHelper.java:146) ~[na:na]
	at com.mongodb.internal.connection.DefaultServer.lambda$getConnectionAsync$0(DefaultServer.java:130) ~[na:na]
	at com.mongodb.internal.async.ErrorHandlingResultCallback.onResult(ErrorHandlingResultCallback.java:47) ~[na:na]
	at com.mongodb.internal.connection.DefaultConnectionPool.lambda$getAsync$0(DefaultConnectionPool.java:222) ~[na:na]
	at com.mongodb.internal.connection.DefaultConnectionPool.lambda$getAsync$1(DefaultConnectionPool.java:245) ~[na:na]
	at com.mongodb.internal.connection.DefaultConnectionPool$Task.doComplete(DefaultConnectionPool.java:1445) ~[na:na]
	at com.mongodb.internal.connection.DefaultConnectionPool$Task.execute(DefaultConnectionPool.java:1431) ~[na:na]
	at com.mongodb.internal.connection.DefaultConnectionPool$AsyncWorkManager.workerRun(DefaultConnectionPool.java:1375) ~[na:na]
	at com.mongodb.internal.connection.DefaultConnectionPool$AsyncWorkManager.runAndLogUncaught(DefaultConnectionPool.java:1402) ~[na:na]
	at com.mongodb.internal.connection.DefaultConnectionPool$AsyncWorkManager.lambda$initUnlessClosed$1(DefaultConnectionPool.java:1343) ~[na:na]
	at java.base@21/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
	at java.base@21/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[graphql-demo:na]
	at java.base@21/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[graphql-demo:na]
	at java.base@21/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
	at java.base@21/java.lang.Thread.runWith(Thread.java:1596) ~[graphql-demo:na]
	at java.base@21/java.lang.Thread.run(Thread.java:1583) ~[graphql-demo:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:833) ~[graphql-demo:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:211) ~[na:na]

@dieppa
Copy link
Member

dieppa commented Apr 9, 2024

@juliuskrah can I assume this repository it has been updated and it's not using the proxies, so I can reproduce this?

@juliuskrah
Copy link
Author

@juliuskrah can I assume this repository it has been updated and it's not using the proxies, so I can reproduce this?

Yes this can be reproduced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants