Upgrade from 4.34 to 4.35

Linux migration

For Linux deployment you need to update docker containers, their environment variables and execute database migration.

Update images version

When using pre-configured SmartFace deployment from our github, open .env file and the SF_VERSION, so the versions match:

SF_VERSION=v5_4.35.0
AC_VERSION=v5_1.14.0
SFS_VERSION=v5_1.31.1
1. Run upgrade scripts

Execute run.sh script shipped in our default deployment. In case you have custom deployment where you cannot use our pre-build script, call database upgrade manually. Please replace variables --rmq-* with your current configuration.

For MSSQL execute

docker run --rm --name admin_migration --volume $(pwd)/iengine.lic:/etc/innovatrics/iengine.lic --network sf-network ${SF_ADMIN_IMAGE} \
        run-migration \
            -p "$(getvalue CameraServicesCount)" \
            -c "$(getvalue ConnectionStrings__CoreDbContext)" -dbe $DB_ENGINE \
            --tenant-id default \
            --rmq-host "$(getvalue RabbitMQ__Hostname)" --rmq-user "$(getvalue RabbitMQ__Username)" --rmq-pass "$(getvalue RabbitMQ__Password)" \
            --rmq-virtual-host "$(getvalue RabbitMQ__VirtualHost)" --rmq-port "$(getvalue RabbitMQ__Port)" --rmq-streams-port "$(getvalue RabbitMQ__StreamsPort)" --rmq-use-ssl "$(getvalue RabbitMQ__UseSsl)" \
            --dependencies-availability-timeout 120

For PostgreSQL execute

docker run --rm --name admin_migration --volume $(pwd)/iengine.lic:/etc/innovatrics/iengine.lic --network sf-network ${SF_ADMIN_IMAGE} \
        run-migration \
            -p "$(getvalue CameraServicesCount)" \
            -c "$(getvalue ConnectionStrings__CoreDbContext)" -dbe $DB_ENGINE \
            --tenant-id default \
            --rmq-host "$(getvalue RabbitMQ__Hostname)" --rmq-user "$(getvalue RabbitMQ__Username)" --rmq-pass "$(getvalue RabbitMQ__Password)" \
            --rmq-virtual-host "$(getvalue RabbitMQ__VirtualHost)" --rmq-port "$(getvalue RabbitMQ__Port)" --rmq-streams-port "$(getvalue RabbitMQ__StreamsPort)" --rmq-use-ssl "$(getvalue RabbitMQ__UseSsl)" \
            --dependencies-availability-timeout 120
2. Run palm migrations commands

These are only example commands from public github repository that needs to be run. To run it manually requires some prerequisities:

  • Stop all compose services
  • Spawn palm-detector services
  • Spawn palm-extractor services
  • Run sf_admin image with migrate-palms cmd
  • Run sf_admin image with set-state-error-non-migrated-palms cmd

Example migrate-palms command from github repo

docker run --rm --name sf_admin \
  --volume "$(pwd)/iengine.lic:/etc/innovatrics/iengine.lic" \
  --network sf-network \
  "${SF_ADMIN_IMAGE}" \
  migrate-palms \
  -c "$(getvalue ConnectionStrings__CoreDbContext)" \
  -dbe "$(getvalue Database__DbEngine)" \
  -rmq-host "$(getvalue RabbitMQ__Hostname)" \
  -rmq-user "$(getvalue RabbitMQ__Username)" \
  -rmq-pass "$(getvalue RabbitMQ__Password)" \
  -rmq-vhost "$(getvalue RabbitMQ__VirtualHost)" \
  -rmq-p "$(getvalue RabbitMQ__Port)" \
  -rmq-use-ssl "$(getvalue RabbitMQ__UseSsl)" \
  -s3-e "$(getvalue S3Bucket__Endpoint)" \
  -s3-bn "$(getvalue S3Bucket__BucketName)" \
  -s3-ak "$(getvalue S3Bucket__AccessKey)" \
  -s3-sk "$(getvalue S3Bucket__SecretKey)" \
  -s3-f "$(getvalue S3Bucket__Folder)" \
  --parallelism 4

Example set-state-error-non-migrated-palms command from github repo to finalize palm templates that were not migrated by setting them to error state.

docker run --rm --name sf_admin \
    --volume "$(pwd)/iengine.lic:/etc/innovatrics/iengine.lic" \
    --network sf-network \
    "${SF_ADMIN_IMAGE}" \
    set-state-error-non-migrated-palms \
    -c "$(getvalue ConnectionStrings__CoreDbContext)" \
    -dbe "$(getvalue Database__DbEngine)"
3. Watchlist synchronization

This version also requires watchlist update log stream repopulation.

docker run --rm --name admin-stream-gen --network sf-network $(getvalue REGISTRY)sf-admin:$(getvalue SF_VERSION) \
    populate-wl-update-log-stream \
    -c "$(getvalue ConnectionStrings__CoreDbContext)" \
    -dbe $(getvalue Database__DbEngine) \
    --rmq-host "$(getvalue RabbitMQ__Hostname)" --rmq-user "$(getvalue RabbitMQ__Username)" --rmq-pass "$(getvalue RabbitMQ__Password)" \
    --rmq-virtual-host "$(getvalue RabbitMQ__VirtualHost)" --rmq-port "$(getvalue RabbitMQ__Port)" --rmq-use-ssl "$(getvalue RabbitMQ__UseSsl)" --rmq-streams-port "$(getvalue RabbitMQ__StreamsPort)"