Hi Everyone,
The following is code to delete users imported via a UserStorageProvider:
KeycloakSession session = this.factory.create();
session.getContext().setRealm(this.realm);
try {
session.getTransactionManager().begin();
String providerId = this.realm.getId();
List<UserModel> importedUsers = session.users()
.searchForUserStream(realm, Collections.singletonMap("federationLink",
providerId), null, null)
.collect(Collectors.toList());
for (UserModel user : importedUsers) {
session.users().removeUser(realm, user);
logger.infof("Removed user: %s", user.getUsername());
}
session.getTransactionManager().commit();
} catch(Exception e) {
session.getTransactionManager().rollback();
logger.error("Failed to remove imported users, rolled back", e);
}
I am getting the following, intermittent error:
ERROR [keycloak.userstorage.RemoveImportedUsers] (pool-3-thread-1) Failed to remove imported users, rolled back: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.keycloak.models.jpa.entities.RealmEntity.components: could not initialize proxy - no Session
Any ideas on how to fix this?
–John
