[MCOL-1008] LDI and INSERT...SELECT causes mysqld to crash with long VARCHAR entries Created: 2017-11-03 Updated: 2017-11-13 Resolved: 2017-11-13 |
|
| Status: | Closed |
| Project: | MariaDB ColumnStore |
| Component/s: | MDB Plugin |
| Affects Version/s: | 1.0.12, 1.1.1 |
| Fix Version/s: | 1.0.12, 1.1.2 |
| Type: | Bug | Priority: | Major |
| Reporter: | Daniel Lee (Inactive) | Assignee: | Daniel Lee (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | relnote | ||
| Sprint: | 2017-22, 2017-23 |
| Description |
|
Build tested: 1.1.1-1 Testing stack: Single server, with 1 dbroot, using local VM. This issue was identified by the Autopilot test concurrency.concurDML. The same test worked for 1.1.0-1 beta, not failed on 1.1.1-1. The test suite run's the same test for update, delete, and ldi. For update and delete tests, dbt3 tables were loaded with 1gb data before test. ldi test starts with empty tables. update and delete tests worked fine, but ldi tests failed. The test basically does the following: 1) run ldi, which uses cpimport, concurrently for all 8 dbt3 tables loading 1gb data The purpose of this test is to ensure data consistency, commands should commit none or all changes During ldi tests, mysqld crashed, leaving tables locks from cpimport processes. Sometimes, queries also return "missing data block" errors. I spent hours to debug this issue and this is what I found: 1) instead of testing with all 8 tables, testing nation and region went fine I thing this could be related to persisting data blocks, update or invalidating cache, updating extent map, or timing of doing these operations, etc. |
| Comments |
| Comment by Daniel Lee (Inactive) [ 2017-11-11 ] |
|
mysqld log file content after mysqld died. Version: '10.2.10-MariaDB-log' socket: '/usr/local/mariadb/columnstore/mysql/lib/mysql/mysql.sock' port: 3306 Columnstore 1.1.2-1 To report this bug, see https://mariadb.com/kb/en/reporting-bugs We will try our best to scrape up some info that will hopefully help Server version: 10.2.10-MariaDB-log Thread pointer: 0x7fa27c0009a8 Trying to get some variables. Connection ID (thread ID): 27 Optimizer switch: index_merge=off,index_merge_union=off,index_merge_sort_union=off,index_merge_intersection=off,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=on,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=on,orderby_uses_equalities=off,condition_pushdown_for_derived=off The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains |
| Comment by Andrew Hutchings (Inactive) [ 2017-11-11 ] |
|
I believe this is a regression triggered by |
| Comment by Andrew Hutchings (Inactive) [ 2017-11-11 ] |
|
Pull request for 1.0 and 1.1 Problem was with length casting. We cast a single byte length to int8_t so a length of greater than 127 turned into a negative. We then did an assign() on a std::string with that length which if successful would have eaten around 8-16EB of RAM (roughly as much RAM as in all computers on earth combined right now). For QA: it breaks when LDI or INSERT...SELECT insert some text into a VARCHAR > 127 chars when the field is defined with a length of less than 255. So just doing a single LDI for partsupp would cause the crash without concurrent. |
| Comment by Daniel Lee (Inactive) [ 2017-11-13 ] |
|
Builds verified: Github source for 1.0.12 and 1.1.2 1.0.12 /root/columnstore/mariadb-columnstore-server Merge pull request #69 from mariadb-corporation/ /root/columnstore/mariadb-columnstore-server/mariadb-columnstore-engine Merge pull request #318 from mariadb-corporation/ 1.1.12 /root/columnstore/mariadb-columnstore-server Update README.md updated version /root/columnstore/mariadb-columnstore-server/mariadb-columnstore-engine Merge pull request #317 from mariadb-corporation/ |