Skip to content

Move request checksum interceptors to pipeline stages #4174

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

Merged
merged 9 commits into from
Jul 17, 2023

Conversation

davidh44
Copy link
Contributor

@davidh44 davidh44 commented Jul 11, 2023

Motivation and Context

Checksumming needs to happen after request compression, which is being implemented as a request pipeline stage. Refactoring and migrating the request checksum interceptors to a request pipeline stage.

Modifications

Testing

Integration tests ran successfully

Screenshots (if appropriate)

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Checklist

  • I have read the CONTRIBUTING document
  • Local run of mvn install succeeds
  • My code follows the code style of this project
  • My change requires a change to the Javadoc documentation
  • I have updated the Javadoc documentation accordingly
  • I have added tests to cover my changes
  • All new and existing tests passed
  • I have added a changelog entry. Adding a new entry must be accomplished by running the scripts/new-change script and following the instructions. Commit the new file created by the script in .changes/next-release with your changes.
  • My change is to implement 1.11 parity feature and I have updated LaunchChangelog

License

  • I confirm that this pull request can be released under the Apache 2 license

@davidh44 davidh44 requested a review from a team as a code owner July 11, 2023 04:07
}

return checksumSpecs != null
&& checksumSpecs.headerName() != null
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we need to check headerName? It seems we are not checking headerName in the existing code

private static boolean shouldAddTrailerBasedChecksumInRequest(Context.ModifyHttpRequest context,

Copy link
Contributor Author

Choose a reason for hiding this comment

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

discussed offline, to leave in.
the asyncTrailerInterceptor had this check

context.executionContext().interceptorContext().httpRequest(),
clientType, checksumSpecs, hasRequestBody,
context.executionContext().interceptorContext().requestBody()
.map(requestBody -> requestBody.contentStreamProvider() != null).orElse(false));
Copy link
Contributor

Choose a reason for hiding this comment

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

I understand this is what current code uses, but can we at least create a variable for this context.executionContext().interceptorContext().requestBody() .map(requestBody -> requestBody.contentStreamProvider() != null).orElse(false)) because it's a bit hard to read.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

extracted to isContentStreaming variable

* Stage to implement the "httpChecksum" and "httpChecksumRequired" C2J traits, and flexible checksums.
*/
@SdkInternalApi
public class HttpChecksumStage implements MutableRequestToRequestPipeline {
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we add some tests for this class?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

added test for stage

@sonarqubecloud
Copy link

sonarqubecloud bot commented Jul 14, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 2 Code Smells

92.5% 92.5% Coverage
0.0% 0.0% Duplication

@davidh44 davidh44 merged commit 2d74992 into master Jul 17, 2023
@davidh44 davidh44 deleted the hdavidh/move-checksums-to-pipeline-stages branch July 17, 2023 16:54
L-Applin pushed a commit that referenced this pull request Jul 24, 2023
* Move request checksum interceptors to pipeline stages

* Refactor into one combined stage

* Refactoring

* Fix typo error

* Refactoring

* Fix typo

* Refactoring

* HttpChecksumStage test

* Refactoring
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants