Kroki postępowania podczas instalacji nowej wersji oprogramowania:
(OPCJA BEZ SKRYPTU) Po wgraniu nowej wersji aplikacji, należy wykonać migrację wewnątrz kontenerów wszystkich serwisów:
- docker exec -it <id serwisu> bash
- curl -XPOST -H 'Host: localhost' -H 'X-Tenant-Id: placeholder' -H 'Execution-id: placeholder' -H "Content-type: application/json" -d '{}' 'http://localhost/api/database/update'
- exit
(OPCJA ZE SKRYPTEM) Po wgraniu nowej wersji aplikacji, należy wykonać migrację wewnątrz kontenerów wszystkich serwisów skryptem (automatycznie wykonującym je) poniżej. Skrypt należy uruchomić komendą (UWAGA - używać skryptu migrations2.sh!)
sh migrations2.shw katalogu z plikiem. Poniżej załączam screeny ze środowiska DEV jak wygląda uruchomienie go.
migrations2.sh
28 cze 2021, 01:50 PM
migrations.sh
11 mar 2021, 10:24 AM
Wgranie wersji 142:
Po wykonaniu powyższego kroku, należy podjąć jeszcze poniższe działania (w celu możliwości skorzystania ze streamingu na użytkownikach, którzy już istnieją w bazie)
1. Usunąć bazę IdentifierService (lub Identifier, zależnie jak została skonfigurowana w pliku env pod zmienną MONGODB_IDENTIFIER_CONNECTION_STRING) - PPM na bazie i Drop database
2. Uruchomić skrypt w mongo w New shell:
1var userDbName = "User"; 2var pushDbName = "PushService"; 3var userDb = db.getSiblingDB(userDbName); 4var pushDb = db.getSiblingDB(pushDbName); 5userDb.User.find({"identifiers.id":{$exists:true}}).forEach(function (d) { pushDb['UserTemp'].insert(d); }); 6pushDb.getCollection('UserTemp').aggregate([ 7 { 8 $project:{ 9 _id:"$identifiers.id", 10 CreatedAt:"$created", 11 IsBusiness:"$isBusiness" 12 } 13 }, 14 { 15 $out:"User" 16 } 17]); 18pushDb.UserTemp.drop();
Po instalacji wersji 143 202100324.8 wzwyż należy uruchomić jednorazowo skrypt w New shell w mongo:
1var userDbName = "User"; 2var pushDbName = "PushService"; 3 4var userDb = db.getSiblingDB(userDbName); 5var pushDb = db.getSiblingDB(pushDbName); 6 7userDb.User 8.find({ "identifiers.obsoleteId": { $exists: true } }) 9.forEach(function (d) { pushDb['UserTemp'].insert(d); }); 10 11pushDb.getCollection('UserTemp') 12.find({}) 13.forEach(function (u) { 14pushDb.getCollection('User') 15.findOneAndUpdate( 16{ '_id': UUID(u.identifiers.id) }, 17{ '$set': { 'ObsoleteId': u.identifiers.obsoleteId } }); 18}); 19 20pushDb.UserTemp.drop();

