У меня есть сценарий, в котором репозиторий содержит несколько узлов версий, которые не ссылаются ни на какие узлы mix:versionable
. Это связано с тем, что эти версионные узлы были удалены из репозитория, но не их соответствующие версии.
Это приводит к тому, что сборщик мусора JackRabbit не может удалить некоторые файлы из хранилища данных, поскольку существуют версии, которые все еще ссылаются на них, и, следовательно, дисковое пространство не освобождается должным образом.
Я попытался вручную удалить эти версии по следующему алгоритму:
- Получите версию по ее пути, скажем:
- Получить свойство
jcr:frozenUuid
из полученного узла - Получить узел по идентификатору, используя замороженный Uuid из шага 2.
- Если такого узла не существует, удалите версию
Но на последнем шаге я получаю следующее исключение:
javax.jcr.nodetype.ConstraintViolationException: Unable to perform operation. Node is protected.
Итак, мой вопрос. Как удалить неиспользуемые узлы версии?
Я использую jackrabbit-2.2.13.