Return-Path: X-Original-To: apmail-aurora-reviews-archive@minotaur.apache.org Delivered-To: apmail-aurora-reviews-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B7B4C188F6 for ; Tue, 5 Jan 2016 04:29:58 +0000 (UTC) Received: (qmail 21070 invoked by uid 500); 5 Jan 2016 04:29:58 -0000 Delivered-To: apmail-aurora-reviews-archive@aurora.apache.org Received: (qmail 21020 invoked by uid 500); 5 Jan 2016 04:29:58 -0000 Mailing-List: contact reviews-help@aurora.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: reviews@aurora.apache.org Delivered-To: mailing list reviews@aurora.apache.org Received: (qmail 21000 invoked by uid 99); 5 Jan 2016 04:29:58 -0000 Received: from reviews-vm.apache.org (HELO reviews.apache.org) (140.211.11.40) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 05 Jan 2016 04:29:58 +0000 Received: from reviews.apache.org (localhost [127.0.0.1]) by reviews.apache.org (Postfix) with ESMTP id 2E8FD297AAC; Tue, 5 Jan 2016 04:29:57 +0000 (UTC) Content-Type: multipart/alternative; boundary="===============6317479738385777164==" MIME-Version: 1.0 Subject: Re: Review Request 41915: Fixup TaskObserverTest to respect thread memory models. From: "Maxim Khutornenko" To: "Bill Farner" , "Maxim Khutornenko" Cc: "John Sirois" , "Aurora" Date: Tue, 05 Jan 2016 04:29:57 -0000 Message-ID: <20160105042957.26044.63884@reviews.apache.org> X-ReviewBoard-URL: https://reviews.apache.org/ Auto-Submitted: auto-generated Sender: "Maxim Khutornenko" X-ReviewGroup: Aurora X-Auto-Response-Suppress: DR, RN, OOF, AutoReply X-ReviewRequest-URL: https://reviews.apache.org/r/41915/ X-Sender: "Maxim Khutornenko" References: <20160105032544.26044.77925@reviews.apache.org> In-Reply-To: <20160105032544.26044.77925@reviews.apache.org> Reply-To: "Maxim Khutornenko" X-ReviewRequest-Repository: aurora --===============6317479738385777164== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit > On Jan. 5, 2016, 3:25 a.m., Maxim Khutornenko wrote: > > src/main/python/apache/thermos/observer/task_observer.py, line 72 > > > > > > We usually put this default initialization directly into the arg list, e.g:'stop_event=threading.Event()'. > > John Sirois wrote: > I'm leery of that for mutable objects like an Event. Surprising things happen if/when the containing object gets constructed a 2nd time and the single default Event has been mutated! > > John Sirois wrote: > Maxim - your test originally so your call. For a refresh - see here: https://reviews.apache.org/r/35527/ > > John Sirois wrote: > Disregard comment immediately above - now moved up under Bill's comment further above where it belongs. Not sure how the current approach helps with anything. If a constructor is called once with `stop_event` and another time without it, wouldn't we end up in the same state with mutated field due to `stop_event` arg being None during the second call? - Maxim ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/41915/#review112750 ----------------------------------------------------------- On Jan. 5, 2016, 3:02 a.m., John Sirois wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/41915/ > ----------------------------------------------------------- > > (Updated Jan. 5, 2016, 3:02 a.m.) > > > Review request for Aurora, Maxim Khutornenko and Bill Farner. > > > Bugs: AURORA-1570 > https://issues.apache.org/jira/browse/AURORA-1570 > > > Repository: aurora > > > Description > ------- > > Previously, a mock threading.Event was waited on in one thread > and the count of waits was read in another thread. Most thread > memory models do not guaranty reads are fresh in this scenario > unless there is a memory barrier of some sort forcing per-cpu > caches to be flushed. > > This change uses the underlying threading.Event as the memory > barrier instead of mocking it and just wraps the event to record > calls manually. > > src/main/python/apache/thermos/observer/task_observer.py | 5 +++-- > src/test/python/apache/thermos/observer/test_task_observer.py | 36 ++++++++++++++++++++++++------------ > 2 files changed, 27 insertions(+), 14 deletions(-) > > > Diffs > ----- > > src/main/python/apache/thermos/observer/task_observer.py 1485de8faef52716f11b82a3556064de26c67427 > src/test/python/apache/thermos/observer/test_task_observer.py ace15c5305e75fac3a82971f4d71b92bcb37bafc > > Diff: https://reviews.apache.org/r/41915/diff/ > > > Testing > ------- > > Before this change I got a failure between 1/5 and 1/10th of the > time via: > ``` > while true > do > ./pants test src/test/python/apache/thermos/observer/ -- -kTaskObserverTest > done > ``` > > After the change I cannot trigger the failure. > > > Thanks, > > John Sirois > > --===============6317479738385777164==--