Compare commits

..

2 Commits

10 changed files with 68 additions and 53 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.15.65](https://github.com/standardnotes/server/compare/@standardnotes/home-server@1.15.64...@standardnotes/home-server@1.15.65) (2023-09-19)
**Note:** Version bump only for package @standardnotes/home-server
## [1.15.64](https://github.com/standardnotes/server/compare/@standardnotes/home-server@1.15.63...@standardnotes/home-server@1.15.64) (2023-09-19)
**Note:** Version bump only for package @standardnotes/home-server

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/home-server",
"version": "1.15.64",
"version": "1.15.65",
"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.35.4](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.35.3...@standardnotes/revisions-server@1.35.4) (2023-09-19)
### Bug Fixes
* logs formatting during transition for better readability ([0ae028d](https://github.com/standardnotes/server/commit/0ae028db739decec8c50321b18b0af515e00bd23))
## [1.35.3](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.35.2...@standardnotes/revisions-server@1.35.3) (2023-09-19)
### Bug Fixes

View File

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

View File

@@ -29,7 +29,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
}
if (await this.isAlreadyMigrated(userUuid)) {
this.logger.info(`User ${event.payload.userUuid} already migrated.`)
this.logger.info(`[${event.payload.userUuid}] User already migrated.`)
await this.domainEventPublisher.publish(
this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -43,7 +43,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
return
}
this.logger.info(`Handling transition requested event for user ${event.payload.userUuid}`)
this.logger.info(`[${event.payload.userUuid}] Handling transition requested event`)
await this.domainEventPublisher.publish(
this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -59,7 +59,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
})
if (result.isFailed()) {
this.logger.error(`Failed to transition for user ${event.payload.userUuid}`)
this.logger.error(`[${event.payload.userUuid}] Failed to transition: ${result.getError()}`)
await this.domainEventPublisher.publish(
this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -88,7 +88,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
if (totalRevisionsCountForUserInPrimary > 0) {
this.logger.info(
`User ${userUuid.value} has ${totalRevisionsCountForUserInPrimary} revisions in primary database.`,
`[${userUuid.value}] User has ${totalRevisionsCountForUserInPrimary} revisions in primary database.`,
)
}
@@ -98,9 +98,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
private async getUserUuidFromEvent(event: TransitionRequestedEvent): Promise<Uuid | null> {
const userUuidOrError = Uuid.create(event.payload.userUuid)
if (userUuidOrError.isFailed()) {
this.logger.error(
`Failed to transition revisions for user ${event.payload.userUuid}: ${userUuidOrError.getError()}`,
)
this.logger.error(`[${event.payload.userUuid}] Failed to transition revisions: ${userUuidOrError.getError()}`)
await this.domainEventPublisher.publish(
this.domainEventFactory.createTransitionStatusUpdatedEvent({
userUuid: event.payload.userUuid,

View File

@@ -17,7 +17,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
) {}
async execute(dto: TransitionRevisionsFromPrimaryToSecondaryDatabaseForUserDTO): Promise<Result<void>> {
this.logger.info(`Transitioning revisions for user ${dto.userUuid}`)
this.logger.info(`[${dto.userUuid}] Transitioning revisions for user`)
if (this.secondRevisionsRepository === null) {
return Result.fail('Secondary revision repository is not set')
@@ -36,7 +36,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
await this.getNewRevisionsCreatedInSecondaryDatabase(userUuid)
for (const existingRevisionUuid of alreadyExistingInPrimary) {
this.logger.info(`Removing revision ${existingRevisionUuid} from secondary database`)
this.logger.info(`[${dto.userUuid}] Removing revision ${existingRevisionUuid} from secondary database`)
await (this.secondRevisionsRepository as RevisionRepositoryInterface).removeOneByUuid(
Uuid.create(existingRevisionUuid).getValue(),
userUuid,
@@ -45,16 +45,14 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
if (newRevisionsInSecondary.length > 0) {
this.logger.info(
`Found ${newRevisionsInSecondary.length} new revisions in secondary database for user ${userUuid.value}`,
`[${dto.userUuid}] Found ${newRevisionsInSecondary.length} new revisions in secondary database`,
)
}
newRevisionsInSecondaryCount = newRevisionsInSecondary.length
if (updatedInSecondary.length > 0) {
this.logger.info(
`Found ${updatedInSecondary.length} updated revisions in secondary database for user ${userUuid.value}`,
)
this.logger.info(`[${dto.userUuid}] Found ${updatedInSecondary.length} updated revisions in secondary database`)
}
updatedRevisionsInSecondary = updatedInSecondary
@@ -66,7 +64,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const migrationTimeStart = this.timer.getTimestampInMicroseconds()
this.logger.debug(`Transitioning revisions for user ${userUuid.value}`)
this.logger.debug(`[${dto.userUuid}] Transitioning revisions`)
const migrationResult = await this.migrateRevisionsForUser(userUuid, updatedRevisionsInSecondary)
if (migrationResult.isFailed()) {
@@ -74,7 +72,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const cleanupResult = await this.deleteRevisionsForUser(userUuid, this.secondRevisionsRepository)
if (cleanupResult.isFailed()) {
this.logger.error(
`Failed to clean up secondary database revisions for user ${userUuid.value}: ${cleanupResult.getError()}`,
`[${dto.userUuid}] Failed to clean up secondary database revisions: ${cleanupResult.getError()}`,
)
}
}
@@ -94,7 +92,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const cleanupResult = await this.deleteRevisionsForUser(userUuid, this.secondRevisionsRepository)
if (cleanupResult.isFailed()) {
this.logger.error(
`Failed to clean up secondary database revisions for user ${userUuid.value}: ${cleanupResult.getError()}`,
`[${dto.userUuid}] Failed to clean up secondary database revisions: ${cleanupResult.getError()}`,
)
}
}
@@ -104,9 +102,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const cleanupResult = await this.deleteRevisionsForUser(userUuid, this.primaryRevisionsRepository)
if (cleanupResult.isFailed()) {
this.logger.error(
`Failed to clean up primary database revisions for user ${userUuid.value}: ${cleanupResult.getError()}`,
)
this.logger.error(`[${dto.userUuid}] Failed to clean up primary database revisions: ${cleanupResult.getError()}`)
}
const migrationTimeEnd = this.timer.getTimestampInMicroseconds()
@@ -115,7 +111,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const migrationDurationTimeStructure = this.timer.convertMicrosecondsToTimeStructure(migrationDuration)
this.logger.info(
`Transitioned revisions for user ${userUuid.value} in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
`[${dto.userUuid}] Transitioned revisions in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
)
return Result.ok()
@@ -141,14 +137,16 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
updatedRevisionsInSecondary.find((updatedRevisionUuid) => updatedRevisionUuid === revision.id.toString())
) {
this.logger.info(
`Skipping saving revision ${revision.id.toString()} as it was updated in secondary database`,
`[${
userUuid.value
}] Skipping saving revision ${revision.id.toString()} as it was updated in secondary database`,
)
continue
}
this.logger.debug(
`Transitioning revision #${
`[${userUuid.value}]Transitioning revision #${
totalRevisionsCountTransitionedToSecondary + 1
}: ${revision.id.toString()} to secondary database`,
)
@@ -168,7 +166,9 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
}
}
this.logger.debug(`Transitioned ${totalRevisionsCountTransitionedToSecondary} revisions to secondary database`)
this.logger.debug(
`[${userUuid.value}] Transitioned ${totalRevisionsCountTransitionedToSecondary} revisions to secondary database`,
)
return Result.ok()
} catch (error) {
@@ -202,7 +202,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const hasAlreadyDataInSecondaryDatabase = totalRevisionsCountForUserInSecondary > 0
if (hasAlreadyDataInSecondaryDatabase) {
this.logger.info(
`User ${userUuid.value} has already ${totalRevisionsCountForUserInSecondary} revisions in secondary database`,
`[${userUuid.value}] User has already ${totalRevisionsCountForUserInSecondary} revisions in secondary database`,
)
}
@@ -272,7 +272,8 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
if (!revision.isIdenticalTo(revisionInPrimary)) {
this.logger.error(
`Revision ${revision.id.toString()} is not identical in primary and secondary database. Revision in secondary database: ${JSON.stringify(
`[${revision.props.userUuid
?.value}] Revision ${revision.id.toString()} is not identical in primary and secondary database. Revision in secondary database: ${JSON.stringify(
revision,
)}, revision in primary database: ${JSON.stringify(revisionInPrimary)}`,
)
@@ -327,7 +328,9 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
updatedRevisionsInSecondary.find((updatedRevisionUuid) => updatedRevisionUuid === revision.id.toString())
) {
this.logger.info(
`Skipping integrity check for revision ${revision.id.toString()} as it was updated in secondary database`,
`[${
userUuid.value
}] Skipping integrity check for revision ${revision.id.toString()} as it was updated in secondary database`,
)
continue
}

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.98.3](https://github.com/standardnotes/syncing-server-js/compare/@standardnotes/syncing-server@1.98.2...@standardnotes/syncing-server@1.98.3) (2023-09-19)
### Bug Fixes
* logs formatting during transition for better readability ([0ae028d](https://github.com/standardnotes/syncing-server-js/commit/0ae028db739decec8c50321b18b0af515e00bd23))
## [1.98.2](https://github.com/standardnotes/syncing-server-js/compare/@standardnotes/syncing-server@1.98.1...@standardnotes/syncing-server@1.98.2) (2023-09-19)
### Bug Fixes

View File

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

View File

@@ -30,7 +30,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
}
if (await this.isAlreadyMigrated(userUuid)) {
this.logger.info(`User ${event.payload.userUuid} already migrated.`)
this.logger.info(`[${event.payload.userUuid}] User already migrated.`)
await this.domainEventPublisher.publish(
this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -44,7 +44,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
return
}
this.logger.info(`Handling transition requested event for user ${event.payload.userUuid}`)
this.logger.info(`[${event.payload.userUuid}] Handling transition requested event`)
await this.domainEventPublisher.publish(
this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -60,7 +60,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
})
if (result.isFailed()) {
this.logger.error(`Failed to trigger transition for user ${event.payload.userUuid}`)
this.logger.error(`[${event.payload.userUuid}] Failed to trigger transition: ${result.getError()}`)
await this.domainEventPublisher.publish(
this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -90,7 +90,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
})
if (totalItemsCountForUserInPrimary > 0) {
this.logger.info(`User ${userUuid.value} has ${totalItemsCountForUserInPrimary} items in primary database.`)
this.logger.info(`[${userUuid.value}] User has ${totalItemsCountForUserInPrimary} items in primary database.`)
}
return totalItemsCountForUserInPrimary === 0
@@ -99,7 +99,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
private async getUserUuidFromEvent(event: TransitionRequestedEvent): Promise<Uuid | null> {
const userUuidOrError = Uuid.create(event.payload.userUuid)
if (userUuidOrError.isFailed()) {
this.logger.error(`Failed to transition items for user ${event.payload.userUuid}: ${userUuidOrError.getError()}`)
this.logger.error(`[${event.payload.userUuid}] Failed to transition items: ${userUuidOrError.getError()}`)
await this.domainEventPublisher.publish(
this.domainEventFactory.createTransitionStatusUpdatedEvent({

View File

@@ -18,7 +18,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
) {}
async execute(dto: TransitionItemsFromPrimaryToSecondaryDatabaseForUserDTO): Promise<Result<void>> {
this.logger.info(`Transitioning items for user ${dto.userUuid}`)
this.logger.info(`[${dto.userUuid}] Transitioning items`)
if (this.secondaryItemRepository === null) {
return Result.fail('Secondary item repository is not set')
@@ -37,24 +37,20 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
await this.getNewItemsCreatedInSecondaryDatabase(userUuid)
for (const existingItemUuid of alreadyExistingInPrimary) {
this.logger.info(`Removing item ${existingItemUuid} from secondary database`)
this.logger.info(`[${dto.userUuid}] Removing item ${existingItemUuid} from secondary database.`)
await (this.secondaryItemRepository as ItemRepositoryInterface).removeByUuid(
Uuid.create(existingItemUuid).getValue(),
)
}
if (newItemsInSecondary.length > 0) {
this.logger.info(
`Found ${newItemsInSecondary.length} new items in secondary database for user ${userUuid.value}`,
)
this.logger.info(`[${dto.userUuid}] Found ${newItemsInSecondary.length} new items in secondary database.`)
}
newItemsInSecondaryCount = newItemsInSecondary.length
if (updatedInSecondary.length > 0) {
this.logger.info(
`Found ${updatedInSecondary.length} updated items in secondary database for user ${userUuid.value}`,
)
this.logger.info(`[${dto.userUuid}] Found ${updatedInSecondary.length} updated items in secondary database.`)
}
updatedItemsInSecondary = updatedInSecondary
@@ -71,7 +67,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
const cleanupResult = await this.deleteItemsForUser(userUuid, this.secondaryItemRepository)
if (cleanupResult.isFailed()) {
this.logger.error(
`Failed to clean up secondary database items for user ${userUuid.value}: ${cleanupResult.getError()}`,
`[${dto.userUuid}] Failed to clean up secondary database items: ${cleanupResult.getError()}`,
)
}
}
@@ -91,7 +87,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
const cleanupResult = await this.deleteItemsForUser(userUuid, this.secondaryItemRepository)
if (cleanupResult.isFailed()) {
this.logger.error(
`Failed to clean up secondary database items for user ${userUuid.value}: ${cleanupResult.getError()}`,
`[${dto.userUuid}] Failed to clean up secondary database items: ${cleanupResult.getError()}`,
)
}
}
@@ -101,9 +97,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
const cleanupResult = await this.deleteItemsForUser(userUuid, this.primaryItemRepository)
if (cleanupResult.isFailed()) {
this.logger.error(
`Failed to clean up primary database items for user ${userUuid.value}: ${cleanupResult.getError()}`,
)
this.logger.error(`[${dto.userUuid}] Failed to clean up primary database items: ${cleanupResult.getError()}`)
}
const migrationTimeEnd = this.timer.getTimestampInMicroseconds()
@@ -112,7 +106,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
const migrationDurationTimeStructure = this.timer.convertMicrosecondsToTimeStructure(migrationDuration)
this.logger.info(
`Transitioned items for user ${userUuid.value} in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
`[${dto.userUuid}] Transitioned items in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
)
return Result.ok()
@@ -125,7 +119,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
const hasAlreadyDataInSecondaryDatabase = totalItemsCountForUser > 0
if (hasAlreadyDataInSecondaryDatabase) {
this.logger.info(`User ${userUuid.value} has already ${totalItemsCountForUser} items in secondary database`)
this.logger.info(`[${userUuid.value}] User has already ${totalItemsCountForUser} items in secondary database`)
}
return hasAlreadyDataInSecondaryDatabase
@@ -192,9 +186,11 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
if (!item.isIdenticalTo(itemInPrimary)) {
this.logger.error(
`Revision ${item.id.toString()} is not identical in primary and secondary database. Revision in secondary database: ${JSON.stringify(
`[${
item.props.userUuid.value
}] Item ${item.id.toString()} is not identical in primary and secondary database. Item in secondary database: ${JSON.stringify(
item,
)}, revision in primary database: ${JSON.stringify(itemInPrimary)}`,
)}, item in primary database: ${JSON.stringify(itemInPrimary)}`,
)
return {
@@ -223,7 +219,9 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
for (const item of items) {
if (updatedItemsInSecondary.find((updatedItemUuid) => item.uuid.value === updatedItemUuid)) {
this.logger.info(`Skipping saving item ${item.uuid.value} as it was updated in secondary database`)
this.logger.info(
`[${userUuid.value}] Skipping saving item ${item.uuid.value} as it was updated in secondary database`,
)
continue
}
@@ -286,7 +284,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
if (updatedItemsInSecondary.find((updatedItemUuid) => item.uuid.value === updatedItemUuid)) {
this.logger.info(
`Skipping integrity check for item ${item.uuid.value} as it was updated in secondary database`,
`[${userUuid.value}] Skipping integrity check for item ${item.uuid.value} as it was updated in secondary database`,
)
continue
}