Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Fix a few simple sendability issues #832

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 2 commits into from
Apr 28, 2025

Conversation

glbrntt
Copy link
Collaborator

@glbrntt glbrntt commented Apr 28, 2025

Motivation:

We're about to go on a sendability journey. Let's pick some low hanging fruit to get started.

Modifications:

  • Add a few assume-isolated calls
  • Stop using static var
  • Use a dispatch group instead of a work item to wait for work to be done.

Result:

Fewer warnings

Motivation:

We're about to go on a sendability journey. Let's pick some low hanging
fruit to get started.

Modifications:

- Add a few assume-isolated calls
- Stop using static var
- Use a dispatch group instead of a work item to wait for work to be
  done.

Result:

Fewer warnings
@glbrntt glbrntt added the 🔨 semver/patch No public API change. label Apr 28, 2025
@glbrntt glbrntt enabled auto-merge (squash) April 28, 2025 09:47
@glbrntt glbrntt closed this Apr 28, 2025
auto-merge was automatically disabled April 28, 2025 09:56

Pull request was closed

@glbrntt glbrntt reopened this Apr 28, 2025
@glbrntt glbrntt enabled auto-merge (squash) April 28, 2025 10:31
@@ -223,17 +223,18 @@ public class HTTPClient {
)
}
let errorStorage: NIOLockedValueBox<Error?> = NIOLockedValueBox(nil)
let continuation = DispatchWorkItem {}
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
Copy link
Collaborator

Choose a reason for hiding this comment

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

Nit: this should probably use the condition variable workaround we used in NIO to avoid triggering the main thread checker.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Ah yeah, good idea

@@ -26,7 +26,9 @@ extension HTTPConnectionPool {
self.connection = connection
}

static let none = Action(request: .none, connection: .none)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Potentially silly question but was this unsafe?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It's not "unsafe" per-se as neither .none case contains anything. However, Action isn't Sendable (and shouldn't be) so the compiler appropriately produces a warning here.

@glbrntt glbrntt requested a review from Lukasa April 28, 2025 12:56
@glbrntt glbrntt merged commit 0e715a2 into swift-server:main Apr 28, 2025
23 of 24 checks passed
@glbrntt glbrntt deleted the strict-low-hanging-fruit branch April 28, 2025 14:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔨 semver/patch No public API change.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants