Reactive Panache [ Session/EntityManager is closed]

644 views
Skip to first unread message

Mark Jayson Gonzaga

unread,
Apr 19, 2021, 4:39:26 PM4/19/21
to Quarkus Development mailing list
Hi Team,

I have a simple code below using quarkus and reactive panache.
<quarkus-plugin.version>1.13.1.Final</quarkus-plugin.version>
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>1.13.1.Final</quarkus.platform.version>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-reactive-panache</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-reactive</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-reactive-pg-client</artifactId>
</dependency>
And this is the sample code.
    public Uni<Account> fetchUserAccount(String username){
return Account.find("username",username).firstResult();
}

public Uni<Account> process(final String username,
final Person person,
final TransactionType transactionType){

return this.fetchUserAccount(username);
// .onItem().transform(acc-> {
// //if user exists then mark status as Update; else, Registration
// if(isTransactionTypeMatched(transactionType, acc)){
//// throw new TransactionMismatch("Transaction mismatch detected!");
// }
// //create kie model before calling the rule engine
// return initializeKieModel(person, transactionType, acc);
// })
// .onItem().transform(x-> {
// log.info("business pojo {}",x.toString());
//// this.kieService.invokeKieSession(x);
// return null;
// });
}
@POST
@Path("/get")
public Uni<Response> test(Person person){
String username = person.getFirstName();
return this.registrationService.process(username,person, TransactionType.Registration)
.onItem().transform(x-> Response.accepted().build())
.onFailure().recoverWithItem(err->{
if(err instanceof TransactionException){
return Response.status(406,
((TransactionMismatch) err).getMessage()).build();
}
//other wise throw 500 for other error(s)
return Response.status(500,err.toString()).build();
});
}
On the first try It was okay, But whenever i tried hitting the same endpoint again it says the below error.

2021-04-20 04:32:39,926 ERROR [org.hib.rea.errors] (vert.x-eventloop-thread-9) could not load an entity: [org.eservice.model.Account#1]: java.util.concurrent.Compl
etionException: java.lang.IllegalStateException: Session/EntityManager is closed
        at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
        at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
        at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1081)
        at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
        at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
        at org.hibernate.reactive.pool.impl.Handlers.lambda$toCompletionStage$0(Handlers.java:26)
        at io.vertx.sqlclient.impl.SqlResultHandler.complete(SqlResultHandler.java:98)
        at io.vertx.sqlclient.impl.SqlResultHandler.handle(SqlResultHandler.java:87)
        at io.vertx.sqlclient.impl.SqlResultHandler.handle(SqlResultHandler.java:33)
        at io.vertx.sqlclient.impl.SocketConnectionBase.handleMessage(SocketConnectionBase.java:241)
        at io.vertx.sqlclient.impl.SocketConnectionBase.lambda$init$0(SocketConnectionBase.java:88)
        at io.vertx.core.net.impl.NetSocketImpl.lambda$new$1(NetSocketImpl.java:97)
        at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:237)
        at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:127)
        at io.vertx.core.net.impl.NetSocketImpl.handleMessage(NetSocketImpl.java:356)

Wondering why it has happened.

Thanks,
Jayson

Stuart Douglas

unread,
Apr 20, 2021, 12:00:32 AM4/20/21
to markjayson...@gmail.com, Quarkus Development mailing list

It is fixed in HR 1.0.0.CR3, but this is not in a quarkus release yet.

Try adding


            <dependency>
                <groupId>org.hibernate.reactive</groupId>
                <artifactId>hibernate-reactive-core</artifactId>
                <version>1.0.0.CR3</version>
            </dependency>

to override the HR version and see if this helps.

Stuart

--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CADNbDsBOTW%2B_JjNibPZp_bmDsoNJb8Ke05dWkNR9Okv3eMmYJg%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages