feat: add more logs to transition

This commit is contained in:
Karol Sójko
2023-10-10 08:08:29 +02:00
parent d789c67649
commit 783fd9e2c6
3 changed files with 44 additions and 2 deletions

View File

@@ -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')

View File

@@ -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}`)

View File

@@ -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)