Управление эволюцией в производственной среде

Мы находимся в процессе развертывания нового приложения, использующего Play 2.1.1, в производство, и у нас возникли некоторые реальные проблемы, и очень ограниченная документация мало помогла ...

Настало время обновиться до новой версии, мы запустили наши обычные сценарии остановки / обновления / запуска, но они потерпели неудачу. По какой-то причине игра отказывалась применять эволюции. При запуске это продолжало говорить

К сожалению, не удается запустить сервер. @ 6elnj89fh: База данных «по умолчанию» нуждается в эволюции!

Это было, хотя мы пытались установитьapplyEvolutions.default=true как через командную строку, так и в файле application_prod.conf. Он также жаловался, что

ПРЕДУПРЕЖДЕНИЕ! Этот сценарий содержит эволюции ВНИЗ, которые могут быть разрушительными

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

На данный момент я не был так обеспокоен, так как предположил, что есть какой-то способ применить эволюцию вручную. После продолжительного поиска это выглядит так, как будто ... В play 1 была поддержка этого, но не в play 2. В режиме dev вы можете просто нажать кнопку в браузере, чтобы применить эволюцию, но в режиме prod я могу найти NO WAY OF РУЧНО ПРИМЕНЯТЬ ЭВОЛЮЦИИ. Это правда или я пропустил это? Я действительно думаю, что это важная особенность! (Задним взглядом я мог бы применить сценарии вручную и отключить плагин evolutions, но тогда я бы потерял отслеживание эволюций, что полезно ...)

Мне также интересно, как вы будете «поддерживать» свою базу данных, поскольку я уверен, что мы доберемся до того момента, когда нам нужно будет это сделать в какой-то момент. Если бы был ручной способ сделать это, он мог бы иметь необязательный аргумент версии для понижения базы данных. Например. если у вас версия 5 и вам нужно вернуться к 4, вы запускаетеplay apply-evolutions 4 который затем применил бы падения из версии 5 и обновил бы db evolutions соответственно. Я мог бы применить падения вручную, но опять же проблема в том, что db evolutions снова будет в недопустимом состоянии ...

В отчаянии я перепробовал все настройки, которые смог найти, чтобы снова запустить сервер, и добавил-DapplyDownEvolutions.default=true вариант. Я предполагал, что этот параметр будет применять спады только при выборе понижения версии БД (хотя, похоже, такой опции нет), но на самом деле он применил взлеты, а затем мгновенно применил взлеты (я узнал об этом позже при устранении неполадок, так как сервер теперь наконец запустился - без какого-либо сообщения - но дал загадочное сообщение об ошибке при посещении сайта). Это то, что этот параметр должен делать? Если это так, я не могу понять, почему настройка существует. Я не могу придумать ни одного сценария, в котором вы хотели бы применить взлеты и мгновенные спады при переходе на более новую версию базы данных. Может кто-нибудь пролить свет на эту настройку?

К этому моменту я наконец смог запустить приложение еще раз, вручную запустив соответствующие «UP».

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

Ответы на вопрос(1)

Ваш ответ на вопрос