Repository navigation
Collect no LangChain run whose conversation cannot be told - #70
Merged
Merged
Conversation
A run's conversation can depend on something the receiver no longer has. An update that names no conversation of its own is completed from its run's start, and a run that names no thread takes the conversation of a run above it. The receiver remembers both for a day, and at most 50,000 runs. When what would say the conversation was forgotten, or never came, the run landed under a name saying its identity was not supplied. That put one conversation's evidence in another. Such a run now waits, as a run waits for its ancestry, and is not collected once its request has waited as long as it may: - an update with no complete identity whose start was not seen; - a run whose own thread is not whole yet, with the rest of its key still to come; - a run that names no thread under a run above it that is not known, one that never came, was forgotten, or is known only from updates that named no conversation of their own. The receiver's memory records whether a run's start was seen, so an update no longer proves one, and a dropped run leaves no conversation behind for its start to take later. Inheritance stops at the first run above that does not decide. An update that carries its conversation's whole key still lands with no start seen, as every captured update from the Python client does. A trace whose runs are all known and name no thread still lands unassigned. A run whose conversation is known still lands with whatever ancestry arrived. The memory moves to version 2, so what it held is forgotten once. Each pass that drops an arrival says how many, as runs_not_collected.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A LangChain run's conversation can depend on something the receiver no longer has. An update that names no conversation of its own is completed from its run's start. A run that names no thread takes the conversation of a run above it. The receiver remembers both for a day, and at most 50,000 runs. When what would say the conversation was forgotten, or never came, the run landed under a name saying its identity was not supplied. That put one conversation's evidence in another.
What changes
scopethat is missing makes the identity incomplete. A start carries its whole metadata, so a key it leaves out is supplied empty.runs_not_collected=Nfor each pass that drops an arrival.Tests
lost_test.gocovers:cmd/aszasserts the pass line for a pass that only drops.Each new guard was proven by reverting it.
make test, the JSON v1 step (GOEXPERIMENT=nojsonv2),make scenarios, lint and the Windows build pass.