If you want to have this newsletter mailed to you or you want to make comments/suggestions about the format/content then send an email to acedb@sanger.ac.uk.
This month includes news about the release of the socket based version of the acedb server/client, BioJava, new web pages, NFS and acedb, and how to find out what version of an acedb program you are using.
~acedb/RELEASE.DEVELOPMENT
directories. This code
introduces some new features in to acedb and fixes a number of bugs
reported by users.
Acedb has a number of useful utility programs which can be found
in the
You can find a description/listing of these utilities at:
http://www.acedb.org/Development/wdoc/acetools.html
A beta test release of the new socket based server is now available for
testing. This version will eventually replace the RPC version that existed before.
Main highlights are:
See http://www.acedb.org/Development/wdoc/SOCKET_aceserver.html for further details,
including how to set the new server up.
See http://www.acedb.org/Development/wdoc/SOCKET_interface.html for detail of how
to interface to the server via sockets (perhaps from Perl or from Java - see next item).
Matthew Pocock and Thomas Down have been doing to Java what BioPerl did to Perl (!),
that is providing some useful BioInformatics packages/functions for access from Java
code. Here's a summary from them of what BioJava does:
Among the first clients for the ACeDB socket server is the BioJava socket client.
BioJava is an open source Java library for representing biological information, such
as sequences, and for interfacing with commonly used biological programs.
As ACeDB is a
very common database for storing genomic information, we decided to write a client so
that all of this information can be accessed.
BioJava attempts to be pure-java where
possible, and as Java already provides a socket library, the new Acedb socket-based server is
ideal for us.
The
BioJava socket client can be used to view the ACeDB objects either as Java objects
or alternatively as BioJava sequences, features and annotation bundles.
The BioJava client is fast, with nearly all the overhead being in the
server. It was also easy to implement a multi-session client, requiering about 600 lines
of code for both the client implementation and the Java representation of the ACeDB
object
model.
In combination with the BioCorba and ensemble initiatives, this provides a strong
foundation for platform-independant biological visualisation and data-processing.
New stuff
Reminder
From time to time there have been problems with database corruption that are not caused
by bugs in acedb (no honestly its true...), they are caused by problems with NFS
when the network is very heavily loaded. In normal use acedb cannot detect when
NFS fails to write data to a disk because the network is jammed up, this can result
in the database getting corrupted because only partial updates are performed or
sometimes because NFS ends up writing NULL bytes (i.e. junk) into the database.
What can be done ?
As a user we recommend that you do not do updates to a database when the network is very slow (i.e.
it takes perhaps a minute or more for xace and other programs to respond). As an administrator, if you
notice that acedb applications have started crashing with a particular database
and that this coincides with a period of network trouble you should suspect database
corruption.
If updates have to be made and the network is giving trouble it is possible to
set the database up so that NFS will signal acedb if a write to a disk fails, this has
a severe performance penalty in that all updates take 5 to 10 times longer.
It has the
advantage that acedb will be able to detect and warn the user about updates that have
failed.
You should only resort to this if you absolutely have to update the database and the
network is very bad.
To set up the database for this you need to edit the file wspec/database.wrm
and uncomment the "SYNC_WRITE" line (note that this only available from acedb 4_8c onwards)
and restart any programs you want to access the database with.
As soon as the network is stable you should
comment out this line again otherwise performance will be very poor, especially with
multiple users of the database.
Crucial to a bug report is for the developers to know what version of acedb you were
using, but how do you find this out ? In Acedb 4_8c there are serveral ways to find out.
If you normally start your acedb program from some kind of menu
(e.g. Carol Scotts program for accessing the human databases) then:
xace - the graphical program: Usually the version you are
using is displayed in the title bar of the
main window (you will see something like "ACEDB 4_8c, current_database", where
"current_database" is your working database, e.g. humace).
If not, then click on the "Admin.." button in the main window, then click on "Program Status"
in the popup window that appears, this will show a text window which shows the version at the
top as "Program xace....." followed by "Using ACEDB 4_8c,....".
tace - the command line program: At the If you normally start your acedb program directly by typing For any Acedb program (e.g. tace, xace, saceserver etc.) you can use the
If the program won't even run (so you can't use the tace is often used from scripts and this makes debugging of tace difficult because
how do you start a debugger running against tace when its started perhaps by a nest
of perl scripts ?
A simple technique for doing this is to put a To help with this tace now has a wtools
directory of a distribution. These
include a number of useful programs to do things like:
The sockets based server
BioJava and acedb
fmap
Aprils monthly build code (available from ~acedb/RELEASE.DEVELOPMENT
)
has some changes to fmap and its also probably worth including a
reminder here about a facility that has been in fmap for a while now:
NFS & acedb
Bugs
What version of acedb am I using ?
"acedb>"
prompt,
type in "status"
and tace will display current program status, at the top is the version information:
" // ACEDB 4_8c,....."
.
"xace"
,
"tace"
etc. then:
"-version"
command line flag to see what version of code
you are running:
> xace -version
ACEDB 4_8c compiled on: Apr 10 2000 12:07:51
>
"-version"
option), you can use the unix what
command like this:
> what /your/path/to/the/program/xace
/your/path/to/the/program/xace:
------------------------------------------------------------------------
ACEDB 4.8c, compiled on: Apr 10 2000 12:07:51
Copyright (c): J Thierry-Mieg and R Durbin, 1998
(loads more stuff which you can ignore)
>
Debugging - advanced users
sleep()
call into tace
so that the program will pause giving you enough time to attach a debugger (e.g. gdb,
ddd etc.) to the process that the program is running in. You will find the debugger
will show you tace paused at the sleep()
call, you can then instruct
the debugger to run until this call finishes and then stop. You can now step
through the program in the debugger.
"-sleep"
command line flag
which allows you to set a delay at the start of the tace main()
function,
e.g. to get tace to wait for 60 seconds:
> tace -sleep 60 /my/database
Next User Group Meeting - D213, 2.30pm, Thurs, 13th April
Ed Griffiths <edgrif@sanger.ac.uk>
Last modified: Mon May 21 15:35:43 BST 2001