From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id DAF121F9F4 for ; Tue, 6 Jul 2021 12:42:03 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 3/3] extindex: --gc: avoid SQLite lock conflict on shard cleanup Date: Tue, 6 Jul 2021 12:42:03 +0000 Message-Id: <20210706124203.17745-4-e@80x24.org> In-Reply-To: <20210706124203.17745-1-e@80x24.org> References: <20210706124203.17745-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Xapian shard cleanup only requires read-only access to over.sqlite3, so avoid opening it with read-write access since create_tables will hit lock conflicts on "INSERT OR IGNORE" statements. --- lib/PublicInbox/SearchIdxShard.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/PublicInbox/SearchIdxShard.pm b/lib/PublicInbox/SearchIdxShard.pm index 1598faeb..8635f585 100644 --- a/lib/PublicInbox/SearchIdxShard.pm +++ b/lib/PublicInbox/SearchIdxShard.pm @@ -78,8 +78,9 @@ sub shard_close { sub shard_over_check { my ($self, $over) = @_; if ($self->{-ipc_req} && $over->{dbh}) { - # can't send DB handles over IPC - $over = ref($over)->new($over->{dbh}->sqlite_db_filename); + # can't send DB handles over IPC, and use read-only to avoid + # create_tables lock conflict: + $over = PublicInbox::Over->new($over->{dbh}->sqlite_db_filename) } $self->ipc_do('over_check', $over); }