IN2P3-Forge: Issueshttps://forge.in2p3.fr/https://forge.in2p3.fr/favicon.ico?16780521162018-05-31T15:49:48ZIN2P3-Forge
Redmine Lavoisier - Feature #33350 (New): add a XPath function multireplace()https://forge.in2p3.fr/issues/333502018-05-31T15:49:48ZReynaud SylvainSylvain.Reynaud@in2p3.fr
This function would support a variable number of arguments:
<ul>
<li>string: the input string</li>
<li>search: the substring to replace</li>
<li>replace: the replacement string for the first occurence of the search string</li>
<li>replace: the replacement string for the second occurence of the search string</li>
<li>...</li>
<li>replace: the replacement string for the Nth occurence of the search string</li>
</ul> Lavoisier - Feature #30741 (New): add research button on web sitehttps://forge.in2p3.fr/issues/307412018-04-04T10:53:55ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>with a javascript that automatically add "site:http://software.in2p3.fr/lavoisier" to the query, and send it to Google</p> TReqS - Task #10115 (In progress): Provide jenkins worker Linux 2.2.6.xhttps://forge.in2p3.fr/issues/101152015-06-11T15:42:57ZChambon Bernard
<p>It appears that hpss lib moved from Linux 2.2.3 to Linux 3.x (jenkins) are not available<br />Try ldd -r <br /><pre>
ldd -r /opt/hpss/lib/libhpss.so
...
undefined symbol: hpss_pthread_attr_default (/opt/hpss/lib/libhpss.so)
undefined symbol: hpss_pthread_mutexattr_default (/opt/hpss/lib/libhpss.so)
...
</pre><br />Solution :<br />Provide a jenkins worker Linux 2.2.6.x<br />After that you can check with following (very) basic piece of code</p> TReqS - Bug #9736 (Suspended): hpss_SetLoginCred + hpss_PurgeLoginCredhttps://forge.in2p3.fr/issues/97362015-04-21T09:40:04ZChambon Bernard
<p>Doing some tests, encountered the following behaviour</p>
<ul>
<li>Case calling hpss_PurgeLoginCred either case failure<br />With user root123 fail (=PASS), then with user root <strong>hanging on hpss_SetLoginCred</strong> (=FAILURE)</li>
</ul>
<pre>
TRACE HPSSConnection - Login for user root123 ...
TRACE HPSSConnection - Using authentication method 'unix'
ERROR HPSSConnection - Just before hpss_SetLoginCred
ERROR HPSSConnection - Just after hpss_SetLoginCred
ERROR HPSSConnection - Authentication failed for user root123, hpss_SetLoginCred return -1
TRACE HPSSConnection - Logout ...
TRACE HPSSConnection - Logout done
Calling HPSSConnection
TRACE HPSSConnection - logger already configured ...
TRACE HPSSConnection - Login for user root ...
TRACE HPSSConnection - Using authentication method 'unix'
ERROR HPSSConnection - Just before hpss_SetLoginCred
^C
Here hpss_PurgeLoginCred hang forever !
</pre>
<ul>
<li>Case calling hpss_PurgeLoginCred only if hpss_SetLoginCred succeed <br />With user root123 fail (=PASS), then with <strong>user root fail</strong> (= FAILURE)</li>
</ul>
<pre>
Calling HPSSConnection
TRACE HPSSConnection - Login for user root123 ...
TRACE HPSSConnection - Using authentication method 'unix'
ERROR HPSSConnection - Just before hpss_SetLoginCred
ERROR HPSSConnection - Just after hpss_SetLoginCred
ERROR HPSSConnection - Authentication failed for user root123, hpss_SetLoginCred return -1
Calling HPSSConnection
Exception catched : Authentication failed for user root123
TRACE HPSSConnection - logger already configured ...
TRACE HPSSConnection - Login for user root ...
TRACE HPSSConnection - Using authentication method 'unix'
ERROR HPSSConnection - Just before hpss_SetLoginCred
ERROR HPSSConnection - Just after hpss_SetLoginCred
ERROR HPSSConnection - Authentication failed for user root, hpss_SetLoginCred return -22
Exception catched : Authentication failed for user root
</pre> Lavoisier - Bug #7566 (New): fields of view "form" are disabled when they have default valuehttps://forge.in2p3.fr/issues/75662014-06-27T16:53:21ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>send the form with javascript instead</p> Lavoisier - Feature #6687 (New): develop a CronTriggerhttps://forge.in2p3.fr/issues/66872014-03-27T16:36:12ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p><a class="external" href="http://fr.wikipedia.org/wiki/Crontab">http://fr.wikipedia.org/wiki/Crontab</a></p> Lavoisier - Feature #6360 (New): develop a EntriesProcessor (or a EntriesRenderer)https://forge.in2p3.fr/issues/63602014-03-05T15:22:23ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>Input data example:<br /><pre><code class="xml syntaxhl"><span class="nt"><root></span>
<span class="nt"><child</span> <span class="na">id=</span><span class="s">"truc"</span> <span class="na">name=</span><span class="s">"IGNORED"</span><span class="nt">></span>
<span class="nt"><id></span>truc<span class="nt"></id></span>
<span class="nt"><leaf</span> <span class="na">name=</span><span class="s">"bidule"</span><span class="nt">></span>value<span class="nt"></leaf></span>
<span class="nt"><leaf</span> <span class="na">name=</span><span class="s">"bidule2"</span><span class="nt">></span>value2<span class="nt"></leaf></span>
<span class="nt"><leaf</span> <span class="na">name=</span><span class="s">"name"</span><span class="nt">></span>nom<span class="nt"></leaf></span>
<span class="nt"></child></span>
<span class="nt"></root></span>
</code></pre></p>
<p>Plugin configuration example:<br /><pre><code class="xml syntaxhl"><span class="nt"><e:root></span>
<span class="nt"><e:entries</span> <span class="na">base=</span><span class="s">"root/child"</span> <span class="na">key=</span><span class="s">"id/text()"</span><span class="nt">></span>
<span class="nt"><e:entry</span> <span class="na">base=</span><span class="s">"leaf"</span> <span class="na">key=</span><span class="s">"@name"</span> <span class="na">value=</span><span class="s">"text()"</span><span class="nt">/></span>
<span class="nt"></e:entries></span>
<span class="nt"></e:root></span>
</code></pre></p>
<p>Result example:<br /><pre><code class="xml syntaxhl"><span class="nt"><e:entries></span>
<span class="nt"><e:entries</span> <span class="na">key=</span><span class="s">"truc"</span><span class="nt">></span>
<span class="nt"><e:entry</span> <span class="na">key=</span><span class="s">"value"</span><span class="nt">></span>machin<span class="nt"></e:entry></span>
<span class="nt"><e:entry</span> <span class="na">key=</span><span class="s">"bidule"</span><span class="nt">></span>value<span class="nt"></e:entry></span>
<span class="nt"><e:entry</span> <span class="na">key=</span><span class="s">"name"</span><span class="nt">></span>nom<span class="nt"></e:entry></span>
<span class="nt"></e:entries></span>
<span class="nt"></e:entries></span>
</code></pre></p> Lavoisier - Feature #6325 (New): enable limiting the maximum output sizehttps://forge.in2p3.fr/issues/63252014-03-03T10:47:04ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>All the opened elements should be automatically closed in order to keep the XML output well formed.</p> Electronic Control and Monitoring - Feature #5751 (New): buildcfg with some error messagehttps://forge.in2p3.fr/issues/57512014-01-06T17:43:19ZRalet Damian
I am still missing some information errors like:
<ul>
<li>no FRS (I tryed, no information was telling me that it was missing)</li>
<li>15C, not in database, and yet no error message.</li>
</ul> ENX - Support #5710 (Assigned): Documentation - Named functionhttps://forge.in2p3.fr/issues/57102014-01-03T10:44:35ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>Need to document the list of named functions available for each driver</p> DCOD - Bug #5592 (New): environment test missing in ./configurehttps://forge.in2p3.fr/issues/55922013-11-29T11:12:40ZDosme NicolasENX - Support #5572 (New): Cleaning autorconfhttps://forge.in2p3.fr/issues/55722013-11-25T15:23:38ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>Should clean build directoy at the end of install phase.</p>
<p>(Removing at least automate.cache)</p> Lavoisier - Feature #5558 (New): add XPath function build_xpath()https://forge.in2p3.fr/issues/55582013-11-22T14:51:40ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<pre><code class="xml syntaxhl"><span class="nt"><view</span> <span class="na">name=</span><span class="s">"v"</span><span class="nt">></span>
<span class="nt"><argument</span> <span class="na">name=</span><span class="s">"site"</span><span class="nt">></span>NONE<span class="nt"></argument></span>
<span class="nt"><connector</span> <span class="na">type=</span><span class="s">"XMLConnector"</span><span class="nt">></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"content"</span><span class="nt">></span>
<span class="nt"><entry</span> <span class="na">key=</span><span class="s">"CC-IN2P3"</span><span class="nt">></span>Lyon<span class="nt"></entry></span>
<span class="nt"><entry</span> <span class="na">key=</span><span class="s">"LAPP"</span><span class="nt">></span>Annecy<span class="nt"></entry></span>
<span class="nt"><entry</span> <span class="na">key=</span><span class="s">"CERN"</span><span class="nt">></span>Geneve<span class="nt"></entry></span>
<span class="nt"></parameter></span>
<span class="nt"></connector></span>
<span class="nt"><processors></span>
<span class="c"><!-- the less flexible solution (the XPath is fixed in the view) --></span>
<span class="nt"><processor</span> <span class="na">type=</span><span class="s">"SelectProcessor"</span> <span class="na">match=</span><span class="s">"/*/*[@key=$site]"</span> <span class="na">disabled=</span><span class="s">"$site='NONE'"</span><span class="nt">/></span>
<span class="nt"></processors></span>
<span class="nt"></view></span>
<span class="c"><!-- the less efficient solution (requires a data structure to be built) --></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view('v')/*/*[@key=$site]"</span><span class="nt">/></span>
<span class="c"><!-- argument 'site' is evaluated by view 'v' --></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view('v/*/*[@key=$site]', arguments())"</span><span class="nt">/></span><span class="c"><!-- view 'v' must have <argument name="site"/> --></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view('v/*/*[@key=arguments()[@key=&quot;site&quot;]])]', arguments())"</span><span class="nt">/></span>
<span class="c"><!-- argument 'site' is evaluated by current view --></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view(concat('v/*/*[@key=',quot($site),']'))"</span><span class="nt">/></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view(build_xpath('v/*/*[@key={$site}'))"</span><span class="nt">/></span>
</code></pre>
<p><ins>Note</ins>: build_xpath() must disable optimizer for {match()/@id}</p> Lavoisier - Feature #5525 (Assigned): enable configuring trust-store with a directoryhttps://forge.in2p3.fr/issues/55252013-11-18T11:29:13ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>The trust-store must be updated automatically without restarting the service.</p> DCOD - Bug #5462 (Feedback): Cleaning tagshttps://forge.in2p3.fr/issues/54622013-11-05T17:06:24ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>It should be great to have only "readable" tags ...</p>
<p>And potentially with coherent naming <img src="/plugin_assets/redmine_wiki_extensions/images/wink.png" alt=";)"></p>
<pre>
dataserver:~/Projects/dcod/enx/tools/Driver_Generator$ hg tags
tip 901:2917b5c7fe3e
ENX-V2.6.02 860:6dccaaedecc9
last-monotone-version 770:0cdcea7b6f0b
narval.1.10.3-1 690:3555f5589824
narval-1.10.3 678:5277417ba5bb
narval-1.8.1 654:eccbdeaa2c2c
Debian 648:1c59cb36e91e
glade_to_polyorb 632:2831b9b87a1d
1.6.6-compatible 631:6e70e9f5efa6
narval-1.6.6 628:466159b15547
narval-1.6.4 production 604:afc5bd34f045
ENX-V2.6.01 578:9957d1d423c1
ENX-V2.6.00 576:d64cad49c457
ENX-V2.5 574:552bf30293d9
ENX-V2.4-AP1-Scanning 572:4358b89995ba
ENX-V2.2 570:9c55505f8ff3
ENX-V2.0 568:9a160e6544ca
ENX-V1.0 565:d26e8f3dd1cc
</pre> Lavoisier - Feature #5442 (New): create a view 'stoppoint'https://forge.in2p3.fr/issues/54422013-10-29T17:02:12ZReynaud SylvainSylvain.Reynaud@in2p3.fr
This view should:
<ul>
<li>enable dumping output of connector, then 1st processor, then 2nd processor, etc., with a single clic.</li>
<li>dump configuration (with disabled processors in grey).</li>
<li>and most importantly: manage view arguments for each execution!</li>
</ul> ENX - Support #5431 (New): Cleaning compilation chainhttps://forge.in2p3.fr/issues/54312013-10-29T10:18:49ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>unused configure.ac in enx/server</p> CLASS - Feature #5377 (New): enrichment factoryhttps://forge.in2p3.fr/issues/53772013-10-21T15:15:07ZMOUGINOT Baptiste
<p>Do a fabrication plant which can build UOX fuel...</p> RENOIR chat - Task #5202 (New): Calibrating with style: Gaia self-calibrationhttps://forge.in2p3.fr/issues/52022013-10-03T04:54:19ZZoubian Julienzoubian@cppm.in2p3.frENX - Bug #5144 (Feedback): ENX + P42 regressionhttps://forge.in2p3.fr/issues/51442013-09-26T11:08:03ZGrave Xavier
<p>ENX > !create My_Device 0x0 0xff DRV_DEBUG<br /> 3191 INFO [main_task_0000000000B6DA20] ENX.Console - NO_RESULT<br />ENX > !list device<br /> 3208 INFO [main_task_0000000000B6DA20] ENX.Console - DEVICE list:<br /> - My_Device<br />ENX > <br />ENX > MD My_Device 0x0<br /> 3337 INFO [main_task_0000000000B6DA20] ENX.Console - 0x00000000 -> 0x00<br />ENX > MM My_Device 0x0 0xfadadada<br /> 3360 INFO [main_task_0000000000B6DA20] ENX.Console - OK<br />ENX > MM My_Device 0x4 0xdeadbeaf<br /> 3372 INFO [main_task_0000000000B6DA20] ENX.Console - OK<br />ENX > MD My_Device 0x0</p>
<blockquote>
<p>0xFADADADA< : Wrong kind of arguments.</p>
</blockquote>
<p>Should be a number.</p>
<pre><code>3376 ERROR [main_task_0000000000B6DA20] ENX.Console - Uncatched Exception. - P42.CONVERT.WRONG_TYPE - p42-convert-characters_2_numeric.adb:84<br />ENX > MD My_Device 0x4</code></pre>
<blockquote>
<p>0xDEADBEAF< : Wrong kind of arguments.</p>
</blockquote>
<p>Should be a number.</p>
<pre><code>3407 ERROR [main_task_0000000000B6DA20] ENX.Console - Uncatched Exception. - P42.CONVERT.WRONG_TYPE - p42-convert-characters_2_numeric.adb:84</code></pre> Lavoisier - Feature #5090 (New): add new adaptor type : <writer>https://forge.in2p3.fr/issues/50902013-09-17T15:49:22ZReynaud SylvainSylvain.Reynaud@in2p3.fr
Adaptors example:
<ul>
<li>SQLWriter</li>
<li>HTTPWriter</li>
<li>FileWriter</li>
<li>EmailWriter</li>
</ul>
<p>Usage example:<br /><pre><code class="xml syntaxhl"><span class="nt"><view</span> <span class="na">name=</span><span class="s">"ldap-to-sql"</span><span class="nt">></span>
<span class="nt"><connector</span> <span class="na">type=</span><span class="s">"LDAPConnector"</span><span class="nt">/></span>
<span class="nt"><writer</span> <span class="na">type=</span><span class="s">"SQLWriter"</span> <span class="na">match=</span><span class="s">"/o/cn[@id='fr']/ou[@id='in2p3']/dn"</span>
<span class="na">recovery-base-directory=</span><span class="s">"$TMP/recovery"</span> <span class="na">recovery-period=</span><span class="s">"PT1M"</span><span class="nt">></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"url"</span><span class="nt">></span>jdbc:...<span class="nt"></parameter></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"query"</span><span class="nt">></span>INSERT INTO my_table (?,?)<span class="nt"></parameter></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"parameters"</span><span class="nt">></span>
<span class="nt"><entry</span> <span class="na">eval=</span><span class="s">"@id"</span><span class="nt">/></span>
<span class="nt"><entry</span> <span class="na">eval=</span><span class="s">"ancestor::cn/@id"</span><span class="nt">/></span>
<span class="nt"></parameter></span>
<span class="nt"><trigger</span> <span class="na">type=</span><span class="s">"DeltaTimeTrigger"</span><span class="nt">></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"hours"</span><span class="nt">></span>1<span class="nt"></parameter></span>
<span class="nt"></trigger></span>
<span class="nt"></writer></span>
<span class="nt"></view></span>
</code></pre></p>
<p>Interface:<br /><pre><code class="java syntaxhl"><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">Writer</span> <span class="kd">extends</span> <span class="nc">Adaptor</span> <span class="o">{</span>
<span class="cm">/**
* @return the list of exceptions caused by bad configuration (event will not be retried).
*/</span>
<span class="kd">public</span> <span class="nc">Exception</span><span class="o">[]</span> <span class="nf">getConfigurationExceptions</span><span class="o">();</span>
<span class="cm">/**
* A resource can be for example: a connection to database, an URL to an AVAILABLE web service, a pointer to file...
* @throws ResourceAlreadyOpened if resource was already opened.
* @return true if opening resource is successful, else false.
*/</span>
<span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">openResource</span><span class="o">()</span> <span class="kd">throws</span> <span class="nc">ResourceAlreadyOpened</span><span class="o">;</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">closeResource</span><span class="o">();</span>
<span class="o">}</span>
</code></pre></p>
<p>Algorithm:<br /><pre><code class="java syntaxhl"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">WriterLink</span> <span class="o">{</span>
<span class="kd">private</span> <span class="nc">File</span> <span class="n">m_base_directory</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">Duration</span> <span class="n">m_retry_period</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">EventStore</span> <span class="n">m_unrecoverable</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">EventStore</span> <span class="n">m_recoverable</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">Writer</span> <span class="n">m_writer</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">Set</span><span class="o"><</span><span class="nc">Exception</span><span class="o">></span> <span class="n">m_configuration_exceptions</span><span class="o">;</span>
<span class="kd">public</span> <span class="nf">WriterLink</span><span class="o">()</span> <span class="o">{</span>
<span class="n">m_configuration_exceptions</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">HashSet</span><span class="o"><</span><span class="nc">Exception</span><span class="o">>();</span>
<span class="n">m_configuration_exceptions</span><span class="o">.</span><span class="na">addAll</span><span class="o">(</span><span class="nc">Arrays</span><span class="o">.</span><span class="na">asList</span><span class="o">(</span><span class="n">m_writer</span><span class="o">.</span><span class="na">getConfigurationExceptions</span><span class="o">()));</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">write</span><span class="o">(</span><span class="nc">Xml</span> <span class="n">view</span><span class="o">)</span> <span class="o">{</span>
<span class="nc">EventReader</span> <span class="n">input</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">EventReader</span><span class="o">(</span><span class="n">view</span><span class="o">);</span>
<span class="n">m_unrecoverable</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">EventStore</span><span class="o">(</span><span class="n">m_viewId</span><span class="o">);</span>
<span class="n">m_unrecoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="nc">StartElement</span><span class="o">(</span><span class="s">"root"</span><span class="o">));</span>
<span class="k">while</span><span class="o">(!</span><span class="n">input</span><span class="o">.</span><span class="na">isEmpty</span><span class="o">()</span> <span class="o">&&</span> <span class="o">!</span><span class="n">isTriggered</span><span class="o">)</span> <span class="o">{</span>
<span class="nl">label:</span> <span class="k">while</span><span class="o">(!</span><span class="n">isTriggered</span><span class="o">)</span> <span class="o">{</span>
<span class="k">switch</span> <span class="o">(</span><span class="n">m_writer</span><span class="o">.</span><span class="na">openResource</span><span class="o">())</span> <span class="o">{</span>
<span class="k">case</span> <span class="nl">WAS_ALREADY_OPENED:</span>
<span class="nc">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="n">m_retry_period</span><span class="o">);</span>
<span class="k">break</span> <span class="n">label</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">IS_OPENED:</span>
<span class="k">break</span> <span class="n">label</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">IS_CLOSED:</span>
<span class="nc">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="n">m_retry_period</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="n">m_recoverable</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">EventStore</span><span class="o">(</span><span class="n">m_viewId</span><span class="o">);</span>
<span class="k">try</span> <span class="o">{</span>
<span class="k">for</span> <span class="o">(</span><span class="n">event</span> <span class="o">:</span> <span class="n">input</span><span class="o">.</span><span class="na">getEvents</span><span class="o">())</span> <span class="o">{</span>
<span class="k">switch</span><span class="o">(</span><span class="n">event</span><span class="o">.</span><span class="na">getState</span><span class="o">())</span> <span class="o">{</span>
<span class="k">case</span> <span class="nl">UNSELECTED:</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">SELECTED:</span>
<span class="k">this</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">event</span><span class="o">.</span><span class="na">getCurrent</span><span class="o">());</span>
<span class="k">break</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">DESCENDANT_OF_SELECTED:</span>
<span class="k">break</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="nc">ResourceClosedException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
<span class="k">for</span> <span class="o">(</span><span class="n">event</span> <span class="o">:</span> <span class="n">input</span><span class="o">.</span><span class="na">getEvents</span><span class="o">())</span> <span class="o">{</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">close</span><span class="o">();</span> <span class="c1">// remove the file if if contains no event</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">moveTo</span><span class="o">(</span><span class="n">input</span><span class="o">);</span>
<span class="o">}</span>
<span class="n">m_writer</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
<span class="n">m_unrecoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="nc">EndElement</span><span class="o">(</span><span class="s">"root"</span><span class="o">));</span>
<span class="n">m_unrecoverable</span><span class="o">.</span><span class="na">close</span><span class="o">();</span> <span class="c1">// remove the file if it contains no event</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">write</span><span class="o">(</span><span class="nc">Element</span> <span class="n">current</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">ResourceClosedException</span> <span class="o">{</span>
<span class="k">try</span> <span class="o">{</span>
<span class="n">m_writer</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="nc">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="n">m_configuration_exceptions</span><span class="o">.</span><span class="na">contains</span><span class="o">(</span><span class="n">e</span><span class="o">))</span> <span class="o">{</span>
<span class="n">m_unrecoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="k">switch</span> <span class="o">(</span><span class="n">m_writer</span><span class="o">.</span><span class="na">openResource</span><span class="o">())</span> <span class="o">{</span>
<span class="k">case</span> <span class="nl">WAS_ALREADY_OPENED:</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">IS_OPENED:</span>
<span class="k">try</span> <span class="o">{</span>
<span class="n">m_writer</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="nc">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">break</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">IS_CLOSED:</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nf">ResourceClosedException</span><span class="o">();</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
</code></pre></p> DCOD - Task #4932 (New): DCOD testinghttps://forge.in2p3.fr/issues/49322013-08-26T15:35:59ZGrave Xavier
<p>Find a way to test Narval with scripts<br /> - need to define working scripts<br /> - need to define non working scripts</p>
<p>See if one can use similar test system for ENX</p>
<p>May be one can use Partition Player to implement the test system.</p> Lavoisier - Feature #4871 (New): ExcelSerializerhttps://forge.in2p3.fr/issues/48712013-07-31T18:42:31ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>This adaptor may rely on the apache POI library.</p> Lavoisier - Feature #4870 (New): BinarySerializerhttps://forge.in2p3.fr/issues/48702013-07-31T18:36:58ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>This adaptor may rely on the Daffodil open-source implementation of the DFDL specification.</p> Pipelet - Feature #3992 (New): directory in data with specific colorhttps://forge.in2p3.fr/issues/39922013-02-20T17:19:27ZLe Jeune Maudelejeune@apc.in2p3.fr
<p>from the web interface, user directories are not clearly visible<br />shoud use specific color and maybe a reordering by folder , then files instead of alphabetic sort</p> Pipelet - Task #3954 (New): Documentation: Environment cheat sheethttps://forge.in2p3.fr/issues/39542013-02-13T11:00:33ZBetoule Marcbetoule@lpnhe.in2p3.fr
<p>I feel the need for this every day: a single sheet documenting the API of the standard environment functions.</p> Smurf - Bug #3673 (Feedback): gestion des options de smupdatehttps://forge.in2p3.fr/issues/36732012-12-19T10:57:40ZCanehan Xavier
<p>Le parsing des options de smupdate est trop zélé :</p>
<p>% smupdate -set comment='vierge, donnee au LPNHE' ccdcacsn1{18..23}<br />FATAL: no affectation specified for donnee au LPNHE. Use '--unset donnee au LPNHE' instead if you want to set it to (SQL)NULL</p>
<p>L'éclatement sur la virgule se fait aussi dans un bloc protégé.</p> LC2 - Bug #2373 (Assigned): Test of responsivityhttps://forge.in2p3.fr/issues/23732011-12-20T15:49:06ZLafage Vincentlafage@ipno.in2p3.fr
<p>Simple</p> LC2 - Feature #2076 (New): Finer grained report for boot Crocus scripthttps://forge.in2p3.fr/issues/20762011-10-11T14:18:00ZLafage Vincentlafage@ipno.in2p3.fr
<p><code>/opt/daq-MCH/LC2/scripts/bootCrt23.x</code><br />calls<br /> <code>bootFrtCrtDsp.x</code><br />which in turn calls<br /> <code>rorc_rst.x</code></p>
<p>The return code of <code>bootCrt23.x</code> combines the return codes of the 2 invocations of <code>bootFrtCrtDsp.x</code><br />in a relevant way. This would allow to propagate a much finer level of details.</p>
The <code>rorc_reset.x</code> script no only resets but also checks the SIU, DIU and RORC. <br />It turns out that
<ol>
<li>only the last command's return code decides the return code of the whole script</li>
<li>even this return code is not significant of the error status of the Whole DDL chain<br />We can report a much finer level of details.</li>
</ol>
In the same way, <code>bootFrtCrtDsp.x</code> might report two levels of error:
<ol>
<li>one for the FeC2 core command, as is the case, and with the known limitations of this report</li>
<li>a new one for the <code>rorc_reset.x</code> that would help shifters to catch anomalous SIU status from start</li>
</ol>
<p>A better documentation of basic command's return code is needed.</p> Pipelet - Bug #1566 (New): Bug daemon cherrypy on Macintoshhttps://forge.in2p3.fr/issues/15662011-04-15T17:53:52ZLe Jeune Maudelejeune@apc.in2p3.fr
<p>Check where the bug come from, if not to low level do something, or warn the user.</p> Pipelet - Task #1336 (New): Add comments in multiplexhttps://forge.in2p3.fr/issues/13362011-02-15T12:02:22ZLe Jeune Maudelejeune@apc.in2p3.fr
<p>The code of multiplex is hard to read/lacks for comments. Variable Names, data structure may be rethought.</p> LC2 - Support #1258 (Assigned): Better report of mute FRThttps://forge.in2p3.fr/issues/12582011-01-17T14:39:09ZLafage Vincentlafage@ipno.in2p3.fr
31/08/2010 10:30<br />When an FRT doesn't answer (header is correct but there's no payload and error type 0x251 occurs)
<ul>
<li>one should provide adequate Error description "FRT doesn't answer" </li>
<li>the corresponding bus should be grey instead of red</li>
</ul> LC2 - Feature #1255 (Assigned): Provide proper Shared-Object name to librarieshttps://forge.in2p3.fr/issues/12552011-01-17T13:39:12ZLafage Vincentlafage@ipno.in2p3.fr
<p>2010-10-09T11:52:11+0200<br />rpmlint indicates invalid-soname for libraries<br /><pre>
E: invalid-soname /opt/daq-MCH/LC2/lib/libLC2common.so libLC2common.so
E: invalid-soname /opt/daq-MCH/LC2/lib/libLC2version.so libLC2version.so
E: invalid-soname /opt/daq-MCH/LC2/lib/libLC2event.so libLC2event.so
E: invalid-soname /opt/daq-MCH/LC2/lib/libLC2config.so libLC2config.so
</pre><br />No version number is taken into account.</p>
<p>Adding a version number in the <br /><code>daq-MCH-LC2-1.3.2/LC2/config/sys/Linux-g++.gmk</code><br />Makefile is not enough.</p>
<p>the symbolic link to unversionned library must be provided as well. <br />See<br />[[<a class="external" href="http://www.gnu.org/software/libtool/manual/libtool.html">http://www.gnu.org/software/libtool/manual/libtool.html</a>]]</p> LC2 - Feature #1254 (Assigned): Add Tooltip for the three LC2 modeshttps://forge.in2p3.fr/issues/12542011-01-17T13:34:50ZLafage Vincentlafage@ipno.in2p3.fr
<p>2010-10-04T21:44:43+0200<br />The meaning of the three LC2 modes being unclear, <br />a concise explanation is wanted. <br />It could go along the following lines:<br />Edit : prepare Crocus command file for storage <br />Emulate : prepare Crocus command file, simulate sending it and load the corresponding result file for postmortem analysis <br />Send : prepare and send Crocus command files, ask Crocus for result file and display it in the Load cmd/result tab</p> LC2 - Bug #1253 (Assigned): use / harden checks of getlinehttps://forge.in2p3.fr/issues/12532011-01-17T13:32:58ZLafage Vincentlafage@ipno.in2p3.fr
<p>2010-09-15T12:32:38+0200<br />we have 4 cases of<br /><pre>
warning: unused variable ‘isReadingCorrect’
</pre></p>
<p>that could be further exploited.</p>
<pre>
src/CrocusConfig.cxx: In ScanFromResult?(std::istream&, Crocus::ui32&)
src/CrocusConfig.cxx:280:8:
src/CrocusConfig.cxx: In ScanFromFeC2 (const std::string&)
src/CrocusConfig.cxx:648:12:
src/CrocusConfig.cxx: In ReadPedestalConfig? (const std::string&, double)
src/CrocusConfig.cxx:840:10:
src/CrocusConfig.cxx:848:10:
int llPatchBus1 = -1;
in.get (first);
while (first == '/') {
bool isReadingCorrect = getline (in, getstr);
in.get (first);
}
in.unget();
while (!in.eof ()) {
in >> Bus_Patch_Abs >> Manu_Id >> Channel >> Mean >> Sigma;
if (in.eof ()) break;
bool isReadingCorrect = getline (in, getstr);
</pre><br />Further case are not exploited:<br /><pre>
source/config/src/utilities.cxx: isReadingCorrect = getline (stream, line);
source/config/src/utilities.cxx: isReadingCorrect = getline (stream, line);
source/gui1/src/ListView.cxx://[VLA]// in.getline (line, 120);
source/version/src/CrocusVerHeaderFile.cxx: in.getline (line, 120);
</pre>
<p>... and should be !</p> LC2 - Bug #1252 (Assigned): What is the proper Parsing Algorithm?https://forge.in2p3.fr/issues/12522011-01-17T11:34:39ZLafage Vincentlafage@ipno.in2p3.fr
<p>2010-09-15T01:02:01+0200In<br />bool FrtCrtConfig::ScanFromResult(std::istream& stream, ui32& key)</p>
<p>the following code block lead to rejection of a seemingly well formed result file:<br /><pre>
// If event padder, read dataKey
if ( payLoadLength % 2 == 1 ) {
result = ReadNextValue(dataKey, stream);
if ( ! result ) return false;
}
</pre></p>
<p>payLoadLength was 75=0000000x4b<br />instead of 0x00000032 for a good case</p> LC2 - Bug #1235 (Assigned): shared-lib-calls-exithttps://forge.in2p3.fr/issues/12352011-01-12T00:47:28ZLafage Vincentlafage@ipno.in2p3.fr
<p>2010-09-13T04:23:04+0200<br /><pre>
/opt/daq-MCH/LC2/lib/libLC2config.so
/opt/daq-MCH/LC2/lib/libLC2version.so
</pre></p>
<p>These library packages calls exit() or _exit(), probably in a non-fork() context. Doing so from a library is strongly discouraged - when a library function calls exit(), it prevents the calling program from handling the error, reporting it to the user, closing files properly, and cleaning up any state that the program has. It is preferred for the library to return an actual error code and let the calling program decide how to handle the situation.</p>
<p>The concerned classes are:<br /><pre>
LC2/source/version/src/CError.cxx
LC2/source/config/src/FrtCrtConfig.cxx
LC2/source/config/src/utilities.cxx
</pre></p> LC2 - Feature #1232 (Assigned): Include parseCrocusVersion in the Crocus Threadhttps://forge.in2p3.fr/issues/12322011-01-12T00:18:42ZLafage Vincentlafage@ipno.in2p3.fr
<p>2010-08-25T23:34:45+0200</p> LC2 - Feature #1231 (Assigned): Include boot in the Crocus Threadhttps://forge.in2p3.fr/issues/12312011-01-12T00:16:44ZLafage Vincentlafage@ipno.in2p3.fr
<p>2010-08-25T23:33:54+0200</p> SphereLib - Bug #938 (New): Construction icosahedronhttps://forge.in2p3.fr/issues/9382010-09-29T11:32:48ZLe Jeune Maudelejeune@apc.in2p3.fr
<p>Utiliser le module fortran pour la compilation de icosahedron.f</p> ENX - Feature #852 (New): Better handling of exception in empty skeletonhttps://forge.in2p3.fr/issues/8522010-07-27T09:19:21ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>Replace all infinite loop with a correct result (OK for example, or error).</p>
<p>Need to take care to the patch for C module !</p> Pipelet - Feature #748 (New): Git and CVS repositorieshttps://forge.in2p3.fr/issues/7482010-06-13T16:30:24ZLe Jeune Maudelejeune@apc.in2p3.fr
<p>Write classes GitRepository and CVSRepository</p> Pipelet - Feature #734 (Assigned): Rapport Latexhttps://forge.in2p3.fr/issues/7342010-06-07T19:06:18ZLe Jeune Maudelejeune@apc.in2p3.fr
<p>Intégrer le code de génération automatique de rapport latex</p> TReqS - Feature #425 (New): Durée de vie des métadatahttps://forge.in2p3.fr/issues/4252010-02-12T09:16:07ZSchaeffer Jonathanjonathan.schaeffer@cc.in2p3.fr
<p>Ceci est prévu dans le code mais n'est pas implémenté.<br />Actuellement, la durée de vie d'une méta-donnée est nulle.</p> RlsngCons - Feature #187 (New): Abort limit/delete/ackhttps://forge.in2p3.fr/issues/1872009-10-07T13:08:32ZWernli Fabienwernli@in2p3.fr
<p>Ctrl-G should abort l/A/D edition</p> Oval - Feature #37 (New): Automatically select the shell flavorhttps://forge.in2p3.fr/issues/372009-02-16T19:44:59ZChamont David
<p>Oval should recognize the current user shell, and make it the default one for oval commands.</p> Oval - Feature #36 (New): Extend tasks with begin/end directory commandshttps://forge.in2p3.fr/issues/362009-02-16T19:42:43ZChamont David
<p>Perhaps, the administrators should be given the possibility to define a command to be executed each time Oval enter a new directory, and another one each time Oval exit from a directory.</p> Oval - Bug #28 (New): "oval validate" should remove differences in "oval log"https://forge.in2p3.fr/issues/282009-02-16T19:01:54ZChamont David
<p>As said in the title...</p> Oval - Bug #26 (New): Commands options not well propagated, when declared within an OvalFilehttps://forge.in2p3.fr/issues/262009-02-16T18:50:15ZChamont David
<p>Intro: so to ensure user interface and commands consistency, each single feature is implemented in a single command, and when a command needs another command feature, it is internally instanciating this command and use it. Behind this nice concept, since the internal command is not instanciated in the same way as the main command, we must propagate to it some "fake command line" options, and fakely calls its functions, as would do the main oval framework with the top level command. This fake calls are not done automatically, but case by case and "by hand" by the top command. This is why there could be and there is some<br />errors or awkward situation.</p>
<p>The general bug: in the current implementation, when a commmand option is set within an OvalFile, it is not<br />correctly propagated to the internals commands.</p>
<p>Example: if I set "-sh" for the runtime command, it will not be propagated to "environnement" command, and the<br />resulting output will be a mix of csh and sh commands.</p>
<p>Solution: review the use of internal commands, and the way they are managed, so that they are in the same state if they are instanciated as user commands or as internal commands.</p> Oval - Bug #22 (New): Deliver messages when ISA failshttps://forge.in2p3.fr/issues/222009-02-16T18:22:12ZChamont David
<p>When there is a perl failure, for example when ISA fails because perl does not find the relevant base package, it would be nice if oval could catch the event and deliver the defered messages before exiting.</p>