JPPF Issue Tracker
JPPF (jppf)
June 11, 2019
May 14, 2019
task_tiny.png 07:43  Task JPPF-591 - Come up with a lightweight test suite for day-to-day development purposes
lolocohen : Issue closed
May 13, 2019
task_tiny.png 09:03  Task JPPF-591 - Come up with a lightweight test suite for day-to-day development purposes
lolocohen : Issue created
Currently, the full suite of autmated tests take 15 to 25 mn to run, depending on the hardware. We propose to reduce it to a more reasonable set of tests that would take much less time, while still providing a meaningful coverage.

We also propose to run this lightweight suite as part of the Travis build setup in github, in addition to making it available locally on the command line. The currentm CI build with Jenkins would still run the full suite.
May 12, 2019
bug_report_tiny.png 12:21  Bug report JPPF-590 - Failures in v6.1 in multi-server topology tests
lolocohen : Issue closed
May 10, 2019
feature_request_tiny.png 20:21  Feature request JPPF-583 - Tasks dependencies within a job
lolocohen : Issue closed
May 05, 2019
bug_report_tiny.png 08:16  Bug report JPPF-590 - Failures in v6.1 in multi-server topology tests
lolocohen : Issue created
The Jenkins build is showing intermittent failures for some of our automated tests on multiserver topologies. I'm not sure yet what the problem is exactly, but it seems to occur frequently enough (1 time out of 5) to warrant a dedicated bug report.
The failures I've been seeing recently, and for which a set of logs is attached to this defect:

build 221:
test: test.org.jppf.server.peer.TestMultiServer.testTopologyMonitoring()

java.lang.Exception: test timed out after 10000 milliseconds
at java.lang.ThreadGroup.threadTerminated(ThreadGroup.java:942)
at java.lang.Thread.exit(Thread.java:755)
build 227:
Test: test.org.jppf.server.peer.TestMultiServerSetup.testSetup()

java.lang.Exception: test timed out after 15000 milliseconds
at sun.misc.Unsafe.getObject(Native Method)
at java.io.ObjectStreamClass$FieldReflector.getObjFieldValues(ObjectStreamClass.java:2094)
at java.io.ObjectStreamClass.getObjFieldValues(ObjectStreamClass.java:1296)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1539)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at org.jppf.jmxremote.message.JMXRequest.writeObject(JMXRequest.java:102)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at org.jppf.serialization.DefaultJavaSerialization.serialize(DefaultJavaSerialization.java:29)
at org.jppf.utils.ObjectSerializerImpl.serialize(ObjectSerializerImpl.java:79)
at org.jppf.io.IOHelper.serializeDataToMemory(IOHelper.java:274)
at org.jppf.io.IOHelper.serializeData(IOHelper.java:255)
at org.jppf.io.IOHelper.serializeData(IOHelper.java:241)
at org.jppf.jmxremote.nio.JMXContext.offerJmxMessage(JMXContext.java:121)
at org.jppf.jmxremote.message.JMXMessageHandler.sendMessage(JMXMessageHandler.java:197)
at org.jppf.jmxremote.message.JMXMessageHandler.receiveResponse(JMXMessageHandler.java:122)
at org.jppf.jmxremote.message.JMXMessageHandler.sendRequestWithResponse(JMXMessageHandler.java:107)
at org.jppf.jmxremote.JPPFMBeanServerConnection.invoke(JPPFMBeanServerConnection.java:238)
at org.jppf.management.JMXConnectionWrapper.invoke(JMXConnectionWrapper.java:162)
at org.jppf.management.JMXDriverConnectionWrapper.nbIdleNodes(JMXDriverConnectionWrapper.java:224)
at test.org.jppf.test.setup.AbstractNonStandardSetup.lambda$awaitNbIdleNodes$2(AbstractNonStandardSetup.java:415)
at test.org.jppf.test.setup.AbstractNonStandardSetup$$Lambda$17/1147147352.evaluateWithException(Unknown Source)
at org.jppf.utils.concurrent.ConcurrentUtils$ConditionFalseOnException.evaluate(ConcurrentUtils.java:246)
at org.jppf.utils.concurrent.ConcurrentUtils.awaitCondition(ConcurrentUtils.java:96)
at test.org.jppf.test.setup.AbstractNonStandardSetup.awaitNbIdleNodes(AbstractNonStandardSetup.java:415)
at test.org.jppf.test.setup.AbstractNonStandardSetup.awaitNbIdleNodes(AbstractNonStandardSetup.java:400)
at test.org.jppf.test.setup.AbstractNonStandardSetup.checkPeers(AbstractNonStandardSetup.java:371)
at test.org.jppf.test.setup.AbstractNonStandardSetup.checkPeers(AbstractNonStandardSetup.java:340)
at test.org.jppf.test.setup.AbstractNonStandardSetup.checkPeers(AbstractNonStandardSetup.java:329)
at test.org.jppf.server.peer.TestMultiServerSetup.testSetup(TestMultiServerSetup.java:49)
May 01, 2019
icon_build.png 10:00 JPPF 6.0.3
New version released
April 20, 2019
bug_report_tiny.png 11:10  Bug report JPPF-588 - Concurrent operations with DefaultFilePersistence job persistence result in exceptions
lolocohen : Issue closed
feature_request_tiny.png 07:22  Feature request JPPF-589 - Docker images for JPPF components
lolocohen : Issue created
We propose to add Docker images for JPPF, for drivers, nodes and web admin console. The configuration of a JPPF grid with docker should allow any kind of JPPF topology, including multi-server topologies.

Antoher objectivve is to provide ready-to-use tools and configurations to run JPPF grids within a Docker swarm/Kubernetes infrastructure.
bug_report_tiny.png 07:08  Bug report JPPF-588 - Concurrent operations with DefaultFilePersistence job persistence result in exceptions
lolocohen : Issue created
In a recently failed test of the file-based job persistence, I could find the following pattern in the driver log, where multilpe threads are performing 'store' and 'delete' opeations:
2019-04-19 08:07:34,852 [DEBUG][JPPF-0007][org.jppf.server.queue.PersistenceHandler.storeResults(116)] persisting 5 results for job ServerJob[id=2, job uuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23, name=testSimplePersistedJob, submissionStatus=EXECUTING, status=EXECUTING, taskCount=0, nbBundles=1, jobExpired=false, pending=false, suspended=false]
...
2019-04-19 08:07:34,852 [DEBUG][JPPF-0007][org.jppf.job.persistence.impl.DefaultFilePersistence.store(97)] storing [PersistenceInfoImpl[type=TASK_RESULT, taskPosition=5, job=testSimplePersistedJob, jobUuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23], PersistenceInfoImpl[type=TASK_RESULT, taskPosition=8, job=testSimplePersistedJob, jobUuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23], PersistenceInfoImpl[type=TASK_RESULT, taskPosition=6, job=testSimplePersistedJob, jobUuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23], PersistenceInfoImpl[type=TASK_RESULT, taskPosition=9, job=testSimplePersistedJob, jobUuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23], PersistenceInfoImpl[type=TASK_RESULT, taskPosition=7, job=testSimplePersistedJob, jobUuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23]]
2019-04-19 08:07:34,852 [DEBUG][JPPF-0005][org.jppf.server.job.JPPFJobManager.jobEnded(195)] jobId 'testSimplePersistedJob' ended
2019-04-19 08:07:34,853 [DEBUG][JPPF-0005][org.jppf.server.queue.PersistenceHandler.deleteJob(141)] removing job 0282BA15-CE62-4C5D-AF33-5F92CFB2BB23 from persistence store
2019-04-19 08:07:34,853 [DEBUG][JPPF-0005][org.jppf.job.persistence.impl.DefaultFilePersistence.deleteJob(168)] deleting job with uuid = 0282BA15-CE62-4C5D-AF33-5F92CFB2BB23
2019-04-19 08:07:34,854 [DEBUG][JPPF-0003][org.jppf.server.queue.PersistenceHandler.deleteJob(141)] removing job 0282BA15-CE62-4C5D-AF33-5F92CFB2BB23 from persistence store
2019-04-19 08:07:34,854 [DEBUG][JPPF-0003][org.jppf.job.persistence.impl.DefaultFilePersistence.deleteJob(168)] deleting job with uuid = 0282BA15-CE62-4C5D-AF33-5F92CFB2BB23
...
2019-04-19 08:07:34,858 [DEBUG][JPPF-0007][org.jppf.server.protocol.ServerJob.lambda$postResultsReceived$0(189)] received results for ServerTaskBundleClient[id=2, pendingTasks=0, cancelled=false, done=true, job=JPPFTaskBundle[name=testSimplePersistedJob, uuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23, initialTaskCount=10, taskCount=10, bundleUuid=null, uuidPath=TraversalList[position=0, list=[4F5DEEB3-FEDE-4A18-A48F-9EE05CF06D94, d1]], nodeBundleId=null]; strategy=NodeResults]
2019-04-19 08:07:34,858 [DEBUG][JPPF-0007][org.jppf.server.protocol.ServerJob.taskCompleted(245)] requeue = false for bundle ServerTaskBundleNode[id=4, name=testSimplePersistedJob, uuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23, initialTaskCount=10, taskCount=5, cancelled=false, requeued=false, channel=AsyncNodeContext[uuid=n2, peer=false, ssl=false, local=false, offline=false, maxJobs=1, jobEntries=0, sendQueue size=0, interestOps=1, executionStatus=EXECUTING]], job = ServerJob[id=2, job uuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23, name=testSimplePersistedJob, submissionStatus=ENDED, status=DONE, taskCount=0, nbBundles=0, jobExpired=false, pending=false, suspended=false]
2019-04-19 08:07:34,859 [DEBUG][JPPF-0007][org.jppf.server.queue.PersistenceHandler.deleteJob(141)] removing job 0282BA15-CE62-4C5D-AF33-5F92CFB2BB23 from persistence store
2019-04-19 08:07:34,859 [DEBUG][JPPF-0007][org.jppf.job.persistence.impl.DefaultFilePersistence.deleteJob(168)] deleting job with uuid = 0282BA15-CE62-4C5D-AF33-5F92CFB2BB23
2019-04-19 08:07:34,860 [WARN ][JPPF-0003][org.jppf.utils.DeleteFileVisitor.visitFile(82)] error trying to delete file 'persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\result-7.tmp': java.nio.file.NoSuchFileException: persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\result-7.tmp
2019-04-19 08:07:34,860 [ERROR][JPPF-0007][org.jppf.server.queue.PersistenceHandler.deleteJob(145)] error deleting persistent job 0282BA15-CE62-4C5D-AF33-5F92CFB2BB23 : org.jppf.job.persistence.JobPersistenceException: java.nio.file.AccessDeniedException: persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\header.data
at org.jppf.job.persistence.impl.DefaultFilePersistence.deleteJob(DefaultFilePersistence.java:172)
at org.jppf.server.queue.PersistenceHandler.deleteJob(PersistenceHandler.java:143)
at org.jppf.server.queue.PersistenceHandler.deleteJob(PersistenceHandler.java:132)
at org.jppf.server.queue.RemoveBundleAction.run(RemoveBundleAction.java:63)
at org.jppf.server.protocol.AbstractServerJob.done(AbstractServerJob.java:333)
at org.jppf.server.protocol.AbstractServerJob.setSubmissionStatus(AbstractServerJob.java:418)
at org.jppf.server.protocol.ServerJob.taskCompleted(ServerJob.java:253)
at org.jppf.server.protocol.ServerJob.postResultsReceived(ServerJob.java:191)
at org.jppf.server.protocol.ServerJob.resultsReceived(ServerJob.java:142)
at org.jppf.server.protocol.ServerTaskBundleNode.resultsReceived(ServerTaskBundleNode.java:198)
at org.jppf.server.nio.nodeserver.async.AsyncNodeMessageHandler.processResults(AsyncNodeMessageHandler.java:337)
at org.jppf.server.nio.nodeserver.async.AsyncNodeMessageHandler.process(AsyncNodeMessageHandler.java:274)
at org.jppf.server.nio.nodeserver.async.AsyncNodeMessageHandler.resultsReceived(AsyncNodeMessageHandler.java:183)
at org.jppf.server.nio.nodeserver.async.AsyncNodeMessageReader.handleMessage(AsyncNodeMessageReader.java:73)
at org.jppf.nio.NioMessageReader$HandlingTask.run(NioMessageReader.java:134)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.nio.file.AccessDeniedException: persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\header.data
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1126)
at org.jppf.utils.DeleteFileVisitor.visitFile(DeleteFileVisitor.java:78)
at org.jppf.utils.DeleteFileVisitor.visitFile(DeleteFileVisitor.java:30)
at java.nio.file.Files.walkFileTree(Files.java:2670)
at java.nio.file.Files.walkFileTree(Files.java:2742)
at org.jppf.job.persistence.impl.DefaultFilePersistence.deleteJob(DefaultFilePersistence.java:170)
... 17 more
2019-04-19 08:07:34,861 [DEBUG][JPPF-0007][org.jppf.server.protocol.ServerJob.taskCompleted(254)] submissionStatus=ENDED, clientBundles=0 for ServerJob[id=2, job uuid=0282BA15-CE62-4C5D-AF33-5F92CFB2BB23, name=testSimplePersistedJob, submissionStatus=ENDED, status=DONE, taskCount=0, nbBundles=0, jobExpired=false, pending=false, suspended=false]
2019-04-19 08:07:34,861 [DEBUG][JPPF-0007][org.jppf.server.nio.nodeserver.async.AsyncNodeMessageHandler.processResults(338)] updated stats for AsyncNodeContext[uuid=n2, peer=false, ssl=false, local=false, offline=false, maxJobs=1, jobEntries=0, sendQueue size=0, interestOps=1, executionStatus=EXECUTING]
2019-04-19 08:07:34,860 [WARN ][JPPF-0005][org.jppf.utils.DeleteFileVisitor.visitFile(82)] error trying to delete file 'persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\header.data': java.nio.file.NoSuchFileException: persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\header.data
2019-04-19 08:07:34,862 [WARN ][JPPF-0005][org.jppf.utils.DeleteFileVisitor.visitFile(82)] error trying to delete file 'persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\result-0.data': java.nio.file.NoSuchFileException: persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\result-0.data
2019-04-19 08:07:34,862 [WARN ][JPPF-0005][org.jppf.utils.DeleteFileVisitor.visitFile(82)] error trying to delete file 'persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\result-1.data': java.nio.file.NoSuchFileException: persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\result-1.data
2019-04-19 08:07:34,862 [WARN ][JPPF-0005][org.jppf.utils.DeleteFileVisitor.visitFile(82)] error trying to delete file 'persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\result-2.data': java.nio.file.NoSuchFileException: persistence\0282BA15-CE62-4C5D-AF33-5F92CFB2BB23\result-2.data
April 14, 2019
enhancement_tiny.png 05:56  Enhancement JPPF-587 - Ability to create JPPFSchedule instances using java.time.* APIs
lolocohen : Issue created
The class [https://www.jppf.org/javadoc/6.2/index.html?org/jppf/scheduling/JPPFSchedule.html JPPFSchedule] is used to specify the start or expiration schedule of a job, as well as the expiration schedule of a task. It currently has 2 basic constructors, one that takes an epoch time in millis, the other that takes a string which represents a date, along with a SimpleDateFormat-compliant format to parse it.

We propose to extends this class to enable building JPPFSchedule objects based on the classes in java.time.*, such as ZOnedDateTime, Duration, etc.
April 13, 2019
enhancement_tiny.png 20:19  Enhancement JPPF-586 - Cache of class/resource definitions in the client
lolocohen : Issue closed
April 12, 2019
task_tiny.png 13:13  Task JPPF-584 - Refactor the distributed class loader into the asynchronous Nio communication model
lolocohen : Issue closed
April 08, 2019
enhancement_tiny.png 07:36  Enhancement JPPF-586 - Cache of class/resource definitions in the client
lolocohen : Issue created
When a job is dispatched to multiple nodes in parallel, this can result in the same class loading request being issued to the same client in parallel or in sequence. This would happen when identical requests are forwarded to the same client, before the first response is received by the server, and therefore before in can be added to the server-side cache. It could be worthwhile, from a perfromance perspective, to use a cache of class definitions, such that identical requests (same client-side class loader and same resource path) only result in a single lookup in the classpath.

To this effect, we propose to implement a cache in the client, as follows:
* an identity hash map whose keys are class loaders
* the values are hash maps where the key is a path in the classpath and the value is the byte[] for the resource located at that path. These could be implemented as [https://www.jppf.org/javadoc/6.2/index.html?org/jppf/utils/collections/SoftReferenceValuesMap.html SoftReferenceValueMap]s to avoid out of memory conditions due to the cache
March 31, 2019
bug_report_tiny.png 09:43  Bug report JPPF-585 - The 6.1 tutorial still uses JPPFClient.submitJob() and blocking job attribute
lolocohen : Issue closed
bug_report_tiny.png 08:42  Bug report JPPF-585 - The 6.1 tutorial still uses JPPFClient.submitJob() and blocking job attribute
lolocohen : Issue created
The online and offline dosc still show, in the tutorial, code snippe that use the "blocking" job attribute, which is now deprecated, as well as job submission with JPPFClient.submitJob(), now deprecated and replace with submit() and submitAsync
March 30, 2019
task_tiny.png 07:19  Task JPPF-584 - Refactor the distributed class loader into the asynchronous Nio communication model
lolocohen : Issue created
This is about refactoring the distributed class loader communication model into the more efficient and scalable model introduced in JPPF 6.1 (see feature request JPPF-549 and feature request JPPF-564). This includes both driver/node and driver/client communication channels.

These are the last components to switch to the new model. Once it is done, we expect a number of benefits:
* we will be able to get rid of the old nio code, which should reduce the maintenance burden
* this should also increase the performance, simply because we will remove parts of the code inherited from the old model, which are still present but not used in the new model
* increased performance and scalability, because the new nio model is more efficient
March 28, 2019
task_tiny.png 20:13  Task JPPF-572 - Performance, endurance and stress testing
lolocohen : Issue closed
icon_build.png 10:00 JPPF 6.1
New version released
March 22, 2019
feature_request_tiny.png 08:31  Feature request JPPF-583 - Tasks dependencies within a job
lolocohen : Issue created
We propose to enable dependencies between tasks in the same job. For instance, we envision the ability to express that task A depends on the completion of tasks B and C, who each depend on the completion of task D (diamond dependency graph):
Dependencies:
B
/ \
A D
\ /
C
This implies a number of challenges, including but not limited to:
* decide how to schedule and parallelize the execution of the tasks: a task with dependencies cannot be scheduled before its dependenices have completed
* handle failures / cancellation of tasks on which other tasks depend
* provide an expressive and intuitive API to specify the dependencies
March 21, 2019
task_tiny.png 19:31  Task JPPF-529 - Explore usage of .Net Core instead of Visual Studio for the .Net bridge
lolocohen : Issue closed
feature_request_tiny.png 19:29  Feature request JPPF-177 - Write documentation on logging
lolocohen : Issue closed
feature_request_tiny.png 19:27  Feature request JPPF-111 - Implement a recipe for Cloudify
lolocohen : Issue closed
feature_request_tiny.png 19:25  Feature request JPPF-9 - Change the JPPF configuration based on observable behavior
lolocohen : Issue closed
feature_request_tiny.png 18:59  Feature request JPPF-429 - Use existing node connections for heartbeat-based connection checks
lolocohen : Issue closed
March 17, 2019
feature_request_tiny.png 07:34  Feature request JPPF-582 - Job dependencies and job graphs
lolocohen : Issue created
We have a [https://www.jppf.org/samples-pack/JobDependencies/ job dependencies sample] which illustrates an ad-hoc way of executing acyclic graphs of dependent jobs.

We propose to make this an actual feature instead of a sample, and to explore other possibilities such as:
* a broader set of relationshups between jobs than just "depends on", e.g. split/join (or map/reduce). This implies to be able to gather global results for an entire job and apply transformations to these results.
* an expressive and intuitive way to build the job graph
March 02, 2019
task_tiny.png 05:48  Task JPPF-565 - Feature removals
lolocohen : Issue closed
enhancement_tiny.png 05:33  Enhancement JPPF-578 - Allow jppf-admin-web jar dependency as alternative to war to make embedding possible
lolocohen : Issue closed
February 22, 2019
bug_report_tiny.png 04:45  Bug report JPPF-581 - Setting a MBeanServerForwarder on the jmxremote-nio connector server has no effect
lolocohen : Issue closed
bug_report_tiny.png 04:05  Bug report JPPF-581 - Setting a MBeanServerForwarder on the jmxremote-nio connector server has no effect
lolocohen : Issue created
When calling JPPFJMXConnectorServer.setMBeanServerForwarder(), the MBeanServerForwarder that is set is never used afterwards. I just realized I forgot to implement that part.
February 18, 2019
enhancement_tiny.png 07:17  Enhancement JPPF-576 - Client methods for sync and async job submission, deprecation of blocking job flag
lolocohen : Issue closed
February 17, 2019
enhancement_tiny.png 08:05  Enhancement JPPF-580 - Allow MavenCentralLocation or a subclass to get artifacts from different repositories, including snapshots
lolocohen : Issue closed
February 16, 2019
enhancement_tiny.png 06:29  Enhancement JPPF-580 - Allow MavenCentralLocation or a subclass to get artifacts from different repositories, including snapshots
lolocohen : Issue created
Currently, [https://www.jppf.org/doc/6.1/index.php?title=The_Location_API#MavenCentralLocation MavenCentralLocation] only allows to download artifacts from Maven Central. We propose to add the ability to specify a different repository, as well as the ability to download SNAPSHOT artifacts, For instnce in a class nmamed MavenLocation, of which MavenCentralLocation could be a specialized subclass.
February 14, 2019
enhancement_tiny.png 13:31  Enhancement JPPF-579 - Monitoring data providers: ability to configure a value converter for each datum
lolocohen : Issue closed
February 13, 2019
enhancement_tiny.png 08:47  Enhancement JPPF-577 - JVM health monitoring enhancements
lolocohen : Issue closed
enhancement_tiny.png 08:30  Enhancement JPPF-579 - Monitoring data providers: ability to configure a value converter for each datum
lolocohen : Issue created
[https://www.jppf.org/doc/6.1/index.php?title=Monitoring_data_providers '''Monitoring data providers'''] allow to define properties of various types that are monitored over time. However, there is currently no way to specify how these values should be displayed in the JVM health view of the desktop and web administration consoles. JPPF currently uses default conversions based on the type of each property, but this may not be always convenient.

For instance, let's say we want to monitor the JVM uptime. This value is expressed in millisecons as a long integer value. However, in the GUI we'd rather have it displayed as days:hours:minutes:seconds.millis.

We propose to implement the ability to configure a value converter for each defined property to this effect.

For instance (just for example purpose, this is not what the actual design will be):
public interface MonitoringValueConverter {
String convert(String value);
}

public abstract class MonitoringDataProvider {
...

public MonitoringDataProvider setConverter(String name, MonitoringValueConverter converter) {
...
}
}

public class MyProvider extends MonitoringDataProvider {
...

@Override
public void defineProperties() {
...
setLongProperty("time", -1L).setConverter("time", value -> new Date(Long.valueOf(value)).toString());
}
}
February 11, 2019
feature_request_tiny.png 14:32  Feature request JPPF-575 - IsMasterNode, IsSlaveNode and other convenience execution policies
lolocohen : Issue closed
feature_request_tiny.png 00:02  Feature request JPPF-562 - Fix the preference execution policy
lolocohen : Issue closed
February 10, 2019
enhancement_tiny.png 17:15  Enhancement JPPF-578 - Allow jppf-admin-web jar dependency as alternative to war to make embedding possible
gsubes : Issue created
I would like to embed jppf-admin-web into my own embedded webserver as an executable jar. I need jppf-admin-web as a jar dependency instead of war to make this work. I would define my own web.xml for this and ignore the one inside

See description here: https://pragmaticintegrator.wordpress.com/2010/10/22/using-a-war-module-as-dependency-in-maven/

You would need to add:

...

...

maven-war-plugin
${version.maven-war-plugin}

true


...

...

So that I could use:

org.jppf
jppf-admin-web
${version.jppf}
classes

Also it would be nice if you could define the jppf.css and and images/ as maven resources behind a package name and add those resources into the classes folder. You could then mount those resources in your wicket application under your current paths using PackageResourceReferences to serve them from the classpath. This makes embedding easier and I don't have to copy these resources myself then.
Show moreaction_add_small.png