Re: [Maria-developers] prefix matching for command-line options - how to disable?

2015-01-05 Thread Jean Weisbuch
Indeed, its a really annoying behavior that can lead to bad surprises 
and similar issues can happen with command line tools that also supports 
abbreviations such as the mysql CLI, mysqladmin or mysqldump (eg: 
MDEV-7208).


The first solution, to put a prefix/suffix on options would break 
compatibility with MySQL and other derivatives and add another level of 
complexion that most of the users wont even bother try to understand.


The second solution seems the best to me : i think that such an option 
should be added even on 10.0 and even if it would be disabled by default 
on 10.0, there should be at least a warning throwed when an abbreviation 
is used telling how it was really interpreted and that abbreviation use 
is not recommended/deprecated ; that option would be enabled by default 
on 10.1 or at least this option would be enabled on the default/example 
my.cnf files supplied with MariaDB so it wouldnt break existing setups 
and could be disabled for peoples that wants to stick with their bad habits.


The third solution makes sense if the second one requires much work to 
be implemented and doesnt seems to be that important, a simple 
deprecation warning for abbreviated commands on 10.0 would do the trick 
then but i suspect that doing that, does takes almost as implementing 
solution #2.


ps: i never used abbreviations and never saw configurations or users 
using them (on purpose at least).


Le 05/01/2015 20:20, Sergei Golubchik a écrit :

Hi,

We've got a bit of a problem with command-line option prefixes in the
test suite. As you know, in MariaDB a command line option (the same
applies to my.cnf too) doesn't need to be specified completely, it's
sufficient to use an unambigous prefix of it.

For example, 'net-retry-count=5' in my.cnf can be abbreviated as
'net-ret=5'. But not as 'net-re=5', the latter will fail with an error

   mysqld: ambiguous option '--net-re' (net_read_timeout, net_retry_count)

This is the historical behavior of MySQL since about 2002.

But it creates problems for plugins. InnoDB is particularly badly
affected - it has lots of I_S plugins that are prefixes of other I_S
plugins. For example:

 INNODB_BUFFER_PAGE
 INNODB_BUFFER_PAGE_LRU
 ...
 INNODB_CMP
 INNODB_CMPMEM
 INNODB_CMPMEM_RESET
 INNODB_CMP_PER_INDEX
 INNODB_CMP_PER_INDEX_RESET
 INNODB_CMP_RESET
 ...
 INNODB_SYS_FOREIGN
 INNODB_SYS_FOREIGN_COLS
 ...
 INNODB_SYS_TABLES
 INNODB_SYS_TABLESPACES
 INNODB_SYS_TABLESTATS

also, it has plugins that match other plugin variables, like
INNODB_LOCKS and innodb_locks_unsafe_for_binlog.

As a result one cannot see or predict what these options will do.
For example --enable-innodb-buffer-page might enable INNODB_BUFFER_PAGE
plugin. Or it might enable INNODB_BUFFER_PAGE_LRU plugin - depending on
which plugin will loaded (and will see and consume the option) first.
And one cannot possibly disable INNODB_BUFFER_PAGE plugin, if the server
will try to load INNODB_BUFFER_PAGE_LRU first.

I see few solutions for this issue:

1. support a special suffix to option names that will disable prefix
matching, for example:

 mysqld --enable-innodb-buffer-page!

this will not match innodb-buffer-page-lru, so it's unambiguous. Of
course, any dedicated character can be used, --enable-innodb-buffer-page$,
or even a prefix --enable-exact-innodb-buffer-page,
--enable-strict-innodb-buffer-page

2. add a special command-line option to disable prefix matching:

 mysqld --disable-getopt-prefix-matching --enable-innodb-buffer-page

3. do like mysql-5.7 is doing and completely remove support for prefix
matching. In 5.7 one has to specified option names in full. I suspect
that this is likely to break many exising setups.

Opinions? Anybody cares about this obscure issue at all?

Regards,
Sergei


___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


[Maria-developers] Buildslave terrier2 disabled due to KVM problems, needs fixing to be re-enabled

2015-01-05 Thread Kristian Nielsen
Jani, Daniel,

I discovered that our buildslave terrier2 seems to have problems with its KVM.
Builds are incredibly slow, and it appears that it is not using KVM at all. So
it is apparently using just QEMU, and soft-emulating the CPU.

This is too slow to be useful, I think. So for now, I've removed all usage of
terrier2 from the Buildbot config.

If one of you wants to fix terrier2 to be useful again, then the patch to
revert (to re-enable terrier2) is this:

   revid:kniel...@knielsen-hq.org-20150105182519-7492d95v1blss8jf
   
http://bazaar.launchpad.net/~maria-captains/mariadb-tools/trunk/revision/kniel...@knielsen-hq.org-20150105182519-7492d95v1blss8jf

Before re-enabling, KVM needs to be somehow fixed to work (eg. something like
`time perl -le 'for (0..1){}'` needs to be tested to run at about the
same speed inside a guest VM as directly on the host).

Maybe it would be best to upgrade the OS on the machine, maybe to the same as
we have on bb01/bb02? We have had a number of problems on terrier2 with
various KVM issues over the time.

 - Kristian.

___
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp