Forum OpenACS Q&A: Response to Error: nsd.db: no such default pool: main

Collapse
Posted by Don Baccus on
You'll need to make sure the Postgres Postmaster is running, first. This is the process that forks a Postgres backend when AOLserver (or any other application, including PSQL) initiates a backend connection. I've got my .ini file configured so idle connections never get released by AOLserver, so this forking happens only once per connection per lifetime of the server.

Here's the command I use to run Postmaster from my /etc/rc.d/init.d/postgresql script:

 su -l postgres -c '/usr/local/pgsql/bin/postmaster -B 1000 -o "-S 2000" -S -D/usr/local/pgsql/data"

Note that I've installed Postgres in the normal Postgres place rather than the RH RPM place, so I've had to make other modifications to the script (you can run it from the RH RPM place, of course, but since I update frequently from the Postgres source tree it is easier for me to do things their way).

Some explanations - "-B 1000" tells it to allocate 1000 blocks of shared memory (rather than the default 64, which is way puny). I've compiled my copy of postgres with a 16K blocksize, so this is 16MB of shared memory space, i.e. the most postgres will use without a kernel recompile. If you've compiled with the default 8K blocksize, "-B 2000" will work. You needn't do this for testing, but for an active system helps a lot.

The '-o "-S 2000" ' tells each backend to use up to 2 MB (2000 x 1KB) of RAM for sorting, etc before spilling to disk.

The other "-S" (to the postmaster itself, don't confuse with the above where -o is used to pass flags to forked backends) tells it to run "silently", in the background.

-D is used to pass the path to the database which you've hopefully already run initdb on, etc, if you've followed Roberto's excellent installation instructions.

After the postmaster is running, do an su --login to the account you intend to run the ACS from, and do a "psql". If you've followed Roberto's instructions you should end up with a prompt after a couple of messages indicating that it has successfully connected with the database. Once you're certain you can connect from the account via psql, you should have no problem connecting via AOLserver.

If you run the postmaster without -i, as above, you connect via localhost, like this:

[ns/db/pool/main]
Driver=postgres
Connections=4
MaxOpen=1000000000
MaxIdle=1000000000
User=donb
Verbose=On
LogSQLErrors=On
ExtendedTableInfo=On
DataSource=localhost::acs
(acs is the name of the database I run the acs in)

Note there's no port 5432 in the datasource.