From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 8A52E1F454 for ; Sun, 8 Oct 2023 19:47:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1696794426; bh=R6bIrS18RKp10ahvdV93Y/wpNJDr7RdIKKYaCcPgWCY=; h=From:To:Subject:Date:From; b=SmMa4v/q/yqIkJa/zLCcu6grS0owzWJu4lcv3CuX7C1EkSiYBnoxqg2pgfHmCIcZ6 6gyVueNB9dSLzP5ZBsucA1KRqUORxcShGGfft7WawBWmcre613xJ/YqDBewhIkZ+J9 kEMU4CvUaY90AJ9PMbqy7XvDgFworumjbimjjkJU= From: Eric Wong To: spew@80x24.org Subject: [PATCH] over: do not delete {filename} on connect Date: Sun, 8 Oct 2023 19:46:08 +0000 Message-ID: <20231008194608.93886-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: --- lib/PublicInbox/Over.pm | 22 ++++++++-------------- lib/PublicInbox/OverIdx.pm | 5 +---- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/lib/PublicInbox/Over.pm b/lib/PublicInbox/Over.pm index e3a8adb1..e070c39b 100644 --- a/lib/PublicInbox/Over.pm +++ b/lib/PublicInbox/Over.pm @@ -16,16 +16,13 @@ use List::Util (); # for max sub dbh_new { my ($self, $rw) = @_; - my $f = delete $self->{filename}; - if (!-s $f) { # SQLite defaults mode to 0644, we want 0666 - if ($rw) { - require PublicInbox::Syscall; - my ($dir) = ($f =~ m!(.+)/[^/]+\z!); - PublicInbox::Syscall::nodatacow_dir($dir); - open my $fh, '+>>', $f or die "failed to open $f: $!"; - } else { - $self->{filename} = $f; # die on stat() below: - } + my $f = $self->{filename}; + # SQLite defaults mode to 0644, we want to respect umask + if (!-s $f && $rw) { + require PublicInbox::Syscall; + my ($dir) = ($f =~ m!(.+)/[^/]+\z!); + PublicInbox::Syscall::nodatacow_dir($dir); + open my $fh, '+>>', $f or die "failed to open $f: $!"; } my (@st, $st, $dbh); my $tries = 0; @@ -76,10 +73,7 @@ sub new { sub dbh_close { my ($self) = @_; - if (my $dbh = delete $self->{dbh}) { - delete $self->{-get_art}; - $self->{filename} = $dbh->sqlite_db_filename; - } + delete @$self{qw(dbh -get_art)}; } sub dbh ($) { $_[0]->{dbh} //= $_[0]->dbh_new } # dbh_new may be subclassed diff --git a/lib/PublicInbox/OverIdx.pm b/lib/PublicInbox/OverIdx.pm index 5cea3706..512a2cdb 100644 --- a/lib/PublicInbox/OverIdx.pm +++ b/lib/PublicInbox/OverIdx.pm @@ -460,10 +460,7 @@ sub dbh_close { sub create { my ($self) = @_; - my $fn = $self->{filename} // do { - croak('BUG: no {filename}') unless $self->{dbh}; - return; - }; + my $fn = $self->{filename} // croak('BUG: no {filename}'); unless (-r $fn) { require File::Path; my ($dir) = ($fn =~ m!(.*?/)[^/]+\z!);