Ошибка SCP при запуске приложения pyCOMPSs
У меня ошибка при запуске приложения, реализованного с помощью pyCOMPS. Приложение работало хорошо, но я сделал некоторые изменения в приложении, и оно перестало работать. Это стек, который я получил от приложения:
--- START OF NESTED EXCEPTION STACK TRACE ---
*** stack trace of GATInvocationException
--- START OF NESTED EXCEPTION STACK TRACE ---
*** stack trace of GATInvocationException
--- START OF NESTED EXCEPTION STACK TRACE ---
*** stack trace of IOException
java.io.IOException: Error during SCP transfer.
at com.trilead.ssh2.SCPClient.put(SCPClient.java:592)
at com.trilead.ssh2.SCPClient.put(SCPClient.java:456)
at org.gridlab.gat.io.cpi.sshtrilead.SshTrileadFileAdaptor.put(SshTrileadFileAdaptor.java:418)
...
Caused by: java.io.IOException: Remote scp terminated with error (scp: /gpfs/scratch/wdir_pycompss: No such file or directory).
at com.trilead.ssh2.SCPClient.readResponse(SCPClient.java:59)
at com.trilead.ssh2.SCPClient.sendFiles(SCPClient.java:166)
at com.trilead.ssh2.SCPClient.put(SCPClient.java:588)
... 15 more
--- END OF NESTED EXCEPTION STACK TRACE ---
*** stack trace of MethodNotApplicableException
LocalFile: cannot copy to remote destination
--- END OF NESTED EXCEPTION STACK TRACE ---
--- END OF NESTED EXCEPTION STACK TRACE ---
В нем говорится, что папка не найдена, но она определена как workingDir в project.xml, и приложение создает эту папку. Я делаю что-то неправильно?
1 ответ
Рабочий каталог, определенный в project.xml, должен существовать до выполнения определенных задач, потому что это место, где будут выполняться удаленные задачи. В зависимости от коммуникационного адаптера, используемого во время выполнения (py)COMPS, он может быть создан, если он не существует. Из отправленного вами стека я могу сделать вывод, что вы работаете с адаптером GAT, но это не так.
Неправильная вещь, которую вы делаете, состоит в том, что задача создает рабочий каталог, и это не разрешено. Рабочая папка каталога должна быть создана во время развертывания. В этом случае среда выполнения пытается запустить задачу внутри папки, которая должна быть создана во время выполнения. Внутри кода задачи можно создать папку в виде песочницы с относительным путем, и она будет создана внутри рабочего каталога, но помните, что она не будет сохраняться от одной задачи к другой, даже если они выполняются в одном и том же рабочем узле.