Page MenuHomePhabricator

Initialize and Shutdown sqlite3 globals
ClosedPublic

Authored by PiRK on Nov 25 2021, 16:23.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABC57ccdc4b058d: 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