* Cancel any row count queries before attempting to cut over
Closes#830. Switches from using `QueryRow` to `QueryRowContext`, and
stores a context.CancelFunc in the migration context, which is called to
halt any running row count query before beginning the cut over.
* Make it threadsafe
* Kill the count query on the database side as well
* Explicitly grab a connection to run the count, store its connection id
* When the query context is canceled, run a `KILL QUERY ?` on that connection id
* Rewrite these to use the threadsafe functions, stop exporting the cancel func
* Update logger
* Update logger
Co-authored-by: Tim Vaillancourt <timvaillancourt@github.com>
Co-authored-by: Tim Vaillancourt <tim@timvaillancourt.com>
Co-authored-by: dm-2 <45519614+dm-2@users.noreply.github.com>
* Add context/timeout to HTTP throttle check
* Dont run `.GetThrottleHTTPInterval()` on every loop
* Update help message
* Var rename
* 2022
* Add timeout flag
* Add unix/tcp server commands, use ParseInt() for string->int64
* Var rename
* Re-check http timeout on every loop iteration
* Remove stale comment
* Make throttle interval idempotent
* var rename
* Usage grammar
* Make http timeout idempotent too
* Parse time.Duration once
* Move timeout to NewThrottler
* Help update
* Set User-Agent header
* Re-add newline
Co-authored-by: dm-2 <45519614+dm-2@users.noreply.github.com>
* Check RowsAffected when applying DML events to get more accurate statistics
Addresses #600.
When applying a DML event, check the RowsAffected on the `Result`
struct. Since all DML event queries are point queries, this will only
ever be 0 or 1. The applier then takes this value and multiplies by
the `rowsDelta` of the event, resulting in a properly-signed, accurate
row delta to use in the statistics.
If an error occurs here, log it, but do not surface this as an
actual error .. simply assume the DML affected a row and move on. It
will be inaccurate, but this is already the case.
* Fix import
* update wording to warning log message
Co-authored-by: Tim Vaillancourt <timvaillancourt@github.com>
Co-authored-by: Tim Vaillancourt <timvaillancourt@github.com>
* Add a go.mod file
* run go mod vendor again
* Move to a well-supported ini file reader
* Remove GO111MODULE=off
* Use go 1.16
* Rename github.com/outbrain/golib -> github.com/openark/golib
* Remove *.go-e files
* Fix for `strconv.ParseInt: parsing "": invalid syntax` error
* Add test for '[osc]' section
Co-authored-by: Nate Wernimont <nate.wernimont@workiva.com>