[issue34943] sched cancel (wrong item removed from queue)

2021-11-22 Thread Irit Katriel


Change by Irit Katriel :


--
resolution:  -> duplicate
stage:  -> resolved
status: open -> closed
superseder:  -> Document that sched.cancel() doesn't distinguish equal events 
and can break order

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34943] sched cancel (wrong item removed from queue)

2018-10-09 Thread ajneu


ajneu  added the comment:

Ah ...
https://bugs.python.org/issue19270 amazing!

assert ev1 == ev2 
does not fail! (the equality just checks timestamp as far as I can see)

Terrible. In particular: Terrible if the documentation blatently lies to me: 
https://docs.python.org/3/library/sched.html#sched.scheduler.cancel

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34943] sched cancel (wrong item removed from queue)

2018-10-09 Thread ajneu


New submission from ajneu :

Hi, 

in the code given below, the last assert fails
when running with 
/mingw64/bin/python3 (Python 3.7.0 -- mingw64's python3 from msys2 project)
C:\Python36\python.exe (Python 3.6.6 -- windows installer)

It does not fail when running with
/usr/bin/python3 (Python 3.6.6 -- msys's python3 from msys2 project)






import sched, time, threading

class A(threading.Thread):
def __init__(self, sched):
threading.Thread.__init__(self)
self._sched = sched
self.start()

def run(self):
self._sched.run()




s = sched.scheduler(time.monotonic, time.sleep)

ev1=None
def go1(a=''):
print(a)
global ev1
ev1 = s.enterabs(time.monotonic()+1, 1, go1, argument=('a',))

ev2=None 
def go2(a=''):
print(a)
global ev2
ev2 = s.enterabs(time.monotonic()+1, 1, go2, argument=('b',))


ev1 = s.enterabs(time.monotonic()+1, 1, go1, argument=('a',))
ev2 = s.enterabs(time.monotonic()+1, 1, go2, argument=('b',))
a = A(s)
time.sleep(2.5)
print('schedu queue before', s.queue)
assert 1 == 1
print('remove', ev2)
assert ev2 in s.queue
s.cancel(ev2)
print('schedu queue after', s.queue)
assert ev2 not in s.queue   # fails (SOMETIMES)


# what is going on here???
# does the last assert also fail from anybody else?

--
components: Library (Lib)
messages: 327396
nosy: ajneu
priority: normal
severity: normal
status: open
title: sched cancel (wrong item removed from queue)
type: behavior
versions: Python 3.6, Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com