Before this change, when an initial stage function returned a non-nil err, it
would return non-nil, resulting in closing its output channel and leaving the
errgroup responsible for canceling the egCtx.
The next transform stage would read `nil, false` on its inCh. That stage would
forward the `nil` down the transform pipeline. If the inCh selects all resolved
down the transform pipeline before any of the `<- ctx.Done()` selects, then the
pipeline would see the exact same behavior for the error case as it would see
for an `io.EOF` being reached in the first stage.
Instead, transform stages in the pipeline should abort without forwarding data
if they see a closed input channel. In turn, input stages should forward one
last `nil` sentinel value to their output channel when the see an `io.EOF`
before they close the channel.
* save version with defaultConfig in session -- todo remove and make PersistedSession
* add PersistedSession, and DoltSession interface to switch
* fmt
* fixup test for persistedSession
* PersistedSession progress, interfaces and enginetests
* All DsessFromSess references fixed
* delete unnuecessary lines
* Comments for dolt session
* Dolt session tests
* save bats progress
* formatting
* GMS version
* Bump GMS version
* add license header
* fix multi-db errors
* try copyright again
* make test deterministic
* higher connection timeout default
* sever config ordering
* PR fixes
* PR fixes
* config rewrite progress
* server config refactor
* PR cleanup
* delete lines
* add go tests, refactor persistent global initialization
* PR fixes
* delete more lines
* small PR cleanup
* try to fix data race
* better constructor names
* zach don't like --server flag
* edge cases around disabling replication
* missed line in merge
* Skip two tests i fixed in follow-on PR
* merge two config prs
* fix nondeterministic bats
* zach's comments
* bump bats sql-shell expect timeout
* GMS and integrator race to access system vars; need to decide whether to force integrator to initialize, or make GMS init private; leaving in GMS for now
* prototype
* backup pushes noms root
* backup pushes root value, basic restore still needs origin drop
* bats tests, no origin on restore, only head ref on restore
* cleanup code, up to date bats test
* make backup restore a root sync also, to catch branches and remote refs
* [ga-format-pr] Run go/utils/repofmt/format_repo.sh and go/Godeps/update.sh
* couple of tim's comments
couple of tim's comments
* zach's comments
* loosen restrictions for conflicting remote addresses
* [ga-format-pr] Run go/utils/repofmt/format_repo.sh and go/Godeps/update.sh
Co-authored-by: max-hoffman <max-hoffman@users.noreply.github.com>
The io/ioutil package has been deprecated as of Go 1.16, see
https://golang.org/doc/go1.16#ioutil. This commit replaces the existing
io/ioutil functions with their new definitions in io and os packages.
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
* shittiest read replica imaginable is kind of working
* import cycle progress
* delete unecessary files and fix db type switch bug
* Add bats test
* delete comments
* fix working set updates for cli
* [ga-format-pr] Run go/utils/repofmt/format_repo.sh and go/Godeps/update.sh
* clean comments
* comment racy server test
* move env variables to local dolt config
* refactor clone, fix multienv test
* cleanup comments
* missing copyright
* brian's comments, add compile time checks for config interfaces
* format
* fix windows filepaths issue
* file:/// with three slashes should work on windows
* more windows problems
* three slashes didn't work for clone, do chdir to ref local dolt db
Co-authored-by: max-hoffman <max-hoffman@users.noreply.github.com>
* Start moving code out of cmd
* hacky cmd -> action/evn refactor
* progress
* String verbose error from lib, mostly not reconstructed on cli side
* Missing verbose errors in lib, still not handled in cli. Refactor vinai's doc diffs to not depend on merge
* Small progress commit on other laptop
* Merge bats passing
* format
* progress
* Remotes bats tests working
* More error fixes
* Fix cyclic foreign keys bats
* Fix import cycle
* Start cleaning up code
* Fix a couple bats
* Clean up comments and println
* Brian's comments
When a query with an index lookup as a LIMIT, it's possible for the result
iterator to be closed before all the index results have been streamed. When
that happens, we can end up with queueRows goroutine which is enqueuing rows
into a ring buffer that is going to be used by a different query later.
This PR adds two mechanisms, one to stop the wrong results from being seen and
to cancel the unnecessary work.
1. RingBuffer gets an epoch, which is incremented on each Reset(). If a given
Push does not match the current epoch, then nothing is added to the ring
buffer.
2. queueRows is run with a cancelable (sub-)Context, and that Context is
canceled when the corresponding iterator is Closed().
This adds a --jaeger flag to dolt CLI which installs a Jaeger Tracer as the
global opentracing Tracer. The Tracer is configured to report to an HTTP
collector running on http://localhost:14268, which is the port that docker
image `jaegertracing/all-in-one` listens on.
Also adds some parameters in places where Dolt constructs sql.Contexts to pass
the correct Tracer through.
Also adds a few new Span points, in things like nbs.Get and
metaSequenceImpl.getChildSequence.