Ensure operations are processed synchronously on OT server #106
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.
This pull request includes changes to the
DocumentManagerandOTServerclasses to improve the handling of asynchronous operations. The main changes involve modifying theprocessmethod to ensure operations are processed sequentially and updating the tests accordingly.Improvements to
DocumentManager:packages/ot-server/src/DocumentManager.ts: Added a new private member#operationInProcessingto track the currently processed operation. Modified theprocessmethod to await the completion of the previous operation before processing the new one. Added a new method#processNextOperationto handle the actual processing of operations. [1] [2] [3]Updates to tests:
packages/ot-server/src/DocumentManager.spec.ts: Updated multiple test cases to useasyncandawaitfor theprocessmethod to ensure operations are processed sequentially. Added a new test case to verify the correct processing of asynchronous operations. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]Updates to
OTServer:packages/ot-server/src/OTServer.ts: Modified the#onOperationmethod to be asynchronous and to await the processing of operations by theDocumentManager. Updated the handling of operation messages to useawaitfor theprocessmethod. [1] [2] [3]