Issue Details (XML | Word | Printable)

Key: CORE-4732
Type: Bug Bug
Status: Open Open
Priority: Critical Critical
Assignee: Unassigned
Reporter: Dmitry S. Gostev
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Firebird Core

Series of transactions are repeated automatically after system abnormal shutdown

Created: 03/Apr/15 07:11 AM   Updated: 26/May/15 06:56 AM
Component/s: Engine
Affects Version/s: 2.5.3
Fix Version/s: None

File Attachments: 1. File GOODS.fdb (813 kB)

Environment: Windows XP, Windows 7 ( all 32-bit)


 Description  « Hide
This bug existed since version 1.0 and went through the versions to 2.5.3

The situation is as follows:
1. Empty database with some tables, generators created.
2. The user starts to work, opens transaction, inserts a row into table A, the transaction is committed
3. Then he makes a transaction with a query like this:
  UPDATE <TABLE B> SET <INTEGER FIELD>=<INTEGER FIELD>+<some value> WHERE <ID field>=some value
  The transaction is commited after each UPDATE query
4, The he makes a transaction with a query:
  INSERT INTO <TABLE C> ...
  transaction is commited
5. The steps 3,4 are repeated for <n> times with dirrerent data.
6. The user disconnects from the base or permits another query INSERT INTO <TABLE A>.

Then the user works with the database for a week, for a month or a year (the period doesnot matter), he can add new fileds, can make changes to <INTEGER FIELD> in the <TABLE B>. Then occurs an abnormal shutdown of the computer (for example, electricity is cut off).
  When the power is restored and the user connects to the database, the user finds out that the values of the <INTEGER FIELD> of the <TABLE B> are mistakenly increased by the <some value>, like the Firebird 'repeated' all the transactions made in the step 3.
No matter how many times the user made steps 2-5, the Firebird repeats only the first since the database creation sequence of the 'step 3' transactions.
  If needed, the database and the transaction/table detail can be supplied.

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Dmitry S. Gostev added a comment - 03/Apr/15 07:17 AM
database after system shutdown: the fields AMOUNT in the table GOODS are wrongly changed.
The values of the wrong changes can be seen in the table INV_OPERAT:
SELECT GOOD_ID,QUANT FROM INV_OPERAT WHERE INV_ID=1

Sean Leyne added a comment - 04/Apr/15 03:34 PM
@Dmitry

Your description is unclear, please elaborate on :
  When the power is restored ... like the Firebird 'repeated' all the transactions made in the step 3.

Are you aware that *committing* the transaction means that the changes are "crystalized"?

This means that only incomplete transactions would be lost as a result of adnormal shutdown.

As such, what you seem to describe is the expected operation -- when the database is opened after the shutdown, the last committed values are present.

Dmitry S. Gostev added a comment - 05/Apr/15 09:12 AM
I do not mean that changes are crystalized or something like that.
I meant that I commit series of transactions with queries like

UPDATE <TABLE B> SET <INTEGER FIELD>=<INTEGER FIELD>+<some value> WHERE <ID field>=some value

Then work with the database, create thousands or millions or billions transactions that affect <TABLE B> or not affect it, that affect values of <ID field> in this table or not affect, disconnect from the database, connect to the database thousand times, work for a week, maybe for a month or for ten years. And it's OK, before I abnormally turn the computer power off. Then the power comes and I connect to the database, the values in the <TABLE B> are wrongly changed by the database server, just like it repeated these series of transactions.

Dmitry S. Gostev added a comment - 26/May/15 06:56 AM
During 2 months after I reported this issue, three or four databases screwed up again.
Still the bug is marked as 'unassigned'. Is this tracker working or not?
The bug is easily repeated, I can provide developers with archive databases.