From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id yOpoLwSslWNN7QAAbAwnHQ (envelope-from ) for ; Sun, 11 Dec 2022 11:08:04 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id 8AuZLgSslWPHQAEAG6o9tA (envelope-from ) for ; Sun, 11 Dec 2022 11:08:04 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 92409102E9 for ; Sun, 11 Dec 2022 11:08:04 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4JF6-0000tz-KW; Sun, 11 Dec 2022 05:07:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4JF4-0000sz-0j for emacs-orgmode@gnu.org; Sun, 11 Dec 2022 05:07:30 -0500 Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4JF1-0008J3-Pz for emacs-orgmode@gnu.org; Sun, 11 Dec 2022 05:07:28 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1p4JEr-0000gz-Th for emacs-orgmode@gnu.org; Sun, 11 Dec 2022 11:07:17 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-orgmode@gnu.org From: Max Nikulin Subject: Re: [PATCH] Merge loaded org-persist index with index file contents Date: Sun, 11 Dec 2022 17:07:10 +0700 Message-ID: References: <87359mqqvf.fsf@tec.tecosaur.net> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Content-Language: en-US In-Reply-To: <87359mqqvf.fsf@tec.tecosaur.net> Received-SPF: pass client-ip=116.202.254.214; envelope-from=geo-emacs-orgmode@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 25 X-Spam_score: 2.5 X-Spam_bar: ++ X-Spam_report: (2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FORGED_MUA_MOZILLA=2.309, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NICE_REPLY_A=-0.288, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1670753284; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=ScOL+/SjxObuWjMNh7E55ukklHfD9THDwmYd6hIrdNI=; b=OI5HxJQB6/ThEpXMiyWhQEhOpE++okc11P5mUSFEI5U9/GskuUqYfn/8qDX6tYNb+ItOKJ XFsFBSpmjLXf+9b0w8fspPsWR47Zhc7oMGlPFuX3bJOIqydTQ+mlFf4NRlTWY+zNx4wDuG vvQk1cPxdTzZbwHgn1v9AnLwpOi/JrPVuAsYIZGcm0uafyEyrrfkR5oGvwZjdVKpgett1n l6eJfF1be1Yt390v+n9YyQEYg0WHqtoZgJ3wCRKJE5Ccv2KGw6LdUEJ6PEJjFDNRwgqAde c63oF7QjjXGA7FNVQP1IGiZKllwooyictpSORApOKu/5Fe/7u9zsvXLWfa1oYA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=none) ARC-Seal: i=1; s=key1; d=yhetil.org; t=1670753284; a=rsa-sha256; cv=none; b=flLkRAOZEwLrt0IWQvYLvyfdYCr3cIOSUKEDYnaJn2iy3w/WF3YaswAezTaRo2P+9T0eGc XXASP2oDjuPA7mHCAlsKnjxFGPaJTtgRPDDTFEM07TUs+sbt/y1QjVPigFC5LkkS5MRliZ DRWaZnrphYhAZaeiucUuddi/khDO7LoAfq723V55Tb7IuhtQv7jKaDrs0Kdz4yYGgWn//7 O0EtA/i2nB+2fcGQUQaRy5JOo5x6f921Z2NjdkFqhURXEwLnhoW5mDrLgAjFdPmsQZ1tXD Tp/NmvMzPu/MxEX+ZO4c0tPGsBH0C4pjope9zZC1/y3JcvtRtN5j5TRbvkppIQ== X-Migadu-Spam-Score: 2.25 X-Spam-Score: 2.25 X-Migadu-Queue-Id: 92409102E9 X-Migadu-Scanner: scn0.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=none) X-TUID: NQKF3bDOVa4j On 11/12/2022 14:59, Timothy wrote: > + (setq org-persist--index combined-index > + org-persist--index-age (current-time))))) Please, avoid mixing of system clock and filesystem timestamps. (file-attribute-modification-time (file-attributes file)) should be more reliable. See the `org-file-newer-than-p' docstring. In general, I would prefer to avoid relying on timestamps at all, but I am not sure if it is possible to implement in elisp with reasonable efforts. The idea is to save into file header a hash of content (or a random number). To check if file has not been modified, just header is read at first. If hash does not match the value stored in memory then it is necessary to read the whole file. Another point that I am unsure is if Emacs ensures file locks. If one emacs process writes disk cache file then attempts to read the same file by other emacs instances must be postponed. Cooperation in respect to disk cache would be an improvement, but it may be tricky to implement it reliably.