[CONJ-948] Under certain circumstances, Connector J does not send "commit" Created: 2022-03-28 Updated: 2022-06-13 Resolved: 2022-06-13 |
|
| Status: | Closed |
| Project: | MariaDB Connector/J |
| Component/s: | Other |
| Affects Version/s: | None |
| Fix Version/s: | N/A |
| Type: | Bug | Priority: | Critical |
| Reporter: | Edward Stoever | Assignee: | Diego Dupin |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Attachments: |
|
||||||||||||||||
| Issue Links: |
|
||||||||||||||||
| Description |
|
Explanation, with necessary screenshots is attached as a pdf. Summary: |
| Comments |
| Comment by Sergei Golubchik [ 2022-04-25 ] | ||||
|
I suspect it was always like that. If a table is used in a transaction its metadata is locked until the end of transaction. For example, if you do in one connection
and in another
this DROP TABLE will wait until the transaction ends. I think (but may be I'm missing something) that it doesn't make much sense as far as MyISAM is concerned. But metadata locks are taken on the object name, before the table is opened, before we know it's a MyISAM table. If I'm not wrong, and this behavior is, indeed, redundant, we could release MDL_TRANSACTION locks at the end of the statement for non-transactional tables. | ||||
| Comment by Diego Dupin [ 2022-04-25 ] | ||||
|
If there is some lock done, there seem to be 2 solutions:
Other solution would be to always issue a COMMIT/ROLLBACK statement when there is no need, and since most pools issue a ROLLBACK command when a connection is given back to pool, that would degrade performance dramatically for some application using hibernate. | ||||
| Comment by Diego Dupin [ 2022-06-13 ] | ||||
|
closing. Will be corrected server side with |