next-l / enju_leaf

Next-L Enju Leaf 統合図書館管理システム / integrated library system https://enju.next-l.jp/
https://www.next-l.jp
MIT License
118 stars 24 forks source link

予約取置済みの図書を貸出時に409 Conflict #1886

Closed shin1kt closed 2 months ago

shin1kt commented 4 months ago

バージョン1.4にて以下の操作でエラーが発生します。なにかわかりましたら教えて下さい。

前提

操作

  1. ユーザーAに所蔵Aを貸出
  2. ユーザーBが図書Aを予約
  3. ユーザーAが所蔵Aを返却
  4. ユーザーBに予約取り置きのメッセージが入る
  5. ユーザーBに所蔵Aを貸出(※)

※のタイミングで 409 Conflict エラーが発生してしまいます。 app/models/concerns/enju_circulation/enju_basket.rb にてItem.transaction中に発生しているようなのですが、なにか対処方法や修正箇所がわかりましたら教えて下さい。 利用方法などに誤りがある場合はご指摘ください。

nabeta commented 3 months ago

@shin1kt お返事が遅くなりましてすみません。以下のコマンドで、エラー発生時のログを取って、内容を教えていただけますでしょうか。

docker compose logs -f web
shin1kt commented 3 months ago

@nabeta ありがとうございます。 該当すると思われる部分のログです。 よろしくお願いいたします。

Started PUT "/baskets/20" for 172.25.0.1 at ***
Processing by BasketsController#update as HTML
  Parameters: {"authenticity_token"=>"[FILTERED]", "commit"=>"上記の資料を貸し出す", "id"=>"20"}
Completed 409 Conflict in 854ms (ActiveRecord: 95.0ms | Allocations: 80447)
ActiveRecord::StaleObjectError (Attempted to touch a stale object: Item.):

app/models/concerns/enju_circulation/enju_basket.rb:15:in `basket_checkout'
app/controllers/baskets_controller.rb:63:in `update'
nabeta commented 2 months ago

@shin1kt 遅くなりましたが、以下のPRで修正しました。mainブランチ・1.4ブランチの両方に反映済みです。 https://github.com/next-l/enju_leaf/pull/1888

nabeta commented 2 months ago

1.4.8のリリースに含めています。
https://github.com/next-l/enju_leaf/releases/tag/v1.4.8