retour sur les erreurs sur caparmor
Re bonjour, concernant le premier probleme mentionné : arret d une simu qui tourne en local, voici le message d erreur de l une d'elle : ERROR|14:57:19,420|LazyInitializationException.java|42|<init>|failed to lazily initialize a collection of role: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.speciesTargetSpecies, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.speciesTargetSpecies, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108) at org.hibernate.collection.PersistentBag.iterator(PersistentBag.java:272) at fr.ifremer.isisfish.entities.MetierSeasonInfoAbstract.getSpeciesTargetSpecies(MetierSeasonInfoAbstract.java:243) at fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.getTargetFactor(MetierSeasonInfoImpl.java:60) at scripts.SiMatrix.aw$original$_AW_$matrixFishingMortality$_AW_$scripts_SiMatrix(SiMatrix.java:578) at scripts.SiMatrix_1__1474794626__1158348500___AW_JoinPoint.proceed(Unknown Source) at fr.ifremer.isisfish.aspect.Cache.realCall(Cache.java:148) at fr.ifremer.isisfish.aspect.Cache.call(Cache.java:123) at scripts.SiMatrix_1__1474794626__1158348500___AW_JoinPoint.proceed(Unknown Source) at scripts.SiMatrix_1__1474794626__1158348500___AW_JoinPoint.invoke(Unknown Source) at scripts.SiMatrix.matrixFishingMortality(SiMatrix.java) at simulators.DefaultSimulator.computeMonth(DefaultSimulator.java:472) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:221) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:390) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:259) ERROR|14:57:19,420|InProcessSimulatorLauncher.java|426|localSimulateSameThread|Error during simulation org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.speciesTargetSpecies, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108) at org.hibernate.collection.PersistentBag.iterator(PersistentBag.java:272) at fr.ifremer.isisfish.entities.MetierSeasonInfoAbstract.getSpeciesTargetSpecies(MetierSeasonInfoAbstract.java:243) at fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.getTargetFactor(MetierSeasonInfoImpl.java:60) at scripts.SiMatrix.aw$original$_AW_$matrixFishingMortality$_AW_$scripts_SiMatrix(SiMatrix.java:578) at scripts.SiMatrix_1__1474794626__1158348500___AW_JoinPoint.proceed(Unknown Source) at fr.ifremer.isisfish.aspect.Cache.realCall(Cache.java:148) at fr.ifremer.isisfish.aspect.Cache.call(Cache.java:123) at scripts.SiMatrix_1__1474794626__1158348500___AW_JoinPoint.proceed(Unknown Source) at scripts.SiMatrix_1__1474794626__1158348500___AW_JoinPoint.invoke(Unknown Source) at scripts.SiMatrix.matrixFishingMortality(SiMatrix.java) at simulators.DefaultSimulator.computeMonth(DefaultSimulator.java:472) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:221) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:390) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:259) INFO|14:57:20,488|InProcessSimulatorLauncher.java|456|localSimulateSameThread|Simulation time: 127.590 par ailleurs je viens de la relancer sur caparmor elle tourne sans erreur cette fois ... Avez vous une idée de ce qui s est passé ? Merci -- Sigrid LEHUTA ~ ><> ~ Doctorante Département Ecologie et Modèles pour l'Halieutique IFREMER, rue de l'ile d'Yeu BP 21105 44311 Nantes Cedex 03 Tél : +33 (0)2 40 37 41 23 (interne : 8123)
Le 07/01/2010 15:36, Sigrid LEHUTA a écrit :
Re bonjour, re bonjour, concernant le premier probleme mentionné : arret d une simu qui tourne en local, voici le message d erreur de l une d'elle :
ERROR|14:57:19,420|LazyInitializationException.java|42|<init>|failed to lazily initialize a collection of role: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.speciesTargetSpecies, no session or session was closed
par ailleurs je viens de la relancer sur caparmor elle tourne sans erreur cette fois ... Avez vous une idée de ce qui s est passé ? As tu cette erreur au démarrage de la simulation ou lors du déclenchement d'une règle ? As tu une regles qui touche à un MetierSeasonInfo ou SpeciesTargetSpecies ?
-- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com
As tu cette erreur au démarrage de la simulation ou lors du déclenchement d'une règle ? As tu une regles qui touche à un MetierSeasonInfo ou SpeciesTargetSpecies ?
c est au milieu d une simu, mais apparement ce n est pas au declenchement de la regle (mais je n ai regardé que pour une simu) voici la regle qui pose probleme elle utilise en effet SpeciesTargetSpecies (ligne 208) et un coup ca passe, un coup ca passe pas... merci -- Sigrid LEHUTA ~ ><> ~ Doctorante Département Ecologie et Modèles pour l'Halieutique IFREMER, rue de l'ile d'Yeu BP 21105 44311 Nantes Cedex 03 Tél : +33 (0)2 40 37 41 23 (interne : 8123) package rules; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import static org.codelutin.i18n.I18n._; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.math.matrix.*; import scripts.ResultName; import scripts.RuleUtil; import scripts.SiMatrix; import fr.ifremer.isisfish.IsisFishDAOHelper; import fr.ifremer.isisfish.entities.*; import fr.ifremer.isisfish.rule.AbstractRule; import fr.ifremer.isisfish.simulator.MetierMonitor; import fr.ifremer.isisfish.simulator.PopulationMonitor; import fr.ifremer.isisfish.simulator.SimulationContext; import fr.ifremer.isisfish.simulator.SimulationContext; import fr.ifremer.isisfish.types.Date; import fr.ifremer.isisfish.types.Month; import org.codelutin.topia.*;// pour pouvoir utiliser la methode StringUtil.toDouble() import org.codelutin.util.*;// pour pouvoir utiliser la methode StringUtil.toDouble() import scripts.ResultName; import java.io.*; import java.util.*; import org.codelutin.math.matrix.*; import fr.ifremer.isisfish.*; import fr.ifremer.isisfish.types.*; import fr.ifremer.isisfish.simulator.SimulationContext; import fr.ifremer.isisfish.types.Date; import fr.ifremer.isisfish.entities.*; import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.datastore.ResultStorage; /** * TAC.java *partagé entre francais et espagnols * Created: 7 septembre 2006 * * @author anonymous <anonymous@labs.libre-entreprise.org> * @version $Revision: 1.3 $ * * Last update: $Date: 2007/01/24 18:25:34 $ * by : $Author: bpoussin $ */ /** * */ public class RuleB_Fr_Anchois extends AbstractRule { /** to use log facility, just put in your code: log.info("..."); */ static private Log log = LogFactory.getLog(RuleB_Fr_Anchois.class); public Population param_pop = null ; public Date param_beginDate = new Date(6); public Date param_endDate = new Date(119); public Month param_beginMonth = Month.JULY; public Month param_endMonth = Month.JUNE; public double param_SSBmay = 0; /** TAC in tonne */ public double param_TAC = 3000;//13200; public double param_gamma = 0.4; public double param_TacCeiling = 33000; public double param_allocCountries = 0.5; protected String [] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP, ResultName.MATRIX_BIOMASS, }; /** * @return the necessaryResult */ public String[] getNecessaryResult() { return this.necessaryResult; } /** * Permet d'afficher a l'utilisateur une aide sur la regle. * @return L'aide ou la description de la regle */ public String getDescription() { return _("TAC en fonction de biomasse et partage Fr/Es"); } /** * Appelé au démarrage de la simulation, cette méthode permet d'initialiser * des valeurs * @param simulation La simulation pour lequel on utilise cette regle */ public void init(SimulationContext context) throws Exception { System.out.println("est ce qu il passe dans le init ?"); } /** * La condition qui doit etre vrai pour faire les actions * @param simulation La simulation pour lequel on utilise cette regle * @return vrai si on souhaite que les actions soit faites */ public boolean condition(SimulationContext context, Date date, Metier metier) throws Exception { boolean result = false; if(date.before(param_beginDate)) { return false; } else if(date.after(param_endDate)) { return false; } else { int ny = date.getYear() ; boolean firstSemester = date.getMonth().before(param_beginMonth); System.out.println("firstSemester :" + firstSemester); ResultStorage matResult = context.getSimulationStorage().getResultStorage(); SiMatrix siMatrix = SiMatrix.getSiMatrix(context); //year in which to consider biomass in may ? int year = 0; if(firstSemester & ny > 0) year = ny - 1; else year = ny ; // computing proportionnal TAC value : // Biomass in may //System.out.println("matrixBiomass : " + matB); for (Date dat = new Date(0); dat.before(date); dat = dat.next()) { if (dat.getYear() == year & dat.getMonth().equals(Month.JUNE)){ MatrixND matB = matResult.getMatrix(dat, param_pop, ResultName.MATRIX_BIOMASS); param_SSBmay = matB.sumAll(); } } System.out.println("SSBmay : " + param_SSBmay); /** Rule B : * | 0 if SSB y-1 <= 21000t * TAC y = | gamma*(SSB y-1 - Blim)/(Bpa-Blim)*SSBy-1 if 21000t < SSB y-1 < 33000t * | gamma*SSB y-1 if SSB y-1 >= 33000t **/ if(param_SSBmay < 21000000) { param_TAC = 0 ; }else if(param_SSBmay >= 33000000){ param_TAC = param_gamma * param_SSBmay /1000 ; }else { param_TAC = param_gamma * param_SSBmay * (param_SSBmay-21000000)/12000000/1000; } // le tac le doit pas depasser le niveau historique if (param_TAC > param_TacCeiling){ param_TAC = param_TacCeiling; } System.out.println("paramTacInTonn : "+param_TAC); double CatchFraTot = 0; List<Strategy> strategies = siMatrix.getStrategies(new Date(0)); for (Date dat = new Date(0); dat.before(date); dat = dat.next()) { if( (dat.getYear() == year & dat.getMonth().after(param_endMonth)) || (firstSemester & dat.getYear() == ny) ){ MatrixND mat = matResult.getMatrix(dat, param_pop, ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP); int comp = 0; for(Strategy str : strategies){ if(!"Espagnols".equals(str.getName())){ MatrixND Fra1 = mat.copy().getSubMatrix(0,comp,1); //Fra1 = Fra1.sumOverDim(0); // sum strategy Fra1 = Fra1.sumOverDim(1); // sum metiers Fra1 = Fra1.sumOverDim(2); // sum groups Fra1 = Fra1.sumOverDim(3); // sum zones Fra1 = Fra1.reduce(); double CatchFra1 = Fra1.getValue(0); CatchFraTot += CatchFra1 ; } comp += 1; } } } System.out.println("CaptureFrancaise : "+ CatchFraTot); if (CatchFraTot >= param_TAC * param_allocCountries * 1000){ result = true ; System.out.println("CAPTURE FRANCAISE DEPASSEE"); } } return result; } /** * Si la condition est vrai alors cette action est executée avant le pas * de temps de la simulation. * @param simulation La simulation pour lequel on utilise cette regle */ public void preAction(SimulationContext context, Date date, Metier metier) throws Exception { TargetSpecies ts = metier.getMetierSeasonInfo(date.getMonth()).getSpeciesTargetSpecies(param_pop.getSpecies()); if(ts != null && ts.getPrimaryCatch() ) { // recupere tous les metiers qui ont l'espece en capture principale =>metiers vises //context.getMetierMonitor().addforbiddenMetier(metier); //récupere toutes les stratégies pratiquant le métier et pour lesquelles la proportion !=0 SiMatrix siMatrix = SiMatrix.getSiMatrix(context); Set<Strategy> strs = new HashSet<Strategy>(); for (Strategy str : siMatrix.getStrategies(date)) { double prop = str.getStrategyMonthInfo(date.getMonth()).getProportionMetier(metier); if ( !str.getName().equals("Espagnols")){ if (prop != 0) { strs.add(str); } } } for (Strategy str : strs){ StrategyMonthInfo smi = str.getStrategyMonthInfo(date.getMonth()); MetierMonitor metierMon = context.getMetierMonitor(); MatrixND mat = metierMon.getOrCreateNoActivity(date, ResultName.MATRIX_NO_ACTIVITY, siMatrix.getStrategies(date), siMatrix.getMetiers(date)); mat.setValue(str, metier, smi.getProportionMetier(metier)); smi.setProportionMetier(metier, 0); } } } /** * Si la condition est vrai alors cette action est executée apres le pas * de temps de la simulation. * @param simulation La simulation pour lequel on utilise cette regle */ public void postAction(SimulationContext context, Date date, Metier metier) throws Exception { } }
participants (2)
-
Eric Chatellier -
Sigrid LEHUTA