Как остановить ошибку IOException, используя комбинацию Jython, Pyro и Ant?

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

  •  30-09-2019
  •  | 
  •  

Вопрос

Таким образом, прекрасный низкий вниз на эту дози проблему:

Короткие версии: Мы строим систему распределения для этого элемента программного обеспечения, которую мы используем. В основном мы вынимаем Build Artifact, храните его на FTP-сервере, который передает его нескольким клиентам, которые выполняют скрипты, чтобы исправить свои серверы.

Длинная версия:

1 распределительный сервер

несколько клиентских серверов

Программное обеспечение: Jython 2.5.1, Ant 1.8.0, Pyro 3.10

Сервер распределения имеет FTP-сервер и клиент Pyro, работающий на нем. Каждый клиентский сервер имеет на него сервер PRYO.

Когда клиент Pyro сообщает начать процедуру исправления, то она считывает список машин, который содержит список всех клиентских серверов. Затем подключается к каждому из серверов Pyro один за другим и выполнить процедуру патча. Процедура: GetPatch (получает последний патч для этого сервера), STOPSERVER (останавливает программное обеспечение, которое может получить доступ или может получить доступ к тому, что необходимо исправить), применить патч, запуск. Каждый из процессов вызывает скрипт муравья, который проходит с некоторыми именами папок, а другой конфигурацию проходит вокруг. Веселая часть происходит, когда вы идете, чтобы применить патч. См. Ниже для журнала ошибок. Я должен был удалить имена папок из-за причин NDA.

Вот где это становится интересным. Запуск каждой секции процедуры индивидуально. Т.е. запустить GetPatch, StopServer и т. Д. Один за один раз вручную. Эта ошибка не происходит. Физически подходит к машине и работает процессы, которые не происходят. Только когда мы называем все 4 процессы один за другим. Это происходит во время фазы ApplyPatch, когда сценарий ant заменяет Script для нескольких файлов. Мы думаем, что это может быть что-то связано с хранением JVM-хранения файла для разделения второго или 2. Однако это предназначено для исправления в соответствии с записками ошибок на муравьев.

Так что короче говоря:

Сервер распространения ==> Jython ==> Pyro Connection ==> Client Server ==> Jython ==> Сценарий Ant

Журнал ошибок:

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

Это на org.apache.tools.an.task.perform (task.java:348) в org.apache.tools.ant.taskdefs.macroinstance.execute (MacroInstance.java:398) в org.apache.tools.ru. UnderizedElement.execute (UnderizedElement.java:291) на Sun.reflect.nativemethodaccessorimpl.invoke0 (родной метод) на Sun.reflect.nativemethodaccessorimpl.invoke (NativeMethodaccessorimpl.java:39) на Sun.reflect.delegatingmethodacceSsceScessOrimple.java: 25) на java.lang.reflect.method.invoke (method.java:597) в org.apache.tools.ant.dispatch.dispatchutils.execute (Dispatchutils.java:106) на org.apache.tools.ant.task .perform (task.java:348) на org.apache.tools.ant.taskdefs.severy.execute (Sequential.java:68) на org.apache.tools.ant.unknowneLement.execute (UnderizedElement.java:291) в sun.reflect.nativemethadaccessorimpl.invoke0 (родной метод) на Sun.reflect.nativemethodaccessorimpl.nativemethodaccessorimpl.invoke (NativeMethodaccessorimpl.java:39) на sun.reflect.delegatingmethadaccessoriMPl.invoke (делегированиеМЕТИ) t java.lang.reflect.method.invoke (метод.java:597) в org.apache.tools.ant.dispatch.dispatchutils.execute (dispatchutils.java:106) на org.apache.tools.ant.task.pacherfact (Task.java:348) на org.apache.tools.ant.taskdefs.macroinstance.execute (MacroInstance.java:398) на sun.reflect.nativemethodaccessorimpl.invoke0 (родной метод) на Sun.reflect.nativeMethodaccessorimpl. .java: 39) на sun.reflect.delegatingMethodaccessoriMPl.invoke (делегированиеМЕТАКСМЕТАКСCESCESSORIMPL.java:25) на java.lang.reflect.method.invoke (method.java:597) в org.apache.tools.ant.dispatch.dispatchutils. Выполнить (dispatchutils.java:106) на org.apache.tools.ant.task.perform (task.java:348) в org.apache.tools.ant.taskdefs.paralell $ taskrunnable.run (parallel.java:433) На java.lang.thread.run (thread.java:619), вызванные: java.io.ioException: не удалось удалить <* SNIP> bin Rep4698373081723114968.tmp при попытке переименовать его. ap org.apache.tools.ru.ant.Util.fileutils.name (fileutilss.java:1248) на org.apache.tools.ant.taskdefs.replace.processFile (breake.java:702) ... 125

Любая помощь будет оценена.

Это было полезно?

Решение

Похоже, что это проблема, это проблема. Он держит замок через Jython на отдельных папках. Таким образом, когда новый файл введен, он блокирует его в нелективное состояние. Вы все еще можете редактировать файл, т.е. запустить скрипт заменить на нем. Однако вы не можете удалить его. Собираюсь работать на другой реализации FTP. Т.е. используйте версию Java / Jython, а затем муравей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top