Skip to content

Cloning a ClonedIterator doesn't preserve HistoryReader from original source #110

Description

@constraintAutomaton

Cloning a ClonedIterator doesn't preserve HistoryReader from original source

Description

When cloning an AsyncIterator that is itself already a clone, the new clone doesn't share the same HistoryReader as the original source. This causes the newly cloned stream to:

  • Not start at the expected position
  • Not end at the expected position

The issue appears to stem from this code in the clone implementation:

const history = (source && (source as any)[DESTINATION]) ||
      (source[DESTINATION] = new HistoryReader<T>(source) as any);

The problem seem to be that when source is itself a ClonedIterator, the code doesn't attempt to retrieve the HistoryReader from the original source iterator. Instead, it creates or uses a HistoryReader directly on the ClonedIterator, or create a new HistoryReader which can cause lost of results .

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions