Compare commits

..

2 Commits

8 changed files with 73 additions and 43 deletions

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.16.47](https://github.com/standardnotes/server/compare/@standardnotes/home-server@1.16.46...@standardnotes/home-server@1.16.47) (2023-10-10)
**Note:** Version bump only for package @standardnotes/home-server
## [1.16.46](https://github.com/standardnotes/server/compare/@standardnotes/home-server@1.16.45...@standardnotes/home-server@1.16.46) (2023-10-10)
**Note:** Version bump only for package @standardnotes/home-server

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/home-server",
"version": "1.16.46",
"version": "1.16.47",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -3,6 +3,12 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.43.4](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.43.3...@standardnotes/revisions-server@1.43.4) (2023-10-10)
### Bug Fixes
* add transition keyword to logs for better searching ([1026ce3](https://github.com/standardnotes/server/commit/1026ce383c178086400bfe5a46e520e18b54e1bc))
## [1.43.3](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.43.2...@standardnotes/revisions-server@1.43.3) (2023-10-10)
### Bug Fixes

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/revisions-server",
"version": "1.43.3",
"version": "1.43.4",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -22,7 +22,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
) {}
async execute(dto: TransitionRevisionsFromPrimaryToSecondaryDatabaseForUserDTO): Promise<Result<void>> {
this.logger.info(`[${dto.userUuid}] Transitioning revisions for user`)
this.logger.info(`[TRANSITION][${dto.userUuid}] Transitioning revisions for user`)
if (this.secondRevisionsRepository === null) {
return Result.fail('Secondary revision repository is not set')
@@ -39,7 +39,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const userUuid = userUuidOrError.getValue()
if (await this.isAlreadyMigrated(userUuid)) {
this.logger.info(`[${userUuid.value}] User already migrated.`)
this.logger.info(`[TRANSITION][${userUuid.value}] User already migrated.`)
await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.Verified, dto.timestamp)
@@ -50,7 +50,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const migrationTimeStart = this.timer.getTimestampInMicroseconds()
this.logger.info(`[${dto.userUuid}] Migrating revisions`)
this.logger.info(`[TRANSITION][${dto.userUuid}] Migrating revisions`)
const migrationResult = await this.migrateRevisionsForUser(userUuid, dto.timestamp)
if (migrationResult.isFailed()) {
@@ -59,11 +59,11 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
return Result.fail(migrationResult.getError())
}
this.logger.info(`[${dto.userUuid}] Revisions migrated`)
this.logger.info(`[TRANSITION][${dto.userUuid}] Revisions migrated`)
await this.allowForPrimaryDatabaseToCatchUp()
this.logger.info(`[${dto.userUuid}] Checking integrity between primary and secondary database`)
this.logger.info(`[TRANSITION][${dto.userUuid}] Checking integrity between primary and secondary database`)
const integrityCheckResult = await this.checkIntegrityBetweenPrimaryAndSecondaryDatabase(userUuid)
if (integrityCheckResult.isFailed()) {
@@ -83,7 +83,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.Failed, dto.timestamp)
this.logger.error(
`[${dto.userUuid}] Failed to clean up secondary database revisions: ${cleanupResult.getError()}`,
`[TRANSITION][${dto.userUuid}] Failed to clean up secondary database revisions: ${cleanupResult.getError()}`,
)
}
@@ -93,7 +93,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const migrationDurationTimeStructure = this.timer.convertMicrosecondsToTimeStructure(migrationDuration)
this.logger.info(
`[${dto.userUuid}] Transitioned revisions in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
`[TRANSITION][${dto.userUuid}] Transitioned revisions in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
)
await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.Verified, dto.timestamp)
@@ -107,14 +107,14 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
userUuid.value,
)
this.logger.info(`[${userUuid.value}] Migrating from page ${initialPage}`)
this.logger.info(`[TRANSITION][${userUuid.value}] Migrating from page ${initialPage}`)
const totalRevisionsCountForUser = await (
this.secondRevisionsRepository as RevisionRepositoryInterface
).countByUserUuid(userUuid)
this.logger.info(`[${userUuid.value}] Total revisions count for user: ${totalRevisionsCountForUser}`)
this.logger.info(`[TRANSITION][${userUuid.value}] Total revisions count for user: ${totalRevisionsCountForUser}`)
const totalPages = Math.ceil(totalRevisionsCountForUser / this.pageSize)
this.logger.info(`[${userUuid.value}] Total pages: ${totalPages}`)
this.logger.info(`[TRANSITION][${userUuid.value}] Total pages: ${totalPages}`)
let insertedCount = 0
let newerCount = 0
let identicalCount = 0
@@ -125,12 +125,12 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const isPageInEvery10Percent = currentPage % Math.ceil(totalPages / 10) === 0
if (isPageInEvery10Percent) {
this.logger.info(
`[${userUuid.value}] Migrating revisions for user: ${Math.round(
`[TRANSITION][${userUuid.value}] Migrating revisions for user: ${Math.round(
(currentPage / totalPages) * 100,
)}% completed`,
)
this.logger.info(
`[${userUuid.value}] Inserted ${insertedCount} revisions so far. Skipped ${newerCount} revisions because they were newer in primary database. Skipped ${identicalCount} revisions because they were identical in primary and secondary database. Updated ${updatedCount} revisions because they were older in primary database.`,
`[TRANSITION][${userUuid.value}] Inserted ${insertedCount} revisions so far. Skipped ${newerCount} revisions because they were newer in primary database. Skipped ${identicalCount} revisions because they were identical in primary and secondary database. Updated ${updatedCount} revisions because they were older in primary database.`,
)
await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.InProgress, timestamp)
}
@@ -150,7 +150,9 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
for (const revision of revisions) {
try {
if (processedUuids.has(revision.id.toString())) {
this.logger.warn(`[${userUuid.value}] Revision ${revision.id.toString()} was already processed`)
this.logger.warn(
`[TRANSITION][${userUuid.value}] Revision ${revision.id.toString()} was already processed`,
)
duplicatedCount++
} else {
processedUuids.add(revision.id.toString())
@@ -169,7 +171,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
} else {
if (revisionInPrimary.props.dates.updatedAt > revision.props.dates.updatedAt) {
this.logger.info(
`[${
`[TRANSITION][${
userUuid.value
}] Revision ${revision.id.toString()} is older in secondary than revision in primary database`,
)
@@ -190,17 +192,21 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
}
} catch (error) {
this.logger.error(
`Errored when saving revision ${revision.id.toString()} to primary database: ${(error as Error).message}`,
`[TRANSITION][${
userUuid.value
}] Errored when saving revision ${revision.id.toString()} to primary database: ${
(error as Error).message
}`,
)
}
}
}
this.logger.info(
`[${userUuid.value}] Inserted ${insertedCount} revisions. Skipped ${newerCount} revisions because they were newer in primary database. Skipped ${identicalCount} revisions because they were identical in primary and secondary database. Updated ${updatedCount} revisions because they were older in primary database.`,
`[TRANSITION][${userUuid.value}] Inserted ${insertedCount} revisions. Skipped ${newerCount} revisions because they were newer in primary database. Skipped ${identicalCount} revisions because they were identical in primary and secondary database. Updated ${updatedCount} revisions because they were older in primary database.`,
)
if (duplicatedCount > 0) {
this.logger.warn(`[${userUuid.value}] Skipped ${duplicatedCount} duplicated revisions`)
this.logger.warn(`[TRANSITION][${userUuid.value}] Skipped ${duplicatedCount} duplicated revisions`)
}
return Result.ok()
@@ -214,7 +220,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
revisionRepository: RevisionRepositoryInterface,
): Promise<Result<void>> {
try {
this.logger.info(`[${userUuid.value}] Deleting all revisions from secondary database`)
this.logger.info(`[TRANSITION][${userUuid.value}] Deleting all revisions from secondary database`)
await revisionRepository.removeByUserUuid(userUuid)
@@ -235,7 +241,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
userUuid.value,
)
this.logger.info(`[${userUuid.value}] Checking integrity from page ${initialPage}`)
this.logger.info(`[TRANSITION][${userUuid.value}] Checking integrity from page ${initialPage}`)
const totalRevisionsCountForUserInSecondary = await (
this.secondRevisionsRepository as RevisionRepositoryInterface
@@ -278,7 +284,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
if (revisionInPrimary.props.dates.updatedAt > revision.props.dates.updatedAt) {
this.logger.info(
`[${
`[TRANSITION][${
userUuid.value
}] Integrity check of revision ${revision.id.toString()} - is older in secondary than revision in primary database`,
)
@@ -324,7 +330,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
if (totalRevisionsCountForUserInSecondary > 0) {
this.logger.info(
`[${userUuid.value}] User has ${totalRevisionsCountForUserInSecondary} revisions in secondary database.`,
`[TRANSITION][${userUuid.value}] User has ${totalRevisionsCountForUserInSecondary} revisions in secondary database.`,
)
}

View File

@@ -3,6 +3,12 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.115.3](https://github.com/standardnotes/syncing-server-js/compare/@standardnotes/syncing-server@1.115.2...@standardnotes/syncing-server@1.115.3) (2023-10-10)
### Bug Fixes
* add transition keyword to logs for better searching ([1026ce3](https://github.com/standardnotes/syncing-server-js/commit/1026ce383c178086400bfe5a46e520e18b54e1bc))
## [1.115.2](https://github.com/standardnotes/syncing-server-js/compare/@standardnotes/syncing-server@1.115.1...@standardnotes/syncing-server@1.115.2) (2023-10-10)
### Bug Fixes

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/syncing-server",
"version": "1.115.2",
"version": "1.115.3",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -23,7 +23,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
) {}
async execute(dto: TransitionItemsFromPrimaryToSecondaryDatabaseForUserDTO): Promise<Result<void>> {
this.logger.info(`[${dto.userUuid}] Transitioning items`)
this.logger.info(`[TRANSITION][${dto.userUuid}] Transitioning items`)
if (this.secondaryItemRepository === null) {
return Result.fail('Secondary item repository is not set')
@@ -40,7 +40,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
const userUuid = userUuidOrError.getValue()
if (await this.isAlreadyMigrated(userUuid)) {
this.logger.info(`[${userUuid.value}] User already migrated.`)
this.logger.info(`[TRANSITION][${userUuid.value}] User already migrated.`)
await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.Verified, dto.timestamp)
@@ -49,7 +49,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
const migrationTimeStart = this.timer.getTimestampInMicroseconds()
this.logger.info(`[${dto.userUuid}] Migrating items`)
this.logger.info(`[TRANSITION][${dto.userUuid}] Migrating items`)
const migrationResult = await this.migrateItemsForUser(userUuid, dto.timestamp)
if (migrationResult.isFailed()) {
@@ -58,11 +58,11 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
return Result.fail(migrationResult.getError())
}
this.logger.info(`[${dto.userUuid}] Items migrated`)
this.logger.info(`[TRANSITION][${dto.userUuid}] Items migrated`)
await this.allowForPrimaryDatabaseToCatchUp()
this.logger.info(`[${dto.userUuid}] Checking integrity between primary and secondary database`)
this.logger.info(`[TRANSITION][${dto.userUuid}] Checking integrity between primary and secondary database`)
const integrityCheckResult = await this.checkIntegrityBetweenPrimaryAndSecondaryDatabase(userUuid)
if (integrityCheckResult.isFailed()) {
@@ -81,7 +81,9 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
if (cleanupResult.isFailed()) {
await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.Failed, dto.timestamp)
this.logger.error(`[${dto.userUuid}] Failed to clean up secondary database items: ${cleanupResult.getError()}`)
this.logger.error(
`[TRANSITION][${dto.userUuid}] Failed to clean up secondary database items: ${cleanupResult.getError()}`,
)
}
const migrationTimeEnd = this.timer.getTimestampInMicroseconds()
@@ -90,7 +92,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
const migrationDurationTimeStructure = this.timer.convertMicrosecondsToTimeStructure(migrationDuration)
this.logger.info(
`[${dto.userUuid}] Transitioned items in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
`[TRANSITION][${dto.userUuid}] Transitioned items in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
)
await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.Verified, dto.timestamp)
@@ -109,14 +111,14 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
userUuid.value,
)
this.logger.info(`[${userUuid.value}] Migrating from page ${initialPage}`)
this.logger.info(`[TRANSITION][${userUuid.value}] Migrating from page ${initialPage}`)
const totalItemsCountForUser = await (this.secondaryItemRepository as ItemRepositoryInterface).countAll({
userUuid: userUuid.value,
})
this.logger.info(`[${userUuid.value}] Total items count for user: ${totalItemsCountForUser}`)
this.logger.info(`[TRANSITION][${userUuid.value}] Total items count for user: ${totalItemsCountForUser}`)
const totalPages = Math.ceil(totalItemsCountForUser / this.pageSize)
this.logger.info(`[${userUuid.value}] Total pages: ${totalPages}`)
this.logger.info(`[TRANSITION][${userUuid.value}] Total pages: ${totalPages}`)
let insertedCount = 0
let updatedCount = 0
let newerCount = 0
@@ -125,10 +127,12 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
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`,
`[TRANSITION][${userUuid.value}] Migrating items for user: ${Math.round(
(currentPage / totalPages) * 100,
)}% completed`,
)
this.logger.info(
`[${userUuid.value}] Inserted items count: ${insertedCount}. Newer items count: ${newerCount}. Identical items count: ${identicalCount}. Updated items count: ${updatedCount}`,
`[TRANSITION][${userUuid.value}] Inserted items count: ${insertedCount}. Newer items count: ${newerCount}. Identical items count: ${identicalCount}. Updated items count: ${updatedCount}`,
)
await this.updateTransitionStatus(userUuid, TransitionStatus.STATUSES.InProgress, timestamp)
}
@@ -159,7 +163,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
} else {
if (itemInPrimary.props.timestamps.updatedAt > item.props.timestamps.updatedAt) {
this.logger.info(
`[${userUuid.value}] Item ${item.uuid.value} is older in secondary than item in primary database`,
`[TRANSITION][${userUuid.value}] Item ${item.uuid.value} is older in secondary than item in primary database`,
)
newerCount++
@@ -177,14 +181,16 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
}
} catch (error) {
this.logger.error(
`Errored when saving item ${item.uuid.value} to primary database: ${(error as Error).message}`,
`[TRANSITION][${userUuid.value}] Errored when saving item ${item.uuid.value} to primary database: ${
(error as Error).message
}`,
)
}
}
}
this.logger.info(
`[${userUuid.value}] Inserted items count: ${insertedCount}. Newer items count: ${newerCount}. Identical items count: ${identicalCount}. Updated items count: ${updatedCount}`,
`[TRANSITION][${userUuid.value}] Inserted items count: ${insertedCount}. Newer items count: ${newerCount}. Identical items count: ${identicalCount}. Updated items count: ${updatedCount}`,
)
return Result.ok()
@@ -195,7 +201,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
private async deleteItemsForUser(userUuid: Uuid, itemRepository: ItemRepositoryInterface): Promise<Result<void>> {
try {
this.logger.info(`[${userUuid.value}] Cleaning up primary database items`)
this.logger.info(`[TRANSITION][${userUuid.value}] Cleaning up primary database items`)
await itemRepository.deleteByUserUuidAndNotInSharedVault(userUuid)
@@ -211,7 +217,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
userUuid.value,
)
this.logger.info(`[${userUuid.value}] Checking integrity from page ${initialPage}`)
this.logger.info(`[TRANSITION][${userUuid.value}] Checking integrity from page ${initialPage}`)
const totalItemsCountForUserInSecondary = await (
this.secondaryItemRepository as ItemRepositoryInterface
@@ -253,7 +259,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
if (itemInPrimary.props.timestamps.updatedAt > item.props.timestamps.updatedAt) {
this.logger.info(
`[${userUuid.value}] Integrity check of Item ${item.uuid.value} - is older in secondary than item in primary database`,
`[TRANSITION][${userUuid.value}] Integrity check of Item ${item.uuid.value} - is older in secondary than item in primary database`,
)
continue
@@ -296,7 +302,9 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
})
if (totalItemsCountForUserInSecondary > 0) {
this.logger.info(`[${userUuid.value}] User has ${totalItemsCountForUserInSecondary} items in secondary database.`)
this.logger.info(
`[TRANSITION][${userUuid.value}] User has ${totalItemsCountForUserInSecondary} items in secondary database.`,
)
}
return totalItemsCountForUserInSecondary === 0