Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

If any adopter wanted to build and deploy any one of the services, then the adopter needed to create all the cassandra Cassandra keyspaces by executing the existing cassandra-migration module, even though the adopter was only adopting a specific service. There is no way for an adopter to only create/migrate specific keyspaces. Furthermore, determining which release a specific migration script is introduced in is difficult.

Key Design Problems

  1. Separate Group the migration script based on respective services/repos/keyspaces.

  2. Remove the bundling on script as a part of cassandra-migration module and variabilise the script path.

  3. Variabilize the keyspace for cassandra-migration module.

  4. Maintain the release version that in which release version that script introducedVariabilize the script location for cassandra-migration module.

Design

Each keyspace will have its own cassandra_migration_version and cassandra_migration_version_counts table.

Add the release version in the filename.

...

.

...

  • Sample of cassandra_migration_version and cassandra_migration_version_counts table:

...

  • Separate all the migration script based on repos and keyspaces:

    • Option 1: push it to

    that specific repo. Image Removed
    • the respective repo

    • Option 2: Keep in sunbird-utils repo and group is based on keyspace.

  • Mapping of the available keyspaces with repos

Repo Name

Keyspaces

sunbird-lms-service

sunbird

groups-service

sunbird_groups

sunbird-notification-service

sunbird_notifications

sunbird-course-service

sunbird_courses

...

Command 1:

Code Block
java -jar \
-Dcassandra.migration.scripts.locations=filesystem:<absolute or relative path>/db/migration/cassandra \
-Dcassandra.migration.cluster.contactpoints=localhost \
-Dcassandra.migration.cluster.port=9042 \
-Dcassandra.migration.cluster.username=username \
-Dcassandra.migration.cluster.password=password \
-Dcassandra.migration.keyspace.name=keyspace_name \
target/*-jar-with-dependencies.jar migrate

Command 2:

Code Block
java -cp "cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar" com.contrastsecurity.cassandra.migration.utils.MigrationScriptEntryPoint

The system environment listed below is required for command 2.

System Env

Code Block
sunbird_cassandra_keyspace=<keyspace_name>
sunbird_cassandra_migration_location="filesystem:<absolute or relative path>/db/migration/cassandra"