I configured a distributed cache but it does not appear to be synchronized properly.
Can anyone give me some advice on this?
I have booted two Keycloak 18.0.2 (Quarkus) on the same VM.
Both units booted successfully and successfully logged in at the console.
The logs show the following and the cluster is successfully formed.
2022-08-18 04:42:07,634 INFO [org.infinispan.CLUSTER] (jgroups-14,ip-172-16-100-***-25122) [Context=actionTokens] ISPN100010: Finished rebalance with members [ip-172-16-100-***-25122, ip-172-16-100-***-28767], topology id 5
Then, when I made a token request to the first instance, I was able to see this session from the console of the second instance.
I think session is synchronized properly.
However, when I run the API (/realms/master/protocol/openid-connect/token/introspect) to introspect the acquired token, the first instance returned {active:true} . The second returned {active:false}.
Does this mean that the caches are not synchronized?
I would like to know why it is not synchronized and solve the problem. Can anyone give me some advice?
The command I executed is as follows:
kc.sh build --cache-config-file=cache-ispn.xml --cache=ispn --cache-stack=tcp
kc.sh start --db-url-host localhost --db-username postgres --db-password password --hostname localhost --https-key-store-password=secret
kc.sh start --http-port 8081 --https-port 8444 --db-url-host localhost --db-username postgres --db-password password --hostname localhost --https-key-store-password=secret
cache-ispn.xml is the default.(excerpt)
<distributed-cache name="sessions" owners="2">
<expiration lifespan="-1"/>
</distributed-cache>
<distributed-cache name="authenticationSessions" owners="2">
<expiration lifespan="-1"/>
</distributed-cache>
<distributed-cache name="offlineSessions" owners="2">
<expiration lifespan="-1"/>
</distributed-cache>
<distributed-cache name="clientSessions" owners="2">
<expiration lifespan="-1"/>
</distributed-cache>
<distributed-cache name="offlineClientSessions" owners="2">
<expiration lifespan="-1"/>
</distributed-cache>
<distributed-cache name="loginFailures" owners="2">
<expiration lifespan="-1"/>
</distributed-cache>
<local-cache name="authorization">
<encoding>
<key media-type="application/x-java-object"/>
<value media-type="application/x-java-object"/>
</encoding>
<memory max-count="10000"/>
</local-cache>
<replicated-cache name="work">
<expiration lifespan="-1"/>
</replicated-cache>
<local-cache name="keys">
<encoding>
<key media-type="application/x-java-object"/>
<value media-type="application/x-java-object"/>
</encoding>
<expiration max-idle="3600000"/>
<memory max-count="1000"/>
</local-cache>
<distributed-cache name="actionTokens" owners="2">
<encoding>
<key media-type="application/x-java-object"/>
<value media-type="application/x-java-object"/>
</encoding>
<expiration max-idle="-1" lifespan="-1" interval="300000"/>
<memory max-count="-1"/>
</distributed-cache>
Thanks.
Ayumi Ishii