Problème avec la méthode getMatrix() de resultStorage
Je rencontre actuellement un problème (bug ?) avec la méthode getMatrix de resultStorage. Je m'explique : j'ai deux resultStorages différents, pointant sur deux simulationStorage différents. Quand j'appelle la méthode getMatrix(), j'ai deux fois la même matrice (elles devraient être différentes). En fait, c'est la matrice de référence qui est remplacée par l'autre matrice. Le plus bizarre, c'est qu'en appelant cet export dans un script, tout marche nickel... l'appel ayant la même population et la même date, j'ai essayé en créant de nouvelles instances, pas plus de succès. Le code de l'export : SimulationStorage referenceSimulation = SimulationStorage .getSimulation(param_referenceSimulation); ResultStorage referenceResultStorage = referenceSimulation .getResultStorage(); ResultStorage resultStorage = simulation.getResultStorage(); Date lastDate = resultStorage.getLastDate(); Double biomass = 0.0; Double referenceBiomass = 0.0; System.out.println("reference simul : " + param_referenceSimulation); for (Population pop : simulation.getParameter().getPopulations()) { if (pop.getName().equals(param_pop.getName())) { //Get the biomass of the last time step MatrixND matlastdate = resultStorage.getMatrix(lastDate, pop, ResultName.MATRIX_BIOMASS); biomass = matlastdate.sumAll(); System.out.println("matlastdate:" + (Object) matlastdate); //Get the reference biomass of the last time step MatrixND matreferencelastdate = referenceResultStorage .getMatrix(lastDate, pop, ResultName.MATRIX_BIOMASS); referenceBiomass = matreferencelastdate.sumAll(); System.out.println("matreferencelastdate:" + (Object) matreferencelastdate); } } System.out.println("simulationStorage:" + simulation); System.out.println("referenece simulation:" + referenceSimulation); System.out.println("resultStorage:" + resultStorage); System.out.println("referenceStroagr:" + referenceResultStorage); System.out.println("biomass:" + biomass); System.out.println("referenceBiomass:" + referenceBiomass); Sortie console : reference simul : sim__2009-04-17-16-35 matlastdate:matrixBiomass matrix2D [ 0.0,22176.508412677813,43473.173065180665,2388.3604378326186,2650.1984917785503,3282.4389596073397,4964.047762465532,8148.54115841914,14868.66899278396,29626.19152441755, 0.0,28109.963066993412,52849.62265797418,3949.6346049565186,6062.0935103195,8726.091141227009,13045.299921476322,19616.21549221407,31552.390893392745,53794.83555177956, 0.0,22227.329356775448,43574.14880941198,2403.477995259692,2676.6510261290755,3318.3431101599917,5011.4537835734345,8215.201927770695,14968.934234736415,29780.55426702557, 0.0,28109.963066993412,52849.62265797418,3949.6346049565186,6062.0935103195,8726.091141227009,13045.299921476322,19616.21549221407,31552.390893392745,53794.83555177956, 0.0,22227.329356775448,43574.14880941198,2403.477995259692,2676.6510261290755,3318.3431101599917,5011.4537835734345,8215.201927770695,14968.934234736415,29780.55426702557, 0.0,22176.508412677813,43473.173065180665,2388.3604378326186,2650.1984917785503,3282.4389596073397,4964.047762465532,8148.54115841914,14868.66899278396,29626.19152441755, 0.0,28109.963066993412,52849.62265797418,3949.6346049565186,6062.0935103195,8726.091141227009,13045.299921476322,19616.21549221407,31552.390893392745,53794.83555177956, 0.0,22176.508412677813,43473.173065180665,2388.3604378326186,2650.1984917785503,3282.4389596073397,4964.047762465532,8148.54115841914,14868.66899278396,29626.19152441755, 0.0,22176.508412677813,43473.173065180665,2388.3604378326186,2650.1984917785503,3282.4389596073397,4964.047762465532,8148.54115841914,14868.66899278396,29626.19152441755,] matreferencelastdate:matrixBiomass matrix2D [ 0.0,22176.508412677813,43473.173065180665,2388.3604378326186,2650.1984917785503,3282.4389596073397,4964.047762465532,8148.54115841914,14868.66899278396,29626.19152441755, 0.0,28109.963066993412,52849.62265797418,3949.6346049565186,6062.0935103195,8726.091141227009,13045.299921476322,19616.21549221407,31552.390893392745,53794.83555177956, 0.0,22227.329356775448,43574.14880941198,2403.477995259692,2676.6510261290755,3318.3431101599917,5011.4537835734345,8215.201927770695,14968.934234736415,29780.55426702557, 0.0,28109.963066993412,52849.62265797418,3949.6346049565186,6062.0935103195,8726.091141227009,13045.299921476322,19616.21549221407,31552.390893392745,53794.83555177956, 0.0,22227.329356775448,43574.14880941198,2403.477995259692,2676.6510261290755,3318.3431101599917,5011.4537835734345,8215.201927770695,14968.934234736415,29780.55426702557, 0.0,22176.508412677813,43473.173065180665,2388.3604378326186,2650.1984917785503,3282.4389596073397,4964.047762465532,8148.54115841914,14868.66899278396,29626.19152441755, 0.0,28109.963066993412,52849.62265797418,3949.6346049565186,6062.0935103195,8726.091141227009,13045.299921476322,19616.21549221407,31552.390893392745,53794.83555177956, 0.0,22176.508412677813,43473.173065180665,2388.3604378326186,2650.1984917785503,3282.4389596073397,4964.047762465532,8148.54115841914,14868.66899278396,29626.19152441755, 0.0,22176.508412677813,43473.173065180665,2388.3604378326186,2650.1984917785503,3282.4389596073397,4964.047762465532,8148.54115841914,14868.66899278396,29626.19152441755,] simulationStorage:fr.ifremer.isisfish.datastore.SimulationStorage@ee8874 referenece simulation:fr.ifremer.isisfish.datastore.SimulationStorage@35783c resultStorage:fr.ifremer.isisfish.datastore.ResultStorage@f40b08 referenceStroagr:fr.ifremer.isisfish.datastore.ResultStorage@68b78e biomass:1443783.1447633372 referenceBiomass:1443783.1447633372 Script d'appel où tout marche bien : SensitivityBiomassReferenceY9 export = new SensitivityBiomassReferenceY9(); PopulationImpl pop = new PopulationImpl(); pop.setName("nephrops"); export.param_pop = pop; export.param_referenceSimulation = "sim__2009-04-17-16-35"; StringWriter out = new StringWriter (); export.export(SimulationStorage.getSimulation("as_ppppppppppppppppppppppp_2009-04-18-11-12_1"), out); System.out.println(out); Sortie console du script : reference simul : sim__2009-04-17-16-35 04-18 11:34:13 jdbc[3]: Connection not closed matlastdate:matrixBiomass matrix2D [ 0.0,22301.45833636273,43679.68540954717,2417.711341080958,2703.94680575929,3361.1458309382606,5081.4435899593045,8323.431587777504,15141.42876754465,30056.12419026292, 0.0,28111.95810766318,52853.34704203463,3950.384944812215,6063.906139801544,8728.911476203795,13048.918349100913,19620.831465606985,31558.477119895248,53802.80914947819, 0.0,22351.39877138013,43778.712947132946,2432.64773581732,2730.2875324815705,3397.027376816449,5128.805325940966,8389.888917505,15241.08457423825,30208.974034661154, 0.0,28111.95810766318,52853.34704203463,3950.384944812215,6063.906139801544,8728.911476203795,13048.918349100913,19620.831465606985,31558.477119895248,53802.80914947819, 0.0,22351.39877138013,43778.712947132946,2432.64773581732,2730.2875324815705,3397.027376816449,5128.805325940966,8389.888917505,15241.08457423825,30208.974034661154, 0.0,22301.45833636273,43679.68540954717,2417.711341080958,2703.94680575929,3361.1458309382606,5081.4435899593045,8323.431587777504,15141.42876754465,30056.12419026292, 0.0,28111.95810766318,52853.34704203463,3950.384944812215,6063.906139801544,8728.911476203795,13048.918349100913,19620.831465606985,31558.477119895248,53802.80914947819, 0.0,22301.45833636273,43679.68540954717,2417.711341080958,2703.94680575929,3361.1458309382606,5081.4435899593045,8323.431587777504,15141.42876754465,30056.12419026292, 0.0,22301.45833636273,43679.68540954717,2417.711341080958,2703.94680575929,3361.1458309382606,5081.4435899593045,8323.431587777504,15141.42876754465,30056.12419026292,] matreferencelastdate:matrixBiomass matrix2D [ 0.0,22427.248794279596,43887.178883317116,2447.4229417800852,2758.785181961683,3441.739948816929,5201.615736491989,8502.07565373004,15419.19221107782,30492.296000853254, 0.0,28113.95331911751,52857.07168874245,3951.135427215253,6065.719311278801,8731.732722732988,13052.537780383398,19625.448525203832,31564.564520386513,53810.78392904235, 0.0,22476.294654826346,43984.237557008244,2462.1714940800744,2784.9988426787277,3477.5773980419044,5248.904850249625,8568.29042876303,15518.18288172026,30643.557001801226, 0.0,28113.95331911751,52857.07168874245,3951.135427215253,6065.719311278801,8731.732722732988,13052.537780383398,19625.448525203832,31564.564520386513,53810.78392904235, 0.0,22476.294654826346,43984.237557008244,2462.1714940800744,2784.9988426787277,3477.5773980419044,5248.904850249625,8568.29042876303,15518.18288172026,30643.557001801226, 0.0,22427.248794279596,43887.178883317116,2447.4229417800852,2758.785181961683,3441.739948816929,5201.615736491989,8502.07565373004,15419.19221107782,30492.296000853254, 0.0,28113.95331911751,52857.07168874245,3951.135427215253,6065.719311278801,8731.732722732988,13052.537780383398,19625.448525203832,31564.564520386513,53810.78392904235, 0.0,22427.248794279596,43887.178883317116,2447.4229417800852,2758.785181961683,3441.739948816929,5201.615736491989,8502.07565373004,15419.19221107782,30492.296000853254, 0.0,22427.248794279596,43887.178883317116,2447.4229417800852,2758.785181961683,3441.739948816929,5201.615736491989,8502.07565373004,15419.19221107782,30492.296000853254,] simulationStorage:fr.ifremer.isisfish.datastore.SimulationStorage@172ec6 referenece simulation:fr.ifremer.isisfish.datastore.SimulationStorage@48ff68 resultStorage:fr.ifremer.isisfish.datastore.ResultStorage@1fffa73 referenceStroagr:fr.ifremer.isisfish.datastore.ResultStorage@746d23 biomass:1452801.7892526689 referenceBiomass:1461957.4932998817 0.9937373664493167 -- ---- Jean Couteau Code Lutin - http://www.codelutin.com 44 Bd des Pas Enchantés - 44230 St-Sébastien/Loire Tél : 02 40 50 29 28 - Fax : 09 59 92 29 28
On Sat, 18 Apr 2009 11:36:53 +0200 Jean Couteau <couteau@codelutin.com> wrote: Remplace le code suivant
//Get the reference biomass of the last time step MatrixND matreferencelastdate = referenceResultStorage .getMatrix(lastDate, pop, ResultName.MATRIX_BIOMASS); referenceBiomass = matreferencelastdate.sumAll();
par TopiaContext tx = referenceSimulation..getStorage().beginTransaction(); MatrixND matreferencelastdate = referenceResultStorage.getMatrix(lastDate, ResultName.MATRIX_BIOMASS + " " + pop, tx); referenceBiomass = matreferencelastdate.sumAll(); tx.commitTransaction(); tx.closeContext(); petite explication: Lorsque l'on utilise un ResultStorage dans le contexte d'une simulation, quoi qu'il arrive on utilise la base de la simulation en cours. Donc ici on force l'utilisation d'une autre base. Il faudrait ameliorer ResultStorage et verifier que le SimulationStorage sous jacent est bien celui qui a ouvert la transaction. Mais en attendant le code proposer fait ce que tu souhaites -- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii
On Sat, 18 Apr 2009 12:11:27 +0200 Benjamin POUSSIN <poussin@codelutin.com> wrote:
Il faudrait ameliorer ResultStorage et verifier que le SimulationStorage sous jacent est bien celui qui a ouvert la transaction. Mais en attendant le code proposer fait ce que tu souhaites
J'ai fait les modifs dans ResultStorage, mais garde tout de meme le code que je t'ai envoye (une sombre histoire de fermeture de transaction). Comme je pense que tu vas faire encore quelques simulations, je te laisse en exercice que ma modif de ResultStorage n'apporte pas de regression/bug ;) -- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii
Benjamin POUSSIN a écrit :
On Sat, 18 Apr 2009 12:11:27 +0200 Benjamin POUSSIN <poussin@codelutin.com> wrote:
Il faudrait ameliorer ResultStorage et verifier que le SimulationStorage sous jacent est bien celui qui a ouvert la transaction. Mais en attendant le code proposer fait ce que tu souhaites
J'ai fait les modifs dans ResultStorage, mais garde tout de meme le code que je t'ai envoye (une sombre histoire de fermeture de transaction).
Comme je pense que tu vas faire encore quelques simulations, je te laisse en exercice que ma modif de ResultStorage n'apporte pas de regression/bug ;)
Ok, en tout cas merci, ça marche nickel maintenant. Ce qui me rassure, c'est que je pensais bien que c'était une histoire comme ça... je vais vérifier pour la non-regression ou d'éventuels bugs ;)
-- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii _______________________________________________ Isis-fish-devel mailing list Isis-fish-devel@lists.labs.libre-entreprise.org http://lists.labs.libre-entreprise.org/mailman/listinfo/isis-fish-devel
-- ---- Jean Couteau Code Lutin - http://www.codelutin.com 44 Bd des Pas Enchantés - 44230 St-Sébastien/Loire Tél : 02 40 50 29 28 - Fax : 09 59 92 29 28
participants (2)
-
Benjamin POUSSIN -
Jean Couteau