2016-03-21 16 views
4

Ich habe einen Fehler beim Ausführen einer Anwendung mit pyCOMPSs implementiert. Die Anwendung hat gut funktioniert, aber ich habe einige Änderungen in der Anwendung vorgenommen und es funktioniert nicht mehr. Dies ist der Stapel ich von der Anwendung erhalten habe:SCP Fehler läuft pyCOMPSs Anwendung

--- 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 --- 

Er sagt, dass ein Ordner nicht gefunden wird, aber es ist definiert als workingDir im project.xml und die Anwendung auf diesen Ordner erstellt. Mache ich etwas falsch?

+1

Besteht dieser Ordner vor dem Start der Ausführung? Wird es von einer Aufgabe erstellt? –

+0

Der Ordner wird von der Anwendung in der ersten Task erstellt –

Antwort

4

Das Arbeitsverzeichnis, das in der project.xml definiert ist, muss vor der Ausführung der definierten Tasks vorhanden sein, da es der Ort ist, an dem die fernen Tasks ausgeführt werden. Abhängig vom Kommunikationsadapter, der von der (py) COMPSs-Laufzeit verwendet wird, könnte er erstellt werden, wenn er nicht existiert. Von dem Stapel, den Sie gesendet haben, kann ich ableiten, dass Sie mit dem GAT-Adapter laufen, und das ist nicht der Fall.

Die falsche Sache, die Sie tun, ist, dass eine Aufgabe das Arbeitsverzeichnis erstellt, und es ist nicht erlaubt. Der Ordner Arbeitsverzeichnis sollte zum Zeitpunkt der Bereitstellung erstellt werden. In diesem Fall versucht die Laufzeitumgebung, die Task innerhalb des Ordners auszuführen, der während der Ausführung erstellt werden soll. Innerhalb des Codes eines Tasks kann ein Ordner als Sandbox mit einem relativen Pfad erstellt werden und er wird innerhalb des Arbeitsverzeichnisses erstellt. Beachten Sie jedoch, dass er nicht von einem Task zu einem anderen persistiert, auch wenn er im selben Worker-Knoten ausgeführt wird.