Reduced exclusive lock durations

This commit is contained in:
emeric
2023-11-19 16:17:27 +01:00
parent 575fec5727
commit 17a2a969e2
104 changed files with 881 additions and 705 deletions
@@ -77,7 +77,7 @@ namespace Scrobbling
std::optional<ScrobblingBackend> backend;
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
if (const User::pointer user{ User::find(session, userId) })
backend = user->getScrobblingBackend();
@@ -93,7 +93,7 @@ namespace Scrobbling
return res;
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
res = Database::Listen::getRecentArtists(session, userId, *backend, clusterIds, linkType, range);
return res;
@@ -108,7 +108,7 @@ namespace Scrobbling
return res;
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
res = Database::Listen::getRecentReleases(session, userId, *backend, clusterIds, range);
return res;
@@ -123,7 +123,7 @@ namespace Scrobbling
return res;
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
res = Database::Listen::getRecentTracks(session, userId, *backend, clusterIds, range);
return res;
@@ -136,7 +136,7 @@ namespace Scrobbling
return {};
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
const Database::Listen::pointer listen{ Database::Listen::getMostRecentListen(session, userId, *backend, releaseId) };
return listen ? listen->getDateTime() : Wt::WDateTime{};
@@ -149,7 +149,7 @@ namespace Scrobbling
return {};
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
const Database::Listen::pointer listen{ Database::Listen::getMostRecentListen(session, userId, *backend, trackId) };
return listen ? listen->getDateTime() : Wt::WDateTime{};
@@ -165,7 +165,7 @@ namespace Scrobbling
return res;
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
res = Database::Listen::getTopArtists(session, userId, *backend, clusterIds, linkType, range);
return res;
@@ -180,7 +180,7 @@ namespace Scrobbling
return res;
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
res = Database::Listen::getTopReleases(session, userId, *backend, clusterIds, range);
return res;
@@ -195,7 +195,7 @@ namespace Scrobbling
return res;
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
res = Database::Listen::getTopTracks(session, userId, *backend, clusterIds, range);
return res;
@@ -48,7 +48,7 @@ namespace Scrobbling
void InternalBackend::addTimedListen(const TimedListen& listen)
{
Database::Session& session{ _db.getTLSSession() };
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
if (Database::Listen::find(session, listen.userId, listen.trackId, Database::ScrobblingBackend::Internal, listen.listenedAt))
return;
@@ -36,7 +36,7 @@ namespace Scrobbling::ListenBrainz
{
bool canBeScrobbled(Session& session, TrackId trackId, std::chrono::seconds duration)
{
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
const Track::pointer track{ Track::find(session, trackId) };
if (!track)
@@ -46,7 +46,7 @@ namespace
std::optional<Wt::Json::Object> listenToJsonPayload(Database::Session& session, const Scrobbling::Listen& listen, const Wt::WDateTime& timePoint)
{
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
const Database::Track::pointer track{ Database::Track::find(session, listen.trackId) };
if (!track)
@@ -143,7 +143,7 @@ namespace
{
using namespace Database;
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
// first try to match using track MBID, and then fallback on possibly ambiguous info
if (listen.trackMBID)
@@ -289,7 +289,7 @@ namespace Scrobbling::ListenBrainz
using namespace Database;
Session& session{ _db.getTLSSession() };
auto transaction{ session.createUniqueTransaction() }; // TODO: unique only if needed
auto transaction{ session.createWriteTransaction() }; // TODO: unique only if needed
Database::Listen::pointer dbListen{ Database::Listen::find(session, listen.userId, listen.trackId, Database::ScrobblingBackend::ListenBrainz, listen.listenedAt) };
if (!dbListen)
@@ -324,7 +324,7 @@ namespace Scrobbling::ListenBrainz
{
Database::Session& session{ _db.getTLSSession() };
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
Database::Listen::FindParameters params;
params.setScrobblingBackend(Database::ScrobblingBackend::ListenBrainz)
@@ -408,7 +408,7 @@ namespace Scrobbling::ListenBrainz
Database::RangeResults<Database::UserId> userIds;
{
Database::Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
userIds = Database::User::find(_db.getTLSSession(), Database::User::FindParameters{}.setScrobblingBackend(Database::ScrobblingBackend::ListenBrainz));
}
@@ -30,7 +30,7 @@ namespace Scrobbling::ListenBrainz::Utils
std::optional<UUID>
getListenBrainzToken(Database::Session& session, Database::UserId userId)
{
auto transaction {session.createSharedTransaction()};
auto transaction {session.createReadTransaction()};
const Database::User::pointer user {Database::User::find(session, userId)};
if (!user)