Hi Dennis,
As you know, I work with Graham - let me provide a bit more info:
It's not that practical for us to post the full code, as this is a worker that is executed by a worker framework that we have written in-house.
It's based on ideas from flow-based programming, with multiple inputs and outputs (from, and to, JavaSpaces).
Ultimately, there exists a main loop for each worker method, invoking code like:
while (!executorService.isShutdown())
{
try
{
Transaction.Created tc = TransactionFactory.create(transactionManager, TRANSACTION_LEASE_TIME);
try
{
// Read all required entries for the worker model
Object[] entries = pullInputs(workerModel.getInputs(), inputTemplates, tc.transaction, space);
// Invoke worker method with those as params
invocations.increment();
executionTime.startTiming();
Object outputs = workerModel.getMethod().invoke( worker, entries );
executionTime.stopTiming();
// Publish outputs to space
pushOutputs( outputs, tc.transaction, space, workerModel );
// Commit transaction
tc.transaction.commit();
}
}
...
}
With pullInputs ultimately just interacting with the space normally, for example:
space.takeIfExists( template, transaction, timeout );
I wonder if Blitz (i.e. it's proxy) doesn't do something that causes log configuration to be read on every operation?
And furthermore, if we're not perhaps running out of file handles or something, causing that particular operation
to fail, wrapped as an "UnusableEntryException" (perhaps a default behaviour)?
Do you think we should take this up with Dan Creswell, perhaps? Or is there anything you can think of (perhaps caused by the SLF4J/JUL bridge, etc?)
Any thoughts much appreciated -
Dawid
Op maandag 1 december 2014 16:49:47 UTC+2 schreef dennisr: