[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ANTS-2.0 DANTE Dies



	Hi.  I'm returning, after a lamentable digression, to the
issue of why my ANTS-2.0 topology dies when I do a lot of DANTE JOINs
on it.

	Here's a sample part of my core configuration file:

node 11.11.11.0 -log 255 -routes core.routes -updateRoutes true -aneptypeid 36
channel 11.11.11.0 stdin -proxyaddr son.isi.edu:3322 -log 255
application 11.11.11.0 ants.dante.DanteServer -start 11.11.11.1 -end 11.11.11.255 -principal DanteUser

	There are 255 address available for allocation to clients.
After allocating the 255 addresses to clients, each of which LEAVEs
the allocation, over a 5-minute period (longer than the 30-second
timeout period in DanteServer), the ANTS core node stops responding to
further JOINs.

	Looking at the code, I notice that DanteServer.run() and
DanteServer.returnAddress() remove a key from a Hashtable within a
loop over the Hashtable's key Enumeration.  While the Java documents
don't explicitly state that this is unsafe bahavour, it seem suspect.

	The modern Java alternative is to use a HashSet instead of a
Hashtable, which provides an Interator instead of an Enumarator.
The Iterator has a remove() function, to facilitate removing keys
while sequencing.  However, I don't know whether Kaffe supports HashSet.

	Another alternative is to just iterate over all "n" potential
index values, bypassing the Enumeration.

	The error messages from ANTS are:  Standard error:

Cannot export class groups in emulation.

	Standard out:

LoadClient: Running with joint anetd/EE security manager
java.version = 1.2.2
This is a version 1.2 JVM
numURLs = 2
LoadClient: class name = edu.utah.janos.nodeos.Main
LoadClient: Class = class edu.utah.janos.nodeos.Main
Janos Java NodeOS v1.1.7
ANTS v2.0
FAILURE:assert test
Uncaught exception in deliverFunc (UnknownPacketHandler for Node[a=11.11.11.0]):
assert test
ants.core.Assert$AssertFailure: assert test
        at ants.core.Assert.failure(Assert.java:59)
        at ants.core.Assert.assert(Assert.java:66)
        at ants.core.Node.routeForNode(Node.java:445)
        at ants.core.UnknownPacketHandler.receive(UnknownPacketHandler.java:184)
        at edu.utah.janos.nodeos.pj_ThreadPool.run(pj_ThreadPool.java:227)
        at edu.utah.janos.nodeos.pj_Thread$ThreadWrapper.run(pj_Thread.java:83)

	These occur during startup or the initial packet exchanges,
and don't repeat during the rest of the run.



					Craig Milo Rogers




[ Janos ] [ OSKit ] [ Network Testbed ] [ Flick ] [ Fluke ]
Flux Research Group / Department of Computer Science / University of Utah