svn: E155037: Предыдущая операция не завершена; выполните ‘cleanup’, если она была прервана | Устройство или ресурс занят

Вопрос или проблема

Когда мы используем svn для загрузки файлов с локального или удаленного сервера в svn или для удаления файлов, мы можем столкнуться с проблемой “невозможно удалить: Устройство или ресурс заняты”. Причина в том, что мы не сделали svn commit и svn update после выполнения одной svn add или svn delete, а затем сделали другую svn add или svn delete.

В данном случае svn cleanup может не решить эту проблему.

Итак, как мы можем решить эту проблему.

Эту проблему можно решить, завершив сессии, которые работают с этими файлами nfs0000*.

Введите код
lsof |grep nfs000000000b0c04750000001f
Здесь nfs000000000b0c04750000001f – это имя вашего nfs файла. Ваше может быть другим.

Затем вы увидите что-то подобное.
less 22081 xxxx 4r REG 0,43 7834 185336964
less 25122 xxxx 4r REG 0,43 7834 185336964

Здесь во второй колонке содержится идентификатор сессии, который равен 22081 или 25122.

Далее, мы завершаем эти сессии.
kill -9 Session_ID(2nd column)

После завершения сессии мы запускаем svn cleanup, затем svn commit -m "blabla".

Ответ или решение

Решение проблемы с SVN: E155037 – Устройство или ресурс занят

Проблема, с которой вы столкнулись, может возникнуть при работе с системой управления версиями Subversion (SVN), когда вы пытаетесь выполнить операции, такие как добавление или удаление файлов, но встретили ошибку:

svn: E155037: Previous operation has not finished; run 'cleanup' if it was interrupted
Device or resource busy

Причины возникновения проблемы

Ошибка возникает, когда вы пытаетесь выполнить несколько операций SVN (например, svn add или svn delete), не сделав предварительно коммит (svn commit) или обновление (svn update) после предыдущей операции. Эта ситуация может привести к тому, что некоторые ресурсы остаются занятыми, и как результат – вы не можете продолжить работу.

Шаги для решения проблемы

  1. К убийству зависимых процессов
    Ваша первая задача заключается в том, чтобы идентифицировать активные процессы, которые блокируют работу с файлами. Это можно сделать с помощью команды, которая отображает все текущие процессы, работающие с вашими NFS-файлами:

    lsof | grep nfs000000000b0c04750000001f

    Замените nfs000000000b0c04750000001f на имя вашего конкретного NFS файла.

  2. Проверка результатов
    После выполнения команды вы увидите список процессов, использующих NFS. Например:

    less  22081  xxxx    4r      REG     0,43      7834  185336964 
    less  25122  xxxx    4r      REG     0,43      7834  185336964

    В данном случае, во втором столбце указаны идентификаторы процессов (PID), такие как 22081 и 25122.

  3. Завершение процесса
    Теперь, когда вы знаете идентификаторы процессов, вы можете завершить их с помощью команды kill. Например:

    kill -9 22081
    kill -9 25122

    Используйте флаг -9 для принудительного завершения процесса. Будьте осторожны с использованием этой команды, так как она не дает процессу возможности корректно завершить свои операции.

  4. Очистка и коммит
    После завершения всех зависимых процессов выполните команду svn cleanup, чтобы восстановить нормальное состояние вашей рабочей копии:

    svn cleanup

    Далее, вы можете продолжить работу с SVN, выполнив команду коммита с соответствующим сообщением:

    svn commit -m "Ваше сообщение коммита"

Заключение

Следуя вышеизложенным шагам, вы сможете эффективно решить проблему с ошибкой svn: E155037. Важно понимать циклы операций со SVN и избегать одновременного изменения состояния файлов без соответствующих коммитов и обновлений. Подобные действия помогут избежать блокировок и сохранить целостность вашего репозитория.

Если у вас часто возникают подобные проблемы, рассмотрите возможность оптимизации рабочего процесса, чтобы минимизировать риск возникновения конфликтов и зависаний.

Оцените материал
Добавить комментарий

Капча загружается...