As a TokuMX user, you can contribute to its growth and stability in several ways. This document gives some guidelines for making that process quick, painless, and effective.
The easiest way to contribute to TokuMX is to find something that's broken and tell us about it.
You'll need as much of the following information as you can gather. Don't worry about sending too much information, the more the better.
-
A detailed description of what you did, what happened, and what you expected to happen.
Ex: "I started the server, connected with the
mongo
shell, and randb.foo.insert({chef: 'bork'})
. Then I randb.foo.find()
and it printed{_id: ObjectId("505bd76785ebb509fc183733"), chef: 'bork bork'}
. Why did the string change from'bork'
to'bork bork'
? -
A description of all the hardware and operating system details you can easily collect, and the TokuMX version you're running.
Ex: "I'm running TokuMX community edition 1.4.2 (from the Ubuntu packages) on Ubuntu 14.04 on an Amazon EC2 m1.xlarge instance with my
--dbpath
on an EBS volume with XFS." -
Server log files (the
--logpath
option or sometimes from--syslog
, usually in/var/log/tokumx.log
). If you're using sharding or replication, make sure you include log files from all the servers, including config servers andmongos
routers. -
The output of
db.adminCommand('getCmdLineOpts')
on all servers. -
If your problem is a stall or operations being blocked, the output of
db.currentOp({$all: true})
on the affected servers. -
If your problem is a crash, it's best if you can get a core dump.
-
If your problem is poor performance, the output of
db.serverStatus()
several times during your workload, as well as the associated performance you see in your application at those times.
The best place to send bug reports is to the tokumx-user google group. Once we figure out what the underlying problem is, we can create issues in the issue tracker, and we'll let you know what they are so you can follow development progress.
If you have sensitive data in your log files or for some other reason don't want to send this information publicly, you can always email our support team directly too at [email protected].
Helping other TokuMX users is a great way to support the community and to learn some new things about TokuMX and MongoDB for yourself. Even just reading other users' questions can be a great learning experience.
-
Some initial experience with TokuMX and/or basic MongoDB.
-
A little time.
-
An email account or an IRC client (a web browser works fine).
You can join the tokumx-user google group and start posting right away.
You can also join the #tokutek IRC channel on Freenode, which includes discussion of both TokuMX and TokuDB. If you don't have an IRC client, you can also use Freenode's web client.
You can also contribute to TokuMX directly, by sending us pull requests.
-
A contributor agreement. Send mail to [email protected], it's not too complicated.
Contributing is as simple as forking TokuMX, developing your patch, and sending us a pull request. We'll work with you to make sure it's correct and well tested and then we can merge it.
You will need to know a little bit about our release cycle to do this effectively.
If you want your patch to get in to the next patch release of TokuMX, you'll need to branch from our bugfixes/tokumx-1.4 branch; this branch is regularly merged into master and the 1.4.x releases branch. When you create your pull request, make sure the target branch is our bugfixes/tokumx-1.4 branch there too. You can do this on the command line as follows:
$ git clone [email protected]:username/mongo
$ cd mongo
$ git remote add upstream https://github.com/Tokutek/mongo
$ git fetch upstream
$ git checkout -b my-feature-branch upstream/bugfixes/tokumx-1.4
$ # commit some changes...
$ git push -u origin my-feature-branch
Then you can create your pull request by using a URL like this: https://github.com/username/mongo/compare/Tokutek:bugfixes/tokumx-1.4...username:my-feature-branch.
If you just want your patch to be part of the next minor release (currently that would be 1.5), you can just use the master branch.