16 Commits

Author SHA1 Message Date
Günter Obiltschnig
072ee8ff9e enh(Poco::Util::Timer): Add idle() method to check if timer has any tasks scheduled #4488 2024-03-11 10:06:23 +08:00
Vojin Ilic
b8d1792fa0 Fix hang in destructor
Consider following situation. A class owns a timer. In destructor of that class we call .cancel() asynchronous on timer before it's destruction.
Now timer is executing cancel in it's own internal thread, while it's doing that destructor of timer is called from owner's destructor. Timer destructor enqueues stop notification. If that enqueue is happening just after while loop from cancel notification, stop notification is gonna be dropped and timer will never stop.
Fix: Add new method in TimedNotificationQueue which will return a notification regardless of the time it needs to be executed.
Get number of pending tasks in the queue. Flush out that many notifications from queue while taking special consideration of pending Stop and Cancel notifications.
Add test for new method in TimedNotificationQueue and fix cancel all tests to actually check if notification got executed.
fixes #3986
2023-04-04 12:08:49 +02:00
Vojin Ilic
46a55303ae Fix deadlock in Timer when one sync and one async cancel requests are issued
Timer is implemented with internal queue. If a user wants to cancel all pending tasks it can call .cancel to schedule CancelNotification.
As a part of processing of CancelNotification it will just flush the whole queue. It does have special processing for StopNotification so that Timer destruction doesn't get blocked.
Now if we first schedule async cancel and before this first cancel is processed we schedule another cancel but this time a sync second one will block because it is never notified that all tasks are canceled, _finished event is never set on that flushed CancelNotification.

Fix: add diffrent processing in case of CancelNotification to set all of it's _finished events.
Also add a test for this situation.
2023-01-16 11:53:11 +01:00
Aleksandar Fabijanic
ff879f5905
Fix/tsan (#3617)
* fix(Foundation): tsan warnings fixes

* fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress

* fix(Util): tsan fixes

* fix(netSSL_OpenSSL): tsan fixes

* fix(Data): tsan warnings fixes

* feat(ci): add tsan job

* feat(ci): add tsan job, another attempt

* feat(ci): add tsan job, 3rd attempt

* fix(Foundation): tsan warnings fixes

* fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress

* fix(Util): tsan fixes

* fix(netSSL_OpenSSL): tsan fixes

* fix(Data): tsan warnings fixes

* feat(ci): add tsan job

* feat(ci): add tsan job, another attempt

* feat(ci): add tsan job, 3rd attempt

* fix(ResultMetadata): memory leak #3474

* feat(ci): disable ActiveDispatcher tests for tsan runs

* feat(ci): try to fix tsan options file detection (again)

* chore(TestLibrary: correct spelling

* fix(ci): fix tsan run; add -y to apt; disable samples build for some jobs

* fix(ci): add mysql ports

* feat(ci): add VS asan

* feat(double-conversion): Upgrade double-conversion to v3.2.0 #3624

* chore(asan): disable msvc asan build (dll not found)

* chore(double-conversion): move NumericString.h before double-conversion includes to prevent min/max collision; reinstate lost loongarch64

* chore(JSON): sync pdjson with upstream

* fix(Statement): Poco::Data::Statement becomes unusable after exception #2287
2022-06-01 23:47:26 -05:00
Günter Obiltschnig
958387b6ba improved Lambda support 2020-01-26 08:41:22 +01:00
zosrothko
960ecb38f0 Poco 1.9.1 assert true (#2255)
* Rename assert by assertTrue

* Update submodules

* Missing assertTrue

* Rename poco_assertTrue to poco_assert

* Rename poco_assertTrue to poco_assert
2018-03-29 11:12:54 -06:00
Günter Obiltschnig
d73bb2ea86 fixed GH #2058: Synchronization issue in Poco::Util::Timer at destruction 2018-03-06 17:33:02 +01:00
Günter Obiltschnig
04e7e04d4d Remove \$Id`$ headers 2017-09-09 11:14:06 +02:00
Pascal Bach
e2538ac6e2 Add additional test for Poco::Util::Timer
Test scheduling with Timestamp and Clock

Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
2014-12-17 10:50:40 +01:00
Guenter Obiltschnig
f848f0db19 add test for c2edf4470f6e47c4013f12f1314843ee645d65af 2014-11-24 18:45:41 +01:00
Roger Meier
b0581433a7 LICENSE: add info about SPDX-License-Identifier usage and use it
fix: remove executable flag and change back to 100644 (was 100755)

Signed-off-by: Roger Meier <r.meier@siemens.com>
2014-05-14 08:38:09 +02:00
Roger Meier
628a06f718 LICENSE: add info about SPDX-License-Identifier usage and use it
Signed-off-by: Roger Meier <roger@bufferoverflow.ch>
2014-05-04 21:02:42 +02:00
Aleksandar Fabijanic
d75e68c027 new trunk (base for 1.5)
windows build only
2012-04-23 01:14:34 +00:00
Aleksandar Fabijanic
f9b60296f7 removing old trunk files 2012-04-23 00:43:14 +00:00
Guenter Obiltschnig
addc556949 integrated changes from 1.3.6 2009-06-17 06:52:25 +00:00
Guenter Obiltschnig
457e24748d added Util::Timer 2009-04-14 10:47:37 +00:00