Operator "Subprocess" doesn't pass through data

colo
colo New Altair Community Member
edited November 5 in Community Q&A
Hi (Marco),

I experienced a new issue, that should again be something to fix easily ;)

If the operator "Subprocess" contains no active operators, there are no results delivered at the output port of the operator, although input and output ports of the inner process are connected. Adding some dummy operator (I chose "Select Attributes" with all attributes) changes this. I guess this again should just require a small change/fix, but please let me know if I may expect a general fix from your side, or if I have to do this by myself for now.

Best regards
Matthias
Tagged:

Answers

  • Marco_Boeck
    Marco_Boeck New Altair Community Member
    Hi,

    I'm afraid I have to ask you to file a bug report on that one, I don't have time for quick fixes right now ;)

    Regards,
    Marco
  • colo
    colo New Altair Community Member
    Hi Marco,

    I tried to add a dummy operator to the Subprocess templates and remove this if a operator chain shall be added. The template now is a Subprocess super-operator, containing a single "Delay" operator that is attached to the connection from "in 1" to "out 1". When trying to execute the code

    for (Operator operator : parentProcess.getOperators()) {
    if (operator.getName().startsWith(dummyOperatorName)) {
    parentProcess.getOperatorByName(operator.getName()).setEnabled(false);
    parentProcess.getOperatorByName(operator.getName()).disconnectPorts();
    }
    }
    where parentProcess refers to the ExecutionUnit

    ((OperatorChain) myProcess.getProcess().getOperator("Subprocess1")).getSubprocess(0);
    this results in the following exception:
    Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
    at java.util.AbstractList$Itr.next(Unknown Source)
    at java.util.Collections$UnmodifiableCollection$1.next(Unknown Source)
    at com.rapidminer.operator.Operator.disconnectPorts(Operator.java:2038)
    at core.rapidminer.factory.ExtractionChain.removeDummyOperators(ExtractionChain.java:50)
    at core.rapidminer.factory.ExtractionChain.insertChain(ExtractionChain.java:160)
    at datacollection.rapidminer.processwrapper.PortalIterationProcess.configureOperators(PortalIterationProcess.java:76)
    at datacollection.rapidminer.processwrapper.PortalProcess.createProcesses(PortalProcess.java:131)
    at datacollection.rapidminer.processwrapper.PortalProcess.configureOperators(PortalProcess.java:225)
    at test.TestPortalComplete.main(TestPortalComplete.java:90)
    Disabling the operator works, but trying to disconnect or remove it raises this exception.

    Any idea? :)

    Edit: I just received the same exception when trying to delete an attribute from the attribute set via
    attributes.remove(attribute);
    .

    Best regards
    Matthias