Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tp7Sr-000iZK-EG for pgsql-hackers@arkaria.postgresql.org; Mon, 03 Mar 2025 15:12:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tp7Sq-009t3R-6k for pgsql-hackers@arkaria.postgresql.org; Mon, 03 Mar 2025 15:12:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tp7Sp-009t3H-Lo for pgsql-hackers@lists.postgresql.org; Mon, 03 Mar 2025 15:12:15 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tp7Sm-000j5v-03 for pgsql-hackers@postgresql.org; Mon, 03 Mar 2025 15:12:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1741014732; bh=jkcOHdSXyQRRQubxIxQLmKeQt54REam8PLMlmUNwoAc=; h=From:In-Reply-To:References:Date:To:Message-ID:Subject:User-Agent: From; b=4LXz1wY9NKIvOx3e6bHiDvLoE314NEmpXfULnw2ZLLsvC5KH2jw7UFb+EEQfMGx09 PtCMmdTa19/wUk95eXteoJn5uO269cV6eNdAWvlqjujpmUidRYo1FVLF5DwIr7qave 0VGgld/0DsczTLHBygvixq0t205kLOOToFdpYim7bKH4uds7JMh2YMN2bcRdkB7TSk xM0JUYILOtUJauBD0O5/5YD+gtxWJZwdhbPz1r+v/KjeNupjbRjD7xhzQBD8j2KUUz 8jDNvAcfHfp3adwp9KlS4A6E4QrNoI1R3PZFnc/62QCR+XrJc05TpWbSibLjCRqOv/ X9/F74KaI9teg== Received: from sogo.postgrespro.ru (sogo.l.postgrespro.ru [192.168.2.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) by mail.postgrespro.ru (Postfix/587) with ESMTPS id 397066083C for ; Mon, 3 Mar 2025 18:12:12 +0300 (MSK) From: "Vitaly Davydov" Content-Type: multipart/mixed; boundary="----=_=-_OpenGroupware_org_NGMime-1390754-1741014732.113035-1------" In-Reply-To: <135e8-675c4600-21-304d7f40@228322535> X-Forward: 46.39.228.63 References: <1d12d2-67235980-35-19a406a0@63439497> <683f3c82-d38e-436d-88fd-27722af62005@vondra.me> <8679fea7-94ce-4a52-8e48-1a8cd0857fcb@vondra.me> <135e8-675c4600-21-304d7f40@228322535> Date: Mon, 03 Mar 2025 18:12:12 +0300 To: "pgsql-hackers" MIME-Version: 1.0 Message-ID: <1538a2-67c5c700-7-77ec5a80@179382871> Subject: =?utf-8?q?Re=3A?= Slot's =?utf-8?q?restart=5Flsn?= may point to removed WAL segment after hard restart unexpectedly User-Agent: SOGoMail 5.11.2 X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/03/03 09:38:00 #27560739 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ------=_=-_OpenGroupware_org_NGMime-1390754-1741014732.113035-1------ Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Length: 814 Dear Hackers, Let me please introduce a new version of the patch. Patch description: The slot data is flushed to the disk at the beginning of checkpoint. If an existing slot is advanced in the middle of checkpoint execution, its advanced restart LSN is taken to calculate the oldest LSN for WAL segments removal at the end of checkpoint. If the node is restarted jus= t after the checkpoint, the slots data will be read from the disk at recovery with the oldest restart LSN which can refer to removed WAL segments. =20 The patch introduces a new in-memory state for slots - flushed=5Frestart=5Flsn which is used to calculate the oldest LSN for W= AL segments removal. This state is updated every time with the current restart=5Flsn at the moment, when the slot is saving to disk. With best regards, Vitaly ------=_=-_OpenGroupware_org_NGMime-1390754-1741014732.113035-1------ Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Keep-WAL-segments-by-slot-s-flushed-restart-LSN.patch" Content-Length: 8102 RnJvbSA0ODBhYjEwODQ5OWQ5NWM4YmVmZDk1OTExNTI0YzRkNzdjZWM2ZTJlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaXRhbHkgRGF2eWRvdiA8di5kYXZ5ZG92QHBvc3Rn cmVzcHJvLnJ1PgpEYXRlOiBNb24sIDMgTWFyIDIwMjUgMTc6MDI6MTUgKzAzMDAKU3ViamVj dDogW1BBVENIIDEvMl0gS2VlcCBXQUwgc2VnbWVudHMgYnkgc2xvdCdzIGZsdXNoZWQgcmVz dGFydCBMU04KClRoZSBzbG90IGRhdGEgaXMgZmx1c2hlZCB0byB0aGUgZGlzayBhdCB0aGUg YmVnaW5uaW5nIG9mIGNoZWNrcG9pbnQuIElmCmFuIGV4aXN0aW5nIHNsb3QgaXMgYWR2YW5j ZWQgaW4gdGhlIG1pZGRsZSBvZiBjaGVja3BvaW50IGV4ZWN1dGlvbiwgaXRzCmFkdmFuY2Vk IHJlc3RhcnQgTFNOIGlzIHRha2VuIHRvIGNhbGN1bGF0ZSB0aGUgb2xkZXN0IExTTiBmb3Ig V0FMCnNlZ21lbnRzIHJlbW92YWwgYXQgdGhlIGVuZCBvZiBjaGVja3BvaW50LiBJZiB0aGUg bm9kZSBpcyByZXN0YXJ0ZWQganVzdAphZnRlciB0aGUgY2hlY2twb2ludCwgdGhlIHNsb3Rz IGRhdGEgd2lsbCBiZSByZWFkIGZyb20gdGhlIGRpc2sgYXQKcmVjb3Zlcnkgd2l0aCB0aGUg b2xkZXN0IHJlc3RhcnQgTFNOIHdoaWNoIGNhbiByZWZlciB0byByZW1vdmVkIFdBTApzZWdt ZW50cy4KClRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGluLW1lbW9yeSBzdGF0ZSBmb3Ig c2xvdHMgLQpmbHVzaGVkX3Jlc3RhcnRfbHNuIHdoaWNoIGlzIHVzZWQgdG8gY2FsY3VsYXRl IHRoZSBvbGRlc3QgTFNOIGZvciBXQUwKc2VnbWVudHMgcmVtb3ZhbC4gVGhpcyBzdGF0ZSBp cyB1cGRhdGVkIGV2ZXJ5IHRpbWUgd2l0aCB0aGUgY3VycmVudApyZXN0YXJ0X2xzbiBhdCB0 aGUgbW9tZW50LCB3aGVuIHRoZSBzbG90IGlzIHNhdmluZyB0byBkaXNrLgotLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCB8ICA3ICsrKysr KwogMiBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCmluZGV4IDcxOWU1MzFlYjkwLi4yOTQ0MThkZjIxNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwpAQCAtNDI0LDYgKzQyNCw3IEBAIFJlcGxpY2F0aW9uU2xvdENyZWF0ZShj b25zdCBjaGFyICpuYW1lLCBib29sIGRiX3NwZWNpZmljLAogCXNsb3QtPmNhbmRpZGF0ZV9y ZXN0YXJ0X3ZhbGlkID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJc2xvdC0+Y2FuZGlkYXRlX3Jl c3RhcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJc2xvdC0+bGFzdF9zYXZlZF9jb25m aXJtZWRfZmx1c2ggPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlzbG90LT5yZXN0YXJ0X2xzbl9m bHVzaGVkID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJc2xvdC0+aW5hY3RpdmVfc2luY2UgPSAw OwogCiAJLyoKQEAgLTExNjUsMjAgKzExNjYsMzYgQEAgUmVwbGljYXRpb25TbG90c0NvbXB1 dGVSZXF1aXJlZExTTih2b2lkKQogCXsKIAkJUmVwbGljYXRpb25TbG90ICpzID0gJlJlcGxp Y2F0aW9uU2xvdEN0bC0+cmVwbGljYXRpb25fc2xvdHNbaV07CiAJCVhMb2dSZWNQdHIJcmVz dGFydF9sc247CisJCVhMb2dSZWNQdHIJcmVzdGFydF9sc25fZmx1c2hlZDsKIAkJYm9vbAkJ aW52YWxpZGF0ZWQ7CisJCVJlcGxpY2F0aW9uU2xvdFBlcnNpc3RlbmN5IHBlcnNpc3RlbmN5 OwogCiAJCWlmICghcy0+aW5fdXNlKQogCQkJY29udGludWU7CiAKIAkJU3BpbkxvY2tBY3F1 aXJlKCZzLT5tdXRleCk7CisJCXBlcnNpc3RlbmN5ID0gcy0+ZGF0YS5wZXJzaXN0ZW5jeTsK IAkJcmVzdGFydF9sc24gPSBzLT5kYXRhLnJlc3RhcnRfbHNuOwogCQlpbnZhbGlkYXRlZCA9 IHMtPmRhdGEuaW52YWxpZGF0ZWQgIT0gUlNfSU5WQUxfTk9ORTsKKwkJcmVzdGFydF9sc25f Zmx1c2hlZCA9IHMtPnJlc3RhcnRfbHNuX2ZsdXNoZWQ7CiAJCVNwaW5Mb2NrUmVsZWFzZSgm cy0+bXV0ZXgpOwogCiAJCS8qIGludmFsaWRhdGVkIHNsb3RzIG5lZWQgbm90IGFwcGx5ICov CiAJCWlmIChpbnZhbGlkYXRlZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIEdldCB0aGUgZmx1 c2hlZCByZXN0YXJ0X2xzbiBmb3IgdGhlIHBlcnNpc3RlbnQgc2xvdCB0byBjb21wdXRlCisJ CSAqIHRoZSBvbGRlc3QgTFNOIGZvciBXQUwgc2VnbWVudHMgcmVtb3ZhbHMuCisJCSAqLwor CQlpZiAocGVyc2lzdGVuY3kgPT0gUlNfUEVSU0lTVEVOVCkKKwkJeworCQkJaWYgKHJlc3Rh cnRfbHNuX2ZsdXNoZWQgIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYKKwkJCQlyZXN0YXJ0X2xz biA+IHJlc3RhcnRfbHNuX2ZsdXNoZWQpCisJCQl7CisJCQkJcmVzdGFydF9sc24gPSByZXN0 YXJ0X2xzbl9mbHVzaGVkOworCQkJfQorCQl9CisKIAkJaWYgKHJlc3RhcnRfbHNuICE9IElu dmFsaWRYTG9nUmVjUHRyICYmCiAJCQkobWluX3JlcXVpcmVkID09IEludmFsaWRYTG9nUmVj UHRyIHx8CiAJCQkgcmVzdGFydF9sc24gPCBtaW5fcmVxdWlyZWQpKQpAQCAtMTIxNiw3ICsx MjMzLDkgQEAgUmVwbGljYXRpb25TbG90c0NvbXB1dGVMb2dpY2FsUmVzdGFydExTTih2b2lk KQogCXsKIAkJUmVwbGljYXRpb25TbG90ICpzOwogCQlYTG9nUmVjUHRyCXJlc3RhcnRfbHNu OworCQlYTG9nUmVjUHRyCXJlc3RhcnRfbHNuX2ZsdXNoZWQ7CiAJCWJvb2wJCWludmFsaWRh dGVkOworCQlSZXBsaWNhdGlvblNsb3RQZXJzaXN0ZW5jeSBwZXJzaXN0ZW5jeTsKIAogCQlz ID0gJlJlcGxpY2F0aW9uU2xvdEN0bC0+cmVwbGljYXRpb25fc2xvdHNbaV07CiAKQEAgLTEy MzAsMTQgKzEyNDksMjggQEAgUmVwbGljYXRpb25TbG90c0NvbXB1dGVMb2dpY2FsUmVzdGFy dExTTih2b2lkKQogCiAJCS8qIHJlYWQgb25jZSwgaXQncyBvayBpZiBpdCBpbmNyZWFzZXMg d2hpbGUgd2UncmUgY2hlY2tpbmcgKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7 CisJCXBlcnNpc3RlbmN5ID0gcy0+ZGF0YS5wZXJzaXN0ZW5jeTsKIAkJcmVzdGFydF9sc24g PSBzLT5kYXRhLnJlc3RhcnRfbHNuOwogCQlpbnZhbGlkYXRlZCA9IHMtPmRhdGEuaW52YWxp ZGF0ZWQgIT0gUlNfSU5WQUxfTk9ORTsKKwkJcmVzdGFydF9sc25fZmx1c2hlZCA9IHMtPnJl c3RhcnRfbHNuX2ZsdXNoZWQ7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwogCiAJ CS8qIGludmFsaWRhdGVkIHNsb3RzIG5lZWQgbm90IGFwcGx5ICovCiAJCWlmIChpbnZhbGlk YXRlZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIEdldCB0aGUgZmx1c2hlZCByZXN0YXJ0X2xz biBmb3IgdGhlIHBlcnNpc3RlbnQgc2xvdCB0byBjb21wdXRlCisJCSAqIHRoZSBvbGRlc3Qg TFNOIGZvciBXQUwgc2VnbWVudHMgcmVtb3ZhbHMuCisJCSAqLworCQlpZiAocGVyc2lzdGVu Y3kgPT0gUlNfUEVSU0lTVEVOVCkKKwkJeworCQkJaWYgKHJlc3RhcnRfbHNuX2ZsdXNoZWQg IT0gSW52YWxpZFhMb2dSZWNQdHIgJiYKKwkJCQlyZXN0YXJ0X2xzbiA+IHJlc3RhcnRfbHNu X2ZsdXNoZWQpCisJCQl7CisJCQkJcmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbl9mbHVzaGVk OworCQkJfQorCQl9CisKIAkJaWYgKHJlc3RhcnRfbHNuID09IEludmFsaWRYTG9nUmVjUHRy KQogCQkJY29udGludWU7CiAKQEAgLTE0NTUsNiArMTQ4OCw3IEBAIFJlcGxpY2F0aW9uU2xv dFJlc2VydmVXYWwodm9pZCkKIAogCUFzc2VydChzbG90ICE9IE5VTEwpOwogCUFzc2VydChz bG90LT5kYXRhLnJlc3RhcnRfbHNuID09IEludmFsaWRYTG9nUmVjUHRyKTsKKwlBc3NlcnQo c2xvdC0+cmVzdGFydF9sc25fZmx1c2hlZCA9PSBJbnZhbGlkWExvZ1JlY1B0cik7CiAKIAkv KgogCSAqIFRoZSByZXBsaWNhdGlvbiBzbG90IG1lY2hhbmlzbSBpcyB1c2VkIHRvIHByZXZl bnQgcmVtb3ZhbCBvZiByZXF1aXJlZApAQCAtMTc2Niw2ICsxODAwLDggQEAgSW52YWxpZGF0 ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJCSAqLwog CQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKIAorCQlBc3NlcnQocy0+ZGF0YS5yZXN0 YXJ0X2xzbiA+PSBzLT5yZXN0YXJ0X2xzbl9mbHVzaGVkKTsKKwogCQlyZXN0YXJ0X2xzbiA9 IHMtPmRhdGEucmVzdGFydF9sc247CiAKIAkJLyogd2UgZG8gbm90aGluZyBpZiB0aGUgc2xv dCBpcyBhbHJlYWR5IGludmFsaWQgKi8KQEAgLTE4MzUsNyArMTg3MSwxMCBAQCBJbnZhbGlk YXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCSAq IGp1c3QgcmVseSBvbiAuaW52YWxpZGF0ZWQuCiAJCQkgKi8KIAkJCWlmIChpbnZhbGlkYXRp b25fY2F1c2UgPT0gUlNfSU5WQUxfV0FMX1JFTU9WRUQpCisJCQl7CiAJCQkJcy0+ZGF0YS5y ZXN0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCQkJCXMtPnJlc3RhcnRfbHNuX2Zs dXNoZWQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJCX0KIAogCQkJLyogTGV0IGNhbGxlciBr bm93ICovCiAJCQkqaW52YWxpZGF0ZWQgPSB0cnVlOwpAQCAtMjM1NCw2ICsyMzkzLDcgQEAg U2F2ZVNsb3RUb1BhdGgoUmVwbGljYXRpb25TbG90ICpzbG90LCBjb25zdCBjaGFyICpkaXIs IGludCBlbGV2ZWwpCiAJaWYgKCFzbG90LT5qdXN0X2RpcnRpZWQpCiAJCXNsb3QtPmRpcnR5 ID0gZmFsc2U7CiAJc2xvdC0+bGFzdF9zYXZlZF9jb25maXJtZWRfZmx1c2ggPSBjcC5zbG90 ZGF0YS5jb25maXJtZWRfZmx1c2g7CisJc2xvdC0+cmVzdGFydF9sc25fZmx1c2hlZCA9IGNw LnNsb3RkYXRhLnJlc3RhcnRfbHNuOwogCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgp OwogCiAJTFdMb2NrUmVsZWFzZSgmc2xvdC0+aW9faW5fcHJvZ3Jlc3NfbG9jayk7CkBAIC0y NTY5LDYgKzI2MDksNyBAQCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUp CiAJCXNsb3QtPmVmZmVjdGl2ZV94bWluID0gY3Auc2xvdGRhdGEueG1pbjsKIAkJc2xvdC0+ ZWZmZWN0aXZlX2NhdGFsb2dfeG1pbiA9IGNwLnNsb3RkYXRhLmNhdGFsb2dfeG1pbjsKIAkJ c2xvdC0+bGFzdF9zYXZlZF9jb25maXJtZWRfZmx1c2ggPSBjcC5zbG90ZGF0YS5jb25maXJt ZWRfZmx1c2g7CisJCXNsb3QtPnJlc3RhcnRfbHNuX2ZsdXNoZWQgPSBjcC5zbG90ZGF0YS5y ZXN0YXJ0X2xzbjsKIAogCQlzbG90LT5jYW5kaWRhdGVfY2F0YWxvZ194bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CiAJCXNsb3QtPmNhbmRpZGF0ZV94bWluX2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5o IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IGY1YTI0Y2NmYmYyLi5i MDRkMjQwMWQ2ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtMjE1LDYgKzIxNSwx MyBAQCB0eXBlZGVmIHN0cnVjdCBSZXBsaWNhdGlvblNsb3QKIAkgKiByZWNlbnRseSBzdG9w cGVkLgogCSAqLwogCVRpbWVzdGFtcFR6IGluYWN0aXZlX3NpbmNlOworCisJLyogTGF0ZXN0 IHJlc3RhcnRfbHNuIHRoYXQgaGFzIGJlZW4gZmx1c2hlZCB0byBkaXNrLiBGb3IgcGVyc2lz dGVudCBzbG90cworCSAqIHRoZSBmbHVzaGVkIExTTiBzaG91bGQgYmUgdGFrZW4gaW50byBh Y2NvdW50IHdoZW4gY2FsY3VsYXRpbmcgdGhlIG9sZGVzdAorCSAqIExTTiBmb3IgV0FMIHNl Z21lbnRzIHJlbW92YWwuCisJICovCisJWExvZ1JlY1B0ciByZXN0YXJ0X2xzbl9mbHVzaGVk OworCiB9IFJlcGxpY2F0aW9uU2xvdDsKIAogI2RlZmluZSBTbG90SXNQaHlzaWNhbChzbG90 KSAoKHNsb3QpLT5kYXRhLmRhdGFiYXNlID09IEludmFsaWRPaWQpCi0tIAoyLjM0LjEKCg== ------=_=-_OpenGroupware_org_NGMime-1390754-1741014732.113035-1------ Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Fix-src-recovery-t-001_stream_rep.pl.patch" Content-Length: 1313 RnJvbSAyNDEzYWI0NDY4Yjk0MjgwZDE5MzE2YjIwMzg0ODkxMmVkNmQ3MTNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaXRhbHkgRGF2eWRvdiA8di5kYXZ5ZG92QHBvc3Rn cmVzcHJvLnJ1PgpEYXRlOiBGcmksIDEzIERlYyAyMDI0IDE2OjAyOjE0ICswMzAwClN1Ympl Y3Q6IFtQQVRDSCAyLzJdIEZpeCBzcmMvcmVjb3ZlcnkvdC8wMDFfc3RyZWFtX3JlcC5wbAoK LS0tCiBzcmMvdGVzdC9yZWNvdmVyeS90LzAwMV9zdHJlYW1fcmVwLnBsIHwgMyArKysKIDEg ZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzAwMV9zdHJlYW1fcmVwLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDFf c3RyZWFtX3JlcC5wbAppbmRleCBlZTU3ZDIzNGM4Ni4uZWFlOWQwMGI5YjQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDAxX3N0cmVhbV9yZXAucGwKKysrIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMDFfc3RyZWFtX3JlcC5wbApAQCAtNTUzLDYgKzU1Myw5IEBAIGNo b21wKCRwaHlzX3Jlc3RhcnRfbHNuX3Bvc3QpOwogb2soICgkcGh5c19yZXN0YXJ0X2xzbl9w cmUgY21wICRwaHlzX3Jlc3RhcnRfbHNuX3Bvc3QpID09IDAsCiAJInBoeXNpY2FsIHNsb3Qg YWR2YW5jZSBwZXJzaXN0cyBhY3Jvc3MgcmVzdGFydHMiKTsKIAorIyBDbGVhbnVwIHVudXNl ZCBXQUwgc2VnbWVudHMKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi Q0hFQ0tQT0lOVDsiKTsKKwogIyBDaGVjayBpZiB0aGUgcHJldmlvdXMgc2VnbWVudCBnZXRz IGNvcnJlY3RseSByZWN5Y2xlZCBhZnRlciB0aGUKICMgc2VydmVyIHN0b3BwZWQgY2xlYW5s eSwgY2F1c2luZyBhIHNodXRkb3duIGNoZWNrcG9pbnQgdG8gYmUgZ2VuZXJhdGVkLgogbXkg JHByaW1hcnlfZGF0YSA9ICRub2RlX3ByaW1hcnktPmRhdGFfZGlyOwotLSAKMi4zNC4xCgo= ------=_=-_OpenGroupware_org_NGMime-1390754-1741014732.113035-1--------