This worklog has been replaced with

This site is here for historical purposes only. Do not add or edit tasks here!


WorkLog Frontpage Log in / Register
High-Level Description | Task Dependencies | High-Level Specification | Low-Level Design | File Attachments | User Comments | Time Estimates | Funding and Votes | Progress Reports

 Phone home
Task ID12
Copies toSergei

Created byMonty01 Apr 2009Done
Lead Architect    
Architecture Review  
Implementor 29 Jun 2011
Code Review 29 Jun 2011
 High-Level Description
This project is to develop a plugin for the MariaDB server that provides
a "phone home" feature.  When this plugin is installed, the database
server will regularly contact a web service operated by Monty Program Ab, and
upload a bundle of non-sensitive information.  The collection and
analysis of this information will give MariaDB developers useful insight into
the user base

Summary of collected information (that anyone will be allowed to access)
 how many servers are running the plugin
 - can help estimate total number of running servers worldwide
 what platform & hardware they are running on
 what version and build they are running
 what features are being used

Information sent from each instance
  A unique server identifier
    secure hash of MAC address + listening port
    unique, but doesn't leak customer data
  Processor type, speed, processor count / core count, bitwidth (32/64)
  OS / Distro / Kernel id and version
  Which storage engines are in use
  Number and size of databases (disk space, probably can't for cluster)
  Counts / Rates of I/O activity
  List of loaded plugins
  SHOW VARIABLES (but not anything that can give away user identity)
    will be a explicit list of what variables will be shown
    gives among other things, the MySQL server version & Server uptime
  (optionally by user) geographic location
  (optionally by user) user information / company name
  (optionally by user) Monty Program Ab customer support contract id

Data Not Sent
  Contents or names of any user database
  Anything that allows MariaDB to track down the user
    if the user doesn't explicitly permit it

What will run at Monty Program's or/and the users datacenter
  simple CGI on Apache
  takes a HTTP REST PUT
  insert received information into a database
    database schema is TBD, but not complicated
  Analysis/Reporting/Business Process are TBD

What will run on the users' machines
  Daemon Plugin module
    can be dynamically loaded, or statically compiled
     runs as part of the mysqld process
    daemon plugins have full access to server internals
  Start and use it's own thread
    will not block normal operation
    will yield often
    will hold read mutexs as short as possible
  Loop and delay on an interval (specified by option)
    probably default to be on server restart and about once a week
    randomly spread time to avoid too many calling in at the same moment
  Gather data from internal mysqld data structures
  Convert data into simple text format (human readable)
  Transmit data via HTTP REST POST to one or more given URLs
 Task Dependencies
Others waiting for Task 12Task 12 is waiting forGraph
150 Phone home: more data
151 Phone home: server side
 High-Level Specification
In the following text the feature will be called "feedback". However this name
is in no way final, and can be changed later.

1. The basics

* It will be an INFORMATION_SCHEMA plugin called "feedback".

* This plugin introduces a new I_S table (called "feedback") - the content of
this table shows what data are sent as a feedback report.

* One can query it just normally, or even send reports like

  mysql -e 'select * from'|curl -F data=@- http://...

* For ease of use and installation the plugin will have sending code built-in.
It will be disabled by default.

* The plugin will support the following command-line options:

                      Wait this many seconds before retrying a failed send.
                      Timeout (in seconds) for the sending the report.
                      When to send the feedback report. Any combination of
                      STARTUP, PERIODIC, SHUTDOWN.
  --feedback-url=name Space separated URLs to send the feedback report to.
                      User specified string that will be included in the
                      feedback report.

* We only support http:// and https:// urls
* plugin will send the data exactly as "curl -F data=@-"

2. The data

* plugin will send the complete content of SHOW STATUS and subset of SHOW
VARIABLES (for example, all LIKE "%dir" variables will *not* be included in the

* it will include the list of plugins (plugin name + plugin version)

=== all the above will work on MariaDB and MySQL starting from 5.1.
5.3 part of the task is in WL#150
 Low-Level Design
 File Attachments
 User Comments
(Guest - 2009-07-13 11:29:13
    Henrik's ideas: For ODBA/MP we should rethink this idea as follows: Implement a repository of addons (engines, udf's, stored procedures, external tools...) like firefox or drupal has. Allow a MariaDB server to (opt-in) "phone home" to this repository and register it's existence. Allow a DBA to easily install addons from a web interface (like Red Hat Network) and command line (like Perl CPAN, apt-get). Allow the MariaDB server to send statistics (as outlined above) to the server for administrative purposes. Can also send my.cnf for backup purposes. Subject to additional permission from the DBA, allow a support provider (Percona, Open Query...) to utilize that data.
 Time Estimates
NameHours WorkedLast Updated
 Hrs WorkedProgressCurrentOriginal
This Task0120120
 Funding and Votes
Votes: 2: 67%
 Change vote: Useless    Nice to have    Important    Very important    

Funding: 0 offers, total 0 Euro
 Progress Reports
(Sergei - Sat, 15 Oct 2011, 17:48
Status updated.
--- /tmp/wklog.12.old.9377	2011-10-15 17:48:53.000000000 +0000
+++ /tmp/	2011-10-15 17:48:53.000000000 +0000
@@ -1,2 +1,2 @@

(Sergei - Wed, 29 Jun 2011, 14:27
waiting for wl#151

(Sergei - Wed, 29 Jun 2011, 14:27
Category updated.
--- /tmp/wklog.12.old.7366	2011-06-29 14:27:38.000000000 +0000
+++ /tmp/	2011-06-29 14:27:38.000000000 +0000
@@ -1,2 +1,2 @@

(Sergei - Wed, 29 Jun 2011, 14:27
Status updated.
--- /tmp/wklog.12.old.7347	2011-06-29 14:27:17.000000000 +0000
+++ /tmp/	2011-06-29 14:27:17.000000000 +0000
@@ -1,2 +1,2 @@

(Sergei - Wed, 29 Jun 2011, 14:27
Implementor signoff
Code Review signoff

(Sergei - Sun, 03 Oct 2010, 18:08
Code Review updated:  -> Monty

(Sergei - Sun, 03 Oct 2010, 18:08
Status updated.
--- /tmp/wklog.12.old.29025	2010-10-03 18:08:09.000000000 +0000
+++ /tmp/	2010-10-03 18:08:09.000000000 +0000
@@ -1,2 +1,2 @@

(Sergei - Mon, 27 Sep 2010, 13:02
Dependency created: WL#151 now depends on WL#12

(Sergei - Mon, 27 Sep 2010, 12:12
Dependency created: WL#150 now depends on WL#12

(Sergei - Sun, 26 Sep 2010, 13:55
Version updated.
--- /tmp/wklog.12.old.24105	2010-09-26 13:55:00.000000000 +0000
+++ /tmp/	2010-09-26 13:55:00.000000000 +0000
@@ -1,2 +1,2 @@
-- View All Progress Notes (21 total) --

Report Generator:
Saved Reports:

WorkLog v4.0.0
  © 2010  Sergei Golubchik and Monty Program AB
  © 2004  Andrew Sweger <> and Addnorya
  © 2003  Matt Wagner <> and MySQL AB