" /> Kazuho at Work: August 2008 Archives

« July 2008 | Main | September 2008 »

August 29, 2008

Q4M 0.8.1 released (including prebuilt binaries)

Today I have released Q4M 0.8.1. It is a minor bugfix version from 0.8. The changes are:

  • fix file descriptor leak on DROP TABLE (regression in 0.8)
  • adjust Makefile to fix build error under certain environments
But the biggest improvement might be the release of prebuilt binaries. Q4M 0.8.1 comes with executables for linux i386, linux x86_64, and Mac OS X (x86). Since I have set up an automatic build-and-test environment, I hope I can continue to release binary versions from now on. For more information, please refer to the install page of Q4M.

PS. Prebuilt binaries for linux platforms have been updated to version 0.8.2, since they had interoperability issues (crashing with SIGFPE on dlopen). Source code and Mac OS X binary tarballs will not be released for 0.8.2. For technical detail of the problem see FPE in ld-linux-x86-64.so loading custome dso in Apache - Unix Linux Forum. Thanks to hirose31-san for reporting the problem and for helping solve the issue.

August 13, 2008

Q4M adoption by Mixi, and the release of version 0.8

Last week, Mixi - Japan's largest social network service provider, launched an experimental microblogging service called Echo, and according to their delevopers' blog entry, they are using Q4M to level their write loads. Thank you to the developers of Mixi Echo for using Q4M, I hope Echo will go well and soon become a first-class service.

Meanwhile, several bugs were found in Q4M (that arise under rare cases or complex usage senarios), so I have just uploaded version 0.8, available from the Q4M homepage.

This release fixes the following bugs.

  • block div-by-zero exception on conditional subcription
  • do not crash when a nonexistent table (or a non-Q4M table) is specified as an argument of queue_wait
  • fix memory corruption that used to occur under certain cases when multiple table-conditions where passed to queue_wait
  • return correct data when a single table is passed multiple times to queue_wait function causing a wait

From this release, the plugin_version field of information_schema.plugins table will show the correct version number of Q4M.

mysql> select plugin_version from information_schema.plugins where plugin_name='queue'; 
| plugin_version |
| 0.8            | 
1 row in set (0.01 sec)
It is also possible to view the status of Q4M.
mysql> show engine queue status\G
*************************** 1. row ***************************
  Type: QUEUE
I/O calls
sys_read                           71
sys_write                       58292
sys_sync                        43271
read_cachehit                       0

Writer thread
append                          10095
remove                          34422

Conditional subscription
evaluation                      31809
compile                         26543
compile_cachehit                26531

High-level stats
rows_written                    47002
rows_removed                    46469
queue_wait                      44931
queue_end                        4110
queue_abort                         3
queue_rowid                      4085
queue_set_srcid                    89

1 row in set (0.00 sec)