The Altair Community is migrating to a new platform to provide a better experience for you. In preparation for the migration, the Altair Community is on read-only mode from October 28 - November 6, 2024. Technical support via cases will continue to work as is. For any urgent requests from Students/Faculty members, please submit the form linked here
Bug_Delete Repository Entry
Hi!
I have a process that join or append a list of ioo in only one, using loop repository and retrieve operators .
Ex: lista_1+ lista_2+ etc... Result: lista.
Then I want to delete all ioo (excepte the result) using loop repository and Delete Repository Entry operators. It runs well but only deletes one ioo every time with a bug.
This is the bug, but I dont know what it means
Spoiler
- Exception: java.util.ConcurrentModificationException
- Message: null
- Stack trace:
- java.util.ArrayList$Itr.checkForComodification(Unknown Source)
- java.util.ArrayList$Itr.next(Unknown Source)
- java.util.Collections$UnmodifiableCollection$1.next(Unknown Source)
- com.rapidminer.operator.meta.RepositoryIterator.iterate(RepositoryIterator.java:75)
- com.rapidminer.operator.meta.AbstractRepositoryIterator.doWork(AbstractRepositoryIterator.java:135)
- com.rapidminer.operator.meta.RepositoryIterator.doWork(RepositoryIterator.java:131)
- com.rapidminer.operator.Operator.execute(Operator.java:866)
- com.rapidminer.operator.execution.SimpleUnitExecutor.execute(SimpleUnitExecutor.java:51)
- com.rapidminer.operator.ExecutionUnit.execute(ExecutionUnit.java:711)
- com.rapidminer.operator.OperatorChain.doWork(OperatorChain.java:375)
- com.rapidminer.operator.Operator.execute(Operator.java:866)
- com.rapidminer.Process.run(Process.java:949)
- com.rapidminer.Process.run(Process.java:873)
- com.rapidminer.Process.run(Process.java:832)
- com.rapidminer.Process.run(Process.java:827)
- com.rapidminer.Process.run(Process.java:817)
- com.rapidminer.gui.ProcessThread.run(ProcessThread.java:63)
This is my process:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.3.015">
<context>
<input/>
<output/>
<macros>
<macro>
<key>repo</key>
<value>//Ikarus/Curso</value>
</macro>
<macro>
<key>coleccion</key>
<value>ListaReglas_true</value>
</macro>
<macro>
<key>tipo</key>
<value>1</value>
</macro>
</macros>
</context>
<operator activated="true" class="process" compatibility="5.3.015" expanded="true" name="Process">
<process expanded="true">
<operator activated="true" class="loop_repository" compatibility="5.3.015" expanded="true" height="76" name="Loop Repository" width="90" x="45" y="30">
<parameter key="repository_folder" value="%{repo}"/>
<parameter key="entry_type" value="IOObject"/>
<parameter key="filter" value="%{coleccion}_.*"/>
<process expanded="true">
<operator activated="true" class="retrieve" compatibility="5.3.015" expanded="true" height="60" name="Retrieve (2)" width="90" x="45" y="30">
<parameter key="repository_entry" value="%{repository_path}"/>
</operator>
<connect from_op="Retrieve (2)" from_port="output" to_port="out 1"/>
<portSpacing port="source_repository object" spacing="0"/>
<portSpacing port="source_in 1" spacing="0"/>
<portSpacing port="sink_out 1" spacing="0"/>
<portSpacing port="sink_out 2" spacing="0"/>
</process>
</operator>
<operator activated="true" class="select_subprocess" compatibility="5.3.015" expanded="true" height="76" name="Select Subprocess" width="90" x="179" y="30">
<parameter key="select_which" value="%{tipo}"/>
<process expanded="true">
<operator activated="true" class="append" compatibility="5.3.015" expanded="true" height="76" name="Append" width="90" x="45" y="120"/>
<connect from_port="input 1" to_op="Append" to_port="example set 1"/>
<connect from_op="Append" from_port="merged set" to_port="output 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="source_input 2" spacing="0"/>
<portSpacing port="sink_output 1" spacing="0"/>
<portSpacing port="sink_output 2" spacing="0"/>
</process>
<process expanded="true">
<operator activated="true" class="loop_collection" compatibility="5.3.015" expanded="true" height="60" name="Loop Collection" width="90" x="45" y="75">
<process expanded="true">
<operator activated="true" class="branch" compatibility="5.3.015" expanded="true" height="76" name="Branch" width="90" x="45" y="30">
<parameter key="condition_type" value="macro_defined"/>
<parameter key="condition_value" value="conectado"/>
<process expanded="true">
<operator activated="true" class="recall" compatibility="5.3.015" expanded="true" height="60" name="Recall" width="90" x="45" y="120">
<parameter key="name" value="conjunto"/>
<parameter key="io_object" value="ExampleSet"/>
<parameter key="remove_from_store" value="false"/>
</operator>
<operator activated="true" class="join" compatibility="5.3.015" expanded="true" height="76" name="Join" width="90" x="179" y="75">
<list key="key_attributes"/>
</operator>
<operator activated="true" class="remember" compatibility="5.3.015" expanded="true" height="60" name="Remember (2)" width="90" x="179" y="210">
<parameter key="name" value="conjunto"/>
<parameter key="io_object" value="ExampleSet"/>
</operator>
<connect from_port="condition" to_op="Join" to_port="left"/>
<connect from_op="Recall" from_port="result" to_op="Join" to_port="right"/>
<connect from_op="Join" from_port="join" to_op="Remember (2)" to_port="store"/>
<portSpacing port="source_condition" spacing="0"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_input 1" spacing="0"/>
</process>
<process expanded="true">
<operator activated="true" class="remember" compatibility="5.3.015" expanded="true" height="60" name="Remember" width="90" x="45" y="120">
<parameter key="name" value="conjunto"/>
<parameter key="io_object" value="ExampleSet"/>
</operator>
<operator activated="true" class="set_macro" compatibility="5.3.015" expanded="true" height="60" name="Set Macro" width="90" x="45" y="30">
<parameter key="macro" value="conectado"/>
<parameter key="value" value="1"/>
</operator>
<connect from_port="condition" to_op="Remember" to_port="store"/>
<portSpacing port="source_condition" spacing="0"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_input 1" spacing="0"/>
</process>
</operator>
<connect from_port="single" to_op="Branch" to_port="condition"/>
<portSpacing port="source_single" spacing="0"/>
<portSpacing port="sink_output 1" spacing="0"/>
</process>
</operator>
<operator activated="true" class="recall" compatibility="5.3.015" expanded="true" height="60" name="Recall (2)" width="90" x="45" y="165">
<parameter key="name" value="conjunto"/>
<parameter key="io_object" value="ExampleSet"/>
</operator>
<connect from_port="input 1" to_op="Loop Collection" to_port="collection"/>
<connect from_op="Recall (2)" from_port="result" to_port="output 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="source_input 2" spacing="0"/>
<portSpacing port="sink_output 1" spacing="0"/>
<portSpacing port="sink_output 2" spacing="0"/>
</process>
</operator>
<operator activated="true" class="store" compatibility="5.3.015" expanded="true" height="60" name="Store" width="90" x="313" y="30">
<parameter key="repository_entry" value="%{repo}/%{coleccion}"/>
</operator>
<operator activated="true" class="materialize_data" compatibility="5.3.015" expanded="true" height="76" name="Materialize Data" width="90" x="45" y="165"/>
<operator activated="true" class="loop_repository" compatibility="5.3.015" expanded="true" height="76" name="Loop Repository (2)" width="90" x="179" y="165">
<parameter key="repository_folder" value="%{repo}"/>
<parameter key="entry_type" value="IOObject"/>
<parameter key="filter" value="%{coleccion}_.*"/>
<process expanded="true">
<operator activated="true" class="delete_repository_entry" compatibility="5.3.015" expanded="true" height="76" name="Delete Repository Entry (2)" width="90" x="112" y="30">
<parameter key="entry_to_delete" value="%{repository_path}"/>
</operator>
<connect from_port="repository object" to_op="Delete Repository Entry (2)" to_port="through 1"/>
<connect from_port="in 1" to_port="out 1"/>
<portSpacing port="source_repository object" spacing="0"/>
<portSpacing port="source_in 1" spacing="0"/>
<portSpacing port="source_in 2" spacing="0"/>
<portSpacing port="sink_out 1" spacing="0"/>
<portSpacing port="sink_out 2" spacing="0"/>
</process>
</operator>
<connect from_op="Loop Repository" from_port="out 1" to_op="Select Subprocess" to_port="input 1"/>
<connect from_op="Select Subprocess" from_port="output 1" to_op="Store" to_port="input"/>
<connect from_op="Store" from_port="through" to_op="Materialize Data" to_port="example set input"/>
<connect from_op="Materialize Data" from_port="example set output" to_op="Loop Repository (2)" to_port="in 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
</process>
</operator>
</process>
Tagged:
0
Best Answer
-
Edin_Klapic Employee-RapidMiner, RMResearcher, Member Posts: 299 RM Data Scientist
Hi Ikarus,
In the meantime please find attached a workaround which deletes the files.
Best,
Edin
<?xml version="1.0" encoding="UTF-8"?><process version="7.5.001">
<context>
<input/>
<output/>
<macros>
<macro>
<key>repo</key>
<value>//Ikarus/Curso</value>
</macro>
<macro>
<key>coleccion</key>
<value>ListaReglas_true</value>
</macro>
<macro>
<key>tipo</key>
<value>1</value>
</macro>
</macros>
</context>
<operator activated="true" class="process" compatibility="6.0.002" expanded="true" name="Process">
<process expanded="true">
<operator activated="false" class="set_macros" compatibility="7.5.001" expanded="true" height="68" name="Set Macros" width="90" x="45" y="34">
<list key="macros">
<parameter key="repo" value="ioo to delete"/>
<parameter key="tipo" value="1"/>
<parameter key="coleccion" value="ES"/>
</list>
</operator>
<operator activated="true" class="loop_repository" compatibility="7.5.001" expanded="true" height="82" name="Loop Repository" width="90" x="246" y="34">
<parameter key="repository_folder" value="%{repo}"/>
<parameter key="entry_type" value="IOObject"/>
<parameter key="filter" value="%{coleccion}_.*"/>
<process expanded="true">
<operator activated="true" class="retrieve" compatibility="7.5.001" expanded="true" height="68" name="Retrieve (2)" width="90" x="45" y="34">
<parameter key="repository_entry" value="%{repository_path}"/>
</operator>
<operator activated="true" class="generate_data_user_specification" compatibility="7.5.001" expanded="true" height="68" name="Generate Data by User Specification" width="90" x="179" y="85">
<list key="attribute_values">
<parameter key="IOObjects" value="%{repository_path}"/>
</list>
<list key="set_additional_roles"/>
</operator>
<operator activated="true" class="branch" compatibility="7.5.001" expanded="true" height="82" name="Branch (2)" width="90" x="313" y="85">
<parameter key="condition_type" value="macro_defined"/>
<parameter key="condition_value" value="firstObject"/>
<process expanded="true">
<operator activated="true" class="recall" compatibility="7.5.001" expanded="true" height="68" name="Recall (3)" width="90" x="45" y="34">
<parameter key="name" value="IOObjectList"/>
</operator>
<operator activated="true" class="append" compatibility="7.5.001" expanded="true" height="103" name="Append (2)" width="90" x="179" y="85"/>
<operator activated="true" class="remember" compatibility="7.5.001" expanded="true" height="68" name="Remember (4)" width="90" x="179" y="238">
<parameter key="name" value="IOObjectList"/>
</operator>
<connect from_port="condition" to_op="Append (2)" to_port="example set 2"/>
<connect from_op="Recall (3)" from_port="result" to_op="Append (2)" to_port="example set 1"/>
<connect from_op="Append (2)" from_port="merged set" to_op="Remember (4)" to_port="store"/>
<portSpacing port="source_condition" spacing="0"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_input 1" spacing="0"/>
</process>
<process expanded="true">
<operator activated="true" class="set_macro" compatibility="7.5.001" expanded="true" height="68" name="Set Macro (2)" width="90" x="179" y="85">
<parameter key="macro" value="firstObject"/>
<parameter key="value" value="false"/>
</operator>
<operator activated="true" class="remember" compatibility="7.5.001" expanded="true" height="68" name="Remember (3)" width="90" x="45" y="85">
<parameter key="name" value="IOObjectList"/>
</operator>
<connect from_port="condition" to_op="Remember (3)" to_port="store"/>
<portSpacing port="source_condition" spacing="84"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_input 1" spacing="0"/>
</process>
</operator>
<connect from_op="Retrieve (2)" from_port="output" to_port="out 1"/>
<connect from_op="Generate Data by User Specification" from_port="output" to_op="Branch (2)" to_port="condition"/>
<portSpacing port="source_repository object" spacing="0"/>
<portSpacing port="source_in 1" spacing="0"/>
<portSpacing port="source_in 2" spacing="0"/>
<portSpacing port="sink_out 1" spacing="0"/>
<portSpacing port="sink_out 2" spacing="0"/>
</process>
</operator>
<operator activated="true" class="select_subprocess" compatibility="7.5.001" expanded="true" height="82" name="Select Subprocess" width="90" x="380" y="34">
<parameter key="select_which" value="%{tipo}"/>
<process expanded="true">
<operator activated="true" class="append" compatibility="7.5.001" expanded="true" height="82" name="Append" width="90" x="45" y="136"/>
<connect from_port="input 1" to_op="Append" to_port="example set 1"/>
<connect from_op="Append" from_port="merged set" to_port="output 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="source_input 2" spacing="0"/>
<portSpacing port="sink_output 1" spacing="0"/>
<portSpacing port="sink_output 2" spacing="0"/>
</process>
<process expanded="true">
<operator activated="true" class="loop_collection" compatibility="7.5.001" expanded="true" height="68" name="Loop Collection" width="90" x="45" y="75">
<process expanded="true">
<operator activated="true" class="branch" compatibility="6.4.000" expanded="true" height="82" name="Branch" width="90" x="45" y="30">
<parameter key="condition_type" value="macro_defined"/>
<parameter key="condition_value" value="conectado"/>
<process expanded="true">
<operator activated="true" class="recall" compatibility="7.5.001" expanded="true" height="68" name="Recall" width="90" x="45" y="120">
<parameter key="name" value="conjunto"/>
<parameter key="remove_from_store" value="false"/>
</operator>
<operator activated="true" class="join" compatibility="7.5.001" expanded="true" height="82" name="Join" width="90" x="179" y="75">
<list key="key_attributes"/>
</operator>
<operator activated="true" class="remember" compatibility="7.5.001" expanded="true" height="68" name="Remember (2)" width="90" x="179" y="210">
<parameter key="name" value="conjunto"/>
</operator>
<connect from_port="condition" to_op="Join" to_port="left"/>
<connect from_op="Recall" from_port="result" to_op="Join" to_port="right"/>
<connect from_op="Join" from_port="join" to_op="Remember (2)" to_port="store"/>
<portSpacing port="source_condition" spacing="0"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_input 1" spacing="0"/>
</process>
<process expanded="true">
<operator activated="true" class="remember" compatibility="7.5.001" expanded="true" height="68" name="Remember" width="90" x="45" y="120">
<parameter key="name" value="conjunto"/>
</operator>
<operator activated="true" class="set_macro" compatibility="7.5.001" expanded="true" height="68" name="Set Macro" width="90" x="45" y="30">
<parameter key="macro" value="conectado"/>
<parameter key="value" value="1"/>
</operator>
<connect from_port="condition" to_op="Remember" to_port="store"/>
<portSpacing port="source_condition" spacing="0"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_input 1" spacing="0"/>
</process>
</operator>
<connect from_port="single" to_op="Branch" to_port="condition"/>
<portSpacing port="source_single" spacing="0"/>
<portSpacing port="sink_output 1" spacing="0"/>
</process>
</operator>
<operator activated="true" class="recall" compatibility="7.5.001" expanded="true" height="68" name="Recall (2)" width="90" x="45" y="165">
<parameter key="name" value="conjunto"/>
</operator>
<connect from_port="input 1" to_op="Loop Collection" to_port="collection"/>
<connect from_op="Recall (2)" from_port="result" to_port="output 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="source_input 2" spacing="0"/>
<portSpacing port="sink_output 1" spacing="0"/>
<portSpacing port="sink_output 2" spacing="0"/>
</process>
</operator>
<operator activated="true" class="store" compatibility="7.5.001" expanded="true" height="68" name="Store" width="90" x="514" y="34">
<parameter key="repository_entry" value="%{repo}/%{coleccion}"/>
</operator>
<operator activated="true" class="materialize_data" compatibility="7.5.001" expanded="true" height="82" name="Materialize Data" width="90" x="246" y="187"/>
<operator activated="true" class="recall" compatibility="7.5.001" expanded="true" height="68" name="Recall (4)" width="90" x="380" y="187">
<parameter key="name" value="IOObjectList"/>
</operator>
<operator activated="true" class="loop_examples" compatibility="7.5.001" expanded="true" height="82" name="Loop Examples" width="90" x="514" y="187">
<process expanded="true">
<operator activated="true" class="extract_macro" compatibility="7.5.001" expanded="true" height="68" name="Extract Macro" width="90" x="45" y="34">
<parameter key="macro" value="IOObjectToDelete"/>
<parameter key="macro_type" value="data_value"/>
<parameter key="attribute_name" value="IOObjects"/>
<parameter key="example_index" value="%{example}"/>
<list key="additional_macros"/>
</operator>
<operator activated="true" class="delete_repository_entry" compatibility="7.5.001" expanded="true" height="82" name="Delete Repository Entry" width="90" x="179" y="34">
<parameter key="entry_to_delete" value="%{IOObjectToDelete}"/>
</operator>
<connect from_port="example set" to_op="Extract Macro" to_port="example set"/>
<connect from_op="Extract Macro" from_port="example set" to_op="Delete Repository Entry" to_port="through 1"/>
<portSpacing port="source_example set" spacing="0"/>
<portSpacing port="sink_example set" spacing="0"/>
<portSpacing port="sink_output 1" spacing="0"/>
</process>
</operator>
<connect from_op="Loop Repository" from_port="out 1" to_op="Select Subprocess" to_port="input 1"/>
<connect from_op="Select Subprocess" from_port="output 1" to_op="Store" to_port="input"/>
<connect from_op="Store" from_port="through" to_op="Materialize Data" to_port="example set input"/>
<connect from_op="Recall (4)" from_port="result" to_op="Loop Examples" to_port="example set"/>
<connect from_op="Loop Examples" from_port="example set" to_port="result 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
<portSpacing port="sink_result 2" spacing="0"/>
</process>
</operator>
</process>1
Answers
Have you tested this with the current verion of RM? I see that your process is an older v5.3 one.
Hi Thomas,
yes, I usually use RM vs 5.3.15. But I have just tested the process with RM 7.5 and it returns me the same bug.
The process has two Loop Repository operators. Into the first, there is a Retrieve with a macro (%{repository_path}), and it runs well. Into the second there is a Delete Repository Entry with the same macro (%{repository_path}), and it deletes only one repository and it send me this bug, that I don´t know what it means.
Thanks,
Ikarus
Huh, that's wierd. Let me share this with the Developers.
OK!
Thanks Thomas