Skip to content

Docker example: migration failed #3760

@KernelA

Description

@KernelA

Cannot run an example in the docker because migration lead to error.

docker-compose.all.yaml

services:
    modeldb-backend:
        image: vertaaiofficial/modeldb-backend:2.0.8.1
        container_name: "modeldb-backend"
        expose:
            - "8085"
            - "8086"
        ports:
            - "8085:8085"
            - "8086:8086"
        networks:
            - modeldb_network
        environment:
            - VERTA_MODELDB_CONFIG:/config/config.yaml
            - LIQUIBASE_MIGRATION:true
        volumes:
            - ./backend/config:/config/
            - artifact-store:/artifact-store/

    modeldb-proxy:
        image: vertaaiofficial/modeldb-proxy:2.0.8.1
        container_name: "modeldb-proxy"
        environment:
            MDB_ADDRESS: "modeldb-backend:8085"
            SERVER_HTTP_PORT: "8080"
        expose:
            - "8080"
        ports:
            - "8080:8080"
        depends_on:
            - modeldb-backend
        networks:
            - modeldb_network

    modeldb-graphql:
        image: vertaaiofficial/modeldb-graphql:2.0.8.1
        container_name: "modeldb-graphql"
        environment:
            MDB_ADDRESS: "modeldb-backend:8085"
            SERVER_HTTP_PORT: "4000"
            QUERY_PATH: "/api/v1/graphql/query"
        expose:
            - "4000"
        ports:
            - "4000:4000"
        depends_on:
            - modeldb-backend
        networks:
            - modeldb_network

    modeldb-frontend:
        image: vertaaiofficial/modeldb-frontend:2.0.8.2
        container_name: "modeldb-frontend"
        expose:
            - "3000"
        ports:
            - "3000:3000"
        depends_on:
            - modeldb-proxy
            - modeldb-graphql
        environment:
            DEPLOYED: "yes"
            BACKEND_API_PROTOCOL: "http"
            BACKEND_API_DOMAIN: "modeldb-webapp:3000"
            MDB_ADDRESS: http://modeldb-proxy:8080
            ARTIFACTORY_ADDRESS: http://modeldb-backend:8086
            GQL_ADDRESS: http://modeldb-graphql:4000
        networks:
            - modeldb_network

    modeldb-database:
        image: mysql:5.7.42
        container_name: "modeldb-db"
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: root
            POSTGRES_USER: root
            MYSQL_DATABASE: modeldb
        networks:
            - modeldb_network
        volumes:
            - db-volume:/var/lib/mysql

networks:
    modeldb_network:


volumes:
    db-volume:
    artifact-store:

config.yaml

#This config is used by docker compose.
#ModelDB Properties
grpcServer:
  port: 8085

springServer:
  port: 8086
  shutdownTimeout: 30 #time in second

artifactStoreConfig:
  artifactStoreType: NFS #S3, GCP, NFS
  NFS:
    nfsUrlProtocol: http
    nfsRootPath: /artifact-store/
    artifactEndpoint:
      getArtifact: "api/v1/artifact/getArtifact"
      storeArtifact: "api/v1/artifact/storeArtifact"

# Database settings (type mongodb, couchbasedb, relational etc..)
database:
  DBType: relational
  timeout: 4
  liquibaseLockThreshold: 60 #time in second
  RdbConfiguration:
    RdbDatabaseName: modeldb
    RdbDriver: "com.mysql.cj.jdbc.Driver"
    RdbDialect: "org.hibernate.dialect.MySQL5Dialect"
    RdbUrl: "jdbc:mysql://modeldb-db:3306"
    RdbUsername: root
    RdbPassword: root # only for tests

# Test Database settings (type mongodb, couchbasedb etc..)
test:
  test-database:
    DBType: relational
    timeout: 4
    liquibaseLockThreshold: 60 #time in second
    RdbConfiguration:
      RdbDatabaseName: modeldb
      RdbDriver: "com.mysql.cj.jdbc.Driver"
      RdbDialect: "org.hibernate.dialect.MySQL5Dialect"
      RdbUrl: "jdbc:mysql://modeldb-db:3306"
      RdbUsername: root
      RdbPassword: root # only for tests

#ArtifactStore Properties
artifactStore_grpcServer:
  host: modeldb-backend
  port: 8086

cron_job:
  update_parent_timestamp:
    frequency: 10 #frequency to update parent timestamp in second, default 60
    record_update_limit: 100
  delete_entities:
    frequency: 60 #frequency to update parent timestamp in second, default 60
    record_update_limit: 100

telemetry:
  opt_in: true
  frequency: 1 #frequency to share data in hours, default 1
  consumer: https://app.verta.ai/api/v1/uac-proxy/telemetry/collectTelemetry
ai.verta.modeldb.ModelDBException: Migration failed for change set src/main/resources/liquibase/create-tables-changelog-1.0.xml::create-config_blob::raviS:
modeldb-backend   |      Reason: liquibase.exception.DatabaseException: Can't write; duplicate key in table 'config_blob' [Failed SQL: (1022) CREATE TABLE modeldb.config_blob (blob_hash VARCHAR(64) NOT NULL, config_seq_number INT NOT NULL, hyperparameter_type INT NULL, hyperparameter_set_config_blob_hash VARCHAR(64) NULL, hyperparameter_element_config_blob_hash VARCHAR(64) NULL, CONSTRAINT pk_config_blob PRIMARY KEY (blob_hash, config_seq_number), CONSTRAINT fk_hyperparameter_element_config_blob FOREIGN KEY (hyperparameter_element_config_blob_hash) REFERENCES modeldb.hyperparameter_element_config_blob(blob_hash), CONSTRAINT fk_hyperparameter_set_config_blob FOREIGN KEY (hyperparameter_set_config_blob_hash) REFERENCES modeldb.hyperparameter_set_config_blob(blob_hash))]
modeldb-backend   |     at ai.verta.modeldb.utils.ModelDBHibernateUtil.createOrGetSessionFactory(ModelDBHibernateUtil.java:268)
modeldb-backend   |     at ai.verta.modeldb.App.initializeServicesBaseOnDataBase(App.java:368)
modeldb-backend   |     at ai.verta.modeldb.App.main(App.java:263)
modeldb-backend   |     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
modeldb-backend   |     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
modeldb-backend   |     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
modeldb-backend   |     at java.base/java.lang.reflect.Method.invoke(Method.java:564)
modeldb-backend   |     at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
modeldb-backend   |     at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
modeldb-backend   |     at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
modeldb-backend   |     at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:58)
modeldb-backend   | Apr 21, 2023 10:00:07 AM org.apache.coyote.AbstractProtocol pause
modeldb-backend   | INFO: Pausing ProtocolHandler ["http-nio-8086"]
modeldb-backend   | *** NFS Server Shutdown ***
modeldb-backend   | {"thread":"main","level":"INFO","loggerName":"org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor","message":"Shutting down ExecutorService 'applicationTaskExecutor'","endOfBatch":false,"loggerFqcn":"org.apache.commons.logging.LogAdapter$Log4jLog","instant":{"epochSecond":1682071207,"nanoOfSecond":418000000},"threadId":1,"threadPriority":5,"hostName":"afb3470f725e","kubernetes.podIP":""}
modeldb-backend   | Apr 21, 2023 10:00:07 AM org.apache.coyote.AbstractProtocol pause
modeldb-backend   | INFO: Pausing ProtocolHandler ["http-nio-8086"]
modeldb-backend   | Apr 21, 2023 10:00:07 AM org.apache.catalina.core.StandardService stopInternal
modeldb-backend   | INFO: Stopping service [Tomcat]
modeldb-backend   | Apr 21, 2023 10:00:07 AM org.apache.coyote.AbstractProtocol stop
modeldb-backend   | INFO: Stopping ProtocolHandler ["http-nio-8086"]
modeldb-backend   | Apr 21, 2023 10:00:07 AM org.apache.coyote.AbstractProtocol destroy
modeldb-backend   | INFO: Destroying ProtocolHandler ["http-nio-8086"]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions