diff --git a/src/main/java/org/olat/commons/coordinate/cluster/jms/ClusterEventBus.java b/src/main/java/org/olat/commons/coordinate/cluster/jms/ClusterEventBus.java index 916cea01bd8b7c42575fa4138140fd505fa3c558..6d956090fbda1a34de486e9392f9dd6a0a0ecb4d 100644 --- a/src/main/java/org/olat/commons/coordinate/cluster/jms/ClusterEventBus.java +++ b/src/main/java/org/olat/commons/coordinate/cluster/jms/ClusterEventBus.java @@ -138,8 +138,8 @@ public class ClusterEventBus extends AbstractEventBus implements MessageListener while(isClusterInfoEventThreadRunning) { try { ClusterInfoEvent cie = new ClusterInfoEvent(clusterConfig, createBusListenerInfo()); - fireEventToListenersOf(cie, CLUSTER_CHANNEL); - if (log.isDebugEnabled()) log.debug("sent via jms clusterInfoEvent with timestamp:"+cie.getCreated()+" from node:"+nodeId); + fireEventToListenersOf(cie, CLUSTER_CHANNEL, false); + if (log.isDebugEnabled()) log.debug("sent via jms clusterInfoEvent with timestamp:{} from node: {}", cie.getCreated(),nodeId); } catch (Exception e) { // log error, but do not throw exception, but retry. try { @@ -218,6 +218,10 @@ public class ClusterEventBus extends AbstractEventBus implements MessageListener */ @Override public void fireEventToListenersOf(final MultiUserEvent event, final OLATResourceable ores) { + fireEventToListenersOf(event, ores, true); + } + + private void fireEventToListenersOf(final MultiUserEvent event, final OLATResourceable ores, boolean strict) { // send the event wrapped over jms to all nodes // (the receiver will detect whether messages are from itself and thus can be ignored, since they were already sent directly. final long msgId = ++latestSentMsgId; @@ -229,7 +233,11 @@ public class ClusterEventBus extends AbstractEventBus implements MessageListener try { ObjectMessage message = sessionProducer.createObjectMessage(); message.setObject(new JMSWrapper(nodeId, msgId, ores, event)); - producer.send(message, DeliveryMode.NON_PERSISTENT, 3, 5000); + if(strict) { + producer.send(message); + } else { + producer.send(message, DeliveryMode.NON_PERSISTENT, 3, 5000); + } } catch (Exception e) { log.error("Cannot send JMS message", e); // cluster:::: what shall we do here: the JMS bus is broken! and we thus cannot know if other nodes are alive. diff --git a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java index c8e0ee832a75d1b594bf941cfba4fe003f0c3f0b..5e00c0f097db05ea0ebe9d25f0eabf2c40a94987 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java +++ b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java @@ -308,6 +308,7 @@ public class RepositoryServiceImpl implements RepositoryService, OrganisationDat //copy the license licenseService.copy(sourceResource, copyResource); + dbInstance.commit(); //copy the image RepositoryManager.getInstance().copyImage(sourceEntry, copyEntry); @@ -322,7 +323,6 @@ public class RepositoryServiceImpl implements RepositoryService, OrganisationDat ThreadLocalUserActivityLogger.log(LearningResourceLoggingAction.LEARNING_RESOURCE_CREATE, getClass(), LoggingResourceable.wrap(copyEntry, OlatResourceableType.genRepoEntry)); - lifeIndexer.indexDocument(RepositoryEntryDocument.TYPE, copyEntry.getKey()); return copyEntry; } diff --git a/src/main/java/org/olat/repository/ui/author/CreateRepositoryEntryController.java b/src/main/java/org/olat/repository/ui/author/CreateRepositoryEntryController.java index 4cfed8b9d01c503da2818eca012f0eed30151a1c..8fda5b32eb19d2b3cfde6902699681a86dbba015 100644 --- a/src/main/java/org/olat/repository/ui/author/CreateRepositoryEntryController.java +++ b/src/main/java/org/olat/repository/ui/author/CreateRepositoryEntryController.java @@ -27,6 +27,7 @@ import org.olat.basesecurity.OrganisationModule; import org.olat.basesecurity.OrganisationRoles; import org.olat.basesecurity.OrganisationService; import org.olat.basesecurity.model.OrganisationRefImpl; +import org.olat.core.commons.persistence.DB; import org.olat.core.commons.services.license.LicenseModule; import org.olat.core.commons.services.license.LicenseService; import org.olat.core.commons.services.license.LicenseType; @@ -83,6 +84,8 @@ public class CreateRepositoryEntryController extends FormBasicController impleme private Object userObject; private LicenseType licenseType; + @Autowired + private DB dbInstance; @Autowired private RepositoryManager repositoryManager; @Autowired @@ -270,6 +273,7 @@ public class CreateRepositoryEntryController extends FormBasicController impleme } afterEntryCreated(); + dbInstance.commit(); repositoryManager.triggerIndexer(addedEntry);