Reduced exclusive lock durations
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user