Wie ein IOException Fehler Erkenntnissen unter Verwendung einer Kombination von Jython, Pyro- und Ameise zu stoppen?

StackOverflow https://stackoverflow.com/questions/2679520

  •  30-09-2019
  •  | 
  •  

Frage

So ist die wunderbare tief unten auf dieser doozie eines Problems:

Kurzversion: Wir bauen ein Vertriebssystem für diesen Artikel von Software, die wir verwenden. Grundsätzlich nehmen wir bauen Artefakt aus, speichern Sie es auf einem FTP-Server, der es an mehrere Clients übergibt die Skripte ausführen, ihre Server patchen.

Lange Version:

1 Verteilungsserver

mehrere Client-Server

Software: jython 2.5.1, Ameise 1.8.0, pyro 3.10

Der Verteilungsserver verfügt über einen FTP-Server und ein PYRO-Client ausgeführt wird darauf. Jeder Client-Server verfügt über einen PRYO Server ausgeführt.

Wenn der PYRO Client sagte der Patch-Vorgang zu starten, dann liest er eine Maschine Liste, die eine Liste aller Client-Server enthält. Dann verbindet eine der PYRO-Server jeweils durch ein und die Patch-Prozedur ausführen. Das Verfahren ist: getPatch (bekommt den neuesten Patch für diesen Server), Stopserver (stoppt die Software, die oder maynot zugreifen können, was gepatcht werden muss), Wenden Sie den Patch, Startserver. Jedes des Verfahrens ruft ein ANT-Skript, das mit einigen Ordnernamen und anderen Config geht umströmt. Der Spaß Teil passiert, wenn Sie den Patch installieren gehen. Siehe unten für Fehlerprotokoll. Ich hatte die Ordnernamen zu entfernen, weil der NDA Gründen.

Dies ist, wo es interessant wird. Laufen Sie jeden Abschnitt des Verfahrens einzeln. d.h. läuft getPatch, Stopserver usw. ein zu einer Zeit manuell. Dieser Fehler nicht passieren. Körperlich goign an der Maschine und läuft die Prozesse es nicht geschieht. Nur wenn wir alle 4 der Anruf verarbeitet nacheinander. Es tritt während der ApplyPatch Phase, wenn ein ANT ersetzen Skript auf mehreren Dateien aufgerufen wird. Wir denken, es könnte etwas mit der JVM keeping halten die Datei für einen Bruchteil einer Sekunde oder 2 ist jedoch bedeutete dies zu tun, um gepatcht wurden nach den Bug Hinweise auf ant.

so kurz:

Verteilungsserver ==> jython ==> pyro Verbindung ==> Client-Server ==> jython ==> ant script

Fehlerprotokoll:

<*snip>\ant\deploy.xml:12: IOException in <*snip>\bin\startGs.sh - java.io.IOException:Failed to delete <*snip>\bin\rep4698373081723114968.tmp while trying to rename it.
    at org.apache.tools.ant.taskdefs.Replace.processFile(Replace.java:709)
    at org.apache.tools.ant.taskdefs.Replace.execute(Replace.java:548)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:302)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:221)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    at org.apache.tools.ant.Extaskdefs.SubAnt.execute(SubAnt.java:302)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:221)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:302)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:221)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)

es bei org.apache.tools.ant.Task.perform (Task.java:348)         bei org.apache.tools.ant.taskdefs.MacroInstance.execute (MacroInstance.java:398)         bei org.apache.tools.ant.UnknownElement.execute (UnknownElement.java:291)         bei sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode)         bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)         bei sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)         bei java.lang.reflect.Method.invoke (Method.java:597)         bei org.apache.tools.ant.dispatch.DispatchUtils.execute (DispatchUtils.java:106)         bei org.apache.tools.ant.Task.perform (Task.java:348)         bei org.apache.tools.ant.taskdefs.Sequential.execute (Sequential.java:68)         bei org.apache.tools.ant.UnknownElement.execute (UnknownElement.java:291)         bei sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode)         bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)         bei sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)         bei java.lang.reflect.Method.invoke (Method.java:597)         bei org.apache.tools.ant.dispatch.DispatchUtils.execute (DispatchUtils.java:106)         bei org.apache.tools.ant.Task.perform (Task.java:348)         bei org.apache.tools.ant.taskdefs.MacroInstance.execute (MacroInstance.java:398)         bei sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode)         bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)         bei sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)         bei java.lang.reflect.Method.invoke (Method.java:597)         bei org.apache.tools.ant.dispatch.DispatchUtils.execute (DispatchUtils.java:106)         bei org.apache.tools.ant.Task.perform (Task.java:348)         bei org.apache.tools.ant.taskdefs.Parallel $ TaskRunnable.run (Parallel.java:433)         bei java.lang.Thread.run (Thread.java:619) Verursacht durch: java.io.IOException: Fehler beim Löschen <* schnipp> \ bin \ rep4698373081723114968.tmp bei dem Versuch, es zu benennen.         bei org.apache.tools.ant.util.FileUtils.rename (FileUtils.java:1248)         bei org.apache.tools.ant.taskdefs.Replace.processFile (Replace.java:702)         ... 125 mehr

Jede mögliche Hilfe würde geschätzt.

War es hilfreich?

Lösung

Es scheint, dass es das FTP ist das ist das Problem. Es hält eine Sperre über jython auf den einzelnen Ordnern. Also, wenn eine neue Datei eingeführt wird sperrt sie in einen nicht-löschbaren Zustand. Sie können immer noch die Datei heißt laufen auf eine ersetzen Skript bearbeiten. jedoch können Sie löschen es nicht. Weg zur Arbeit auf einer anderen Implementierung des ftp. das heißt Verwendung java / jython-Version eher dann ant.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top