feat: enhance migration job processing with detailed metrics and error handling
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"slices"
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"git.ksdemosapps.com/kylesoda/go-migrate/internal/app/config"
|
||||
@@ -36,6 +37,7 @@ func extractFromMssql(
|
||||
chErrorsOut chan<- ExtractorError,
|
||||
chJobErrorsOut chan<- JobError,
|
||||
wgActiveBatches *sync.WaitGroup,
|
||||
rowsRead *int64,
|
||||
) {
|
||||
indexPrimaryKey := slices.IndexFunc(columns, func(col ColumnType) bool {
|
||||
return strings.EqualFold(col.name, tableInfo.PrimaryKey)
|
||||
@@ -69,7 +71,7 @@ func extractFromMssql(
|
||||
return
|
||||
}
|
||||
|
||||
if abort := processBatch(ctx, db, tableInfo, columns, chunkSize, batch, indexPrimaryKey, chChunksOut, chErrorsOut, wgActiveBatches); abort {
|
||||
if abort := processBatch(ctx, db, tableInfo, columns, chunkSize, batch, indexPrimaryKey, chChunksOut, chErrorsOut, wgActiveBatches, rowsRead); abort {
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -87,6 +89,7 @@ func processBatch(
|
||||
chChunksOut chan<- Chunk,
|
||||
chErrorsOut chan<- ExtractorError,
|
||||
wgActiveBatches *sync.WaitGroup,
|
||||
rowsRead *int64,
|
||||
) (abort bool) {
|
||||
query := buildExtractQueryMssql(tableInfo, columns, batch.ShouldUseRange, batch.IsLowerLimitInclusive)
|
||||
log.Debug("Query used to extract data from mssql: ", query)
|
||||
@@ -147,6 +150,8 @@ func processBatch(
|
||||
return true
|
||||
}
|
||||
|
||||
atomic.AddInt64(rowsRead, int64(len(rowsChunk)))
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -164,6 +169,7 @@ func processBatch(
|
||||
return true
|
||||
}
|
||||
|
||||
atomic.AddInt64(rowsRead, int64(len(rowsChunk)))
|
||||
rowsChunk = make([]UnknownRowValues, 0, chunkSize)
|
||||
chunkStartTime = time.Now()
|
||||
}
|
||||
@@ -201,6 +207,8 @@ func processBatch(
|
||||
case <-ctx.Done():
|
||||
return true
|
||||
}
|
||||
|
||||
atomic.AddInt64(rowsRead, int64(len(rowsChunk)))
|
||||
}
|
||||
|
||||
wgActiveBatches.Done()
|
||||
|
||||
Reference in New Issue
Block a user