2
0
Commit Graph

88 Commits

Author SHA1 Message Date
Jack Christensen f196d0d9f9 Release v1.1.3 2020-12-03 19:09:11 -06:00
Evgeny Vanslov 513cb84ff5 Ensure that conditional variable is signaled if resource failed to create 2020-12-03 19:14:39 +00:00
Jack Christensen 8a2237ffa5 Merge pull request #6 from yasushi-saito/master
Clarify the meanings of Stats accessors
2020-10-05 08:59:19 -05:00
Yaz Saito dd3aa6a6bc Update the phrasing of TotalResources. 2020-10-03 23:04:50 -07:00
Yaz Saito a70fb082df Clarify the meanings of Stats accessors 2020-09-28 07:53:01 -07:00
Jack Christensen 6eeab89f3c Release v1.1.2 2020-09-26 11:05:58 -05:00
Jack Christensen 91d0159cc9 Fix crash when pool is closed when resource is being created
Also, restore 100% test coverage.
2020-08-20 21:58:10 -05:00
Jack Christensen 6d0ef02e90 Fix: Resource.Destroy removed self from pool after destructor complete 2020-08-20 21:56:47 -05:00
Jack Christensen 6706e16fc2 Release v1.1.1 2020-04-02 22:18:14 -05:00
Jack Christensen 558756d6c4 Fix race condition when CreateResource is called concurrently with Close
WaitGroup.Add(1) cannot be called after WaitGroup.Wait().
2020-04-02 22:11:33 -05:00
Jack Christensen 7cc1dd1985 CreateResource checks if pool is closed before any action 2020-04-02 22:11:22 -05:00
Jack Christensen 69489dce36 AcquireAllIdle immediately returns nil if pool is closed 2020-04-02 22:10:53 -05:00
Jack Christensen 2cd0ce3f9b Closing a closed pool is a no-op 2020-04-02 22:10:13 -05:00
Jack Christensen fc71d04d41 Release v1.1.0 2020-02-05 11:00:40 -06:00
Jack Christensen cde4bcb7af Initialize LastUsedNanotime on creation 2020-02-03 08:25:42 -06:00
Jack Christensen 576940c285 Merge branch 'ellulpatrick-feature-create-resource' 2020-02-03 08:14:45 -06:00
Patrick Ellul c42fada37e CreateResource sets LastUsedNanotime so that Idle Time calculations are still valid 2020-02-03 15:56:07 +11:00
Patrick Ellul 426c57eed9 test for LastUsedNano panic
(to bring coverage back to 100%)
2020-02-03 11:15:21 +11:00
Patrick Ellul 4014e4825a CreateResource constructs a new resource without acquiring it. 2020-02-03 11:14:49 +11:00
Jack Christensen 807afe48a8 Use runtime.nanotime for duration tracking plus related restructuring
runtime.nanotime is significantly faster than time.Now. Use it unless
build tags prevent usage of unsafe.

Change LastUsedTime to LastUsedNanotime as a time.Time is no longer
available.

Add IdleDuration to make it more convenient to get the time a resource
has been idle.

Rename ReleaseIdle to ReleaseUnused to better indicate it is releasing
the resource without using it rather than that it is releasing a
resource acquired with AcquireAllIdle.

Refactor tests of usage tracking to not be intermingled with
AcquireAllIdle tests.
2020-01-25 18:47:55 -06:00
Jack Christensen e6e0e7fd81 Get last used time outside of pool mutex
Under heavy contention this slightly improves performance by spending
less time in the mutex.
2020-01-25 17:22:31 -06:00
Jack Christensen 6897b9f0cd Merge branch 'last-used-time' of git://github.com/ellulpatrick/puddle into ellulpatrick-last-used-time 2020-01-25 17:06:35 -06:00
Jack Christensen ead2ce143f Add zero contention benchmark 2020-01-25 17:06:07 -06:00
Jack Christensen 7a19223011 Merge branch 'mtharp-deadlock-race' 2020-01-25 16:28:37 -06:00
Jack Christensen f458c9c0f8 Make stress test more stressful
Detect bug fixed by 26cd25c14b. See also
https://github.com/jackc/puddle/pull/2.
2020-01-25 16:17:17 -06:00
Patrick Ellul 6a68341f62 maintain lastIUsedTime so clients can use it as a factor in idle and health check logic 2020-01-25 21:41:34 +11:00
Michael Tharp 26cd25c14b Fix deadlock race when acquire is cancelled
If the waiter goroutine completes before the section guarding
canceledAcquireCount has run, then there is a deadlock because there is
nothing that can unlock the mutex. Scheduling the second goroutine
ensures that one of the two can release the lock and keep things moving.
2019-12-16 21:58:42 +00:00
Jack Christensen 11cab39313 Fix spelling error 2019-06-08 17:40:51 -05:00
Jack Christensen e4ced69a3a Ensure maxSize > 0 2019-04-13 18:43:25 -05:00
Jack Christensen 0395a39c2d Use int32 for pool sizes 2019-04-13 18:39:08 -05:00
Jack Christensen 0d93e0ec11 Add Go modules 2019-04-08 19:40:18 -05:00
Jack Christensen 9236ccde06 Improve description in README 2018-12-26 18:54:41 -06:00
Jack Christensen 3d17e25ee5 Make simpler example 2018-12-26 18:51:04 -06:00
Jack Christensen 5cb5ce10c3 Add more docs and example 2018-12-26 18:36:59 -06:00
Jack Christensen 893989abad Use godoc badge for doc link 2018-12-26 17:27:29 -06:00
Jack Christensen fce9fbe2b4 Add Travis CI 2018-12-26 17:26:50 -06:00
Jack Christensen 617626eddc Add MIT license 2018-12-26 17:21:07 -06:00
Jack Christensen 2b7acc5e28 Link to godoc in README.md 2018-12-26 17:19:52 -06:00
Jack Christensen fefda73679 Add documention 2018-12-26 17:17:25 -06:00
Jack Christensen 383709a0b4 Achieve 100% test coverage 2018-12-26 17:17:08 -06:00
Jack Christensen 75889e9497 Fix test with race 2018-12-26 16:36:54 -06:00
Jack Christensen 33a5f62a2e Add stress test and fix race it detected 2018-12-26 16:35:01 -06:00
Jack Christensen ba34bdd8ef Add Pool.AcquireAllIdle 2018-12-26 15:52:48 -06:00
Jack Christensen df3f83d1f7 Store resource creation time 2018-12-26 15:35:13 -06:00
Jack Christensen 99fde4bb49 Use (con|de)structor names in tests 2018-12-26 15:30:42 -06:00
Jack Christensen d3964763bb Track successful acquire duration
Rename slow acquire to empty acquire to be more clear that it means the
pool was empty on acquire, not that it took some large amount of time.
2018-12-26 15:25:14 -06:00
Jack Christensen ec686c76d0 Add canceled acquire counting 2018-12-26 14:59:35 -06:00
Jack Christensen 109e4356b9 Track acquire and slow acquire count 2018-12-26 14:35:23 -06:00
Jack Christensen aa05ab2ade Use more detailed stat names 2018-12-26 14:12:00 -06:00
Jack Christensen d83b67b4a8 Fix use waitgroup after close race 2018-12-26 14:09:49 -06:00