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
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
ebf42e3ab9
Consistently use term acquired instead of borrowed
2018-12-26 13:20:14 -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
3edeea2574
Remove min size
...
Pruning pool functionality
2018-12-26 13:05:03 -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