2
0
Commit Graph

61 Commits

Author SHA1 Message Date
Jack Christensen 8f8e2d8cfa Add TryAcquire to stress test 2021-12-02 18:00:10 -06:00
Jack Christensen 021a5cc1a6 TryAcquire created resource in background instead of blocking
refs #14
2021-12-02 18:00:10 -06:00
Jack Christensen 4d33264d63 Do not leave pool lock after panic from nil context
refs #13
2021-11-13 17:39:29 -06:00
A. Jensen cac2b5a858 Add TryAcquire and ErrNotAvailable
Fixes https://github.com/jackc/puddle/issues/10
2021-09-20 20:16:07 -05: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 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 cde4bcb7af Initialize LastUsedNanotime on creation 2020-02-03 08:25:42 -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 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 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
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 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 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 80b43a4df9 Add Pool.Stat 2018-12-26 14:00:31 -06:00
Jack Christensen fddf7bbdb9 Rename avaible resources to idle resources 2018-12-26 13:22:46 -06:00
Jack Christensen 47190588bc Remove runtime changing of pool size
Reducing pool to minimize required functionality
2018-12-26 13:11:49 -06:00
Jack Christensen 7df4afe7d3 Add Resource.Hijack 2018-12-26 13:03:07 -06:00
Jack Christensen af5402c2dd Add fast path, tests, and benchmarks for non-cancellable contexts 2018-12-26 03:11:49 -06:00
Jack Christensen ab3795c24c Pool.Close blocks until all resources released and destructed
Renamed resource constructor and destructor callbacks.
2018-12-26 02:59:36 -06:00
Jack Christensen f718a625cf Resolve some potential deadlocks
Tweak benchmarks
2018-12-26 02:24:07 -06:00
Jack Christensen dd010296a6 Convert allResources from map to array 2018-12-26 00:18:30 -06:00
Jack Christensen 667f04e9f7 Remove resource limits
Acquire health check will be able to take over this functionality.
2018-12-25 20:13:36 -06:00
Jack Christensen 179bc9b8c7 Better benchmarking 2018-12-25 19:54:51 -06:00
Jack Christensen 4ef5d16aa8 Rename Get to Acquire 2018-12-25 19:23:50 -06:00
Jack Christensen 3afe49e88b Releasing or destroying Resource is called by resource
This makes it impossible to return a resource to a pool that it did
not come from.
2018-12-25 19:17:57 -06:00
Jack Christensen 7c5f3f0446 Define close resource not to return an error
There is nothing the pool can do on an error. If the client code
wishes to handle or log errors it can do so in the close resource
function.

This removes the need for background error reporting.
2018-12-25 14:25:10 -06:00
Jack Christensen d4f6b3dbba Only create resources in Get
Add context to create func.
2018-12-25 14:09:45 -06:00
Jack Christensen 98fd1f3693 More benchmarks 2018-12-24 13:08:32 -06:00
Jack Christensen 1396b8ec46 Rename max resource uses to max resource checkouts 2018-12-24 12:19:18 -06:00
Jack Christensen b3026d0d8f Improve test robustness 2018-12-24 12:12:02 -06:00
Jack Christensen 9ede55618e Use createCreateResourceFunc 2018-12-24 12:09:57 -06:00
Jack Christensen 49b32fb7f3 Extract createCloseResourceFuncWithNotifierChan 2018-12-24 12:07:48 -06:00
Jack Christensen 3559b7b000 Extract createCreateResourceFuncWithNotifierChan() 2018-12-24 12:02:59 -06:00