124 UserStorageProviderFactory factory = (UserStorageProviderFactory) sessionFactory.getProviderFactory(UserStorageProvider.class, provider.getProviderId());
125 if (!(factory instanceof ImportSynchronization) || !provider.isImportEnabled() || !provider.isEnabled()) {
126 return SynchronizationResult.ignored();
129 final Holder holder =
new Holder();
132 KeycloakModelUtils.runJobInTransaction(sessionFactory,
new KeycloakSessionTask() {
135 public void run(KeycloakSession session) {
136 ClusterProvider clusterProvider = session.getProvider(ClusterProvider.class);
138 String taskKey = provider.getId() +
"::sync";
141 int timeout = Math.max(30, provider.getChangedSyncPeriod());
142 holder.result = clusterProvider.executeIfNotExecuted(taskKey, timeout,
new Callable<SynchronizationResult>() {
145 public SynchronizationResult call() throws Exception {
147 int oldLastSync = provider.getLastSync();
149 return ((ImportSynchronization)factory).syncSince(Time.toDate(oldLastSync), sessionFactory, realmId, provider);
157 if (holder.result == null || !holder.result.isExecuted()) {
158 logger.debugf(
"syncChangedUsers for federation provider %s was ignored as it's already in progress", provider.getName());
159 return SynchronizationResult.ignored();
161 return holder.result.getResult();
void updateLastSyncInterval(final KeycloakSessionFactory sessionFactory, UserStorageProviderModel provider, final String realmId)
Definition: UserStorageSyncManager.java:251
static final Logger logger
Definition: UserStorageSyncManager.java:48