Upgrade from 0.1.x to 1.0

This chapter describes upgrade procedure from versions 0.1.x to 1.0.x.

The major issues with upgrading from 0.1.x to 1.0 are:

  1. During development of 1.0 Decapod changed its name from Shrimp. It means that naming of some defaults was changed from shrimp to decapod. For example, name of the database in default config was changed.
  2. Configuration files are not stored in containers anymore, but injected using volumes. It means that Decapod images are same in testing and production.
  3. Usage of shell scripts from ./scripts directory is deprecated, because Decapod got admin service.
  4. MongoDB was updated from 3.2.x to 3.4.x.

Changes in existing Ceph deployments are not required.

This guide tries to cover all these obstacles. It is split into 2 parts: action, required to perform on version 0.1 and actions for version 1.0.

Initial Preparations

To start, we need to have latest versions of 1.0 release series. To obtain them, please clone repositories on machine which is used to run Decapod.

$ git clone -b stable-1.0 --recurse-submodules https://github.com/Mirantis/ceph-lcm.git ~/decapod

After that, please create directory where config files and private keys for decapod should be stored. You may choose any directory you like.

$ mkdir -p ~/decapod_runtime

The last step is to identify the name of the project. If you run Shrimp with explicit project name using docker-compose (e.g docker-compose -p shrimp up), then shrimp has to be your projectname. If you didn’t set any, then you need to fetch it.

Execute next command from the directory where you run docker-compose to start Shrimp.

$ docker-compose ps | grep api | cut -f 1 -d '_' | sort -u
shrimp

For simplicity, please assume that the name of the project is PROJ.

Note

If you do not want to pass -p all the time you use docker-compose, please use COMPOSE_PROJECT_NAME environment variable.

Now let’s copy required files in your ~/decapod_runtime directory.

$ cp ~/decapod/{.env,docker-compose.yml,docker-compose.override.yml} ~/decapod_runtime

And let’s set the path to SSH private key in .env file.

$ sed -i "s?^DECAPOD_SSH_PRIVATE_KEY=.*?DECAPOD_SSH_PRIVATE_KEY=$HOME/decapod_runtime/id_rsa?" ~/decapod_runtime/.env

If you are using the name other than id_rsa for private key, use it.

Backup Database

We will create 2 backups:

pre_upgrade
This will have a backup of data before any other action.
pre_upgrade_renamed
This will have a backup in case if you want to use default config from 1.0 and do not port existing one.

Create pre_upgrade Backup

From the directory where you run Shrimp, please execute following command. Please, pay attention to the fact that PROJ is listed as lowercase proj here (this is how docker-compose is converting project name to container name).

$ docker exec -i proj_database_1 mongodump --gzip --archive --ssl --sslAllowInvalidCertificates > ~/pre_upgrade
2017-03-01T14:21:52.856+0000    writing shrimp.migration_script to archive on stdout
2017-03-01T14:21:52.857+0000    writing shrimp.role to archive on stdout
2017-03-01T14:21:52.857+0000    writing shrimp.lock to archive on stdout
2017-03-01T14:21:52.857+0000    writing shrimp.user to archive on stdout
2017-03-01T14:21:52.857+0000    done dumping shrimp.migration_script (3 documents)
2017-03-01T14:21:52.860+0000    writing shrimp.cluster to archive on stdout
2017-03-01T14:21:52.862+0000    done dumping shrimp.cluster (1 document)
2017-03-01T14:21:52.866+0000    writing shrimp.server to archive on stdout
2017-03-01T14:21:52.867+0000    done dumping shrimp.server (0 documents)
2017-03-01T14:21:52.869+0000    done dumping shrimp.user (1 document)
2017-03-01T14:21:52.875+0000    writing shrimp.kv to archive on stdout
2017-03-01T14:21:52.876+0000    writing shrimp.execution_step to archive on stdout
2017-03-01T14:21:52.876+0000    done dumping shrimp.execution_step (0 documents)
2017-03-01T14:21:52.881+0000    writing shrimp.task to archive on stdout
2017-03-01T14:21:52.882+0000    done dumping shrimp.lock (1 document)
2017-03-01T14:21:52.882+0000    done dumping shrimp.kv (0 documents)
2017-03-01T14:21:52.882+0000    done dumping shrimp.task (0 documents)
2017-03-01T14:21:52.887+0000    writing shrimp.execution to archive on stdout
2017-03-01T14:21:52.888+0000    done dumping shrimp.role (1 document)
2017-03-01T14:21:52.889+0000    done dumping shrimp.execution (0 documents)
2017-03-01T14:21:52.891+0000    writing shrimp.token to archive on stdout
2017-03-01T14:21:52.892+0000    writing shrimp.playbook_configuration to archive on stdout
2017-03-01T14:21:52.894+0000    done dumping shrimp.token (0 documents)
2017-03-01T14:21:52.894+0000    done dumping shrimp.playbook_configuration (0 documents)

Important

If you want to restore database for any reason, please execute following:

$ docker exec -i proj_database_1 mongorestore --drop --gzip --archive --ssl --sslAllowInvalidCertificates < ~/pre_upgrade
2017-03-01T14:26:19.268+0000    creating intents for archive
2017-03-01T14:26:19.309+0000    reading metadata for shrimp.migration_script from archive on stdin
2017-03-01T14:26:19.465+0000    restoring shrimp.migration_script from archive on stdin
2017-03-01T14:26:19.469+0000    restoring indexes for collection shrimp.migration_script from metadata
2017-03-01T14:26:19.469+0000    finished restoring shrimp.migration_script (3 documents)
2017-03-01T14:26:19.539+0000    reading metadata for shrimp.cluster from archive on stdin
2017-03-01T14:26:19.728+0000    restoring shrimp.cluster from archive on stdin
2017-03-01T14:26:19.735+0000    restoring indexes for collection shrimp.cluster from metadata
2017-03-01T14:26:20.010+0000    finished restoring shrimp.cluster (1 document)
2017-03-01T14:26:20.206+0000    reading metadata for shrimp.server from archive on stdin
2017-03-01T14:26:20.306+0000    reading metadata for shrimp.user from archive on stdin
2017-03-01T14:26:20.507+0000    restoring shrimp.server from archive on stdin
2017-03-01T14:26:20.509+0000    restoring indexes for collection shrimp.server from metadata
2017-03-01T14:26:20.731+0000    restoring shrimp.user from archive on stdin
2017-03-01T14:26:21.580+0000    restoring indexes for collection shrimp.user from metadata
2017-03-01T14:26:21.580+0000    finished restoring shrimp.server (0 documents)
2017-03-01T14:26:21.707+0000    reading metadata for shrimp.execution_step from archive on stdin
2017-03-01T14:26:21.732+0000    reading metadata for shrimp.lock from archive on stdin
2017-03-01T14:26:22.119+0000    finished restoring shrimp.user (1 document)
2017-03-01T14:26:22.374+0000    restoring shrimp.execution_step from archive on stdin
2017-03-01T14:26:22.376+0000    restoring indexes for collection shrimp.execution_step from metadata
2017-03-01T14:26:22.579+0000    restoring shrimp.lock from archive on stdin
2017-03-01T14:26:22.666+0000    finished restoring shrimp.execution_step (0 documents)
2017-03-01T14:26:22.724+0000    reading metadata for shrimp.kv from archive on stdin
2017-03-01T14:26:22.724+0000    restoring indexes for collection shrimp.lock from metadata
2017-03-01T14:26:22.790+0000    reading metadata for shrimp.task from archive on stdin
2017-03-01T14:26:22.824+0000    reading metadata for shrimp.role from archive on stdin
2017-03-01T14:26:23.016+0000    restoring shrimp.kv from archive on stdin
2017-03-01T14:26:23.018+0000    restoring indexes for collection shrimp.kv from metadata
2017-03-01T14:26:23.208+0000    finished restoring shrimp.lock (1 document)
2017-03-01T14:26:23.440+0000    restoring shrimp.task from archive on stdin
2017-03-01T14:26:23.443+0000    restoring indexes for collection shrimp.task from metadata
2017-03-01T14:26:23.616+0000    restoring shrimp.role from archive on stdin
2017-03-01T14:26:23.745+0000    finished restoring shrimp.kv (0 documents)
2017-03-01T14:26:23.938+0000    finished restoring shrimp.task (0 documents)
2017-03-01T14:26:24.024+0000    reading metadata for shrimp.execution from archive on stdin
2017-03-01T14:26:24.024+0000    restoring indexes for collection shrimp.role from metadata
2017-03-01T14:26:24.090+0000    reading metadata for shrimp.token from archive on stdin
2017-03-01T14:26:24.146+0000    reading metadata for shrimp.playbook_configuration from archive on stdin
2017-03-01T14:26:24.407+0000    restoring shrimp.execution from archive on stdin
2017-03-01T14:26:24.410+0000    restoring indexes for collection shrimp.execution from metadata
2017-03-01T14:26:24.782+0000    finished restoring shrimp.role (1 document)
2017-03-01T14:26:24.991+0000    restoring shrimp.token from archive on stdin
2017-03-01T14:26:24.993+0000    restoring indexes for collection shrimp.token from metadata
2017-03-01T14:26:25.275+0000    restoring shrimp.playbook_configuration from archive on stdin
2017-03-01T14:26:25.277+0000    restoring indexes for collection shrimp.playbook_configuration from metadata
2017-03-01T14:26:25.473+0000    finished restoring shrimp.execution (0 documents)
2017-03-01T14:26:25.584+0000    finished restoring shrimp.token (0 documents)
2017-03-01T14:26:25.852+0000    finished restoring shrimp.playbook_configuration (0 documents)
2017-03-01T14:26:25.852+0000    done

Create pre_upgrade_renamed Backup

Since project was renamed from Shrimp to Decapod during development of release 1.0, default database name was also changed from shrimp to decapod. If you want to use new name and keep running with default config, then please rename it in Mongo DB doing following:

$ docker-compose -p PROJ exec database moshell
MongoDB shell version: 3.2.10
connecting to: false
2017-02-14T06:38:15.400+0000 W NETWORK  [thread1] The server certificate does not match the host name 127.0.0.1
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
Server has startup warnings:
2017-02-14T06:20:54.806+0000 I CONTROL  [initandlisten]
2017-02-14T06:20:54.806+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-02-14T06:20:54.806+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-02-14T06:20:54.806+0000 I CONTROL  [initandlisten]
2017-02-14T06:20:54.806+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-02-14T06:20:54.806+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-02-14T06:20:54.806+0000 I CONTROL  [initandlisten]
> db.copyDatabase("shrimp", "decapod", "localhost")
{ "ok" : 1 }
> use shrimp
switched to db shrimp
> db.dropDatabase()
{ "dropped" : "shrimp", "ok" : 1 }

The command above will rename database shrimp to decapod keeping all the data. After that, do new backup as described above:

$ docker exec -i proj_database_1 mongodump --gzip --archive --ssl --sslAllowInvalidCertificates > ~/pre_upgrade_renamed
2017-03-01T14:28:36.830+0000    writing decapod.user to archive on stdout
2017-03-01T14:28:36.831+0000    writing decapod.lock to archive on stdout
2017-03-01T14:28:36.831+0000    writing decapod.role to archive on stdout
2017-03-01T14:28:36.832+0000    writing decapod.migration_script to archive on stdout
2017-03-01T14:28:36.833+0000    done dumping decapod.user (1 document)
2017-03-01T14:28:36.845+0000    writing decapod.cluster to archive on stdout
2017-03-01T14:28:36.845+0000    done dumping decapod.cluster (1 document)
2017-03-01T14:28:36.846+0000    done dumping decapod.lock (1 document)
2017-03-01T14:28:36.852+0000    done dumping decapod.role (1 document)
2017-03-01T14:28:36.852+0000    writing decapod.kv to archive on stdout
2017-03-01T14:28:36.853+0000    done dumping decapod.migration_script (3 documents)
2017-03-01T14:28:36.854+0000    writing decapod.execution_step to archive on stdout
2017-03-01T14:28:36.855+0000    done dumping decapod.kv (0 documents)
2017-03-01T14:28:36.859+0000    writing decapod.server to archive on stdout
2017-03-01T14:28:36.862+0000    writing decapod.task to archive on stdout
2017-03-01T14:28:36.862+0000    writing decapod.playbook_configuration to archive on stdout
2017-03-01T14:28:36.862+0000    done dumping decapod.execution_step (0 documents)
2017-03-01T14:28:36.862+0000    done dumping decapod.playbook_configuration (0 documents)
2017-03-01T14:28:36.862+0000    done dumping decapod.server (0 documents)
2017-03-01T14:28:36.869+0000    writing decapod.token to archive on stdout
2017-03-01T14:28:36.869+0000    done dumping decapod.task (0 documents)
2017-03-01T14:28:36.870+0000    done dumping decapod.token (0 documents)
2017-03-01T14:28:36.872+0000    writing decapod.execution to archive on stdout
2017-03-01T14:28:36.873+0000    done dumping decapod.execution (0 documents)

Extract Config Files

If you already have a configuration files from old version, please collect them in some directory (e.g ~/decapod_runtime). Decapod version 1.0.x and newer will have default files stored in containers but you need to mount your own if you’ve changed some defaults.

If you already have all files, mentioned in documentation on version 0.1 in ~/decapod_runtime, you can skip this section and proceed to Stop and Remove Containers for Version 0.1.x.

Otherwise, execute commands mentioned below to collect required files. These commands should be executed from the same directory which you are using to run Shrimp 0.1:

$ mkdir ~/decapod_runtime
$ docker cp "$(docker-compose -p PROJ ps -q api):/etc/shrimp/config.yaml" ~/decapod_runtime
$ docker cp "$(docker-compose -p PROJ ps -q controller):/root/.ssh/id_rsa" ~/decapod_runtime
$ docker cp "$(docker-compose -p PROJ ps -q frontend):/ssl/dhparam.pem" ~/decapod_runtime
$ docker cp "$(docker-compose -p PROJ ps -q frontend):/ssl/ssl.crt" ~/decapod_runtime
$ docker cp "$(docker-compose -p PROJ ps -q frontend):/ssl/ssl.key" ~/decapod_runtime
$ docker cp "$(docker-compose -p PROJ ps -q database):/certs/mongodb.pem" ~/decapod_runtime
$ docker cp "$(docker-compose -p PROJ ps -q database):/certs/mongodb-ca.crt" ~/decapod_runtime

If you do not have generated any files mentioned above by yourself and used defaults, there is not need to copy them: all of them will be stored in correct places in 1.0.x images. If you’ve modified any of config.yaml or id_rsa (SSH private key for Ansible), please copy them.

Get Images for Version 1.0

Please follow Install and configure Decapod chapter to get new images. And remember that we have required files in ~/decapod_runtime. Repository for version 1.0 is cloned in ~/decapod as mentioned in Initial Preparations.

Stop and Remove Containers for Version 0.1.x

Since Docker containers are stateless and we have a backup of the state (DB backup), the most easiest and safe method of updating is to drop existing containers and start new ones.

From the directory where you run Shrimp do the following:

$ docker-compose -p PROJ down -v

Run 1.0.x Version

Note

The rest of operations would be performed from ~/decapod_runtime directory so please cd into.

$ docker-compose -p PROJ up --remove-orphans -d

The next step is to restore DB:

$ docker exec -i $(docker-compose -p PROJ ps -q admin) decapod-admin db restore < ~/pre_upgrade_renamed
2017-03-01T14:32:16.139+0000    preparing collections to restore from
2017-03-01T14:32:16.179+0000    reading metadata for decapod.user from archive on stdin
2017-03-01T14:32:16.322+0000    restoring decapod.user from archive on stdin
2017-03-01T14:32:16.325+0000    restoring indexes for collection decapod.user from metadata
2017-03-01T14:32:16.781+0000    finished restoring decapod.user (1 document)
2017-03-01T14:32:16.781+0000    reading metadata for decapod.cluster from archive on stdin
2017-03-01T14:32:16.931+0000    restoring decapod.cluster from archive on stdin
2017-03-01T14:32:16.934+0000    restoring indexes for collection decapod.cluster from metadata
2017-03-01T14:32:16.936+0000    reading metadata for decapod.lock from archive on stdin
2017-03-01T14:32:17.217+0000    finished restoring decapod.cluster (1 document)
2017-03-01T14:32:17.406+0000    restoring decapod.lock from archive on stdin
2017-03-01T14:32:17.415+0000    restoring indexes for collection decapod.lock from metadata
2017-03-01T14:32:17.417+0000    reading metadata for decapod.role from archive on stdin
2017-03-01T14:32:17.629+0000    finished restoring decapod.lock (1 document)
2017-03-01T14:32:17.788+0000    restoring decapod.role from archive on stdin
2017-03-01T14:32:17.790+0000    reading metadata for decapod.migration_script from archive on stdin
2017-03-01T14:32:17.922+0000    restoring decapod.migration_script from archive on stdin
2017-03-01T14:32:17.923+0000    restoring indexes for collection decapod.role from metadata
2017-03-01T14:32:17.925+0000    reading metadata for decapod.kv from archive on stdin
2017-03-01T14:32:18.133+0000    no indexes to restore
2017-03-01T14:32:18.133+0000    finished restoring decapod.migration_script (3 documents)
2017-03-01T14:32:18.133+0000    finished restoring decapod.role (1 document)
2017-03-01T14:32:18.265+0000    restoring decapod.kv from archive on stdin
2017-03-01T14:32:18.267+0000    restoring indexes for collection decapod.kv from metadata
2017-03-01T14:32:18.267+0000    reading metadata for decapod.execution_step from archive on stdin
2017-03-01T14:32:18.473+0000    restoring decapod.execution_step from archive on stdin
2017-03-01T14:32:18.476+0000    restoring indexes for collection decapod.execution_step from metadata
2017-03-01T14:32:18.476+0000    reading metadata for decapod.playbook_configuration from archive on stdin
2017-03-01T14:32:18.599+0000    finished restoring decapod.kv (0 documents)
2017-03-01T14:32:18.908+0000    restoring decapod.playbook_configuration from archive on stdin
2017-03-01T14:32:18.910+0000    restoring indexes for collection decapod.playbook_configuration from metadata
2017-03-01T14:32:18.910+0000    reading metadata for decapod.server from archive on stdin
2017-03-01T14:32:18.981+0000    finished restoring decapod.execution_step (0 documents)
2017-03-01T14:32:19.135+0000    finished restoring decapod.playbook_configuration (0 documents)
2017-03-01T14:32:19.342+0000    restoring decapod.server from archive on stdin
2017-03-01T14:32:19.344+0000    restoring indexes for collection decapod.server from metadata
2017-03-01T14:32:19.344+0000    reading metadata for decapod.task from archive on stdin
2017-03-01T14:32:19.511+0000    restoring decapod.task from archive on stdin
2017-03-01T14:32:19.513+0000    restoring indexes for collection decapod.task from metadata
2017-03-01T14:32:19.513+0000    reading metadata for decapod.token from archive on stdin
2017-03-01T14:32:20.123+0000    finished restoring decapod.server (0 documents)
2017-03-01T14:32:20.327+0000    finished restoring decapod.task (0 documents)
2017-03-01T14:32:20.494+0000    restoring decapod.token from archive on stdin
2017-03-01T14:32:20.497+0000    restoring indexes for collection decapod.token from metadata
2017-03-01T14:32:20.497+0000    reading metadata for decapod.execution from archive on stdin
2017-03-01T14:32:20.585+0000    finished restoring decapod.token (0 documents)
2017-03-01T14:32:20.820+0000    restoring decapod.execution from archive on stdin
2017-03-01T14:32:20.823+0000    restoring indexes for collection decapod.execution from metadata
2017-03-01T14:32:21.008+0000    finished restoring decapod.execution (0 documents)
2017-03-01T14:32:21.008+0000    done

or, if you skip renaming of database:

$ docker exec -i (docker-compose -p PROJ ps admin) decapod-admin db restore < ~/pre_upgrade

Now we need to apply migrations:

$ docker-compose -p PROJ exec admin decapod-admin migration apply
2017-02-14 07:04:12 [DEBUG   ] (        lock.py:118  ): Lock applying_migrations was acquire by locker 5ebb8d44-2919-4913-85f8-47e160d02207
2017-02-14 07:04:12 [DEBUG   ] (        lock.py:183  ): Prolong thread for locker applying_migrations of lock 5ebb8d44-2919-4913-85f8-47e160d02207 has been started. Thread MongoLock prolonger 5ebb8d44-2919-4913-85f8-47e160d02207 for applying_migrations, ident 140234729555712
2017-02-14 07:04:12 [INFO    ] (   migration.py:123  ): Run migration 0003_native_ttl_index.py
2017-02-14 07:04:12 [INFO    ] (   migration.py:198  ): Run /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0003_native_ttl_index.py. Pid 40
2017-02-14 07:04:13 [INFO    ] (   migration.py:203  ): /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0003_native_ttl_index.py has been finished. Exit code 0
2017-02-14 07:04:13 [INFO    ] (   migration.py:277  ): Save result of 0003_native_ttl_index.py migration (result MigrationState.ok)
2017-02-14 07:04:13 [INFO    ] (   migration.py:123  ): Run migration 0004_migrate_to_native_ttls.py
2017-02-14 07:04:13 [INFO    ] (   migration.py:198  ): Run /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0004_migrate_to_native_ttls.py. Pid 48
2017-02-14 07:04:14 [INFO    ] (   migration.py:203  ): /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0004_migrate_to_native_ttls.py has been finished. Exit code 0
2017-02-14 07:04:14 [INFO    ] (   migration.py:277  ): Save result of 0004_migrate_to_native_ttls.py migration (result MigrationState.ok)
2017-02-14 07:04:14 [INFO    ] (   migration.py:123  ): Run migration 0005_index_cluster_data.py
2017-02-14 07:04:14 [INFO    ] (   migration.py:198  ): Run /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0005_index_cluster_data.py. Pid 56
2017-02-14 07:04:16 [INFO    ] (   migration.py:203  ): /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0005_index_cluster_data.py has been finished. Exit code 0
2017-02-14 07:04:16 [INFO    ] (   migration.py:277  ): Save result of 0005_index_cluster_data.py migration (result MigrationState.ok)
2017-02-14 07:04:16 [INFO    ] (   migration.py:123  ): Run migration 0006_create_cluster_data.py
2017-02-14 07:04:16 [INFO    ] (   migration.py:198  ): Run /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0006_create_cluster_data.py. Pid 64
2017-02-14 07:04:17 [DEBUG   ] (        lock.py:164  ): Lock applying_migrations was proloned by locker 5ebb8d44-2919-4913-85f8-47e160d02207.
2017-02-14 07:04:17 [INFO    ] (   migration.py:203  ): /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0006_create_cluster_data.py has been finished. Exit code 0
2017-02-14 07:04:17 [INFO    ] (   migration.py:277  ): Save result of 0006_create_cluster_data.py migration (result MigrationState.ok)
2017-02-14 07:04:17 [INFO    ] (   migration.py:123  ): Run migration 0007_add_external_id_to_user.py
2017-02-14 07:04:17 [INFO    ] (   migration.py:198  ): Run /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0007_add_external_id_to_user.py. Pid 72
2017-02-14 07:04:18 [INFO    ] (   migration.py:203  ): /usr/local/lib/python3.5/dist-packages/decapod_admin/migration_scripts/0007_add_external_id_to_user.py has been finished. Exit code 0
2017-02-14 07:04:18 [INFO    ] (   migration.py:277  ): Save result of 0007_add_external_id_to_user.py migration (result MigrationState.ok)
2017-02-14 07:04:18 [DEBUG   ] (        lock.py:202  ): Prolong thread for locker applying_migrations of lock 5ebb8d44-2919-4913-85f8-47e160d02207 has been stopped. Thread MongoLock prolonger 5ebb8d44-2919-4913-85f8-47e160d02207 for applying_migrations, ident 140234729555712
2017-02-14 07:04:18 [DEBUG   ] (        lock.py:124  ): Try to release lock applying_migrations by locker 5ebb8d44-2919-4913-85f8-47e160d02207.
2017-02-14 07:04:18 [DEBUG   ] (        lock.py:140  ): Lock applying_migrations was released by locker 5ebb8d44-2919-4913-85f8-47e160d02207.

Set MongoDB Backward Incompatibility (optional)

This is optional part but if you want, you can set MongoDB to be non-backward compatible to previous release. To do that, please execute following:

$ docker-compose -p PROJ exec database moshell
MongoDB server version: 3.4.2
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
Server has startup warnings:
2017-02-14T07:00:13.729+0000 I STORAGE  [initandlisten]
2017-02-14T07:00:13.730+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-02-14T07:00:13.730+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten]
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten]
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten]
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten]
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-02-14T07:00:15.199+0000 I CONTROL  [initandlisten]
> db.adminCommand({setFeatureCompatibilityVersion: "3.4"})
{ "ok" : 1  }

Change root Password (optional)

Regular reminder: if you haven’t changed password for root user, you have to do it. Starting from version 1.0 you can do it using admin service. Please check Password Reset.