2013. január 17., csütörtök

ERROR: "Problem with InfiniDB process PrimProc, should be a single version running"

InfiniDB

Infinibd is a column-oriented database (actually a MySQL storage engine, or to be more precise, a MySQL distribution with this special storage engine). It can handle analytical / reporting queries very well.

ERROR

I installed it on my laptop to form a nice data warehouse / reporting development environment together with Pentaho's tools. It did OK for a while, but it seized to work about a week ago.

Upon startup, the /etc/init.d/infinidb script gave this error message:

Problem with InfiniDB process PrimProc, should be a single version running



DEBUG

 Since I saw no PrimProc in the process list, I thought the error message might be a little off. I found the place where it counted various processes in the process list, including PrimProc. I echo-ed the result, and I saw the there were 0 instances running. Another example for a confusing error message.

I took a look into the file /vat/log/Calpont/crit.log and I saw this:

Jan  7 16:01:14 sphynx PrimProc[16613]: 14.857119 |0|0|0| C 28 CAL0045: FATAL ERROR: PrimProc has allocated too much memory! PrimProc is restarting.

PrimProc is InfiniDB's Primitive Processor. It executes the smallest units of called primitives.

FIX

The amount of memory dedicated to the data buffer cache utilized by PrimProc is defined in /usr/local/Calpont/etc/Calpont.xml. It is called NumBlocksPct. The value of the variable is in percent of the phisical memory, and defaults to a very high value, and it can prevent PrimProc from starting, or it can cause heavy swapping. Since I do not use swap, PrimProc can't start with xorg, firefox, openoffice, thunderbird, skype, ... running.

The solution was to set NumBlocksPct to a lower value, in my case 20 is plenty.