in ui/src/app/components/prepare-migration/prepare-migration.component.ts [808:921]
subscribeMigrationProgress() {
var displayStreamingMsg = false
this.subscription = interval(5000).subscribe((x) => {
this.fetch.getProgress().subscribe({
next: (res: IProgress) => {
if (res.ErrorMessage == '') {
// Checking for completion of schema migration
if (res.ProgressStatus == ProgressStatus.SchemaMigrationComplete) {
localStorage.setItem(MigrationDetails.SchemaMigrationProgress, '100')
this.schemaMigrationProgress = parseInt(
localStorage.getItem(MigrationDetails.SchemaMigrationProgress) as string
)
if (this.selectedMigrationMode == MigrationModes.schemaOnly) {
this.markMigrationComplete()
} else if (this.selectedMigrationType == MigrationTypes.lowDowntimeMigration) {
this.markSchemaMigrationComplete()
this.generatingResources = true
localStorage.setItem(
MigrationDetails.GeneratingResources,
this.generatingResources.toString()
)
if (!displayStreamingMsg) {
this.snack.openSnackBar('Setting up dataflow and datastream jobs', 'Close')
displayStreamingMsg = true
}
} else {
this.markSchemaMigrationComplete()
this.hasDataMigrationStarted = true
localStorage.setItem(
MigrationDetails.HasDataMigrationStarted,
this.hasDataMigrationStarted.toString()
)
}
} else if (res.ProgressStatus == ProgressStatus.DataMigrationComplete) {
if (this.selectedMigrationType != MigrationTypes.lowDowntimeMigration) {
this.hasDataMigrationStarted = true
localStorage.setItem(
MigrationDetails.HasDataMigrationStarted,
this.hasDataMigrationStarted.toString()
)
}
this.generatingResources = false
localStorage.setItem(
MigrationDetails.GeneratingResources,
this.generatingResources.toString()
)
this.markMigrationComplete()
}
// Checking for data migration in progress
else if (res.ProgressStatus == ProgressStatus.DataWriteInProgress) {
this.markSchemaMigrationComplete()
this.hasDataMigrationStarted = true
localStorage.setItem(
MigrationDetails.HasDataMigrationStarted,
this.hasDataMigrationStarted.toString()
)
localStorage.setItem(MigrationDetails.DataMigrationProgress, res.Progress.toString())
this.dataMigrationProgress = parseInt(
localStorage.getItem(MigrationDetails.DataMigrationProgress) as string
)
} else if (res.ProgressStatus == ProgressStatus.ForeignKeyUpdateComplete) {
this.markMigrationComplete()
}
// Checking for foreign key update in progress
else if (res.ProgressStatus == ProgressStatus.ForeignKeyUpdateInProgress) {
this.markSchemaMigrationComplete()
if (this.selectedMigrationType == MigrationTypes.bulkMigration) {
this.hasDataMigrationStarted = true
localStorage.setItem(
MigrationDetails.HasDataMigrationStarted,
this.hasDataMigrationStarted.toString()
)
}
this.markForeignKeyUpdateInitiation()
this.dataMigrationProgress = 100
localStorage.setItem(
MigrationDetails.DataMigrationProgress,
this.dataMigrationProgress.toString()
)
localStorage.setItem(
MigrationDetails.ForeignKeyUpdateProgress,
res.Progress.toString()
)
this.foreignKeyUpdateProgress = parseInt(
localStorage.getItem(MigrationDetails.ForeignKeyUpdateProgress) as string
)
this.generatingResources = false
localStorage.setItem(
MigrationDetails.GeneratingResources,
this.generatingResources.toString()
)
this.fetchGeneratedResources()
}
} else {
this.errorMessage = res.ErrorMessage
this.subscription.unsubscribe()
this.isMigrationInProgress = !this.isMigrationInProgress
this.snack.openSnackBarWithoutTimeout(this.errorMessage, 'Close')
this.schemaProgressMessage = 'Schema migration cancelled!'
this.dataProgressMessage = 'Data migration cancelled!'
this.foreignKeyProgressMessage = 'Foreign key update cancelled!'
this.generatingResources = false
this.isLowDtMigrationRunning = false
this.clearLocalStorage()
}
},
error: (err: any) => {
this.snack.openSnackBar(err.error, 'Close')
this.isMigrationInProgress = !this.isMigrationInProgress
this.clearLocalStorage()
},
})
})
}