← Back to team overview

maria-developers team mailing list archive

Fixing 10.0 buildbot: OS-dependent error messages

 

Hi!

As some have noticed, 10.0 tree is red for all non-Linux builds. The errors
look like this (on Windows)

http://buildbot.askmonty.org/buildbot/builders/win64-release2/builds/1558/steps/test/logs/stdio
-ERROR HY000: Got error 1478 "Unknown error 1478" from storage engine
+ERROR HY000: Got error 1478 "Unknown error" from storage engine

...
-Error	1005	Can't create table 'test.t1' (errno: 1478 "Unknown error 1478")
+Error	1005	Can't create table 'test.t1' (errno: 1478 "Unknown error")

or like this (on Mac)

http://buildbot.askmonty.org/buildbot/builders/labrador/builds/95/steps/test/logs/stdio
-ERROR HY000: Got error 1478 "Unknown error 1478" from storage engine
+ERROR HY000: Got error 1478 "Unknown error: 1478" from storage engine
...
-ERROR HY000: Out of resources when opening file '<partition file>' (Errcode: 24 - Too many open files)
+ERROR HY000: Out of resources when opening file '<partition file>' (Errcode: 24 "Too many open files")

I've narrowed it down. It is caused by revision 3414
monty@xxxxxxxxxxxx-20120529213755-876ptdhhaj0t7l8r.

The revision adds %M modifier to error error messages, which prints 

  "error number - system-error-text"

into the error message (see strings/my_vsnprintf.c, my_strerror()).  

The problem is that system-error-text depends on the OS one is running. 

  grep '%M' sql/share/errmsg-utf8.txt | grep 'eng '  | wc -l  
  27

There are currently 27 errors that use %M modifier in the error message
The testsuite's .result files have only 5 of the errors, but there are lots 
of occurrences.  Buildbot can get at least 3 variants of error message 
(Windows, Mac, Linux).

I suppose, --replace_result will be too complex and fragile. We need to solve
it somewhere else.

My first idea was to: make mysql-test-run recognize error messages that have
the %M pattern and remove the custom text, leaving the error code.

To keep things simple/loosely coupled, I'd base recognition of error messages
on list of patterns.  I'm not sure where to keep the patterns and where to do
the matching: should it be done inside mysql-test-run, or inside mysqltest.cc,
or I should introduce some commands into mysqltest.cc that will make it apply 
rewrite rules to all error messages.

Any ideas?


-- 
BR
 Sergei
-- 
Sergei Petrunia, Software Developer
Monty Program AB, http://askmonty.org
Blog: http://s.petrunia.net/blog


Follow ups