From f83674711dd566d9a46188b6442757e94f0b88d4 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Thu, 30 Apr 2020 13:38:24 +0200 Subject: [PATCH] no-jira: release DB connections earlier in some cases --- src/main/java/org/olat/NewControllerFactory.java | 2 ++ src/main/java/org/olat/commons/calendar/ICalServlet.java | 2 +- .../olat/commons/calendar/manager/ImportCalendarManager.java | 4 ++-- src/main/java/org/olat/core/gui/components/Window.java | 2 ++ src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java | 2 ++ src/main/java/org/olat/restapi/system/ProcSamplerJob.java | 2 +- 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/olat/NewControllerFactory.java b/src/main/java/org/olat/NewControllerFactory.java index 857b10c3902..7e1c347fc82 100644 --- a/src/main/java/org/olat/NewControllerFactory.java +++ b/src/main/java/org/olat/NewControllerFactory.java @@ -35,6 +35,7 @@ import java.util.Locale; import java.util.Map; import org.olat.core.commons.chiefcontrollers.BaseChiefController; +import org.olat.core.commons.persistence.DBFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.Windows; import org.olat.core.gui.components.Window; @@ -252,6 +253,7 @@ public class NewControllerFactory { launched = true; } } + DBFactory.getInstance().commit(); return launched; } } \ No newline at end of file diff --git a/src/main/java/org/olat/commons/calendar/ICalServlet.java b/src/main/java/org/olat/commons/calendar/ICalServlet.java index 4bbaad56da8..4bebb9cb16b 100644 --- a/src/main/java/org/olat/commons/calendar/ICalServlet.java +++ b/src/main/java/org/olat/commons/calendar/ICalServlet.java @@ -233,13 +233,13 @@ public class ICalServlet extends HttpServlet { if(savedToken == null) { savedToken = calendarManager.getCalendarToken(calendarType, calendarID, userName); } + DBFactory.getInstance().commitAndCloseSession(); if (authToken == null || savedToken == null || !savedToken.equals(authToken)) { log.warn("Authenticity Check failed for the ical feed path: {}", pathInfo); response.sendError(HttpServletResponse.SC_UNAUTHORIZED, requestUrl); } else { // read and return the calendar file Calendar calendar = calendarManager.readCalendar(calendarType, calendarID); - DBFactory.getInstance().commitAndCloseSession(); outputCalendar(calendar, request, response); } } else { diff --git a/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java b/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java index 7b448bb64aa..5592610b6b3 100644 --- a/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java +++ b/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java @@ -205,14 +205,14 @@ public class ImportCalendarManager { String url = importedCalendar.getUrl(); Date lastUpdate = importedCalendar.getLastUpdate(); if (url != null && (timestamp - lastUpdate.getTime() > RELOAD_INTERVAL)) { - log.info("Calendar reload started from url=" + url); + log.info("Calendar reload started from url={}", url); importedCalendar.setLastUpdate(new Date()); importedCalendar = importedCalendarDao.update(importedCalendar); dbInstance.commit(); String calendarId = importedCalendar.getCalendarId(); reloadCalendarFromUrl(url, CalendarManager.TYPE_USER, calendarId, filter); - log.info("Calendar reloaded from url=" + url); + log.info("Calendar reloaded from url={}", url); } } diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java index ec18e379ee9..5207fdafc89 100644 --- a/src/main/java/org/olat/core/gui/components/Window.java +++ b/src/main/java/org/olat/core/gui/components/Window.java @@ -567,6 +567,7 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { log.debug("Perf-Test: Window durationBeforeServeResource=" + durationBeforeServeResource); } + DBFactory.getInstance().commit(); wbackofficeImpl.pushCommands(ureq, request, response); } catch (InvalidRequestParameterException e) { try { @@ -850,6 +851,7 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { debugMsg.append("inl_serve:").append(diff).append(LOG_SEPARATOR); } } + DBFactory.getInstance().commit(); //else serve mediaresource, but postpone serving to when lock has been released, // otherwise e.g. a large download blocks the window, so that the user cannot click until the download is finished } // end of synchronized(this) diff --git a/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java b/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java index 1b5280e76f6..aff5838d4c1 100644 --- a/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java +++ b/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java @@ -278,6 +278,7 @@ public class LDAPLoginManagerImpl implements LDAPLoginManager, GenericEventListe return null; } + dbInstance.commit(); LdapContext ctx = bindSystem(); if (ctx == null) { errors.insert("LDAP connection error"); @@ -307,6 +308,7 @@ public class LDAPLoginManagerImpl implements LDAPLoginManager, GenericEventListe } try { + dbInstance.commit(); Control[] connectCtls = new Control[]{}; LdapContext userBind = new InitialLdapContext(env, connectCtls); Attributes attributes = userBind.getAttributes(userDN, userAttr); diff --git a/src/main/java/org/olat/restapi/system/ProcSamplerJob.java b/src/main/java/org/olat/restapi/system/ProcSamplerJob.java index efdf2f1481e..da02978a87a 100644 --- a/src/main/java/org/olat/restapi/system/ProcSamplerJob.java +++ b/src/main/java/org/olat/restapi/system/ProcSamplerJob.java @@ -35,8 +35,8 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; -import org.olat.core.CoreSpringFactory; import org.apache.logging.log4j.Logger; +import org.olat.core.CoreSpringFactory; import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; import org.olat.restapi.system.MonitoringService.Statistics; -- GitLab