From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6523072403514327040 X-Received: by 10.25.170.82 with SMTP id t79mr1005250lfe.36.1519034643738; Mon, 19 Feb 2018 02:04:03 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.46.71.68 with SMTP id u65ls709339lja.13.gmail; Mon, 19 Feb 2018 02:04:03 -0800 (PST) X-Google-Smtp-Source: AH8x226Q5K48DCFovNayfahnDPqxsrdOgwo+HYvu6WcTXrRjMBZdSASzBOMSVA5dxkFf+vInuBE+ X-Received: by 10.46.17.17 with SMTP id f17mr842974lje.29.1519034643086; Mon, 19 Feb 2018 02:04:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519034643; cv=none; d=google.com; s=arc-20160816; b=vZFgvsMyDdJIeroXALCBsVoAp44OrTuohOrYjxvC+UyalNZYtuvp63FAjwyQDPYNrJ GNIdNHrlUFEuYT7W44sfY4rygcYPUZpxz/7SEbaR+FslXIkKE4fUSXzWvt7Et73OHLzP jtm3dneLAhMurPQwTuckhELpfMoZIvfYajWbH1cggVR/ApKXMR07TwRyuqrAZ7CEAJR8 tdD6ZPnO7LTfDaBhQOvWr9Z3dPhA+VN8aww+W7htxNNR9CGxHYpP2DBkJitN9dAUHkgb Wp2I3ve8OlC7DUdfYzQPqm1IJV9dUvpSTAdpAX7fdGx5TLtFB8GTsSIqEROSID0+zhed uthw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:from:references:to:subject :arc-authentication-results; bh=ZDEx5EwLENOn8c/H61Bdz7q0LWp0MdDehFrXahcgU4M=; b=apK9WdkJXRdzdYAlTJauZ07Duo8IeKYh5WpqbmsqCIB9YgT1S0ToB8c4b3ZuXgux/D whU7t99SSr3h8yC3osTkgaSi46WF/zZRC+XRl2FdLcdn20tNjVux7rgOVKLNHzhXHdYQ 4c0mN6Uxcymq3WwjGM7ODUpXt9reaJO+aTgxjiYTDjfATTSerGdet3Cmdr6ulsnLO/dN gC0eyGttJHjnIbxI/vQ/JBw1Y5rkT4L9StFd7iRXF+0+2DvFZ6+yHSkabeLpF6w/f3QW OsCMIsV8VUjU600Z7vglOnu0CeSyrMbw1nVXUsvp9BebabUJ/gF9MUDXAyJxQdmOfPUl bNPA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Return-Path: Received: from aqmola.ilbers.de (aqmola.ilbers.de. [85.214.62.211]) by gmr-mx.google.com with ESMTPS id l30si348238ljb.3.2018.02.19.02.04.02 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Feb 2018 02:04:02 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) client-ip=85.214.62.211; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Received: from [10.0.2.15] ([188.227.110.165]) (authenticated bits=0) by aqmola.ilbers.de (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id w1JA3vSt031045 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Mon, 19 Feb 2018 11:04:01 +0100 Subject: Re: [PATCH 2/8] isar-events: Wait for failing umounts To: Jan Kiszka , isar-users References: <3db8db617fb01db824b962b979de745fa0f4bc9a.1518771143.git.jan.kiszka@siemens.com> <70af17d0-be54-60c6-a11f-0a5047abea33@siemens.com> From: Alexander Smirnov Message-ID: <1dac58ff-2be2-9cd9-2eb4-4686343cce65@ilbers.de> Date: Mon, 19 Feb 2018 13:03:52 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <70af17d0-be54-60c6-a11f-0a5047abea33@siemens.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-TUID: qsBRaXolumEW On 02/19/2018 12:48 PM, Jan Kiszka wrote: > On 2018-02-19 10:45, Alexander Smirnov wrote: >> On 02/16/2018 11:52 AM, Jan Kiszka wrote: >>> From: Jan Kiszka >>> >>> The BuildCompleted event may come prior to all running build processes >>> being terminated. In that case, some mount might be busy, and we will >>> leave them dangling behind. Wait in that case. >> >> How long we should wait? > > Until it's done. > >> For example there was a bug with apt-get which >> results as hanging of 'http' process. So in this case Isar never returns >> to command prompt until second ^C pressed. > > In that case, you need to run around killing processes anyway. > Yes, for sure. Just thinking in voice, how this could affect CI. You send kill signal to Isar build, but it could stay running forever... So pipeline will be blocked until you notice this. Alex > Jan > >> >> Alex >> >>> >>> Signed-off-by: Jan Kiszka >>> --- >>>   meta/classes/isar-events.bbclass | 28 +++++++++++++++++++--------- >>>   1 file changed, 19 insertions(+), 9 deletions(-) >>> >>> diff --git a/meta/classes/isar-events.bbclass >>> b/meta/classes/isar-events.bbclass >>> index 4b5e97e..68208f1 100644 >>> --- a/meta/classes/isar-events.bbclass >>> +++ b/meta/classes/isar-events.bbclass >>> @@ -2,11 +2,26 @@ >>>   # >>>   # This software is a part of ISAR. >>>   # Copyright (C) 2015-2017 ilbers GmbH >>> +# Copyright (c) Siemens AG, 2018 >>>     addhandler isar_handler >>>     python isar_handler () { >>>       import subprocess >>> +    import time >>> + >>> +    def umount_all(basepath): >>> +        # '/proc/mounts' contains all the active mounts, so knowing >>> basepath >>> +        # we can get the list of mounts for the specific multiconfig and >>> +        # clean them. >>> +        with open('/proc/mounts', 'rU') as f: >>> +            for line in f: >>> +                if basepath in line: >>> +                    if subprocess.call('sudo umount ' + line.split()[1], >>> +                                       stdout=devnull, stderr=devnull, >>> +                                       shell=True) != 0: >>> +                        return False >>> +        return True >>>         devnull = open(os.devnull, 'w') >>>   @@ -16,15 +31,10 @@ python isar_handler () { >>>           arch = d.getVar('DISTRO_ARCH', True) >>>             if tmpdir and distro and arch: >>> -            w = tmpdir + '/work/' + distro + '-' + arch >>> - >>> -            # '/proc/mounts' contains all the active mounts, so >>> knowing 'w' we >>> -            # could get the list of mounts for the specific >>> multiconfig and >>> -            # clean them. >>> -            with open('/proc/mounts', 'rU') as f: >>> -                for line in f: >>> -                    if w in line: >>> -                        subprocess.call('sudo umount -f ' + >>> line.split()[1], stdout=devnull, stderr=devnull, shell=True) >>> +            basepath = tmpdir + '/work/' + distro + '-' + arch >>> + >>> +            while not umount_all(basepath): >>> +                time.sleep(1) >>>         devnull.close() >>>   } >>> >> > >