Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FIx noops #11768

Closed
wants to merge 1 commit into from
Closed

FIx noops #11768

wants to merge 1 commit into from

Conversation

vladsud
Copy link
Contributor

@vladsud vladsud commented Aug 31, 2022

Splitting noop logic out of https://github.com/microsoft/FluidFramework/pull/11262/files

Through code review, I've noticed that we send content="null" for non-immediate noops, but service expects content === null to differentiate immediate vs. non-immediate noops. In other words, non-immediate noops are considered to be immediate noops by service and they are never coalesced! I've noticed it only because I worked (not part of this PR) to move content strigification out of loader layer into runtime.

While we can fix it on service side (and leave client as is), I really do not like current design and special types based on type of content. So splitting noops into "accept" (formerly - immediate noops) and noops (non-immediate). Once this change propagates through the system, service can

  • coalesce ALL noops.
  • service may choose to do some special treatment of accept ops, though I do not see any reason for that. For example, today service will drop it if such op does not change MSN. Given they are used only for acceptance of code proposals (which are very rare), I'd suggest simplifying service logic and not have any handling for it.

@vladsud vladsud requested review from a team as code owners August 31, 2022 23:54
@github-actions github-actions bot added area: loader Loader related issues area: runtime Runtime related issues area: tests Tests to add, test infrastructure improvements, etc public api change Changes to a public API base: main PRs targeted against main branch labels Aug 31, 2022
if (this.currentlyProcessingOps && this.preventConcurrentOpSend) {
this.close(new UsageError("Making changes to data model is disallowed while processing ops."));
}
const messagePartial: Omit<IDocumentMessage, "clientSequenceNumber"> = {
contents: JSON.stringify(contents),
Copy link
Contributor

@GaryWilber GaryWilber Sep 1, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we update the IDocumentMessage contents property to be a string (or maybe string | undefined)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It will be a big (but necessary change). I'll track it as separate item.

@vladsud
Copy link
Contributor Author

vladsud commented Sep 1, 2022

Closing in favor of PR #11790 - for some reason this PR does not "see" latest commits in the branch (it's same branch!)

@vladsud vladsud closed this Sep 1, 2022
@vladsud vladsud deleted the opProcessing2 branch September 19, 2022 16:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: loader Loader related issues area: runtime Runtime related issues area: tests Tests to add, test infrastructure improvements, etc base: main PRs targeted against main branch public api change Changes to a public API
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants