I changed my code to close the response and i don't get the hang
anymore. At the moment, I always get the response status code and
close the response like this:
Response resp =
admin.realm("test").clients().get("clientUuid").authorization().policies().client().create(policyRep);
int code = resp.getStatus();
resp.close();
however fi i use a method that return a response but don't use it,
would it automatically close? For example:
admin.realm("test").clients().get("clientUuid").authorization().policies().client().create(policyRep);
No, it won't close automatically. Which is quite error-prone and danger.
IMO our admin client should never be done in a way to return those
Response objects.
My personal opinion would be to never return those responses, but rather
return the created object including his ID as a result of the "create"
methods. That has the advantages that:
- caller will know ID easily (currently ID is available as a last part
of the "Location" header of the response and it's not so trivial to
retrieve it).
- Responses will be closed automatically
- Better API - In case of error, the exception will be thrown instead of
the caller required to parse Response body, status etc. Which I
personally like much more.
The disadvantages are:
- The create method will automatically return created objects, so
responses might be a bit bigger. But that's very minor disadvantage
- It needs to be done :) . And backwards compatibility
Marek
Thai
On Wed, Apr 18, 2018 at 9:35 AM, Nhut Thai Le <ntle(a)castortech.com
<mailto:ntle@castortech.com>> wrote:
Thank you for the hint. I use the builder with 80 connections pool
and I still have the hang problem. I didn't know that I have to
close the response. I though the whole point of using pool is that
i dont have to worry about the life cycle of the connection
anymore. Anyway, will try what you suggested.
Thai
On Wed, Apr 18, 2018 at 3:21 AM, Marek Posolda
<mposolda(a)redhat.com <mailto:mposolda@redhat.com>> wrote:
On 17/04/18 21:28, Nhut Thai Le wrote:
Hello,
I'm writing a script to automate our realm setup using
keycloak
admin-client. I use the same client for multiple calls and
at some point,
my script hang. Is there any issue with using the same
client for multiple
calls?
It's not an issue, but make sure that:
- You use connection pooling. By default, it's 10 connections.
See source of classes Keycloak and KeycloakBuilder
- Make sure you close responses. Especially for the "create"
methods, which returns Response objects, you need to
explicitly close them. For the methods, which returns void or
JSON objects, you don't need to do anything
If needed, see our testsuite for more inspirations. It's using
adminClient in almost all the tests.
Is each public method of the admin-client asynchronous? If
yes, how
do I chain calls like: create realm-> create client ->
create resource ->
create permissions -> create policy,...
No, calls are synchronous and chaining shouldn't be an issue.
Marek
Thai
_______________________________________________
keycloak-user mailing list
keycloak-user(a)lists.jboss.org
<mailto:keycloak-user@lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/keycloak-user
<
https://lists.jboss.org/mailman/listinfo/keycloak-user>
--
Castor Technologies Inc
460 rue St-Catherine St Ouest, Suite 613
Montréal, Québec H3B-1A7
(514) 360-7208 o
(514) 798-2044 f
ntle(a)castortech.com <mailto:ntle@castortech.com>
www.castortech.com <
http://www.castortech.com>
CONFIDENTIALITY NOTICE: The information contained in this e-mail
is confidential and may be proprietary information intended only
for the use of the individual or entity to whom it is addressed.
If the reader of this message is not the intended recipient, you
are hereby notified that any viewing, dissemination, distribution,
disclosure, copy or use of the information contained in this
e-mail message is strictly prohibited. If you have received and/or
are viewing this e-mail in error, please immediately notify the
sender by reply e-mail, and delete it from your system without
reading, forwarding, copying or saving in any manner. Thank you.
AVIS DE CONFIDENTIALITE: L’information contenue dans ce message
est confidentiel, peut être protégé par le secret professionnel et
est réservé à l'usage exclusif du destinataire. Toute autre
personne est par les présentes avisée qu'il lui est strictement
interdit de diffuser, distribuer ou reproduire ce message. Si vous
avez reçu cette communication par erreur, veuillez la détruire
immédiatement et en aviser l'expéditeur. Merci.
--
Castor Technologies Inc
460 rue St-Catherine St Ouest, Suite 613
Montréal, Québec H3B-1A7
(514) 360-7208 o
(514) 798-2044 f
ntle(a)castortech.com <mailto:ntle@castortech.com>
www.castortech.com <
http://www.castortech.com>
CONFIDENTIALITY NOTICE: The information contained in this e-mail is
confidential and may be proprietary information intended only for the
use of the individual or entity to whom it is addressed. If the reader
of this message is not the intended recipient, you are hereby notified
that any viewing, dissemination, distribution, disclosure, copy or use
of the information contained in this e-mail message is strictly
prohibited. If you have received and/or are viewing this e-mail in
error, please immediately notify the sender by reply e-mail, and
delete it from your system without reading, forwarding, copying or
saving in any manner. Thank you.
AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est
confidentiel, peut être protégé par le secret professionnel et est
réservé à l'usage exclusif du destinataire. Toute autre personne est
par les présentes avisée qu'il lui est strictement interdit de
diffuser, distribuer ou reproduire ce message. Si vous avez reçu cette
communication par erreur, veuillez la détruire immédiatement et en
aviser l'expéditeur. Merci.