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
@@ -60,7 +60,7 @@ namespace Feedback
std::optional<Database::FeedbackBackend> feedbackBackend;
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
if (const User::pointer user{ User::find(session, userId) })
feedbackBackend = user->getFeedbackBackend();
@@ -101,7 +101,7 @@ namespace Feedback
searchParams.setRange(params.range);
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
return Artist::findIds(session, searchParams);
}
@@ -139,7 +139,7 @@ namespace Feedback
searchParams.setRange(params.range);
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
return Release::findIds(session, searchParams);
}
@@ -177,7 +177,7 @@ namespace Feedback
searchParams.setRange(params.range);
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
return Track::findIds(session, searchParams);
}
@@ -37,7 +37,7 @@ namespace Feedback
typename StarredObjType::IdType starredObjId;
{
Session& session{ _db.getTLSSession() };
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
typename StarredObjType::pointer starredObj{ StarredObjType::find(session, objId, userId, *backend) };
if (!starredObj)
@@ -68,7 +68,7 @@ namespace Feedback
typename StarredObjType::IdType starredObjId;
{
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
typename StarredObjType::pointer starredObj{ StarredObjType::find(session, objId, userId, *backend) };
if (!starredObj)
@@ -83,7 +83,7 @@ namespace Feedback
bool FeedbackService::isStarred(UserId userId, ObjIdType objId)
{
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
typename StarredObjType::pointer starredObj{ StarredObjType::find(session, objId, userId) };
return starredObj && (starredObj->getSyncState() != SyncState::PendingRemove);
@@ -93,7 +93,7 @@ namespace Feedback
Wt::WDateTime FeedbackService::getStarredDateTime(UserId userId, ObjIdType objId)
{
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
typename StarredObjType::pointer starredObj{ StarredObjType::find(session, objId, userId) };
if (starredObj && (starredObj->getSyncState() != SyncState::PendingRemove))
@@ -32,7 +32,7 @@ namespace Feedback
template <typename StarredObjType>
void onStarred(Database::Session& session, typename StarredObjType::IdType id)
{
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
if (auto starredObj{ StarredObjType::find(session, id) })
starredObj.modify()->setSyncState(Database::SyncState::Synchronized);
@@ -41,7 +41,7 @@ namespace Feedback
template <typename StarredObjType>
void onUnstarred(Database::Session& session, typename StarredObjType::IdType id)
{
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
if (auto starredObj{ StarredObjType::find(session, id) })
starredObj.remove();
@@ -77,7 +77,7 @@ namespace Feedback::ListenBrainz
{
Database::Session& session{ _db.getTLSSession() };
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
Database::StarredTrack::pointer starredTrack{ Database::StarredTrack::find(session, starredTrackId) };
if (!starredTrack)
@@ -151,7 +151,7 @@ namespace Feedback::ListenBrainz
assert(_strand.running_in_this_thread());
Database::Session& session{ _db.getTLSSession() };
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
Database::StarredTrack::pointer starredTrack{ Database::StarredTrack::find(session, starredTrackId) };
if (!starredTrack)
@@ -202,7 +202,7 @@ namespace Feedback::ListenBrainz
{
Database::Session& session {_db.getTLSSession()};
auto transaction {session.createSharedTransaction()};
auto transaction {session.createReadTransaction()};
StarredTrack::FindParameters params;
params.setFeedbackBackend(Database::FeedbackBackend::ListenBrainz, scrobblingState)
@@ -277,7 +277,7 @@ namespace Feedback::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{}.setFeedbackBackend(Database::FeedbackBackend::ListenBrainz));
}
@@ -437,7 +437,7 @@ namespace Feedback::ListenBrainz
TrackId trackId;
{
auto transaction{ session.createSharedTransaction() };
auto transaction{ session.createReadTransaction() };
const std::vector<Track::pointer> tracks{ Track::findByRecordingMBID(session, feedback.recordingMBID) };
if (tracks.size() > 1)
{
@@ -463,7 +463,7 @@ namespace Feedback::ListenBrainz
{
LOG(DEBUG) << "Importing feedback '" << feedback << "'";
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
const Track::pointer track{ Track::find(session, trackId) };
if (!track)
@@ -37,7 +37,7 @@ namespace Feedback::ListenBrainz
template <typename StarredObjType>
void onStarred(Database::Session& session, typename StarredObjType::IdType id)
{
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
if (auto starredObj{ StarredObjType::find(session, id) })
{
@@ -49,7 +49,7 @@ namespace Feedback::ListenBrainz
template <typename StarredObjType>
void onUnstarred(Database::Session& session, typename StarredObjType::IdType id)
{
auto transaction{ session.createUniqueTransaction() };
auto transaction{ session.createWriteTransaction() };
if (auto starredObj{ StarredObjType::find(session, id) })
starredObj.remove();
@@ -29,7 +29,7 @@ namespace Feedback::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)