@@ -92,6 +92,7 @@ int SQLiteMultipart::abort_multiparts_by_bucket_id(const std::string& bucket_id
92
92
) const {
93
93
auto & storage = conn->get_storage ();
94
94
uint64_t num_changes = 0 ;
95
+ std::lock_guard l (conn->lock );
95
96
storage.transaction ([&]() mutable {
96
97
storage.update_all (
97
98
set (c (&DBMultipart::state) = MultipartState::ABORTED,
@@ -222,7 +223,7 @@ std::optional<DBMultipartPart> SQLiteMultipart::create_or_reset_part(
222
223
) const {
223
224
auto & storage = conn->get_storage ();
224
225
std::optional<DBMultipartPart> entry = std::nullopt;
225
-
226
+ std::lock_guard l (conn-> lock );
226
227
storage.transaction ([&]() mutable {
227
228
auto cnt = storage.count <DBMultipart>(where (
228
229
is_equal (&DBMultipart::upload_id, upload_id) and
@@ -299,6 +300,7 @@ bool SQLiteMultipart::finish_part(
299
300
uint64_t bytes_written
300
301
) const {
301
302
auto & storage = conn->get_storage ();
303
+ std::lock_guard l (conn->lock );
302
304
bool committed = storage.transaction ([&]() mutable {
303
305
storage.update_all (
304
306
set (c (&DBMultipartPart::etag) = etag,
@@ -320,6 +322,7 @@ bool SQLiteMultipart::finish_part(
320
322
321
323
bool SQLiteMultipart::abort (const std::string& upload_id) const {
322
324
auto & storage = conn->get_storage ();
325
+ std::lock_guard l (conn->lock );
323
326
auto committed = storage.transaction ([&]() mutable {
324
327
storage.update_all (
325
328
set (c (&DBMultipart::state) = MultipartState::ABORTED,
@@ -358,6 +361,7 @@ static int _mark_complete(
358
361
359
362
bool SQLiteMultipart::mark_complete (const std::string& upload_id) const {
360
363
auto & storage = conn->get_storage ();
364
+ std::lock_guard l (conn->lock );
361
365
auto committed = storage.transaction ([&]() mutable {
362
366
auto num_complete = _mark_complete (storage, upload_id);
363
367
if (num_complete == 0 ) {
@@ -375,6 +379,7 @@ bool SQLiteMultipart::mark_complete(
375
379
) const {
376
380
ceph_assert (duplicate != nullptr );
377
381
auto & storage = conn->get_storage ();
382
+ std::lock_guard l (conn->lock );
378
383
auto committed = storage.transaction ([&]() mutable {
379
384
auto entries = storage.get_all <DBMultipart>(
380
385
where (is_equal (&DBMultipart::upload_id, upload_id))
@@ -401,6 +406,7 @@ bool SQLiteMultipart::mark_complete(
401
406
402
407
bool SQLiteMultipart::mark_aggregating (const std::string& upload_id) const {
403
408
auto & storage = conn->get_storage ();
409
+ std::lock_guard l (conn->lock );
404
410
auto committed = storage.transaction ([&]() mutable {
405
411
storage.update_all (
406
412
set (c (&DBMultipart::state) = MultipartState::AGGREGATING,
@@ -423,6 +429,7 @@ bool SQLiteMultipart::mark_aggregating(const std::string& upload_id) const {
423
429
424
430
bool SQLiteMultipart::mark_done (const std::string& upload_id) const {
425
431
auto & storage = conn->get_storage ();
432
+ std::lock_guard l (conn->lock );
426
433
auto committed = storage.transaction ([&]() mutable {
427
434
storage.update_all (
428
435
set (c (&DBMultipart::state) = MultipartState::DONE,
@@ -464,6 +471,7 @@ SQLiteMultipart::remove_multiparts_by_bucket_id_transact(
464
471
DBDeletedMultipartItems ret_parts;
465
472
auto & storage = conn->get_storage ();
466
473
RetrySQLite<DBDeletedMultipartItems> retry ([&]() {
474
+ std::lock_guard l (conn->lock );
467
475
auto transaction = storage.transaction_guard ();
468
476
// get first the list of parts to be deleted up to max_items
469
477
ret_parts = storage.select (
@@ -525,6 +533,7 @@ SQLiteMultipart::remove_done_or_aborted_multiparts_transact(uint max_items
525
533
DBDeletedMultipartItems ret_parts;
526
534
auto & storage = conn->get_storage ();
527
535
RetrySQLite<DBDeletedMultipartItems> retry ([&]() {
536
+ std::lock_guard l (conn->lock );
528
537
auto transaction = storage.transaction_guard ();
529
538
// get first the list of parts to be deleted up to max_items
530
539
ret_parts = storage.select (
0 commit comments