Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-13842

innodb.innodb-index failed in buildbot

Details

    Description

      http://buildbot.askmonty.org/buildbot/builders/kvm-bintar-centos5-x86/builds/7587/steps/test/logs/stdio

      innodb.innodb-index 'innodb'             w2 [ fail ]
              Test ended at 2017-09-18 16:17:20
       
      CURRENT_TEST: innodb.innodb-index
      --- /usr/local/mariadb-10.3.2-linux-i686/mysql-test/suite/innodb/r/innodb-index.result	2017-09-18 14:09:46.000000000 +0200
      +++ /usr/local/mariadb-10.3.2-linux-i686/mysql-test/suite/innodb/r/innodb-index.reject	2017-09-18 16:17:19.000000000 +0200
      @@ -1198,6 +1198,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       drop table t1;
       create table t1(f1 int not null, f2 int not null,
      @@ -1211,6 +1213,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       drop table t1;
       create table t480(a serial)engine=innodb;
      @@ -1241,6 +1245,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Change PK from (f1,f2,f3,f4) to (f1,f2,added_columns)
      @@ -1251,6 +1257,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Change PK from (f1,f2,f5,f6) to (f1,f2,f5)
      @@ -1262,6 +1270,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Reusing the same PK
      @@ -1271,6 +1281,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Reusing the same pk
      @@ -1280,6 +1292,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Must sort
       # Change PK from (f1,f2,f5) to (f1,f5)
      @@ -1291,6 +1305,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       ddl_sort_file_alter_table	2
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
      @@ -1302,6 +1318,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Reusing the same pk
      @@ -1312,6 +1330,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Change PK from (f1,f4,f2n) to (f1,f4,added_column,f2n)
      @@ -1322,6 +1342,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       ddl_sort_file_alter_table	2
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
      @@ -1332,6 +1354,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Reusing the same pk
      @@ -1341,6 +1365,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Reusing the same pk
      @@ -1350,6 +1376,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Optimize table
      @@ -1361,6 +1389,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Sort files used for adding secondary index
       alter table t1 drop primary key, add primary key(f1,f5,f7), add index
      @@ -1370,6 +1400,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # No sort files used for dropping secondary index
       alter table t1 drop primary key, add primary key(f1,f5),drop index i;
      @@ -1378,6 +1410,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
       # Change PK(f1,f5) to (f1,added_columns) and drop f5
      @@ -1388,6 +1422,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Must sort
       # Change PK(f1,f12) to (f1,existing_columns)
      @@ -1397,6 +1433,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       ddl_sort_file_alter_table	2
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort
      @@ -1408,6 +1446,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Adding Secondary index alone.
       alter table t1 add key(f1);
      @@ -1416,6 +1456,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Must sort
       # Change PK(f1,f3) to (existing_column,f1)
      @@ -1425,6 +1467,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       ddl_sort_file_alter_table	3
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort for PK.
      @@ -1437,6 +1481,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       # Skip sort for PK.
       # Change PK(f5n,f6n,f4,f1) to
      @@ -1449,6 +1495,8 @@
       SELECT name, count_reset FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE
       subsystem = 'ddl' and count_reset > 0;
       name	count_reset
      +ddl_online_create_index	4294967296
      +ddl_pending_alter_table	4294967296
       SET GLOBAL innodb_monitor_reset = module_ddl;
       SET GLOBAL innodb_monitor_disable = module_ddl;
       select count(*) from t1;
       
      mysqltest: Result length mismatch
      

      Attachments

        1. 10.2.txt
          2 kB
        2. 10.3.txt
          2 kB

        Issue Links

          Activity

            This test only fails on a single 32-bit platform. It looks like some kind of 32-bit overflow (the value should be 0 and not be reported).

            The test does run and pass on 32-bit Windows.
            jplindst, can you please try to find out why it fails on 32-bit Linux?

            marko Marko Mäkelä added a comment - This test only fails on a single 32-bit platform. It looks like some kind of 32-bit overflow (the value should be 0 and not be reported). The test does run and pass on 32-bit Windows. jplindst , can you please try to find out why it fails on 32-bit Linux?
            elenst Elena Stepanova added a comment - - edited

            Latest occurrence: http://buildbot.askmonty.org/buildbot/builders/kvm-bintar-centos5-x86/builds/8419/steps/test/logs/stdio (Jan 26th).

            Despite the builder name, the tests actually run on vm-centos6-i386-install.qcow2 (but the build happens on centos5, hence the name).

            elenst Elena Stepanova added a comment - - edited Latest occurrence: http://buildbot.askmonty.org/buildbot/builders/kvm-bintar-centos5-x86/builds/8419/steps/test/logs/stdio (Jan 26th). Despite the builder name, the tests actually run on vm-centos6-i386-install.qcow2 (but the build happens on centos5, hence the name).

            I strongly suspect that the problem is with the environment, causing MONITOR_ATOMIC_DEC to malfunction.
            I attached the machine code generated for the first statement of row_log_free() for recent 10.2.txt and 10.3.txt builds on the centos5-x86 platform.
            The problem seems to be in the first part of this code:

            #define MONITOR_ATOMIC_DEC_LOW(monitor, enabled)			\
            	if (enabled) {							\
            		ib_uint64_t	value;					\
            		value = my_atomic_add64_explicit(			\
            			(int64*) &MONITOR_VALUE(monitor), -1,		\
            			MY_MEMORY_ORDER_RELAXED) - 1;			\
            		/* Note: This is not 100% accurate because of the	\
            		inherent race, we ignore it due to performance. */	\
            		if (value < (ib_uint64_t) MONITOR_MIN_VALUE(monitor)) {	\
            			MONITOR_MIN_VALUE(monitor) = value;		\
            		}							\
            	}
            

            We can ignore the MONITOR_MIN_VALUE(monitor), because it is not causing this result difference. It is only trying to record the historical bounds for the parameter (which is not interesting for unsigned counters that start from 0).

            svoj mentioned the following:

            centos5-x86 has so ancient compiler that it doesn't even support ancient gcc sync builtins. There was some asm implementation for hosts like this, that I removed a while ago. It started to fail to compile after that.
            Then it was agreed that we remove this host for 10.3 (or probably 10.2 even). But then serg fixed this compilation failure (MDEV-13656) and the host was kept.

            I would join the implied suggestion that centos5-x86 be dropped from the list of supported MariaDB 10.3 platforms.

            marko Marko Mäkelä added a comment - I strongly suspect that the problem is with the environment, causing MONITOR_ATOMIC_DEC to malfunction. I attached the machine code generated for the first statement of row_log_free() for recent 10.2.txt and 10.3.txt builds on the centos5-x86 platform. The problem seems to be in the first part of this code: #define MONITOR_ATOMIC_DEC_LOW(monitor, enabled) \ if (enabled) { \ ib_uint64_t value; \ value = my_atomic_add64_explicit( \ (int64*) &MONITOR_VALUE(monitor), -1, \ MY_MEMORY_ORDER_RELAXED) - 1; \ /* Note: This is not 100% accurate because of the \ inherent race, we ignore it due to performance. */ \ if (value < (ib_uint64_t) MONITOR_MIN_VALUE(monitor)) { \ MONITOR_MIN_VALUE(monitor) = value; \ } \ } We can ignore the MONITOR_MIN_VALUE(monitor) , because it is not causing this result difference. It is only trying to record the historical bounds for the parameter (which is not interesting for unsigned counters that start from 0). svoj mentioned the following: centos5-x86 has so ancient compiler that it doesn't even support ancient gcc sync builtins. There was some asm implementation for hosts like this, that I removed a while ago. It started to fail to compile after that. Then it was agreed that we remove this host for 10.3 (or probably 10.2 even). But then serg fixed this compilation failure ( MDEV-13656 ) and the host was kept. I would join the implied suggestion that centos5-x86 be dropped from the list of supported MariaDB 10.3 platforms.

            I've configured buildbot not to build 10.3+ branches on centos5.

            serg Sergei Golubchik added a comment - I've configured buildbot not to build 10.3+ branches on centos5.

            People

              serg Sergei Golubchik
              alice Alice Sherepa
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.