-
Notifications
You must be signed in to change notification settings - Fork 533
RUBY-2495 rework the check_out method #2671
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
Changes from 17 commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
c257217
modularize connection pool
neilshweky 0119df0
further modularize the pool
neilshweky 50ea232
create condition variable
neilshweky d8ad874
RUBY-2495 add size condition variable
neilshweky fe1a43f
fix test and add comment
neilshweky 2d77d85
RUBY-2495 fix tests and add test
neilshweky 3bb41a2
fix condition variable
neilshweky c5a22ae
attempts to fix signaling
neilshweky e57b03c
fix neg timeout
neilshweky e7fc5f7
fix condition variable, add tests, modify waiting
neilshweky c818822
update driver-evergreen-tools
neilshweky ef28683
use ubuntu-20.04 for gh actions
neilshweky c9ff375
update download-mongodb.sh and put back ubuntu-latest
neilshweky 888362a
put back ubuntu-20.04
neilshweky a0af73c
put back det
neilshweky 6d9cf62
fix condition variable tests
neilshweky 17dd56d
remove failing tests
neilshweky 0f62695
Update lib/mongo/server/connection_pool.rb
neilshweky 291ff30
address comments
neilshweky 459e7a4
verify lock is acquired
neilshweky File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Submodule drivers-evergreen-tools
updated
15 files
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# frozen_string_literal: true | ||
# encoding: utf-8 | ||
|
||
# Copyright (C) 2020 MongoDB Inc. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
module Mongo | ||
# This is an implementation of a condition variable. | ||
# | ||
# @api private | ||
class ConditionVariable | ||
extend Forwardable | ||
|
||
def initialize(lock = Mutex.new) | ||
@lock = lock | ||
@cv = ::ConditionVariable.new | ||
end | ||
|
||
# Waits for the condition variable to be signaled up to timeout seconds. | ||
# If condition variable is not signaled, returns after timeout seconds. | ||
def wait(timeout = nil) | ||
maybe_raise_error! | ||
return false if timeout && timeout < 0 | ||
@cv.wait(@lock, timeout) | ||
end | ||
|
||
def broadcast | ||
maybe_raise_error! | ||
@cv.broadcast | ||
end | ||
|
||
def signal | ||
maybe_raise_error! | ||
@cv.signal | ||
end | ||
|
||
def_delegators :@lock, :synchronize | ||
|
||
def maybe_raise_error! | ||
comandeo marked this conversation as resolved.
Show resolved
Hide resolved
|
||
unless @lock.owned? | ||
raise ArgumentError, "the lock must be owned when calling this method" | ||
end | ||
end | ||
end | ||
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.