Details
-
Bug
-
Resolution: Fixed
-
High
-
4.1.3, 4.2.0
-
None
-
Environment:
Total Mem: 12013 Mb
Processor: Intel(R) Xeon(R) CPU X5450 @ 3.00GHz - 8 cores
SO: Linux 2.6.18-128.2.1.el5 x86_64 x86_64 x86_64 GNU/Linux
MYSQL: mysql Ver 14.12 Distrib 5.0.45, for redhat-linux-gnu (x86_64) using readline 5.0
PHP: version 5.2.9 Zend Engine v2.2.0
eZPublish version: 4.1.3
eZComponents: Version 2009.1.1
Database: InnoDB engine, 87 objectsMySql Variables:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
max_connections = 5000
key_buffer = 8M
max_allowed_packet = 64M
table_cache = 512
sort_buffer_size = 8M
read_buffer_size = 8M
read_rnd_buffer_size = 16M
join_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_stack = 128K
thread_cache_size = 32
query_cache_size = 512M
query_cache_limit = 8M
thread_concurrency = 32
tmp_table_size = 512M
bulk_insert_buffer_size = 32M
server-id = 1
auto_increment_offset = 1
auto_increment_increment=9
replicate-same-server-id = 0
replicate-ignore-db=cheap_uncle
binlog-ignore-db=cheap_uncle
log-bin=mysql-bin
log-slave-updates
relay-log=mysql-relay
expire_logs_days = 3
max_binlog_size = 100M
master-host = 69.22.167.112
master-user = root
master-password = <redacted>
log_slow_queries = /var/log/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
innodb_data_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:2000M:autoextend innodb_log_group_home_dir = /var/lib/mysql/ innodb_buffer_pool_size = 8192M innodb_additional_mem_pool_size = 512M innodb_log_file_size = 512M innodb_log_buffer_size = 96M innodb_flush_log_at_trx_commit = 2 innodb_lock_wait_timeout = 20 innodb_thread_concurrency = 16 innodb_autoinc_lock_mode = 1 innodb_table_locks = 1
transaction_prealloc_size=1048576
transaction_alloc_block_size=2097152
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeoutEnvironment: Total Mem: 12013 Mb Processor: Intel(R) Xeon(R) CPU X5450 @ 3.00GHz - 8 cores SO: Linux 2.6.18-128.2.1.el5 x86_64 x86_64 x86_64 GNU/Linux MYSQL: mysql Ver 14.12 Distrib 5.0.45, for redhat-linux-gnu (x86_64) using readline 5.0 PHP: version 5.2.9 Zend Engine v2.2.0 eZPublish version: 4.1.3 eZComponents: Version 2009.1.1 Database: InnoDB engine, 87 objects MySql Variables: [client] port = 3306 socket = /var/lib/mysql/mysql.sock [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock max_connections = 5000 key_buffer = 8M max_allowed_packet = 64M table_cache = 512 sort_buffer_size = 8M read_buffer_size = 8M read_rnd_buffer_size = 16M join_buffer_size = 8M myisam_sort_buffer_size = 64M thread_stack = 128K thread_cache_size = 32 query_cache_size = 512M query_cache_limit = 8M thread_concurrency = 32 tmp_table_size = 512M bulk_insert_buffer_size = 32M server-id = 1 auto_increment_offset = 1 auto_increment_increment=9 replicate-same-server-id = 0 replicate-ignore-db=cheap_uncle binlog-ignore-db=cheap_uncle log-bin=mysql-bin log-slave-updates relay-log=mysql-relay expire_logs_days = 3 max_binlog_size = 100M master-host = 69.22.167.112 master-user = root master-password = <redacted> log_slow_queries = /var/log/mysql-slow.log long_query_time = 2 log-queries-not-using-indexes innodb_data_home_dir = /var/lib/mysql/ innodb_data_file_path = ibdata1:2000M:autoextend innodb_log_group_home_dir = /var/lib/mysql/ innodb_buffer_pool_size = 8192M innodb_additional_mem_pool_size = 512M innodb_log_file_size = 512M innodb_log_buffer_size = 96M innodb_flush_log_at_trx_commit = 2 innodb_lock_wait_timeout = 20 innodb_thread_concurrency = 16 innodb_autoinc_lock_mode = 1 innodb_table_locks = 1 transaction_prealloc_size=1048576 transaction_alloc_block_size=2097152 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [isamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [myisamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout
Description
This is a critical bug for any medium to high traffic eZ publish site.
Transaction Errors occur on concurrent "Send for publish" requests.
Concurrency level: Five requests of "Send for publish" for new objects within a second
Description of the content class of the objects:
Attributes:
Text line
Text line
Text block
Object relations
Object relations
Bug found when an average of 2 of the 5 requests "Send for publish" dies with any of the following eZ Publish transaction fatal errors:
Fatal error: A database transaction in eZ Publish failed.
The current execution was stopped to prevent further problems.
You should contact the System Administrator (test@example.com) of this site.
The current transaction ID is TRANSID-38f8d80170c61a50d3a5686eba385bb9 and has been logged.
Please include the transaction ID and the name of the current script when contacting the system administrator.
With different MySQL errors, here some of them:
Query error: Lock wait timeout exceeded; try restarting transaction.
Query: UPDATE ezcontentobject_tree SET modified_subnode=1250115397 WHERE node_id='1' OR nod e_id='5' OR node_id='12' OR node_id='1071488'
MYSQL ERROR: Lock wait timeout exceeded; try restarting transaction
QUERY ERROR: UPDATE ezcontentbrowserecent SET user_id=9276, node_id=140, created=1250027290, name='Testing' WHERE id='186052'
MYSQL ERROR: Duplicate entry '9572-e4e6f9c7fd1eb1c7b9599e703de183a4' for key 'PRIMARY'
QUERY ERROR: INSERT INTO ezurlalias_ml (id, parent, lang_mask, text, text_md5, action, action_type, link, is_alias, is_original, alias_redirects) VALUES(334975, 9572, 2, 'test1578', 'e4e6f9c7fd1eb1c7b9599e703de183a4', 'eznode:319411', 'eznode', 334975, 0, 1, 1)
MYSQL ERROR: Lock wait timeout exceeded; try restarting transaction
QUERY ERROR: UPDATE ezcontentobject_tree SET modified_subnode=1250028676 WHERE node_id='1' OR node_id='2' OR node_id='141' OR node_id='321006'
Steps to reproduce
1. In an eZPublish 4.1.3 installation create a class with the following attributes:
Text line
Text line
Text block
Object relations
Object relations
2. Create 5 new objects of this class (fill the attributes with some content) using the Administrator interface or an automated import script.
3. Send for publish all objects simultaneously (you can use an automated import script) or have some co-workers send submit two browsers within a second.
4. You will find that some of the "send for publish" requests ends with a transaction fatal error.