From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 25 Jul 2024 09:18:18 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-ot1-f62.google.com (mail-ot1-f62.google.com [209.85.210.62]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 46P7IG6U004529 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 25 Jul 2024 09:18:17 +0200 Received: by mail-ot1-f62.google.com with SMTP id 46e09a7af769-7035ae4e205sf462077a34.2 for ; Thu, 25 Jul 2024 00:18:17 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1721891891; cv=pass; d=google.com; s=arc-20160816; b=I4yM1az3idcbNX7b01Xu/D+iyqk0pqvaUt6jCWwQ90R3ucq2eOoWTw1M5YE6GlntZy PkrOLrhMH9rGgCN/n6vervlpoNFM9AHpvqjYt1KUi8ovj766wtY0er/Kz9TYr8x4d0TF CnhsAA13CrjaH+MFl3cU+ChyKjxEgxTOukIn2IZdKkIeG/FyMh6CflxvfKaLNNKIo0hj SPZSWRDTHqo20Ugp+jXq3nwdHrsMnMjJUmceYX36r8ZR3KqpqRrFTz9CG/L+pLUA6V0J RqcGbkJvhqFFs73B5iWB43Nq387RDJRQlxHVEvNKdjTPYDH8TY8OLoBxgSPeDYWdhhJp 4V5w== ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:mime-version :content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:date:message-id:dkim-signature; bh=xZj1SYQdNr1EtxBGNimCg/Wi9Vwyt9IcgRJZ3YbB9dE=; fh=ASnPWrMSDtjMTWbrZA/E75APKC9kCVtJUQYxaHlvgzQ=; b=GD2VLbQCC2WibSFitV2H8kE9xLEDwKb2eWj5dPQbRyrmokPwYL/OzyskbNdd5XxuNZ lRxzE6jQWfi/qdffWhsxlnKYK9QgQkQxs0MRV88YLkToio7z1bmwKWdQynmnflxNdXhK NA5sPpvpmSlRjTqPlGI9oZ9Eozve67WYOSIZxJzXtn4X65UxYH4jdvsNMWCun+ZHLO/1 6HKbK1zr5sFwUoqdELl8/gz+pMwNj+9aF+7qkBfT9ME57UopG8AgBCNnB/Oh92afAzeo IwtOqcA+rQqM/g4qbyfR8A9rwf/l3NTj+4/WPxstVJphpSuqJPd8iH45NcjUNAqw7dXA 1+Vg==; darn=isar-build.org ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=x8tS5IAa; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f403:2613::600 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1721891891; x=1722496691; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=xZj1SYQdNr1EtxBGNimCg/Wi9Vwyt9IcgRJZ3YbB9dE=; b=P40Oh0zi90duz85RCtSl0rqVe8bo8nm0c5sApGHD6PG7ivNfPwiqg6XuRUUMhTdox7 qJoeGOHhdbD1PIdAlEKAHIMRPw3G03su09BVn7YqWJNQTb/8U80OOuhgLDUFkeDtZq+c YLqwlqkTYXpJ9QdqjWdM3GtF2A9BM0hFnuazDkmtm+SVBjxz2KWxreWnj2keozXO9pP6 0XpFGMlCQPQQpALuXg5Ig/XRSptNNzUSzl3Gwlyo4qNdC7RqS2zwG/YY9mVcsl7Jj3nW nbs7afkglJH5A5fUhKDIJIndpWmn9LF03zbmuO+qwaJb6sfSh+uv6hYliN1JQTm9ret1 0R0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721891891; x=1722496691; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:date:message-id:x-beenthere :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=xZj1SYQdNr1EtxBGNimCg/Wi9Vwyt9IcgRJZ3YbB9dE=; b=YPMPtGrW8USoP+yQvs6jbu/mYykhfCvtTQJswDgSgvhVg01noLbkps/v5C4v/X181M Xj4pet5O9Lrbj4oNzsHcYBK4VfIlCf2hsxKr5UGsKXNgqe6YPkMFs/pRmAn822YdEtzo sNpDX4Ri7UBmQc00aL8FIYc1p/d6JfrUjF4UeK2O+RgXeSfN5b8y01PK6OG95P4OwvM7 Ek7rUxKeZ/5QFQoPU85un+0v7o08Syji1iFpalMgCVKpwOO+72VXjAXZsGiHVQAjjGoR GBv1cwUFavkLjpCrvwciMgeezp3F155C/MtefTKMNBrZav8J6RJZfFY9Am35iRGAezxg o7Qw== X-Forwarded-Encrypted: i=3; AJvYcCVYF8cq2u3uOCwXEpSH30r8mPwjzV5S1jSecEKcCZxBazDNfvVoBIvcGgyaUHKFBZfDF8MKg2mQwqKw8Fl2kKGJQHI= X-Gm-Message-State: AOJu0YxNHEcYGhHTYEFYcdvUz0bkkUNXZmE4jKqTZZe1WYJKu66a1qbk yqJepKsUiuxYPBG8ZsE3jBRoqX/GwZ0UQGdxounHG5FsxQkTxjG0 X-Google-Smtp-Source: AGHT+IHFoCxTvEvIbV5LNzsqd6rvXZiy/pt0pObBD9V2wNcsrIlcuIE0GkDUUnmYYkQ61B1ZayDKMQ== X-Received: by 2002:a05:6870:e416:b0:261:136a:9724 with SMTP id 586e51a60fabf-266cc32419bmr1359048fac.16.1721891890588; Thu, 25 Jul 2024 00:18:10 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6871:5286:b0:25c:b2bf:2226 with SMTP id 586e51a60fabf-2649ff52797ls794415fac.1.-pod-prod-07-us; Thu, 25 Jul 2024 00:18:09 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUgaXCCjPJvUe9L4OKflnHsIv3pT8WJV8Zf3kusgSm+RbL0DTPRjDwnYilwfzXR0VMzfpKSo+VesEJs8RzOyXOxKPiaT2zrwlXeyRg= X-Received: by 2002:a05:6870:b525:b0:261:2c4:f7a0 with SMTP id 586e51a60fabf-266ede83240mr1134678fac.51.1721891889760; Thu, 25 Jul 2024 00:18:09 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1721891889; cv=pass; d=google.com; s=arc-20160816; b=uNNMOJvJp4TDHkpWn27DGmuFZhZvfDh9hupR+fBa8Z6d3csMDp/YgXo3+5BJjPsC+G XmguA63aGgKWAx78XiHKtIKYD2G8/3fcuhX0qhUVdwD3CAqPadwgj8m0K093c7BppZhZ rmI1+5rKZ+XZm6lewnswWyXwY2j1lsrVnKG7MkUEy6UOKb9khHNHDz5VKy+iBdAS3wSG gMNECnAaqctq5YOzOdLW7vut/2Zgj5qeAmHCNct46y5XPToO6conKmus8dhCksYgNeZ9 8mX1Rq9es5CPunETgIKJ7gvEpfQjCqctxcD9vwjebyNuoGKz9/CZXwB2UQWRnRQ1ljVE fviQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:content-transfer-encoding:in-reply-to:content-language :from:references:cc:to:subject:user-agent:date:message-id :dkim-signature; bh=l3n+ZazQ61Kj/XzjdzuCx/9H/RbCTaIbi/MktmE57Ew=; fh=0PxWS4056y/+/yoget/k+ZB+jxU8piOnQp3qN+H3qhI=; b=ZsgjugZaN5UD9h0IZ/9AYU9j8jzG1rYQtpgSDsSMBmz6HOxW8CYfHlP6Eu6TM4XuLS T2Dti0Kh3BqzIV6yHxcezHz7mt8sLZVzx3/Ue6Mccfjm5yyPzN65qb28F0jIw89zIora oc1ZR8ZaSDvIv6E+7wpiwpt9ZsKkB1TQuS63OPjd9ZC9jcE/BwFJq+oMP+SGIT0Z31NE qtj8yNPYffqtnnvZEEK4sWshffmIDulcp/dzs2n28V9x+pgfKnRE1Ih1lf4aBU/LzJTG 7H8JaYJzH6cymQnuHA1xWWSjhWk7xVNWXLr0NR7R9VUqSbVHdmUqHRNkNEzlQkjitm2g PvYA==; dara=google.com ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=x8tS5IAa; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f403:2613::600 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on20600.outbound.protection.outlook.com. [2a01:111:f403:2613::600]) by gmr-mx.google.com with ESMTPS id 46e09a7af769-709307db479si54585a34.5.2024.07.25.00.18.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 Jul 2024 00:18:09 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f403:2613::600 as permitted sender) client-ip=2a01:111:f403:2613::600; ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=so146rw8yHxCAbh9kfmmsiA1KTbJge9ARqZAxQsq+uqJt3F/5LWGSBIFK3qfrfigQuB5Yg9tmBcuagwJ8c45RunH4FLUZ1uURrc69i9x2YemIat/fVYdN6IbDWuvUsX/rWNmplwxTbq4/OCM3ey0gR8LN+7PG/an9jFEdPAdxL7Mf+Qu5QJNUrClyuwxwROiosaRSFOe/iG9ecWbnCRLAzwrQgpN+NBkvSOCE4NZmd8Ow22MPPtedfWJ/66wfnKNXxZ13JsHs0HWOYuSY+o1kYPdglZ5iFiKqfWR2WuSGL6TXFeRzvX8VzOWmKPp4ZsmZ+sAMszWrt3a7oLZx+j3uA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=l3n+ZazQ61Kj/XzjdzuCx/9H/RbCTaIbi/MktmE57Ew=; b=wYU4fm5vAS8hnPSsSepqba3f5VTv+j9p8Wm2rvlrfphS2aaANPK9Aij6aHOU8h0MJTzcRBgC9L8gROdw2yQIh3bLpKRX2MvEeVjl1bzB5MrdXgS0kVteciyoMnKef1+K8CjYTJxweYHHbJOWvZbut5ZuDM6bbj2QeuE9w0PjpHOyq7V3ZAQEDh0+mVABBYs1pz3P+EQC2sea494Bs2Kkrow6knojw/vObXOaVpe0MB4XVLb+i6mkY7uTmB+PAIrWKg513WsjH/KT4SokhhehJEcheXButvku/MfZplVR904X60Ow4PZKPtB3p20674u825TGiHz1Uv1loUaxbzuGjQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none Received: from AS2PR10MB6349.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:550::8) by DB9PR10MB5331.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:337::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7784.19; Thu, 25 Jul 2024 07:18:06 +0000 Received: from AS2PR10MB6349.EURPRD10.PROD.OUTLOOK.COM ([fe80::4cbc:c0b7:27cc:2082]) by AS2PR10MB6349.EURPRD10.PROD.OUTLOOK.COM ([fe80::4cbc:c0b7:27cc:2082%6]) with mapi id 15.20.7762.027; Thu, 25 Jul 2024 07:18:06 +0000 Message-ID: <4902c475-e195-45ef-9d20-05496eebb33d@siemens.com> Date: Thu, 25 Jul 2024 09:18:03 +0200 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] isar-sstate: reupload utilized files older than max-age To: "Moessbauer, Felix (T CED OES-DE)" , "isar-users@googlegroups.com" Cc: "Schmidt, Adriaan (T CED EDC-DE)" References: <20240723122703.1210290-1-tobias.schaffner@siemens.com> <904fa1146f4d9e5c05f0c22e416bd39c87feb712.camel@siemens.com> From: "'Tobias Schaffner' via isar-users" Content-Language: en-US In-Reply-To: <904fa1146f4d9e5c05f0c22e416bd39c87feb712.camel@siemens.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0348.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f4::7) To AS2PR10MB6349.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:550::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS2PR10MB6349:EE_|DB9PR10MB5331:EE_ X-MS-Office365-Filtering-Correlation-Id: 82188ec6-796d-4b0a-ac90-08dcac79edb4 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?TnRucG96bk4rVGpJbEdTTGtXODdEUDVhN3hDOHowUnBOWW1BbkRIblZER3pN?= =?utf-8?B?c25MdnBtRGpMWGhNN1VGZUpGaGpJdm5qRldJWDlEWHZlSDBaWnhKcm4yQzd6?= =?utf-8?B?WEpKRTBCOUl1MFEyMzJpcFdqbnpjc0wzT1YxRzBZa1I1TUVubUZWaTZIeUlz?= =?utf-8?B?UUQrc2NIZ1VnWjdRR1lEazFMeklIS0J1YitPZndVL0R5ZEVjWEFRcUd0QSto?= =?utf-8?B?a09GTmNoZi9uK1kwWkJ2dU5sT012TldCSlFXTEN5NGZFZ2toVkRubnRIRW9M?= =?utf-8?B?QWtqbnpzWkt0bFdGNm1kQ25mT0dCeE5NTDhrbzVCOU5Wcis1OFVqTFVxbzBF?= =?utf-8?B?ZmZ2d2tGMU9rUk9UQlFKOWFiQVRyZlV0TE1pbVphMlRlaDFOc3d1OWhVbVJ4?= =?utf-8?B?T3pvNE41TitoY2djU012Zll3RmxLMkNzY0h0bFVYK0Nxc0trdnlFamNJYith?= =?utf-8?B?a0ZDbFNzVmd3R0hTdlplVUJ1YnlodjZ0VmE3L1JuSTlEZU1SVjF3Z2grVG5o?= =?utf-8?B?M2FJK0VJbzdaMnVNOGFiMlg0L2NNT3dDK2MzKzRscTRvbDhPM09zVVJTSWc0?= =?utf-8?B?REZBUlVzL0pvVVVmbC9UWFN5VmFWKytXUmVwTWZ2aWVWb3h2WDNsbmtTSWdp?= =?utf-8?B?M0l3clFEODhyYTlmaENKQkhGSDd0RFZ1YzlzMW5zb09BdGhrWEo4dHNmMUJI?= =?utf-8?B?Ky8ybWFvQjY1Ri9XMnZpTWZscjAxTHZlaGE0d0Z3Zm9kSDdzVHRLMFJlakR1?= =?utf-8?B?c2ZkQ1J2RlNhUS8xL0lYQllZZTZUek1HLzIwVTNkV2w1dHpMYmEvd2p5aXRz?= =?utf-8?B?MTdsOU1WYVBVbCs5ZDUxU0V0VTNSMHIxckVnQjE3TzFSMjkvbEpFUHJuMEt4?= =?utf-8?B?VVQvZXFNNUZzR1RtS3hDY2ozZGZWRFNMUlRRRGN5SVZiVWQzVzJmd0d2M2Z1?= =?utf-8?B?amk4c1VqejVxWGRiZ0Z1dzJ0Unh6dW1oZzk1UGhvUEFESWZhcmxsclJUbStZ?= =?utf-8?B?bFgvSkdjV1Y4WXFrVndnRHRIcms4dXBoZnlCdHpycEtDZXZvazZvK3ZtY1JD?= =?utf-8?B?NDdlSVJQcHBKVi9wSEdPbFVoSVhlL085ZlNhVDFrbHVLcmJvdmFhT1NBUzJw?= =?utf-8?B?TU9uNXNHanBnUVZWdmdPdUk2djJ4WWs1SEpqbmVhNmsrY3ppZEdxa2l5cm8x?= =?utf-8?B?MUxTc3o2Y2JtN1FGODJUeFpkYm9FWUpkYVI3WVlxMzNqTjV4bysrSE5PSUNP?= =?utf-8?B?WDlsVFMwS3lHT2lwanIxWFpjbVdDQXN1aGVDTVJYalRxb2dnb0VXOW45enV0?= =?utf-8?B?MWU0Wk40TzR0c1BPdXRaNlFaSmFHSFFVZzZ2VGd6V2VGbExiWkkxYWVHNnJr?= =?utf-8?B?Q3V6VWhiTTNEQkRoQkVZcDFoSXFwdVhyR1h6RmNHTWIrYkF0M01vV1pMeDBT?= =?utf-8?B?dktTWFNVYXNBeGJkUUdlNVd5YmpxNEw1MlQ3QzhXR0d4YTBic3RwQXJZZmhE?= =?utf-8?B?L0hCWVRnc3djK25LU1F1aUhaOUw3OHRkRXdnalNzZE85WnBaT0tRaHpVYjFY?= =?utf-8?B?VzBmWStXT3VNaFo2dlltR1RqZ0tlMFQ5eW80UTdhMHV4R0NqdS9MYlEvWUZH?= =?utf-8?B?OHhRVzRXNC9udUhnU0JKYVZYaGtZdnY4TG9lNjR1bkxoWDdJa3hIanR3ZEs3?= =?utf-8?B?SEJtbGJnSnROZUdYWjJocS9ZUlBHTDlsQy83LzVQVGdPN29aT2pJdURSeDBZ?= =?utf-8?B?UHUwT0FvcTQ3cmpNV3RNOXFvc0tHT24rbk1rZzl0RUxTL05IRkNPMmdpSHZ4?= =?utf-8?B?STRxOHRuQjhjdGZtMkZEQT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR10MB6349.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YTYxa2l2TzkyNjFWNVE5ZWpMK3ZSbzF2ZUU4UHNCZE05TmlkUnZRQzBJQ3JL?= =?utf-8?B?MmZzc21oMjlUYmxEc2dzWXlMNStZallBWG92UWJwaWhrcVZRaVpHNEtyY3RG?= =?utf-8?B?dXEydmZPbUgvYkxnUUpDR2hId0lGZmQ5blAvMHZseUxOdXdMaTh3Y2JRbzVN?= =?utf-8?B?N1VMemZBWE5oZW9mQnQ5QTI3aHkzQnlnTVQzOTBOa0tKWU9KbEc5M0lRUEo3?= =?utf-8?B?ZmV0WmtKMFozYWxlWXVaR1hoV3dBQ3lpZ1FpcFR3ZkdlQlVqR0hzSkgrNW80?= =?utf-8?B?MGNuV2FLTlJkTG15K21aVFlIbEJGVnRPczRpcVlGM0ZPbmFsc1dyRnlvWm5I?= =?utf-8?B?VHo3enRMVFBoM1hHcmJpVjQ2eTFTR1VtVjFpeFY3V1RBZzVXTlVpbnlrTkwx?= =?utf-8?B?YWFWbi9sN2FRZSt4ei84RXZiOXdkOGpGNlI0bDJRL0hmcXBYR0xENHRVMXlT?= =?utf-8?B?YlkxVzZQY0dUaDBGWHpLaEw4L1hpVDFlUHg4S3hFU2xDYVFYbGRCSDBQclBG?= =?utf-8?B?ZndoSGVqdnBScEFWUFZGTUFDNXpSem9JNkV0SWowQ2FielY2MUtoUEE5dnFI?= =?utf-8?B?TW9Fd1hPVjl1dDJhbzJocm1pbFJYejVRU1FQL1N3dmlEaUJwNFkyYklqTWJz?= =?utf-8?B?c0RLcnNNT2hwbmQzOUZZYnlnNzNpR3dHbTh1WmF0RG5NQ1RlcmJ0cmIzVW9S?= =?utf-8?B?bkpZcE55N0xtckVnNmdKUzhiM0Z2aE9mWFB5YjFoNWhwU3lXMWE3Nnl3bTln?= =?utf-8?B?OFY0UXRTZmF4MnQyMDY1WkhNWmc5WlFkUnVodHJFSkJFVDl5SlRpRTM2R20v?= =?utf-8?B?Um4vdkhHV0o3c2VLbTVPQll2aHN1VU5JM1U2dG81VWJmdmx5YXV3a1RyUStY?= =?utf-8?B?STh5a2tYN3l4dytBU0Z2MUFtSDhEdldaVjFSQzFrbnpZWkpablhtbERWVWM0?= =?utf-8?B?eDdSU1J2Sllnb295eVB1bkdJVlFvMUtIbTM5ZTNyNmlHSHVGS0xlNEp0ZHJw?= =?utf-8?B?YkVKNFRDeHowSzc5Tm1vbnB0eTd2TSt2Nk90QmVFckFRRmJXN0MxbXJKRmQ1?= =?utf-8?B?UlhHMVZlTnVBMkhDSUdHWEtKbXBSbXgrS1dPdVA1bUNLdDdsVkQyN284VWNt?= =?utf-8?B?dEE1d29RdTVtajRPSFVFcFVkTXZoNkIwVGU2VUFQRGZQTlllcG5HZDQxZStK?= =?utf-8?B?dThKZDlEY1lSM0M2cHB0dHVCRWs5aWl6ZVFUcG1SUjhCMmxneTlHS3I0c0xU?= =?utf-8?B?QUFiY0JKMEN4S3ZRRUhLMGw4NmdENGxQTUo1L1Q3SVhOL3VGUkh3WFhkbVNH?= =?utf-8?B?U3I0MG1YVFM1MlZmQitnK29xVzVObXFCQjUva05na2NkSWYvalNjMGE1MDJo?= =?utf-8?B?RFozWXA1MEZDYXNwaEN0Mm9aRFhTZXpXejhqM2t0WjlrOVd1WCtqc2QvcDlw?= =?utf-8?B?c21MUGQ5dHc1Qi9zTElJSkJmQVRJYWJBa3FHVEtZd3MrRmZjcGdSL1F5YlAy?= =?utf-8?B?Q2FwNGUvUy9nblgvb0FpNjZoazYxME9vNFo3L2UxTGt0eFgyVDZZdTFKbjhM?= =?utf-8?B?M1VLMDVURE5HTDM0UWIyTTVGSnhicy9FS0tUVkVWdUxRWUM2azdOVHc3dU9L?= =?utf-8?B?UW5XY3c3eWlnQWRyR3c1U2ttOCs4REZvbGl1ZFl3UmlwZXJnWGdyNU5ZOW5m?= =?utf-8?B?Vzlub2JYMVhJanlQaFozUlhlSFVkZ1YvRURmc244SWhxRVpraXk5UkU2MlM1?= =?utf-8?B?d2JIbWVyUVdUUVJsUjRaUVpPdmc1ZThIT0x4L3IveEY3d3daMmNTOWZXb1U1?= =?utf-8?B?cUhmd2FGNUJuc1MzL1FGOENnc0RMMXB5R0d4Zm5ZTHJQMFZrUVFkcnBmOFlD?= =?utf-8?B?M01Ram85djVwZnBKMXNRVVYwTGtIOUV5YkFjUnB4TFpPVkhnK1NsQ0NXSld5?= =?utf-8?B?NUdFMmZOMTFsZGp1ZDVyK0tBUGY1ME9QQVU5WlZxTEdZa1JYSGIzaGhmakZv?= =?utf-8?B?UU95bEk0YUUxa0g4LzY4bDJLUWRONkE4Z2ZadzkvTUUyejM3MTdud1ljU3N5?= =?utf-8?B?QWI5aHNlYWNKaUxjWEppNStENE5tZFBHeVJwU2p1RGxpMVA5RHFCaXNkSXFw?= =?utf-8?B?N1F2UEZMRFdzL3NSdzEreFR3ZjZMUUxsK2d1S0hkaUxoVDJOakhRWjdTaHdE?= =?utf-8?B?emc9PQ==?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82188ec6-796d-4b0a-ac90-08dcac79edb4 X-MS-Exchange-CrossTenant-AuthSource: AS2PR10MB6349.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2024 07:18:06.0124 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 60Qtc4UdnimjfynVlP8Hc4ODPnFXq6xFqCgY3u/3WU8c33p8qT0EDppSCcY1HKKIRig0qXGVc7bR6FCih0v1C6ph/ZNwvnMV5fwqNc+5E/8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR10MB5331 X-Original-Sender: tobias.schaffner@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=x8tS5IAa; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f403:2613::600 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Tobias Schaffner Reply-To: Tobias Schaffner Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-4.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RCVD_IN_RP_CERTIFIED, RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-TUID: ORJ/Re1SbTkk On 24.07.24 14:38, Moessbauer, Felix (T CED OES-DE) wrote: > On Tue, 2024-07-23 at 14:27 +0200, Tobias Schaffner wrote: >> Currently, the Isar-sstate script deletes all files older than max- >> age >> during a clean call, regardless of whether they are still in use. >> Given >> that S3 buckets do not offer a means to update timestamps other than >> through a reupload, this commit introduces a change to reupload all >> files utilized by the current build if they are older than max-age >> during an isar-sstate upload call. >=20 > Hi, I'm wondering if it is sufficient to just re-upload the signature, > but not the file itself. Otherwise we "punish" good caching by a lot of > traffic between the build servers and S3. It depends on your CI structure but this does not necessarily introduce=20 more traffic. The Idea is to do a re-upload when the file would be cleaned. A the moment a common pattern for isar-sstate usage is: clean -> download needed artifacts that are available -> rebuild=20 artifact x that is still needed but was cleaned -> upload x This change allows you to: download needed artifacts that are available -> reupload x that would be=20 cleaned -> clean In both cases x will have to be uploaded. Best, Tobias > CC'ing Adriaan. >=20 > Felix >=20 >> >> Signed-off-by: Tobias Schaffner >> --- >> =C2=A0scripts/isar-sstate | 57 ++++++++++++++++++++++++++++++----------= --- >> -- >> =C2=A01 file changed, 38 insertions(+), 19 deletions(-) >> >> diff --git a/scripts/isar-sstate b/scripts/isar-sstate >> index 4ea38bc8..a60f50dd 100755 >> --- a/scripts/isar-sstate >> +++ b/scripts/isar-sstate >> @@ -32,6 +32,11 @@ and supports three remote backends (filesystem, >> http/webdav, AWS S3). >> =C2=A0The `upload` command pushes the contents of a local sstate cache = to >> the >> =C2=A0remote location, uploading all files that don't already exist on = the >> remote. >> =20 >> +`--max-age` specifies after which time artifacts in the cache should >> be >> +refreshed. Files older than this age will be reuploaded to update >> its timestamp. >> +This value should be chosen to be smaller than the clean max-age to >> ensure that >> +the artifacts are refreshed before they are cleaned. >> + >> =C2=A0### clean >> =20 >> =C2=A0The `clean` command deletes old artifacts from the remote cache. = It >> takes two >> @@ -179,6 +184,17 @@ StampsRegex =3D re.compile( >> =20 >> r"(.*/)?(?P[^/]+)/(?P[^/]+)/([^/]+)\.do_(?P[^/]+)\.(? >> Psigdata)\.(?P[0-9a-f]{64})" >> =C2=A0) >> =20 >> +def convert_duration_string_to_seconds(x): >> +=C2=A0=C2=A0=C2=A0 seconds_per_unit =3D {'s': 1, 'm': 60, 'h': 3600, 'd= ': 86400, 'w': >> 604800} >> +=C2=A0=C2=A0=C2=A0 m =3D re.match(r'^(\d+)(w|d|h|m|s)?', x) >> +=C2=A0=C2=A0=C2=A0 if m is None: >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return None >> +=C2=A0=C2=A0=C2=A0 unit =3D m.group(2) >> +=C2=A0=C2=A0=C2=A0 if unit is None: >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 print("WARNING: MAX_AGE with= out unit, assuming 'days'") >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unit =3D 'd' >> +=C2=A0=C2=A0=C2=A0 return int(m.group(1)) * seconds_per_unit[unit] >> + >> =C2=A0class SstateTargetBase(object): >> =C2=A0=C2=A0=C2=A0=C2=A0 def __init__(self, path, cached=3DFalse): >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 """Constructor >> @@ -598,7 +614,7 @@ def arguments(): >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '-v', '--verbose', def= ault=3DFalse, action=3D'store_true') >> =C2=A0=C2=A0=C2=A0=C2=A0 parser.add_argument( >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '--max-age', type=3Dst= r, default=3D'1d', >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 help=3D"clean: remove archiv= e files older than MAX_AGE (a >> number followed by w|d|h|m|s)") >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 help=3D"clean/upload: remove= /reupload archive files older than >> MAX_AGE (a number followed by w|d|h|m|s)") >> =C2=A0=C2=A0=C2=A0=C2=A0 parser.add_argument( >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '--max-sig-age', type= =3Dstr, default=3DNone, >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 help=3D"clean: remove = siginfo files older than MAX_SIG_AGE >> (defaults to MAX_AGE)") >> @@ -632,7 +648,7 @@ def arguments(): >> =C2=A0=C2=A0=C2=A0=C2=A0 return args >> =20 >> =20 >> -def sstate_upload(source, target, verbose, **kwargs): >> +def sstate_upload(source, target, verbose, max_age=3D"1d", **kwargs): >> =C2=A0=C2=A0=C2=A0=C2=A0 if not os.path.isdir(source): >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 print(f"WARNING: sourc= e {source} does not exist. Not >> uploading.") >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return 0 >> @@ -640,23 +656,37 @@ def sstate_upload(source, target, verbose, >> **kwargs): >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 print(f"WARNING: targe= t {target} does not exist and could >> not be created. Not uploading.") >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return 0 >> =20 >> +=C2=A0=C2=A0=C2=A0 print(f"INFO: scanning {target}") >> +=C2=A0=C2=A0=C2=A0 all_files =3D target.list_all() >> + >> +=C2=A0=C2=A0=C2=A0 def target_file_present(file_path): >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 for file in all_files: >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if f= ile.path =3D=3D file_path: >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 return file >> + >> =C2=A0=C2=A0=C2=A0=C2=A0 print(f"INFO: uploading {source} to {target}") >> =C2=A0=C2=A0=C2=A0=C2=A0 os.chdir(source) >> -=C2=A0=C2=A0=C2=A0 upload, exists =3D [], [] >> +=C2=A0=C2=A0=C2=A0 upload, exists, update =3D [], [], [] >> =C2=A0=C2=A0=C2=A0=C2=A0 for subdir, dirs, files in os.walk('.'): >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 target_dirs =3D subdir= .split('/')[1:] >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 for f in files: >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 file_path =3D (('/'.join(target_dirs) + '/') if >> len(target_dirs) > 0 else '') + f >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if t= arget.exists(file_path): >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 targ= et_file =3D target_file_present(file_path) >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if t= arget_file: >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 if verbose: >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 print(f"[EXISTS] {file_= path}") >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 exists.append(file_path) >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 if target_file.age > >> convert_duration_string_to_seconds(max_age): >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 update.append((file_path, tar= get_dirs)) >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if verbose: >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 print= (f"[UPDATE] {file_path}") >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 else: >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 upload.append((file_path, target_dirs)) >> -=C2=A0=C2=A0=C2=A0 upload_gb =3D (sum([os.path.getsize(f[0]) for f in u= pload]) / >> 1024.0 / 1024.0 / 1024.0) >> +=C2=A0=C2=A0=C2=A0 upload_gb =3D (sum([os.path.getsize(f[0]) for f in (= upload + >> update)]) / 1024.0 / 1024.0 / 1024.0) >> =C2=A0=C2=A0=C2=A0=C2=A0 print(f"INFO: uploading {len(upload)} files ({= upload_gb:.02f} >> GB)") >> =C2=A0=C2=A0=C2=A0=C2=A0 print(f"INFO: {len(exists)} files already pres= ent on target") >> -=C2=A0=C2=A0=C2=A0 for file_path, target_dirs in upload: >> +=C2=A0=C2=A0=C2=A0 print(f"INFO: {len(update)} files will be refreshed"= ) >> +=C2=A0=C2=A0=C2=A0 for file_path, target_dirs in upload + update: >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if verbose: >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 print(f"[UPLOAD] {file_path}") >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 target.mkdir('/'.join(= target_dirs)) >> @@ -665,24 +695,13 @@ def sstate_upload(source, target, verbose, >> **kwargs): >> =20 >> =20 >> =C2=A0def sstate_clean(target, max_age, max_sig_age, verbose, **kwargs)= : >> -=C2=A0=C2=A0=C2=A0 def convert_to_seconds(x): >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 seconds_per_unit =3D {'s': 1= , 'm': 60, 'h': 3600, 'd': 86400, >> 'w': 604800} >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 m =3D re.match(r'^(\d+)(w|d|= h|m|s)?', x) >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if m is None: >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retu= rn None >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unit =3D m.group(2) >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if unit is None: >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 prin= t("WARNING: MAX_AGE without unit, assuming 'days'") >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unit= =3D 'd' >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return int(m.group(1)) * sec= onds_per_unit[unit] >> - >> -=C2=A0=C2=A0=C2=A0 max_age_seconds =3D convert_to_seconds(max_age) >> +=C2=A0=C2=A0=C2=A0 max_age_seconds =3D convert_duration_string_to_secon= ds(max_age) >> =C2=A0=C2=A0=C2=A0=C2=A0 if max_age_seconds is None: >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 print(f"ERROR: cannot = parse MAX_AGE '{max_age}', needs to be >> a number followed by w|d|h|m|s") >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return 1 >> =C2=A0=C2=A0=C2=A0=C2=A0 if max_sig_age is None: >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 max_sig_age =3D max_ag= e >> -=C2=A0=C2=A0=C2=A0 max_sig_age_seconds =3D max(max_age_seconds, >> convert_to_seconds(max_sig_age)) >> +=C2=A0=C2=A0=C2=A0 max_sig_age_seconds =3D max(max_age_seconds, >> convert_duration_string_to_seconds(max_sig_age)) >> =20 >> =C2=A0=C2=A0=C2=A0=C2=A0 if not target.exists(): >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 print(f"WARNING: canno= t access target {target}. Nothing to >> clean.") >=20 --=20 You received this message because you are subscribed to the Google Groups "= isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to isar-users+unsubscribe@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/= isar-users/4902c475-e195-45ef-9d20-05496eebb33d%40siemens.com.