Due to recent updates, all users are required to create an Altair One account to login to the RapidMiner community. Click the Register button to create your account using the same email that you have previously used to login to the RapidMiner community. This will ensure that any previously created content will be synced to your Altair One account. Once you login, you will be asked to provide a username that identifies you to other Community users. Email us at Community with questions.
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, 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