[keycloak-user] Opening Transactions

Stian Thorgersen stian at redhat.com
Fri Sep 19 04:12:03 EDT 2014



----- Original Message -----
> From: "Marek Posolda" <mposolda at redhat.com>
> To: "Stian Thorgersen" <stian at redhat.com>
> Cc: "Rodrigo Sasaki" <rodrigopsasaki at gmail.com>, keycloak-user at lists.jboss.org
> Sent: Friday, 19 September, 2014 10:09:27 AM
> Subject: Re: [keycloak-user] Opening Transactions
> 
> yes, but in tests we are using separate KeycloakSession for each
> transaction right? I think the case Rodrigo has is about multiple
> transactions per single KeycloakSession instance, which probably doesn't
> work atm .

Yeah, I think you're right.

> 
> Question is if we really want to support such usecase or if we just
> stick with the pattern to always require KeycloakSession per transaction
> (not sure if it matters much)

Nah, let's keep it how it is. Otherwise all providers would have to be able to deal with multiple transactions. At the moment it's nice an easy to implement a provider where you know an instance is only used for one request and transaction.

> 
> 
> On 19.9.2014 09:53, Stian Thorgersen wrote:
> > Multiple transactions work as long as they don't run in parallel. We have
> > several tests that do this.
> >
> > ----- Original Message -----
> >> From: "Marek Posolda" <mposolda at redhat.com>
> >> To: "Rodrigo Sasaki" <rodrigopsasaki at gmail.com>,
> >> keycloak-user at lists.jboss.org
> >> Sent: Friday, 19 September, 2014 9:47:14 AM
> >> Subject: Re: [keycloak-user] Opening Transactions
> >>
> >> Hello,
> >>
> >> atm we don't support multiple transactions for the same session. If we
> >> would
> >> ever support it, we will need to traverse the "afterCompletion" list in
> >> DefaultKeycloakTransactionManager.begin (and also similarly in
> >> DefaultKeycloakTransactionManager.isRollbackOnly() ). Maybe you can create
> >> JIRA and we can take a look later? Another thing is that all enlisted
> >> transactions would also need to support multiple transactions per session
> >> (for example in case of JPA it is multiple transactions per single
> >> EntityManager, which JPA supports, but there might be some performance
> >> issues with it)
> >>
> >> Note that until than, you can use pattern where each transaction will run
> >> in
> >> it's own KeycloakSession. So defacto multiple KeycloakSession per request.
> >> If you already have any KeycloakSession you can retrieve
> >> KeycloakSessionFactory with:
> >> KeycloakSessionFactory factory = session.getKeycloakSessionFactory();
> >>
> >> And then you can use for example: KeycloakModelUtils.runJobInTransaction
> >> to
> >> use separate KeycloakSession and transaction for your task. Does it work
> >> for
> >> your usecase?
> >>
> >> Marek
> >>
> >> On 19.9.2014 00:13, Rodrigo Sasaki wrote:
> >>
> >>
> >>
> >> Hello,
> >>
> >> I have created some custom endpoints for my project, and in one of them I
> >> need to use multiple transactions on a single request. I ran into some
> >> issues, even though I call
> >>
> >> session.getTransaction().begin()
> >>
> >> It didn't work correctly saying that I didn't have an opened transaction.
> >> I
> >> look a little deeper and saw that there are 2 lists of transactions inside
> >> org.keycloak.services.DefaultKeycloakTransactionManager.
> >>
> >> One is called transactions and the other is afterCompletion
> >>
> >> when commit() is called, both lists are traversed committing every single
> >> transaction in them, but when begin() is called, only the transactions
> >> list
> >> is traversed, and the one I needed was inside afterCompletion , which
> >> remained closed.
> >>
> >> Is this supposed to be this way? I'm not sure what these lists do, but
> >> maybe
> >> the other one should be opened too.
> >>
> >> Is there a problem on opening the transactions on afterCompletion list as
> >> well?
> >>
> >> Thanks!
> >>
> >> --
> >> Rodrigo Sasaki
> >>
> >>
> >> _______________________________________________
> >> keycloak-user mailing list keycloak-user at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/keycloak-user
> >>
> >>
> >> _______________________________________________
> >> keycloak-user mailing list
> >> keycloak-user at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/keycloak-user
> 
> 


More information about the keycloak-user mailing list