wiki:Arm4DeveloperDb

Berkeley DB

 Website

Current version is 4.5.20.

This library is used to implement the primary data store for the ARM agent. Data is stored on each individual tier. When correlating transactions across tiers, the XMLRPC interface implemented in arm4_daemon is used to query the data store.

As of release 0.6, the C++ interface is used. This means you have to specify --enable-cxx when configuring. I use the following options:

./configure --enable-debug --enable-diagnostic --enable-cxx

4.2,4.3

These versions have known concurrency issues. I've run fine with 4.2, and the library will build against it, but it may crash unpredictably or corrupt the database (not something I've experienced).

As of release 0.5, version 4.3 or later is required. This is to support in-memory transaction logging.

4.4.20 and later

The big issue is compatibility. For example, on my system, Apache came built against 4.2. Using the library with mod_arm4 caused library link issues, so it couldn't run against a stock build. Running with a build based on 4.2 however ran into the concurrency issues mentioned earlier. The result is that I had to rebuild all of Apache against 4.4.

With release 0.4 and later, this problem should no longer exist. The database portions have been isolated to the daemons and support utilities and are no longer required to link against the agent library.

Building on Solaris 10

I had to add the following before running configure:

export CC=gcc

Also, I had to add the library to my link path using crle.

When building the C++ libraries (required for version 0.6 and later), you may encounter problems with the g++ libraries. The error message you'll see is similar to:

libtool: link: `/usr/sfw/lib/gcc/sparc-sun-solaris2.10/3.4.3/../../..//libstdc++.la' is not a valid libtool archive

The solution is described here:  http://forum.java.sun.com/thread.jspa?threadID=5073150