Image du projet 'Usine à sites' téléversée
  1. Usine à sites
  2. UAS-53

Optimisation du DatabaseHelper

    XMLWordImprimable

Informations

    • Bug
    • Résolution: Résolu
    • Mineur
    • 2.02.08, 2.04.06
    • 2.02.06
    • Aucune

    Description

      À l'exécution sur mon poste d'un dupliquer, j'ai eu une :

      WARN  com.zaxxer.hikari.util.LeakTask - Connection leak detection triggered, stack trace follows
      java.lang.Exception: null
      	at com.univ.utils.ContexteDao.getConnection(ContexteDao.java:50) ~[core-6.02.26.jar:na]
      	at com.kosmos.uas.utils.DatabaseHelper.saveDatabase(DatabaseHelper.java:45) ~[uas-2.02.06.jar:na]
      	at com.kosmos.uas.utils.PluginSiteHelper.saveDataBase(PluginSiteHelper.java:329) ~[uas-2.02.06.jar:na]
      	at com.kosmos.uas.plugin.DefaultPluginSite.traiterCopy(DefaultPluginSite.java:204) ~[uas-2.02.06.jar:na]
      	at com.kosmos.uas.plugin.DefaultPluginSite$$FastClassByCGLIB$$ca5fc26.invoke(<generated>) ~[spring-core-3.2.2.RELEASE.jar:na]
      	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-3.2.2.RELEASE.jar:3.2.2.RELEASE]
      	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE]
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE]
      	at org.springframework.aop.interceptor.AsyncExecutionInterceptor$1.call(AsyncExecutionInterceptor.java:89) ~[spring-aop-3.2.2.RELEASE.jar:3.2.2.RELEASE]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_101]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_101]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_101]
      	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_101]

      Le dump final est ressortit incomplet.

      J'ai remarqué qu'une méthode était optimisable en plaçant le dao dans le try :

      DatabaseHelper.saveDatabase
      try {
      			final String finalPath = String.format("%s%s-%s.sql", path, contexteDao.getConnection().getCatalog(), df.format(new Date(System.currentTimeMillis())));
      			final MySQLDumpWriter dumpWriter = new MySQLDumpWriter(contexteDao.getConnection());
      			dumpWriter.dumpDB(Collections.<String> emptyList(), finalPath);
      		} catch (final Exception e) {
      			throw new ErreurApplicative("Une erreur est survenue lors de la tentative de création d'un dump de sauvegarde", e);
      		} finally {
      			if (contexteDao != null) {
      				contexteDao.close();
      			}
      		}

      Je ne pense pas que ça va résoudre le problème cela dit.

      Pièces jointes

        Liens des tickets

          Activité

            Personnes

              charlie.camus Charlie CAMUS [X] (Inactif)
              charlie.camus Charlie CAMUS [X] (Inactif)
              Votes:
              0 Voter pour ce ticket
              Gérer les observateurs:
              4 Démarre l'observation de ce ticket

              Dates

                Création:
                Mise à jour:
                Résolue: