Как переименовать файл в Heroku, работающем в пакете Spring? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть кодовая база Java, которая исполняется на heroku dyno.Команда выполнена, и журнал после этого подтверждает, что файл изменен, но на самом деле он не работает.

Вот мой код:

File file =null;
String fileName = System.getProperty("user.dir") + env.getProperty("filePath");

try
    {
        if (jobExecution.getStatus() == BatchStatus.COMPLETED) {

            //Get the file and rename the same.
            file = new File(fileName);
            if (file!=null && file.exists())
            {
                String renameFile = System.getProperty("user.dir") + "/wardIssue_"+ new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss").format(new Date().getTime()).toString() +"_completed";
                logger.info("File being renamed to {}", renameFile);
                file.renameTo(new File(renameFile));

            }
            logger.info("Batch job completed successfully");;
        }   
    }

Если вы видите logger.info раздел на самом деле печатает переименованный файл, но на сервере имя файла не изменяется.

Тот же код в моем локальном работает нормально, т.е. имя файла изменено.

Должен ли я запуститьJava-команда для этой весенней партии с sudo?Существуют ли другие причины, которые могут вызвать эту проблему?

Я использую Procfile со следующей командой:

worker: java -Dserver.port=9002 $JAVA_OPTS -jar target/com.cognitive.bbmp.anukula.batch-0.0.1-SNAPSHOT.jar

1 Ответ

0 голосов
/ 20 марта 2019

Файловая система Heroku эфемерна . Любые изменения, которые вы вносите в него, будут потеряны при следующем перезапуске вашего dyno, что происходит часто ( не реже одного раза в день ).

Кроме того, у каждого динамо есть свой собственный эфемерный файловый элемент. Операции, которые вы выполняете на одной dyno, не влияют на другие dyno, поэтому вы даже не можете вносить временные изменения в файловую систему вместе с работником и ожидать, что это повлияет на web (или любые другие) dynos.

Вам придется подходить к вашей проблеме так, чтобы не требовалось переименовывать файлы, если вы хотите запустить свой код на Heroku.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...