Koha/koha-tmpl/intranet-tmpl/prog/en/modules/circ
Jonathan Druart a9a500e81d Bug 18966: Do not deal with duplicate issue_id on checkin
Koha suffers of big bugs due to its history: When data are deleted, they
are moved to another tables.
For instance issues and old_issues: when a checkin is done, it is moved
to the old_issues table.
That leads to a main problem that is described on
https://wiki.koha-community.org/wiki/DBMS_auto_increment_fix

However we tried first to fix the problem (for issues/old_issues) at
code level on bug 18242.
The goal was to prevent data lost.
Data lost may happens in this case:
Check an item out (issue_id = 1)
Check an item in (issue_id = 1)
Restart MySQL (reset auto increment for issue_id to 1)
Check an item out (issue_id = 1)
Check an item in => BOOM, the issue_id is a PK in old_issues and the
move fails.
Before bug 18242 the data were lost, we inserted the value into
old_issues, which fails silently (because of RaiseError set to 0 in
Koha::Database), then delete the row from issues.
That has been fixed using a transaction.

This patch introduced a regression we tried to fix on bug 18651 comment
0, the patron was charged even if the checkin was rejected.
A good way to fix that would have been to LOCK the tables:
1- Start a transaction
2- LOCK the table to make sure nobody will read id and avoid race
   conditions
3- Move the content from one table to the other, dealing with ids
4- UNLOCK the table
5- Commit the transaction
But there were problems using LOCK and DBIx::Class (See commit
905572910b - Do no LOCK/UNLOCK the table).

Finally the solution implemented is not acceptable for several reasons:
- batch checkins may fail
- issue_id will always stay out of sync (between issues and old_issues)
See 18651 comment 66.

Since the next stable releases are very soon, and we absolutely need to
fix this problem, I am suggesting to:
1- Execute the move in a transaction to avoid data lost and reject the
   checkin if we face IDs dup
=> It will only reject 1 checkin (max is 1 * MySQL restart), no need to
   deal with race conditions,
2- Display a warning on the checkin page and link to a
   solution/explanation
3- Communicate as much as we can on the proper fix: Update auto
   increment values when the DBMS is restarted -
    https://wiki.koha-community.org/wiki/DBMS_auto_increment_fix
4- Display a warning on the about page for corrupted data (see bug
   18931)
5- Write and make available a maintenance script to fix corrupted data
   (TODO LATER)

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2017-07-26 13:50:57 -03:00
..
article-requests.tt Bug 16239: Update templates 2017-01-13 14:41:22 +00:00
bookcount.tt
branchoverdues.tt Bug 16530: Adding a circ sidebar navigation menu and circSidebar syspref to activate/deactivate 2017-03-03 18:34:36 +00:00
branchtransfers.tt Bug 16530: Adding a circ sidebar navigation menu and circSidebar syspref to activate/deactivate 2017-03-03 18:34:36 +00:00
circulation-home.tt Bug 16530: Add a new method to the Branches TT Plugin to avoid c/p 2017-03-03 18:34:36 +00:00
circulation.tt Bug 18276: Remove GetBiblioFromItemNumber - circulation pages 2017-07-10 12:09:24 -03:00
circulation_batch_checkouts.tt Bug 18276: Remove GetBiblioFromItemNumber - circulation pages 2017-07-10 12:09:24 -03:00
offline-mf.tt Bug 16239: Update templates 2017-01-13 14:41:22 +00:00
offline.tt Bug 16239: Update templates 2017-01-13 14:41:22 +00:00
on-site_checkouts.tt Bug 16530: Adding a circ sidebar navigation menu and circSidebar syspref to activate/deactivate 2017-03-03 18:34:36 +00:00
overdue.tt Bug 8548: Add datatable to circ overdue report, remove sortby filter 2017-03-31 12:35:47 +00:00
pendingreserves.tt Bug 18641 - Translatability: Get rid of template directives in translations for *reserves.tt files 2017-06-09 10:03:55 -03:00
printslip.tt Bug 17014 - Remove more event attributes from patron templates 2017-03-31 14:33:51 +00:00
renew.tt Bug 15582: Ability to block auto renewals if OPACFineNoRenewals is reached 2017-05-09 21:05:29 +00:00
request-article.tt Bug 16239: Update templates 2017-01-13 14:41:22 +00:00
reserveratios.tt
returns.tt Bug 18966: Do not deal with duplicate issue_id on checkin 2017-07-26 13:50:57 -03:00
selectbranchprinter.tt Bug 16530: Adding a circ sidebar navigation menu and circSidebar syspref to activate/deactivate 2017-03-03 18:34:36 +00:00
transfer-slip.tt
transferstoreceive.tt Bug 16530: Adding a circ sidebar navigation menu and circSidebar syspref to activate/deactivate 2017-03-03 18:34:36 +00:00
view_holdsqueue.tt Bug 18881: [QA Follow-up] Remove even more 2017-07-06 14:29:04 -03:00
waitingreserves.tt Bug 18641 - Translatability: Get rid of template directives in translations for *reserves.tt files 2017-06-09 10:03:55 -03:00