HomePhabricator

Initialize and Shutdown sqlite3 globals

Description

Initialize and Shutdown sqlite3 globals

Summary:
sqlite3 recommends that sqlite3_initialize be called when the
application starts, and sqlite3_shutdown when it stops. Since we don't
always use sqlite3, we initialize it when a SQLiteDatabse is constructed
(calling sqlite3_initialize after initialized is a no-op). We call
sqlite3_shutdown when we see that there are no databases opened. The
number of open databases is tracked by an atomic g_dbs_open.

This is a backport of core#19077 [6/26]
https://github.com/bitcoin/bitcoin/pull/19077/commits/3bfa0fe1259280f8c32b41a798c9453b73f89b02

Depends on D10545

Test Plan:
With clang-tidy:
ninja

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Differential Revision: https://reviews.bitcoinabc.org/D10546

Details

Provenance
Andrew Chow <achow101-github@achow101.com>Authored on May 27 2020, 00:53
PiRKCommitted on Nov 26 2021, 14:10
PiRKPushed on Nov 26 2021, 14:10
Reviewer
Restricted Project
Differential Revision
D10546: Initialize and Shutdown sqlite3 globals
Parents
rABC688eebd27dff: Constructors, destructors, and relevant private fields for SQLiteDatabase/Batch
Branches
Unknown
Tags
Unknown