Browse Source

feat: add more logs to transition

Karol Sójko 1 year ago
parent
commit
783fd9e2c6

+ 12 - 2
packages/auth/bin/transition.ts

@@ -17,6 +17,7 @@ import { RoleName, TransitionStatus } from '@standardnotes/domain-core'
 const inputArgs = process.argv.slice(2)
 const startDateString = inputArgs[0]
 const endDateString = inputArgs[1]
+const forceRunParam = inputArgs[2]
 
 const requestTransition = async (
   transitionStatusRepository: TransitionStatusRepositoryInterface,
@@ -38,6 +39,7 @@ const requestTransition = async (
   )
 
   let usersTriggered = 0
+  const forceRun = forceRunParam === 'true'
   for (const user of users) {
     const itemsTransitionStatus = await transitionStatusRepository.getStatus(user.uuid, 'items')
     const revisionsTransitionStatus = await transitionStatusRepository.getStatus(user.uuid, 'revisions')
@@ -55,7 +57,11 @@ const requestTransition = async (
 
     let wasTransitionRequested = false
 
-    if (itemsTransitionStatus === null || itemsTransitionStatus.value === TransitionStatus.STATUSES.Failed) {
+    if (
+      itemsTransitionStatus === null ||
+      itemsTransitionStatus.value === TransitionStatus.STATUSES.Failed ||
+      (itemsTransitionStatus.value === TransitionStatus.STATUSES.InProgress && forceRun)
+    ) {
       wasTransitionRequested = true
       await transitionStatusRepository.remove(user.uuid, 'items')
 
@@ -68,7 +74,11 @@ const requestTransition = async (
       )
     }
 
-    if (revisionsTransitionStatus === null || revisionsTransitionStatus.value === TransitionStatus.STATUSES.Failed) {
+    if (
+      revisionsTransitionStatus === null ||
+      revisionsTransitionStatus.value === TransitionStatus.STATUSES.Failed ||
+      (revisionsTransitionStatus.value === TransitionStatus.STATUSES.InProgress && forceRun)
+    ) {
       wasTransitionRequested = true
       await transitionStatusRepository.remove(user.uuid, 'revisions')
 

+ 16 - 0
packages/revisions/src/Domain/UseCase/Transition/TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser/TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser.ts

@@ -112,7 +112,11 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
       const totalRevisionsCountForUser = await (
         this.secondRevisionsRepository as RevisionRepositoryInterface
       ).countByUserUuid(userUuid)
+      this.logger.info(`[${userUuid.value}] Total revisions count for user: ${totalRevisionsCountForUser}`)
       const totalPages = Math.ceil(totalRevisionsCountForUser / this.pageSize)
+      this.logger.info(`[${userUuid.value}] Total pages: ${totalPages}`)
+      let insertedRevisionsCount = 0
+      let skippedRevisionsCount = 0
       for (let currentPage = initialPage; currentPage <= totalPages; currentPage++) {
         const isPageInEvery10Percent = currentPage % Math.ceil(totalPages / 10) === 0
         if (isPageInEvery10Percent) {
@@ -121,6 +125,9 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
               (currentPage / totalPages) * 100,
             )}% completed`,
           )
+          this.logger.info(
+            `[${userUuid.value}] Inserted ${insertedRevisionsCount} revisions so far. Skipped ${skippedRevisionsCount} revisions so far.`,
+          )
           await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.InProgress, timestamp)
         }
 
@@ -151,10 +158,13 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
                     userUuid.value
                   }] Revision ${revision.id.toString()} is older in secondary than revision in primary database`,
                 )
+                skippedRevisionsCount++
 
                 continue
               }
               if (revisionInPrimary.isIdenticalTo(revision)) {
+                skippedRevisionsCount++
+
                 continue
               }
 
@@ -174,6 +184,8 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
             const didSave = await this.primaryRevisionsRepository.insert(revision)
             if (!didSave) {
               this.logger.error(`Failed to save revision ${revision.id.toString()} to primary database`)
+            } else {
+              insertedRevisionsCount++
             }
           } catch (error) {
             this.logger.error(
@@ -183,6 +195,10 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
         }
       }
 
+      this.logger.info(
+        `[${userUuid.value}] Inserted ${insertedRevisionsCount} revisions. Skipped ${skippedRevisionsCount} revisions.`,
+      )
+
       return Result.ok()
     } catch (error) {
       return Result.fail(`Errored when migrating revisions for user ${userUuid.value}: ${(error as Error).message}`)

+ 16 - 0
packages/syncing-server/src/Domain/UseCase/Transition/TransitionItemsFromPrimaryToSecondaryDatabaseForUser/TransitionItemsFromPrimaryToSecondaryDatabaseForUser.ts

@@ -114,13 +114,20 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
       const totalItemsCountForUser = await (this.secondaryItemRepository as ItemRepositoryInterface).countAll({
         userUuid: userUuid.value,
       })
+      this.logger.info(`[${userUuid.value}] Total items count for user: ${totalItemsCountForUser}`)
       const totalPages = Math.ceil(totalItemsCountForUser / this.pageSize)
+      this.logger.info(`[${userUuid.value}] Total pages: ${totalPages}`)
+      let insertedItemsCount = 0
+      let skippedItemsCount = 0
       for (let currentPage = initialPage; currentPage <= totalPages; currentPage++) {
         const isPageInEvery10Percent = currentPage % Math.ceil(totalPages / 10) === 0
         if (isPageInEvery10Percent) {
           this.logger.info(
             `[${userUuid.value}] Migrating items for user: ${Math.round((currentPage / totalPages) * 100)}% completed`,
           )
+          this.logger.info(
+            `[${userUuid.value}] Inserted items count: ${insertedItemsCount}. Skipped items count: ${skippedItemsCount}`,
+          )
           await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.InProgress, timestamp)
         }
 
@@ -148,10 +155,13 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
                 this.logger.info(
                   `[${userUuid.value}] Item ${item.uuid.value} is older in secondary than item in primary database`,
                 )
+                skippedItemsCount++
 
                 continue
               }
               if (itemInPrimary.isIdenticalTo(item)) {
+                skippedItemsCount++
+
                 continue
               }
 
@@ -165,6 +175,8 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
             }
 
             await this.primaryItemRepository.save(item)
+
+            insertedItemsCount++
           } catch (error) {
             this.logger.error(
               `Errored when saving item ${item.uuid.value} to primary database: ${(error as Error).message}`,
@@ -173,6 +185,10 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
         }
       }
 
+      this.logger.info(
+        `[${userUuid.value}] Inserted items count: ${insertedItemsCount}. Skipped items count: ${skippedItemsCount}`,
+      )
+
       return Result.ok()
     } catch (error) {
       return Result.fail((error as Error).message)