Howard Chu
448b5269a8
Fix uninit'd poolqs in prev commit
2013-09-03 17:29:32 -07:00
Howard Chu
0ef9e6107b
More for threadpool queues
...
Allow dynamic reconfig
2013-09-03 15:06:37 -07:00
Howard Chu
50ab5bb1ed
Cleanup comments in prev commit
2013-08-19 14:25:13 -07:00
Howard Chu
0c86184bae
More fixes for prev commit
2013-08-19 13:54:17 -07:00
Howard Chu
eaa3469736
Fix 34f832faee
...
Lock ordering issues
2013-08-19 04:28:05 -07:00
Howard Chu
34f832faee
Multiple queues per threadpool
2013-08-16 19:04:49 -07:00
Kurt Zeilenga
0fd1bf30b8
Happy New Year
2013-01-02 10:22:57 -08:00
Hallvard Furuseth
23f3657807
ITS#7115: Tighten ldap_pvt_thread_pool_unidle().
...
Only wait out already-started pauses, not pause reqests.
ltp_pause now says whether a pause is requested or has started.
This reduces the chance that slapd:send_ldap_ber() will start
a pause in the middle of an operation.
2012-01-24 00:47:48 +01:00
Hallvard Furuseth
fa7575666f
ITS#7115 Re-fix tpool.c (idle/unidle)
2012-01-13 15:38:12 +01:00
Kurt Zeilenga
2bbf9804b9
Happy New Year!
2012-01-01 07:10:53 -08:00
Howard Chu
68ee165fb5
ITS#7115 blocked writers should not interfere with pool pause
2011-12-21 01:24:23 -08:00
Kurt Zeilenga
966cef8c9a
Happy New Year
2011-01-05 00:42:37 +00:00
Kurt Zeilenga
3dadeb3efe
happy belated New Year
2010-04-13 22:17:29 +00:00
Hallvard Furuseth
671bed5270
Cleanup & slight speedup (no real change):
...
Remove '#if 0 / broken code / #endif. Rearrange pool_wrapper() to avoid
decrement-increment(ltp_active_count) when more tasks available.
2009-06-12 20:46:36 +00:00
Hallvard Furuseth
461cb6b7ca
Update last commit: avoid LDAP_STAILQ_REMOVE in ldap_pvt_thread_pool_retract
2009-06-12 19:32:53 +00:00
Howard Chu
39c9b1ab25
Fix prev commit, note *task* not *thread* ...
2009-06-11 05:02:58 +00:00
Howard Chu
23783a9164
Add ldap_pvt_thread_pool_retract() to cancel pending threads
2009-06-11 04:46:04 +00:00
Kurt Zeilenga
4af9eb9715
Update copyright notices
2009-01-22 00:40:04 +00:00
Ralf Haferkamp
5977f20127
Avoid locking up slapd when paused during shutdown (ITS#5841), reverting
...
r1.81
2008-12-09 10:57:15 +00:00
Hallvard Furuseth
00be565264
ITS#5407 cleanup (make pool_pause & pool_pausecheck wrappers for handle_pause)
2008-03-10 13:21:24 +00:00
Howard Chu
a287573d2d
ITS#5407 more checks for pool pausing
2008-03-08 23:51:07 +00:00
Hallvard Furuseth
7859063553
ITS#5364 cleanup
...
Fix rev 1.91 patch: Reset ltp_pending_count when flushing ltp_pending_list.
Remove flush_pending_list() again and the now-unnecessary 2nd call to it.
Help the compiler a little.
Move ltp_work_list in case it makes a difference for caching.
Move mutex unlock in pool_destroy() to make concurrency debuggers happier.
2008-02-11 15:49:52 +00:00
Hallvard Furuseth
650aaee3a5
ITS#5364, reduce work with ltp_mutex locked:
...
Negate ltp_open_count when paused, avoids an ltp_pause test in pool_submit().
2008-02-10 18:16:44 +00:00
Hallvard Furuseth
8afd0b05c1
ITS#5364: introduce ltp_work_list, drop 1st ltp_pause loop in pool_wrapper().
2008-02-10 17:55:13 +00:00
Hallvard Furuseth
fe86a1cbe5
ITS#5364: maintain value ltp_vary_open_count
2008-02-10 17:38:32 +00:00
Hallvard Furuseth
ee73fca523
ITS#5364, reduce work with ltp_mutex locked:
...
Replace ltp_state with ltp_finishing. Drop state
LDAP_INT_THREAD_POOL_STOPPING, flush pending list instead.
ltp_max_pending = default value instead of 0, and negative when finishing.
2008-02-10 17:28:20 +00:00
Hallvard Furuseth
6dd87bb83f
ITS#5364, thread pool efficiency:
...
Add ldap_pvt_thread_pool_pausing(): pause check for slapd without locking.
Make counters int instead of long; INT_MAX pending tasks is enough.
Nitpick cleanup: goto failure instead of if() to not-failure in _submit().
2008-02-10 16:15:30 +00:00
Hallvard Furuseth
cd63a0c43b
Warning cleanup: function ptr <=> void* at ldap_pvt_thread_pool_<set/get>key()
2008-01-11 06:07:43 +00:00
Kurt Zeilenga
c890c96d13
Happy New Year (belated)
2008-01-08 00:19:56 +00:00
Pierangelo Masarati
30f401c628
rename ldap_pvt_thread_pool_setkey_x() to ldap_pvt_thread_pool_setkey() (as part of ITS#5309)
2008-01-07 21:35:03 +00:00
Pierangelo Masarati
622c4d3884
new ldap_pvt_thread_pool_setkey API
2007-12-29 18:14:54 +00:00
Howard Chu
a354d38fea
Fix typo in prev commit
2007-10-25 06:50:43 +00:00
Howard Chu
183ff5120c
Use thread-specific data in pool_context()
2007-10-25 06:48:44 +00:00
Howard Chu
20c4e016fa
Added native thread-specific data support
2007-10-25 06:42:40 +00:00
Howard Chu
13c6ef95ce
ITS#5194 zero out pool when destroying
2007-10-18 21:13:43 +00:00
Howard Chu
6775e25ba3
In pool_resume don't touch the condvar if the pool is tearing down.
2007-10-18 06:52:54 +00:00
Howard Chu
a1a63bead0
ITS#4188 check for pool pause every 64 entries. (probably should make
...
this number tunable.)
2007-10-08 01:15:49 +00:00
Hallvard Furuseth
2ea3d3f621
Ensure ltp_max_pending >= 0; negative values confused pool_query().
...
Remove accidentally added #define LDAP_MAX_PENDING from last commit.
2007-07-03 11:34:14 +00:00
Hallvard Furuseth
bc8631183c
Remove bogus pause wait near end of pool_wrapper(). Add/fix comments.
2007-07-01 16:44:59 +00:00
Hallvard Furuseth
ed0c9d223a
Rename thread contexts to tasks, leaving user contexts the only context.
...
Remove ldap_int_thread_ctx_t.ltc_next.al (active list) left over from rev 1.75.
2007-06-10 23:58:38 +00:00
Hallvard Furuseth
c60f7c1fd2
For ITS#4943: Axe thread pool semaphore code
2007-06-10 23:37:49 +00:00
Hallvard Furuseth
b327239618
Remove ltp_active_list. It became unneeded when rev 1.24 added thread_keys[].
...
Tighten loop in pool_pause(): Omit unneeded ltp_pcond signals since rev 1.64.
Fix comment.
2007-06-04 22:18:01 +00:00
Hallvard Furuseth
b3e4305131
Simplify: Remove tid_zero, thread_keys[].id and ldap_int_main_tid.
...
Not needed after ldap_int_thread_userctx_t.ltu_id was added and
_pool_wrapper took care not to update thread_keys[] during pauses.
Fix bogus thread_keys[].ctx comment.
2007-06-01 15:24:19 +00:00
Hallvard Furuseth
1b890689b1
Add comments. Constify tid_zero. Shut up gcc -Wswitch. if(!tpool)->assert().
2007-05-31 19:47:38 +00:00
Hallvard Furuseth
1f3e6110b9
Add variable ldap_int_has_thread_pool, assert(at most one pool);
2007-05-31 17:15:54 +00:00
Hallvard Furuseth
1b15fa9c6e
In pool_submit():
...
- Move problematic mutex_unlock()-mutex_lock() into the unused #ifdef
LDAP_PVT_THREAD_POOL_SEM_LOAD_CONTROL and add a FIXME comment inside.
- Delay ltp_starting--; until pool_wrapper(). Nonzero value could otherwise
no longer be exposed when !defined LDAP_PVT_THREAD_POOL_SEM_LOAD_CONTROL.
2007-05-31 12:47:24 +00:00
Hallvard Furuseth
45389c0341
Preserve key order when deleting, so context_reset will free last keys first.
2007-05-31 12:08:50 +00:00
Hallvard Furuseth
e509d3ed9a
Comment fixes.
...
Corrected rev 1.67 cvs comment: ltu_key[] is NULL-terminated _when not full_.
2007-05-11 18:48:13 +00:00
Hallvard Furuseth
810b2389dc
Since we only have LDAP_MAXTHR thread_keys, allow max LDAP_MAXTHR
...
threads per pool, even when ltp_max_count <= 0 ("unlimited").
Keep ltp_max_count in range [0, LDAP_MAXTHR].
2007-05-09 23:25:03 +00:00
Hallvard Furuseth
f0a1511422
Make ldap_int_thread_userctx_t.ltu_key[] a proper NULL-terminated array.
...
(setkey/getkey expected that, but purgekey could set a NULL in the middle.)
Added some checks for input key!=NULL.
API changes, need review - I'm not sure what's indented here:
- setkey(data=NULL, kfree!=NULL) searched as if intended to reset
the key, but updated by setting the key. Now always updates.
- setkey(key=<not found>, data=NULL) could return either success or
failure. Now succeeds iff (data == NULL && kfree == NULL).
2007-05-09 22:59:04 +00:00