Subprocess Execution

jeanphiv
jeanphiv New Altair Community Member
edited November 5 in Community Q&A
Hi

I am unable to call a subprocess with the execute process component in Rapid server. The call of a process from another works fine in RapidMiner but when I remotly run the process,I have the following error:
com.rapidminer.operator.UserError: Cannot retrieve repository data from entry 'T004_InnerProcess'. Reason: Requested repository _LOCAL does not exist

For testing purpose, my server runs in my computer as my studio does. Could it be the cause of this issue?

Thanks for your help

JP


Tagged:

Answers

  • Marco_Boeck
    Marco_Boeck New Altair Community Member
    Hi,

    that was un unfortunate bug that snuck in. We have released a fix for that in the latest version of RapidMiner Server. You can download it from here.
    Select "Without Application Server (EAR File)" in the second row for RapidMiner Server 6. You will download a file called "RapidMiner-Server-2.0.004.ear". You can then shut down your RapidMiner Server, replace the current .ear file in the folder "RM_Server/standalone/deployments" with the one you downloaded and start the server again. Your processes should now run again.

    Regards,
    Marco
  • jeanphiv
    jeanphiv New Altair Community Member
    Thanks for your help.
    Sadly, i'm still testing rapid miner with the community edition (v5). Is there a correction for that version?


  • Marco_Boeck
    Marco_Boeck New Altair Community Member
    Hi,

    sorry, my bad, I thought you were talking about the bug with RM Server 6.
    In that case, you probably used an operator to access something in your local repository with a fully qualified path. However, your RapidMiner Server installation knows nothing about the repositories on your local machine and how you named them. Thus you always need to work with relative paths in your processes when executing them on RapidMiner Server.

    Regards,
    Marco
  • jeanphiv
    jeanphiv New Altair Community Member
    Hi

    Thanks for the reply. 
    I tried many way to define the path to the subprocess and this error occurs with a relative path to the job in the same directory.

    I'm running Rapid analytics in windows, could it be a problem?

    JP
  • Marco_Boeck
    Marco_Boeck New Altair Community Member
    Hi,

    can you please post the process xml (or a simple example where it happens)?

    Regards,
    Marco
  • jeanphiv
    jeanphiv New Altair Community Member
    Hi

    This is quit strange. This morning, my tests are ok and the subprocess is well called.
    I ran this process just after rapid analytics started. It wans't the case on friday. Could it be the management of the Home directory  which causes a issue?
    As I said I run Rapid miner, Rapid analytics and Java test in the same computer.



    By the way I give you the xml source code.
    I use two processes to test such a call:
    The T003_ParentProcess execute the T004_InnerProcess and the both process are in the same directory


    XML fr T003_ParentProcess
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <process version="5.3.013">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="5.3.013" expanded="true" name="Process">
        <process expanded="true">
          <operator activated="true" class="print_to_console" compatibility="5.3.013" expanded="true" height="76" name="Print to Console" width="90" x="112" y="75">
            <parameter key="log_value" value="%{process_name} is running."/>
          </operator>
          <operator activated="true" class="print_to_console" compatibility="5.3.013" expanded="true" height="76" name="Print to Console (2)" width="90" x="246" y="75">
            <parameter key="log_value" value="Call T004_InnerProcess"/>
          </operator>
          <operator activated="true" class="execute_process" compatibility="5.3.013" expanded="true" height="76" name="Execute T004_InnerProcess" width="90" x="380" y="75">
            <parameter key="process_location" value="T004_InnerProcess"/>
            <list key="macros"/>
          </operator>
          <connect from_op="Print to Console" from_port="through 1" to_op="Print to Console (2)" to_port="through 1"/>
          <connect from_op="Print to Console (2)" from_port="through 1" to_op="Execute T004_InnerProcess" to_port="input 1"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="0"/>
        </process>
      </operator>
    </process>

    The XML for the called process T002_InnerProcess
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <process version="5.3.013">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="5.3.013" expanded="true" name="Process">
        <process expanded="true">
          <operator activated="true" class="print_to_console" compatibility="5.3.013" expanded="true" height="60" name="Print to Console" width="90" x="112" y="300">
            <parameter key="log_value" value="%{process_name} is running"/>
          </operator>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="0"/>
        </process>
      </operator>
    </process>
  • Marco_Boeck
    Marco_Boeck New Altair Community Member
    Hi,

    your test processes look fine. Generally speaking, the name of a repository is NOT known to RapidMiner Server. Say you have a process stored in the server repository which you have called "MyServer", you can reference it in RapidMiner GUI via //MyServer/Myprocess. This will work because RapidMiner on your machine knows that the repository called "MyServer" exists and thus can resolve and access it.
    RapidMiner Server however knows nothing of the names you gave your repositories. Running the same process on RapidMiner Server will produce an error because it does not know what to do with a repository called "MyServer". If you are accessing repository entries in a process on a server, you always need to use relative paths. That way, the server can use the location of the process it is executing and then go ahead and resolve the desired location relative to the path of the process.
    The error in the first post indicates that this was the problem here and the server simply did not know the "_LOCAL" repository.

    Regards,
    Marco
  • jeanphiv
    jeanphiv New Altair Community Member
    You're clearly right, that's why I always use relative path.

    I thinks I have a specific configuration which leads to this situation. I'm sure that the _Local error occured even with a call to process with a relative path. But I didn't succeed in identifying why and when it occurs.

    I will continue to search and inform you if I get further information. By the way thanks for your help.


    JP