Skip to content
Snippets Groups Projects
Commit e3d074c2 authored by srosse's avatar srosse
Browse files

OO-4974: be selective with non-persisted event

parent bde3b1f9
No related branches found
No related tags found
No related merge requests found
......@@ -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.
......
......@@ -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;
}
......
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment