JPPF Changelog

What's new in JPPF 6.0 Alpha 4

Jun 11, 2018
  • New features highlights:
  • Pluggable monitoring data providers:
  • This extension mechanism allows the management and monitoring API to provide user-defined data fields representing diagnostics data, health or general information on the JPPF node and driver JVM processes or the system on which they run
  • Custom data fields are automatically added to the JVM health view of the desktop and web administration consoles
  • All numeric data fields are automatically made available to the user-defined charts of the desktop console
  • Monitoring data providers have full localization support
  • The default data fields in the JVM health view are supplied by a built-in monitoring data provider
  • New JVM / Process / System Health built-in data fields:
  • Thanks to the integration of Oshi, new fields have been added that are not natively available to the JVM:
  • CPU temperature
  • OS name and version
  • Process Resident Set Size (RSS), how much memory is allocated to the process, excluding swap
  • Process Virtual Memory Size (VSZ), shows all the memory the process can access, including swap
  • Swap usage amount and percentage
  • Nio-based JMX remote connector:
  • Full-fledged, fast and scalable, NIO-based implementation of the JMX remote specification
  • Available as a standalone JMX remote connector
  • Also fully integrated with JPPF, removing the need for JPPF servers to configure a separate JMX port
  • Now integrated as the default JMX remote connector in JPPF grids
  • Various enhancements:
  • Parametrized configuration properties
  • Port of the J2EE connector to Open Liberty
  • Pick lists are now used in the desktop console to select the visible columns of all tree views
  • All implemented issues:
  • Features:
  • JPPF-396 Provide information on remote drivers/nodes not natively available from the JDK
  • JPPF-436 Integration of JMX remote with NIO
  • JPPF-462 Node temperature
  • JPPF-493 Parametrized configuration properties
  • JPPF-519 Admin console: ability to add custom data to the JVM health view and the charts
  • Enhancements:
  • JPPF-530 Port J2EE connector to Open Liberty
  • JPPF-535 Desktop console: use picklist to select visible columns in tree table views
  • Tasks:
  • JPPF-532 Upgrade to latest version of SLF4J
  • JPPF-536 Generic build script in the repo root

New in JPPF 5.2.9 (Apr 2, 2018)

  • Bug Fixes:
  • JPPF-517 Deadlock in the driver during stress test
  • JPPF-518 Admin console job data view does not display peer drivers to which jobs are dispatched
  • JPPF-521 Document the "jppf.node.provisioning.master.uuid" configuration property
  • JPPF-523 nullpointer in org.jppf.utils.SystemUtils.addOtherSystemProperties
  • JPPF-524 Stream isn't closed properly in org.jppf.utils.VersionUtils#createVersionInfo
  • JPPF-525 Deadlock in the driver during automated test run
  • Enhancements:
  • JPPF-522 Enhancements to the pluggable view sample

New in JPPF 6.0 Alpha 3 (Oct 30, 2017)

  • Multi-server topologies improvements
  • Full-fledged NIO implementation:
  • communication between servers was refactored to work purely via the NIO APIs
  • it now reuses the existing NIO thread pool instead of starting its own threads
  • Server to server connection pooling:
  • communication between servers is now defined via connection pools of arbitrary size
  • this enables a more efficient distribution of the load between servers and improves scalability
  • pooling is now enabled from the configuration and all discovery services
  • Complex expressions as arguments of execution policies:
  • the arguments of execution policies can now be written as scripted expressions with variable substitutions.
  • the syntax is identical to that of expressions for configuration properties and leverages the same code base.
  • this increases the expressiveness and power of execution policies by an order of magnitude.
  • Persistence and reuse of load-balancers states:
  • a new facility enables the persistence and reuse of the states of adapative load-balancers, allowing to bypass the
  • algorithms' convergence phase (i.e. training to learn the optimal parmaeters set) upon restart of JPPF drivers, nodes or clients
  • a full managmeent interface is provided, independant from the chosen persistence implementation
  • load-balancer persistence is implemented as a pluggable facitliy and allows user-defined implementations
  • 3 built-in implementations are provided: file-driven, database-driven and an asynchronous wrapper
  • All implemented issues:
  • Feature requests:
  • JPPF-28 Asynchronous communication between servers
  • JPPF-443 Variable substitutions and scripted expressions for execution policies arguments
  • JPPF-508 Peer to peer connection pooling
  • JPPF-511 Ability to persist and reuse the state of adaptive load-balancers
  • Enhancements:
  • JPPF-514 Lighter syntax for scripted property values

New in JPPF 5.2.8 (Oct 30, 2017)

  • This maintenance release brings important bug fixes and enhancements.
  • Bug fixes:
  • JPPF-504 Local node never completes connection to server
  • JPPF-506 Client side load-balancer does not use the configuration passed to the JPPFClient constructor
  • JPPF-509 Regression: topology monitoring API does not detect peer to peer connections anymore
  • JPPF-510 Documentation on job listeners does not mention isRemoteExecution() and getConnection() methods of JobEvent
  • JPPF-512 PeerAttributesHandler spawns too many threads
  • JPPF-513 Using @JPPFRunnable annotation leads to ClassNotFoundException
  • Enhancements:
  • JPPF-505 Ability to disable the bias towards local node in the driver
  • To browse an issue, use the URL http://www.jppf.org/tracker/tbg/jppf/issues/JPPF-<issue_number>

New in JPPF 5.2.7 (Jun 21, 2017)

  • Bug fixes:
  • JPPF-498 Client reconnect to driver failure
  • JPPF-503 JPPF Serialization: ConcurrentModificationException when serializing a java.util.Vector
  • Enahancements:
  • JPPF-502 Ability to dynamically change the settings of the client load balancer
  • Documentation here

New in JPPF 5.2.5 (Mar 14, 2017)

  • JPPF-485 Number of peer total processing threads is not propagated properly
  • JPPF-488 Priority of client connection pools is not respected
  • JPPF-489 JPPFDriverAdminMBean.nbNodes() returns incorrect value when management is disabled on one or more nodes

New in JPPF 5.2.2 (Oct 21, 2016)

  • Enhancements:
  • JPPF-475 JMXMP large notifications lead to OutOfMemoryError
  • JPPF-478 Improvements in AbstractAdaptiveBundler
  • Bug fixes:
  • JPPF-473 Incorrect classpath configured in wrapper-driver.conf and wrapper-node.conf
  • JPPF-474 Missing section on Task.compute() in online documentation
  • JPPF-476 J2EE connector does not use specified number of local executor threads
  • JPPF-477 Clarify usage of "jppf.discovery.enabled" and "jppf.remote.execution enabled" in client config

New in JPPF 5.2.1 (Sep 20, 2016)

  • Enhancements:
  • JPPF-467 Custom discovery mechanisms for peer drivers and clients:
  • for peer drivers;
  • for clients.
  • Bug fixes:
  • JPPF-470 JPPF serialization: serialization of single byte and char values results in ClassCastException.

New in JPPF 5.1.5 (Sep 20, 2016)

  • Bug fixes:
  • JPPF-460 .Net API doc issues;
  • JPPF-461 The source distribution does not build properly;
  • JPPF-464 Server statistics do not fit window size. For german locale the text does not fit in the boxes;
  • JPPF-465 Adaptive Grid demo is not working.
  • Enhancements:
  • JPPF-458 Ability to shutdown a driver without exiting the JVM.

New in JPPF 5.2 (Sep 20, 2016)

  • New features highlights:
  • Administration console:
  • Node filtering with an execution policy editor with import/export capabilities;
  • Ability to select the visible statistics in the server statiscs view;
  • Syntax hihghlighting in all the editors: properties/node filtering;
  • The admin console splash screen is now customizable via the configuration;
  • The administration console is now fully localized, with full English and French translations available.
  • Configuration:
  • All documented properties are now defined as constants;
  • A new and elegant API was created to handle them easily;
  • It is now possible to specify in the configuration which JVM to use for the nodes and servers. This also applies to master and slave nodes when they are (re)started.
  • Customization/extension:
  • Ability to chain serialization schemes to provide compression or encryption over actual serialization;
  • The JPPF serialization scheme was thouroughly optimized and is now faster than the Java serialization;
  • It is now possible to register for statistics change events in the server;
  • Network communication interceptors enable user-defined code to be executed on both sides of each new connection;
  • A pluggable MBeanServerForwarder can now be associated to the JMX remote connector servers created by JPPF drivers and nodes;
  • Pluggable environment providers for JMX remote connector clients and servers.
  • Android node:
  • It is now possible to configure the node to stop working or terminate when the device's battery is low;
  • Improved the default feedback screen.
  • Job SLA:
  • The job SLA can now specifiy filtering rules based on the server properties and the number of nodes satisfying one or more conditions;
  • Example: "execute when the server has at least 2 GB of heap memory and at least 3 nodes with more than 4 cores each";
  • The job SLA can specify the desired configuration of the nodes on which it will execute and force the nodes to reconfigure themselves accordingly;
  • execution policies based on server properties now have access to the server statistics.
  • Management and Monitoring:
  • Two new types of node selectors are now available: scripted node selector and custom node selector.
  • Load-balancing:
  • A new load-balancing algorithm, named "rl2", was implemented.
  • Documentation:
  • Added a complete section on load balancing.
  • Samples:
  • A new sample was added, illustrating a full-fledged management of dependencies between jobs;
  • The Network Interceptor sample shows how a network connection interceptor can be used to implement a simple authentication mechanism with symmetric encryption.
  • Packaging:
  • The JPPF jar files now include the version number in their name, e.g. jppf-common-5.2.jar.
  • Continuous Integration:
  • A large amount of time and effort was invested in setting up a continuous integration environment based on Jenkins;
  • Automated builds are now in place with results automatically published to the JPPF web site;
  • Automated tests coverage was largely improved.
  • Resolved issues:
  • Features:
  • JPPF-176 Enable specifying the JVM location for the driver and node launcher;
  • JPPF-288 Clients task sets node configuration;
  • JPPF-407 Admin-UI: Filter for nodes;
  • JPPF-421 Android node: ability to throttle/suspend/kill the node based on battery state;
  • JPPF-426 Global execution policies that apply to all nodes / server channels at once;
  • JPPF-427 Customizable admin console splash screen;
  • JPPF-432 Extension point: driver statistics listener;
  • JPPF-434 Admin console: ability to select the statistics displayed in the server statistics view;
  • JPPF-439 Fully document load-balancing in JPPF;
  • JPPF-447 Sample illustrating one or more strategies to handle job dependencies;
  • JPPF-449 Include the version number in JPPF jar file names;
  • JPPF-453 Network communication interceptors;
  • JPPF-456 Pluggable MBeanServerForwarder for drivers and nodes;
  • JPPF-457 Pluggable environment providers for JMXMP connector clients and servers;
  • JPPF-459 New node selector types;
  • JPPF-466 New Load-balancing algorithm: RL2.
  • Enhancements:
  • JPPF-266 Improve the doc on server statistics;
  • JPPF-289 special strings should be constants;
  • JPPF-422 Performance improvements for serialization schemes;
  • JPPF-425 Improvements to the (custom) load-balancer APIs;
  • JPPF-430 Android node: improve the UI for the default feedback screen;
  • JPPF-437 Add statistics to JPPFSystemInformation / execution policy properties;
  • JPPF-446 Provide/expose access to JPPFDistributedJob from a job UUID in local job notifications handler.
  • Tasks:
  • JPPF-423 Replace System.currentTimeMillis() with System.nanoTime() everywhere applicable;
  • JPPF-431 Update copyright's last year to 2016 in all headers.

New in JPPF 5.2 Beta 2 (Sep 20, 2016)

  • New features highlights:
  • Administration console:
  • Node filtering with an execution policy editor with import/export capabilities;
  • Ability to select the visible statistics in the server statiscs view;
  • Syntax hihghlighting in all the editors: properties/node filtering;
  • The admin console splash screen is now customizable via the configuration.
  • Configuration:
  • All documented properties are now defined as constants;
  • A new and elegant API was created to handle them easily;
  • It is now possible to specify in the configuration which JVM to use for the nodes and servers;
  • This also applies to master and slave nodes when they are (re)started.
  • Customization/extension:
  • Ability to chain serialization schemes to provide compression or encryption over actual serialization;
  • The JPPF serialization scheme was thouroughly optimized and is now faster than the Java serialization;
  • It is now possible to register for statistics change events in the server;
  • Network communication interceptors enable user-defined code to be executed on both sides of each new connection;
  • A pluggable MBeanServerForwarder can now be associated to the JMX remote connector servers created by JPPF drivers and nodes;
  • Pluggable environment providers for JMX remote connector clients and servers.
  • Android node:
  • It is now possible to configure the node to stop working or terminate when the device's battery is low;
  • Improved the default feedback screen.
  • Job SLA:
  • The job SLA can now specifiy filtering rules based on the server properties and the number of nodes satisfying one or more conditions;
  • Example: "execute when the server has at least 2 GB of heap memory and at least 3 nodes with more than 4 cores each";
  • The job SLA can specify the desired configuration of the nodes on which it will execute and force the nodes to reconfigure themselves accordingly;
  • Execution policies based on server properties now have access to the server statistics.
  • Documentation:
  • Added a complete section on load balancing.
  • Samples:
  • A new sample was added, illustrating a full-fledged management of dependencies between jobs;
  • the Network Interceptor sample shows how a network connection interceptor can be used to implement a simple authentication mechanism with symmetric encryption.
  • Resolved issues:
  • Features:
  • JPPF-176 Enable specifying the JVM location for the driver and node launcher;
  • JPPF-288 Clients task sets node configuration;
  • JPPF-407 Admin-UI: Filter for nodes;
  • JPPF-421 Android node: ability to throttle/suspend/kill the node based on battery state;
  • JPPF-426 Global execution policies that apply to all nodes / server channels at once;
  • JPPF-427 Customizable admin console splash screen;
  • JPPF-432 Extension point: driver statistics listener;
  • JPPF-434 Admin console: ability to select the statistics displayed in the server statistics view;
  • JPPF-439 Fully document load-balancing in JPPF;
  • JPPF-447 Sample illustrating one or more strategies to handle job dependencies;
  • JPPF-449 Include the version number in JPPF jar file names;
  • JPPF-453 Network communication interceptors;
  • JPPF-456 Pluggable MBeanServerForwarder for drivers and nodes;
  • JPPF-457 Pluggable environment providers for JMXMP connector clients and servers.
  • Enhancements:
  • JPPF-266 Improve the doc on server statistics;
  • JPPF-289 special strings should be constants;
  • JPPF-422 Performance improvements for serialization schemes;
  • JPPF-425 Improvements to the (custom) load-balancer APIs;
  • JPPF-430 Android node: improve the UI for the default feedback screen;
  • JPPF-437 Add statistics to JPPFSystemInformation / execution policy properties;
  • JPPF-446 Provide/expose access to JPPFDistributedJob from a job UUID in local job notifications handler.
  • Tasks:
  • JPPF-423 Replace System.currentTimeMillis() with System.nanoTime() everywhere applicable;
  • JPPF-431 Update copyright's last year to 2016 in all headers.

New in JPPF 5.1.4 (Sep 20, 2016)

  • Bug fixes:
  • JPPF-448 JMXMPServer generates malformed JMX service urls for IPv6 addresses;
  • JPPF-450 Jobs get stuck in the server when client is terminated;
  • JPPF-451 Android demo: exception in the client upon receiving results from the server;
  • JPPF-452 Android node: blank feedback screen when returning to the main activity;
  • JPPF-454 J2EE connector rar files are missing the jmx remote jar.
  • Enhancements:
  • JPPF-455 Enhancements to the J2EE connector.

New in JPPF 5.2 Beta (Sep 20, 2016)

  • New features highlights:
  • Administration console:
  • Node filtering with an execution policy editor with import/export capabilities;
  • Ability to select the visible statistics in the server statiscs view;
  • Syntax hihghlighting in all the editors: properties/node filtering;
  • The admin console splash screen is now customizable via the configuration.
  • Configuration:
  • All documented properties are now defined as constants;
  • A new and elegant API was created to handle them easily;
  • It is now possible to specify in the configuration which JVM to use for the nodes and servers;
  • This also applies to master and slave nodes when they are (re)started.
  • Customization/extension:
  • Ability to chain serialization schemes to provide compression or encryption over actual serialization;
  • The JPPF serialization scheme was thouroughly optimized and is now faster than the Java serialization;
  • It is now possible to register for statistics change events in the server;
  • Android node:
  • It is now possible to configure the node to stop working or terminate when the device's battery is low;
  • Improved the default feedback screen.
  • Job SLA:
  • The job SLA can now specifiy filtering rules based on the server properties and the number of nodes satisfying one or more conditions;
  • Example: "execute when the server has at least 2 GB of heap memory and at least 3 nodes with more than 4 cores each";
  • The job SLA can specify the desired configuration of the nodes on which it will execute and force the nodes to reconfigure themselves accordingly;
  • Execution policies based on server properties now have access to the server statistics.
  • Documentation:
  • Added a complete section on load balancing
  • Samples:
  • A new sample was added, illustrating a full-fledged management of dependencies between jobs.
  • Resolved issues:
  • Features:
  • JPPF-176 Enable specifying the JVM location for the driver and node launcher;
  • JPPF-288 Clients task sets node configuration;
  • JPPF-407 Admin-UI: Filter for nodes;
  • JPPF-421 Android node: ability to throttle/suspend/kill the node based on battery state;
  • JPPF-426 Global execution policies that apply to all nodes / server channels at once;
  • JPPF-427 Customizable admin console splash screen;
  • JPPF-432 Extension point: driver statistics listener;
  • JPPF-434 Admin console: ability to select the statistics displayed in the server statistics view;
  • JPPF-439 Fully document load-balancing in JPPF;
  • JPPF-447 Sample illustrating one or more strategies to handle job dependencies;
  • JPPF-449 Include the version number in JPPF jar file names.
  • Enhancements:
  • JPPF-266 Improve the doc on server statistics;
  • JPPF-289 special strings should be constants;
  • JPPF-422 Performance improvements for serialization schemes;
  • JPPF-425 Improvements to the (custom) load-balancer APIs;
  • JPPF-430 Android node: improve the UI for the default feedback screen;
  • JPPF-437 Add statistics to JPPFSystemInformation / execution policy properties;
  • JPPF-446 Provide/expose access to JPPFDistributedJob from a job UUID in local job notifications handler.
  • Tasks:
  • JPPF-423 Replace System.currentTimeMillis() with System.nanoTime() everywhere applicable;
  • JPPF-431 Update copyright's last year to 2016 in all headers.

New in JPPF 5.1.3 (Sep 20, 2016)

  • Bug fixes:
  • JPPF-440 Nodethreads load-balancing algorithm not working as expected;
  • JPPF-441 Inconsistencies in the SSL settings of the distributed configuration;
  • JPPF-442 Sections of the management guide use deprecated client APIs.

New in JPPF 5.2 Alpha (Sep 20, 2016)

  • New features highlights:
  • Administration console:
  • Node filtering with an execution policy editor with import/export capabilities;
  • Ability to select the visible statistics in the server statiscs view;
  • Syntax hihghlighting in all the editors: properties/node filtering;
  • The admin console splash screen is now customizable via the configuration.
  • Configuration:
  • All documented properties are now defined as constants;
  • A new and elegant API was created to handle them easily;
  • It is now possible to specify in the configuration which JVM to use for the nodes and servers;
  • This also applies to master and slave nodes when they are (re)started.
  • Customization/extension:
  • Ability to chain serialization schemes to provide compression or encryption over actual serialization;
  • The JPPF serialization scheme was thouroughly optimized and is now faster than the Java serialization;
  • It is now possible to register for statistics change events in the server.
  • Android node:
  • It is now possible to configure the node to stop working or terminate when the device's battery is low.
  • Resolved issues:
  • Features:
  • JPPF-176 Enable specifying the JVM location for the driver and node launcher;
  • JPPF-407 Admin-UI: Filter for nodes;
  • JPPF-421 Android node: ability to throttle/suspend/kill the node based on battery state;
  • JPPF-427 Customizable admin console splash screen;
  • JPPF-432 Extension point: driver statistics listener;
  • JPPF-434 Admin console: ability to select the statistics displayed in the server statistics view.
  • Enhancements:
  • JPPF-289 special strings should be constants;
  • JPPF-422 Performance improvements for serialization schemes.
  • Tasks:
  • JPPF-423 Replace System.currentTimeMillis() with System.nanoTime() everywhere applicable;
  • JPPF-431 Update copyright's last year to 2016 in all headers.

New in JPPF 5.1.2 (Sep 20, 2016)

  • Bug fixes:
  • JPPF-428 Driver gets stuck when configured with local node on a machine with only 1 processor.

New in JPPF 5.1.1 (Sep 20, 2016)

  • Bug fixes:
  • JPPF-418 Memory leak in client queue;
  • JPPF-419 JPPF Admin Gui does not display pending actions;
  • JPPF-424 Redirection of System.out and System.err is not working for drivers.

New in JPPF 5.0.5 (Sep 20, 2016)

  • Enhancements:
  • JPPF-413 Job stuck when dispatched to a peer driver with no node;
  • JPPF-416 Remove inital delay when client/node connects to the server;
  • JPPF-420 Provide access to JPPFClient, TopologyManager and JobMonitor of embedded admin console.
  • Bug fixes:
  • JPPF-409 IllegalStateException in the client when submitting a broadcast job;
  • JPPF-411 Admin console fills the log with MissingResourceException when logging is at DEBUG level;
  • JPPF-414 Multiple issues in the fractal images sample;
  • JPPF-418 Memory leak in client queue.

New in JPPF 5.0.3 (Sep 19, 2016)

  • Bug fixes:
  • JPPF-392 Unresponsive node JMX hangs all driver JMX node info;
  • JPPF-393 Some admin console actions are executed in the AWT event thread;
  • JPPF-397 Improper parsing of JVM args in jppf.jvm.options configuration property;
  • JPPF-400 Slave node restart not working.

New in JPPF 5.0.2 (May 5, 2015)

  • Bug fixes:
  • Confusing IOException from the JMX connector upon closing a JPPFClient
  • Missing documentation on cancelling and monitoring node pending actions
  • Class loader issues prevent the client from initializing
  • Admin GUI index out of bounds error
  • Error in the gui.bat script for running the Apache daemon's monitor UI
  • Custom load balancer sample has an incorrect name for the service definition file
  • Enhancements:
  • Improvements for node host name resolution
  • Add getActiveState() and setActiveState() to JPPFDriverAdminMBean

New in JPPF 5.0.1 (Apr 27, 2015)

  • Bug fixes:
  • JPPF-379 Node idle host is broken
  • Enhancements:
  • JPPF-366 Enable the nodes to expose and cancel any pending/deferred action

New in JPPF 5.0 (Mar 2, 2015)

  • Enhancements:
  • JPPF-306 Revisit the samples to apply the job streaming pattern where applicable
  • JPPF-307 Server scalability: improve the thread pool handling for NIO operations
  • JPPF-310 Improve the handling of non-serializable tasks in the client.
  • JPPF-316 Improve server responsiveness when many nodes connect at once
  • JPPF-317 Add awaitXXX methods to the client side connection and JMX pools
  • JPPF-322 Properties substitutions: implement missing uses cases, improve resources usage
  • JPPF-332 Change all popup windows and child frames to modeless dialogs
  • JPPF-350 Add a CLOSED status for client to server connections
  • JPPF-367 Document which jars each package can be found in
  • JPPF-369 Add nodesInformation(NodeSelector) method to JPPFDriverManagementMBean
  • New features:
  • JPPF-6 Improvements for nodes in idle mode
  • JPPF-29 Ability to disable resource lookup in the file system
  • JPPF-261 Refactor the jar packaging in the JPPF distribution
  • JPPF-262 Integrate the functionality of JPPFResultCollector into JPPFJob
  • JPPF-294 Ability for individual connection pools to specify whether they use SSL
  • JPPF-295 Execution policies should have access to job and grid information
  • JPPF-298 .Net bridge for JPPF
  • JPPF-303 Let node shutdown and reprovisioning respect executing nodes
  • JPPF-314 Admin console charts: add new chart types and fields
  • JPPF-315 Admin console support for pluggable components and external GUI integration
  • JPPF-318 Provide a helper class for building job streams
  • JPPF-323 Integrate Idle Host mode as part of the main code
  • JPPF-330 Add a Task.getTaskClassLoader() method
  • JPPF-334 Provide physical/virtual machine RAM information for nodes and drivers
  • JPPF-336 New sample: admin console pluggable view
  • JPPF-341 Allow Monitoring and Administration Tool to display either HostName or IP
  • JPPF-348 Ability to import/export the admin console settings
  • JPPF-349 Admin console: ability to hide columns in tree table views
  • JPPF-352 Alternative to drivers and nodes as Windows services using Apache commons daemon
  • JPPF-353 Notifications of tasks completion status in the server
  • Tasks:
  • JPPF-293 Configuration properties resolution as part of TypedProperties
  • JPPF-296 Rename SubmissionStatusXXX classes into JobStatusXXX
  • JPPF-358 Update headers copyright end date to 2015

New in JPPF 5.0 Beta (Feb 11, 2015)

  • Enhancements:
  • JPPF-306 Revisit the samples to apply the job streaming pattern where applicable
  • JPPF-307 Server scalability: improve the thread pool handling for NIO operations
  • JPPF-316 Improve server responsiveness when many nodes connect at once
  • JPPF-317 Add awaitXXX methods to the client side connection and JMX pools
  • JPPF-322 Properties substitutions: implement missing uses cases, improve resources usage
  • JPPF-332 Change all popup windows and child frames to modeless dialogs
  • JPPF-350 Add a CLOSED status for client to server connections
  • New Features:
  • JPPF-6 Improvements for nodes in idle mode
  • JPPF-29 Ability to disable resource lookup in the file system
  • JPPF-261 Refactor the jar packaging in the JPPF distribution
  • JPPF-262 Integrate the functionality of JPPFResultCollector into JPPFJob
  • JPPF-294 Ability for individual connection pools to specify whether they use SSL
  • JPPF-295 Execution policies should have access to job and grid information
  • JPPF-298 .Net bridge for JPPF
  • JPPF-303 Let node shutdown and reprovisioning respect executing nodes
  • JPPF-314 Admin console charts: add new chart types and fields
  • JPPF-315 Admin console support for pluggable components and external GUI integration
  • JPPF-318 Provide a helper class for building job streams
  • JPPF-323 Integrate Idle Host mode as part of the main code
  • JPPF-330 Add a Task.getTaskClassLoader() method
  • JPPF-334 Provide physical/virtual machine RAM information for nodes and drivers
  • JPPF-336 New sample: admin console pluggable view
  • JPPF-341 Allow Monitoring and Administration Tool to display either HostName or IP
  • JPPF-348 Ability to import/export the admin console settings
  • JPPF-349 Admin console: ability to hide columns in tree table views
  • Tasks:
  • JPPF-293 Configuration properties resolution as part of TypedProperties
  • JPPF-296 Rename SubmissionStatusXXX classes into JobStatusXXX
  • JPPF-358 Update headers copyright end date to 2015

New in JPPF 4.2.6 (Feb 11, 2015)

  • Bug fixes:
  • JPPF-357 J2EE connector does not work with Wildfly 8.x app server
  • JPPF-359 Node unable to reconnect when connection is closed from a separate thread
  • JPPF-360 Nodes not enrolled in tasks distribution when JMX server is disabled or unreachable
  • JPPF-361 Driver sends results for wrong job upon task resubmit
  • Enhancements:
  • JPPF-362 Ability for the cient to handle multiple class loaders per job

New in JPPF 4.2.5 (Dec 29, 2014)

  • Bug fixes:
  • JPPF-354 NPE in the node notification forwarding mechanism
  • Enhancements:
  • JPPF-355 Add an "interruptible" flag to the tasks

New in JPPF 4.2.4 (Nov 17, 2014)

  • Bug fixes:
  • JPPF-340 Deadlock on task completion
  • JPPF-342 Uncontrolled incrementing of idle node count
  • JPPF-343 Use of log4j2 with console appender causes slave node to hang
  • JPPF-344 Server deadlock with many slave nodes
  • JPPF-345 Shutdown vs. Provisioning race condition causes duplicate nodes with incomplete tasks
  • Enhancements:
  • JPPF-346 Make JPPFManagementInfo immutable

New in JPPF 5.0 Alpha (Sep 15, 2014)

  • Enhancements:
  • JPPF-306 Revisit the samples to apply the job streaming pattern where applicable
  • JPPF-307 Server scalability: improve the thread pool handling for NIO operations
  • JPPF-317 Add awaitXXX methods to the client side connection and JMX pools
  • JPPF-322 Properties substitutions: implement missing uses cases, improve resources usage
  • Feature requests:
  • JPPF-6 Improvements for nodes in idle mode
  • JPPF-261 Refactor the jar packaging in the JPPF distribution
  • JPPF-262 Integrate the functionality of JPPFResultCollector into JPPFJob
  • JPPF-294 Ability for individual connection pools to specify whether they use SSL
  • JPPF-295 Execution policies should have access to job and grid information
  • JPPF-303 Let node shutdown and reprovisioning respect executing nodes
  • JPPF-314 Admin console charts: add new chart types and fields
  • JPPF-318 Provide a helper class for building job streams
  • JPPF-323 Integrate Idle Host mode as part of the main code
  • Tasks:
  • JPPF-293 Configuration properties resolution as part of TypedProperties

New in JPPF 4.1.3 (Jul 7, 2014)

  • JPPF-281 Many failed node reconnection attempts upon restart request
  • JPPF-284 Admin console job view not updated upon node disconnect
  • JPPF-287 Typos in docs
  • JPPF-290 New connected nodes are not automatically enrolled in notification forwarding
  • JPPF-291 Wrong configuration / startup scripts for Sequence Alignment sample

New in JPPF 4.2 Beta (Jun 17, 2014)

  • Enhancements:
  • JPPF-282 Allow job SLA's maxTaskResubmits attribute to apply upon node error
  • JPPF-285 Review and fix the doc on management and monitoring
  • Feature requests:
  • JPPF-250 Enable separate JMX connection pool for each client connection pool
  • JPPF-251 Implement and document global performance configuration properties
  • JPPF-260 Deprecate usage of TaskResultListener in exposed APIs
  • JPPF-270 Execution policy for valid subnet bitmask
  • JPPF-272 Add maximum number of resubmits attribute at the task level
  • JPPF-277 Execution policy which evaluates to an ordered list of prefered policies
  • JPPF-279 Make JPPFJob extend java.util.concurrent.Future

New in JPPF 4.1.2 (Jun 3, 2014)

  • Bug fixes:
  • JPPF-265 Node initialization hooks are executed by the driver
  • JPPF-267 Driver queue incorrectly increments/decrements when failed nodes present
  • JPPF-271 Lower the visiblity of log message upon connectionFailed() notification
  • JPPF-273 Documentation for CustomPolicy needs update for v4
  • JPPF-274 Server-local nodes cannot be managed
  • JPPF-275 Dependency on commons-io is missing in maven artifacts
  • JPPF-276 The management port of a server-local node cannot be configured separately

New in JPPF 4.1.1 (May 16, 2014)

  • Enhancements:
  • JPPF-257 Better exception handling for overriden or custom TaskResultListener implementations
  • Bug fixes:
  • JPPF-252 Admin GUI fails to handle the nodes when discovery is disabled
  • JPPF-259 JPPFResultCollector.getAllResults() returns null at the time JobListener.jobEnded() is called
  • JPPF-263 The cancel upon client disconnect attribute is not working

New in JPPF 4.1 (Apr 22, 2014)

  • Node provisioning:
  • Not enough nodes in your grid when the workload peaks? Start new nodes on demand wih the node provisioning facility!
  • grow or shrink your JPPF grid dynamically
  • accessible via API and the administration console
  • see it in action with the Adaptive Grid example
  • Customizable node connection strategies:
  • Define which server your nodes will connect and failover to with the connection strategy API. A built-in implementation is provided, which relies on a CSV file of server definitions and fails over to the configuration-based default when no server is available.
  • Client connection pools
  • A new client API enables exploring and growing or shrinking client to server connections dynamically
  • See it in action in the Adaptive Grid example
  • Connection pools of auto-discovered servers, as well as the local executor, can now be assigned a priority
  • Connection failover based on the priority of the server connections was integrated back into the core client functionality. The ClientWithFailover feature was deprecated accordingly
  • Powerful configuration enhancements:
  • Variable substitutions for property values: the syntax ${property} can be used anywhere in the configuration files
  • Similarly, the ${env.VARIABLE} syntax enables environment variables substitution in configuration files
  • Scripting of configuration properties: the property values can now be defined as an expression in any JSR 223-compliant dynamic script language
  • On-demand task resubmission:
  • Any JPPF task can now schedule itself for re-submission.
  • Capture of nodes and servers console output to files:
  • The output of the JPPF nodes and server processes can now be redirected to files, for later retrieval and analysis.
  • New client job queue listener API:
  • A new client API allows client applications to receive notifications of jobs
  • added to or removed from the job queue.
  • Documentation improvements:
  • A new section "Putting it all together" was added to the configuration guide.
  • The JPPF tutorial was updated to reflect the greatest and latest functionalities
  • List of new features in JPPF:
  • JPPF-115 Node provisioning facility
  • JPPF-212 Add a hook for specifying the server to which a node should connect
  • JPPF-214 Ability to redirect std and err output for nodes and drivers
  • JPPF-215 Configuration enhancement: variable substitutions
  • JPPF-216 Configuration enhancement: scripted property values
  • JPPF-217 Ability to disable the node class loader resource cache
  • JPPF-221 Ability to provide the driver management port to the client during handshake
  • JPPF-223 Configuration guide: add a "putting it all together" section
  • JPPF-231 Assign a priority to the local executor and auto-discovered connections
  • JPPF-233 Ability for a task to schedule itself for resubmission
  • JPPF-234 Change the size of client connection pools dynamically
  • JPPF-240 Make the JPPFClient and JPPFClientConnection class hierarchies implement AutoCloseable
  • JPPF-242 Listener API for notification of client queue events
  • JPPF-245 New sample demonstrating the use of dynamic client connection pools size and node provisioning
  • List of enhancements:
  • JPPF-219 Unambiguous way to distinguish between JPPF and user-defined task notifications
  • JPPF-241 Update the JPPF tutorial
  • List of implemented tasks:
  • JPPF-152 Refactor the client API to provide access to connections organized into pools
  • JPPF-236 Optimize build scripts
  • JPPF-244 Deprecate ClientWithFailover

New in JPPF 4.0.3 (Apr 16, 2014)

  • Enhancements:
  • JPPF-246 Reduce the number of threads created by the JMX connections
  • Bug fixes:
  • JPPF-243 Admin tool reports a wrong number of nodes
  • JPPF-247 Job notifications are not sent upon requeuing in the client

New in JPPF 4.1 Beta (Mar 31, 2014)

  • Enhancements:
  • JPPF-219 Unambiguous way to distinguish between JPPF and user-defined task notifications
  • Feature requests:
  • JPPF-115 Node provisioning facility
  • JPPF-212 Add a hook for specifying the server to which a node should connect
  • JPPF-214 Ability to redirect std and err output for nodes and drivers
  • JPPF-215 Configuration enhancement: variable substitutions
  • JPPF-216 Configuration enhancement: scripted property values
  • JPPF-217 Ability to disable the node class loader resource cache
  • JPPF-221 Ability to provide the driver management port to the client during handshake
  • JPPF-223 Configuration guide: add a "putting it all together" section
  • JPPF-231 Assign a priority to the local executor and auto-discovered connections
  • JPPF-233 Ability for a task to schedule itself for resubmission
  • Tasks:
  • JPPF-152 Refactor the client API to provide access to connections organized into pools

New in JPPF 4.0.1 (Mar 3, 2014)

  • Enhancements:
  • JPPF-224 Improve notes about driver1.jppf.pool.size setting to specimen client properties file
  • Bug fixes:
  • JPPF-213 ClassCastException in Kryo serializer
  • JPPF-218 Calling fireNotification() from a task does not send notifications to local listeners
  • JPPF-220 jppf-gui.properties should mention driver1.jppf.management.port
  • JPPF-222 Class path in the configuration file of the wrapper does not match the jar file provided
  • JPPF-225 Invalid remove() operation after OutOfMemory exception
  • JPPF-226 StackOverflowError when running built-in screensaver

New in JPPF 4.0 (Jan 14, 2014)

  • Support for Java 7 and later:
  • As of this release, JPPF will stop supporting Java 6 and will only run on Java 7 and later.
  • Application code written and compiled with Java 6 will still run as is.
  • Full support for volunteer computing:
  • "JPPF@home" is now a reality. Build your volunteer computing project with all the benefits of a JPPF Grid and the underlying Java technologies. This is made possible with the addition of new capabilities which can be combined or used individually and enhance the scalability and reliability of JPPF grids:
  • Offline nodes work disconnected from the grid and only connect to get more work
  • New fault-tolerance capabilities handle cases when a node fails to return results
  • Customizable screen saver associated with each node, with entry points for receiving feedback from the tasks and jobs at any point of their life cycle. JPPF also includes a full-fledged, highly personalizable, default animated screen saver
  • The ability to transport Java libraries along with the jobs enables the use of JPPF nodes as universal volunteer computing clients, enabling them to run multiple projects with a single installation
  • Support for dynamic scripting:
  • JPPF leverages the JSR 223 specification and corresponding javax.script APIs to enable dynamic scripting and raise its capabilities to a new level:
  • scripted tasks allow you to execute tasks entirely written in any JSR 223-compliant dynamic script language
  • scripted execution policies make node and server channel filtering easier and more powerful than ever
  • Management console enhancements:
  • Every tab in the administration console can be displayed in a separate view
  • New statistics were added to the server statistics view: class loading requests from the node and to the client, inbound and outbound network traffic to and from the nodes and clients
  • Statistics can now be exported to the clipboard from the server statistics view, as either CSV or formatted plain text
  • The statistics view now uses a flow layout for a better usability and user experience
  • Revamped task API:
  • The base class for JPPF tasks was genericized and expanded into an interface/abstract class pattern. This results in documented API changes. A best effort was made to keep backward compatibility with JPPF 3.3, with a single and rare exception. The vast majority of existing applications will still run with the old deprecated APIs
  • Exception handling: the getException() / setException() methods have been deprecated in favor of the more generic getThrowable() / setThrowable()
  • Tasks now have the native ability to send notifications to locally registered listeners, remote JMX listeners, or both
  • Configuration:
  • The configuration plugin API was extended to enable reading the configuration from character streams (Java readers) in addition to byte streams
  • Configuration sources can now include other sources at any level of nesting, to enhance the readability, modularity and maintenance of JPPF configuration files
  • J2EE connector enhancements:
  • The J2EE connector client API was refactored so as to use the same code base as the standalone client
  • The JPPF configuration can now be updated dynamically without restarting the application server
  • New and enhanced extension points:
  • A new serialization scheme API was implemented, to enable integration with a broader range of serialization frameworks, while keeping backward compatibility with older serialization schemes. A new sample illustrates how the integration with the Kryo framework can result in a major performance improvement.
  • Listeners to task notifications can now be registered with the nodes via the service provider interface
  • A screen saver can now be associated with a node, for use in a volunteer computing model, to add meaningful animated graphics, or even just for fun
  • New and enhanced samples:
  • The fractals generation sample was enhanced to enable recording, replaying, saving and loading sets of points in the Mandelbrot space. This enables creating slide-shows of Mandlebrot images with just a few clicks.
  • The new Mandelbrot.Movie@home sample produces a full-fledged node distribution that is ready to install in a volunteer computing grid. The sample generates movies based on record sets produced by the fractals generation sample
  • The Wikipedia word count sample illustrates how JPPF can tackle big data and job streaming
  • The new Kryo serialization sample demonstrates how to replace the default Java serialization with Kryo
  • Automated testing coverage:
  • Automated testing is a vital part of the JPPF development life cycle. Our automated testing framework creates small, but real, JPPF grids on the spot and uses the JPPF documented APIs to execute test cases based on JUnit.
  • The range of automated test cases was broadened to include all major features, and most minor ones
  • Various grid topologies are now included in the tests, incuding single servers or multiple servers in P2P, offline nodes, etc., with and without SSL/TLS communication
  • The J2EE connector is now automatically tested using scripts which download and install the application server, deploy the connector and test application, execute the JUnit-based tests and report the results
  • List of new features:
  • JPPF-8 Ability to export statistics
  • JPPF-11 Ability for the nodes to work offline
  • JPPF-18 Support for JVM-based dynamic languages
  • JPPF-20 Class loader statistics
  • JPPF-21 Data transfer statistics
  • JPPF-22 Make the client dynamically configurable
  • JPPF-127 Refactor the client and node APIs to use Task instead of JPPFTask
  • JPPF-135 Provide a more flexible mechanism for custom serialization extension
  • JPPF-137 Enabling a more flexible way of matching jobs to nodes
  • JPPF-155 Add Wikipedia database word count as a sample
  • JPPF-156 JCA connector: provide a mechanism for reconfiguration of the client without restart of the app server
  • JPPF-161 Ability to change the admin console layout
  • JPPF-173 Ability to include external configuration in the JPPF configuration
  • JPPF-175 Extend the JPPF network protocol to enable properly closing the network connections
  • JPPF-184 Optimize deserialization errors handling in the node
  • JPPF-193 Timeout of bundles dispatched to the nodes
  • JPPF-195 New "jppf@home" sample illustrating a volunteer computing model with JPPF
  • JPPF-196 Ability to associate a screen saver with a node
  • JPPF-197 Built-in ability for the tasks to send notifications during execution
  • JPPF-201 Recovery from hard failures between servers
  • JPPF-202 Drop support for OC4J app server in the JCA connector
  • JPPF-205 Ability to reset the JPPF client
  • JPPF-210 Add new execution policy executing an arbitrary script
  • JPPF-211 Document the statistics API
  • List of enhancements:
  • JPPF-93 Class loader enhancements: client channel requests
  • JPPF-143 Apply data transformation and serialization scheme to JMX data
  • JPPF-146 Fully automate unit testing for the J2EE connector
  • JPPF-182 Generalize the tasks exception property to Throwable type
  • JPPF-190 Improve handling of deserialization errors in the nodes
  • JPPF-204 Add the 'jppf.' prefix to the configuration properties that miss it
  • List of implemented tasks:
  • JPPF-144 Regroup NodeLifeCycleListener and NodeLifeCycleListenerEx into a single interface
  • JPPF-158 Refactor the entire statistics and performance monitoring APIs
  • JPPF-159 Provide an API for easily implementing simple hooks in any area
  • JPPF-167 Refactor the client API so that standalone and JCA client use the same code
  • JPPF-170 Move \"jdk7 add-ons\" to the \"common\" module
  • JPPF-181 Genericize the get methods of dictionary types
  • JPPF-191 Create minimal set of unit tests for SSL/TLS configurations
  • JPPF-192 Create minimal set of unit tests for multi-server configurations
  • JPPF-206 Document the API changes between 3.3 and 4.0
  • JPPF-208 Remove obsolete \"Task notifications\" sample
  • JPPF-209 Update javadoc links and copyright headers in the samples
  • List of bug fixes:
  • JPPF-165 JPPFConfiguration constructor and getConfigurationStream() method should be private
  • JPPF-194 Missing batching of class loading requests in class loading doc

New in JPPF 4.0 Alpha 2 (Oct 21, 2013)

  • Bug Fixes:
  • JPPF-165 JPPFConfiguration constructor and getConfigurationStream() method should be private
  • JPPF-194 Missing batching of class loading requests in class loading doc
  • Enhancements:
  • JPPF-93 Class loader enhancements: client channel requests
  • JPPF-143 Apply data transformation and serialization scheme to JMX data
  • JPPF-146 Fully automate unit testing for the J2EE connector
  • JPPF-182 Generalize the tasks exception property to Throwable type
  • JPPF-190 Improve handling of deserialization errors in the nodes
  • Feature requests:
  • JPPF-8 Ability to export statistics
  • JPPF-11 Ability for the nodes to work offline
  • JPPF-135 Provide a more flexible mechanism for custom serialization extension
  • JPPF-155 Add Wikipedia database word count as a sample
  • JPPF-161 Ability to change the admin console layout
  • JPPF-173 Ability to include external configuration in the JPPF configuration
  • JPPF-184 Optimize deserialization errors handling in the node
  • JPPF-193 Timeout of bundles dispatched to the nodes
  • Completed tasks:
  • JPPF-144 Regroup NodeLifeCycleListener and NodeLifeCycleListenerEx into a single interface
  • JPPF-159 Provide an API for easily implementing simple hooks in any area
  • JPPF-167 Refactor the client API so that standalone and JCA client use the same code
  • JPPF-170 Move \"jdk7 add-ons\" to the \"common\" module
  • JPPF-181 Genericize the get methods of dictionary types

New in JPPF 3.3.6 (Oct 10, 2013)

  • This maintenance release brings important bug fixes and enahncements.
  • Bug fixes:
  • JPPF-180 - Client class loading issues when using Weblogic 10.3.6 remote JDBC
  • JPPF-185 - NoClassDefFoundError in JPPFNode.reset()
  • JPPF-186 - SSL services unable to distinguish between client and node certificates
  • Enhancements:
  • JPPF-183 - Add relevant classes cache lookups in the driver
  • JPPF-187 - Ability to enable TCP keepalive from the configuration

New in JPPF 3.3.5 (Aug 20, 2013)

  • Bug fixes :
  • JPPF-166 Alternate configuration source incorrectly handled
  • JPPF-169 Distribution scripts are missing the execute permission
  • JPPF-171 Deadlock in the server upon client disconnection
  • JPPF-172 Failover in the client is not working
  • JPPF-174 Thread context class loader is null for client-local execution
  • JPPF-179 Deadlock in the driver
  • Enhancements :
  • JPPF-168 Ability to disable the class cache in the server
  • JPPF-178 Performance enhancement: remove unnecessary data from results sent by the node

New in JPPF 3.3.4 (Jul 8, 2013)

  • Bug fixes:
  • Improper handling of serialized tasks with a size > 2GB
  • OOME in the driver upon receiving large results from multiple nodes concurrently
  • OOME: PermGen space in a node after many reconnections
  • Class loading and configuration issues in JCA connector
  • The property jppf.local.execution.enabled not used at client startup

New in JPPF 3.3.3 (Jun 15, 2013)

  • Bug fixes:
  • Cancelling job from client API results in missing jobEnded() event
  • Calling AbstractJPPFClassLoader.close() leads to NoSuchMethodError
  • In the node, context class loader and task class loader do not match after first job execution
  • Issues when the client disconnects while a node has active class loading requests

New in JPPF 3.3.2 (May 24, 2013)

  • Bug fixes:
  • Node class loader's resource cache should perform proper cleanup
  • Node execution manager does not clean up the data provider after job execution
  • Deadlock in the driver
  • Deadlock in the admin console at startup
  • Enhancements:
  • Improvements in NodeExecutionManagerImpl
  • Enable on-demand cleanup of class loader resource cache

New in JPPF 3.3 (Apr 8, 2013)

  • Feature Requests:
  • JPPF-24 Ability to deactivate a node JPPF-26 Enable node management via the driver connection
  • JPPF-34 Inefficient load balancing with peer servers
  • JPPF-38 Use SplashScreen support from Java
  • JPPF-109 Pluggable error handler for NodeLifeCycleListener
  • JPPF-112 Refactor the admin console for management and monitoring via the driver
  • JPPF-119 Add JVM state monitoring and diagnostics for JPPF components JPPF-12 Using GPU performance
  • JPPF-121 Provide class loader hooks for reporting and analysis of loaded classes and resources
  • JPPF-133 Publish JPPF artifacts to maven central
  • Enhancements:
  • JPPF-68 Node: separation of class loader instances and driver connection JPPF-69 Minimize usage of static fields/instances in JPPF
  • JPPF-104 Inconsistent naming of the load-balancing properties
  • JPPF-118 Improvements in NodeExecutionManagerImpl
  • JPPF-124 Refactor the \"Extended Class Loading\" sample to use class loader reset ability
  • JPPF-128 Provide version information in the JPPFSystemInformation properties
  • JPPF-129 Enhancements to the node connection listener
  • Bug Fixes:
  • JPPF-102 Ongoing issues with the administration and monitoring console
  • JPPF-107 Missing exception handling upon invocation of NodeLifeCycleListener methods
  • JPPF-110 Proportional algorithm results in uneven load with small number of long-lived tasks
  • JPPF-113 NullPointerException in the console upon connection to first driver
  • JPPF-114 Missing unit tests for node management and monitoring APIs
  • JPPF-116 NPE in AbstractJPPFClassLoader.findResources()
  • JPPF-117 Task timeout is not working as expected
  • JPPF-120 [Regression] Impossible to make an SSL connection to the server
  • JPPF-122 JMX connection threads leak in the driver
  • JPPF-123 NPE at driver startup when jppf.ssl.server.port = -1
  • JPPF-125 Selection in job data panel does not update the buttons state
  • JPPF-126 Job cancelled from the admin console may get stuck in the server queue
  • JPPF-131 JPPF client does not release JMX thread upon connection failure
  • JPPF-132 The documentation on the JPPFClient API is incomplete
  • JPPF-134 Frequent driver reconnections cause job to hang in the client

New in JPPF 3.2.3 (Mar 13, 2013)

  • Bug fixes:
  • JMX connection threads leak in the driver
  • NPE at driver startup when jppf.ssl.server.port = -1
  • Selection in job data panel does not update the buttons state
  • Job cancelled from the admin console may get stuck in the server queue
  • Job hang when loading a large number of classes with multiple nodes
  • JPPF client does not release JMX thread upon connection failure
  • Enhancements:
  • Improvements in NodeExecutionManagerImpl

New in JPPF 3.3 Beta (Feb 18, 2013)

  • Bug fixes:
  • Missing exception handling upon invocation of NodeLifeCycleListener methods
  • Proportional algorithm results in uneven load with small number of long-lived tasks
  • NullPointerException in the console upon connection to first driver
  • Missing unit tests for node management and monitoring APIs
  • NPE in AbstractJPPFClassLoader.findResources()
  • Task timeout is not working as expected
  • [Regression] Impossible to make an SSL connection to the server
  • JMX connection threads leak in the driver
  • NPE at driver startup when jppf.ssl.server.port = -1
  • Selection in job data panel does not update the buttons state
  • Job cancelled from the admin console may get stuck in the server queue
  • Enhancements:
  • Node: separation of class loader instances and driver connection
  • Minimize usage of static fields/instances in
  • Inconsistent naming of the load-balancing properties
  • Improvements in NodeExecutionManagerImpl
  • Refactor the \"Extended Class Loading\" sample to use class loader reset ability
  • Feature requests:
  • Ability to deactivate a node
  • Enable node management via the driver connection
  • Use SplashScreen support from Java
  • Pluggable error handler for NodeLifeCycleListener
  • Refactor the admin console for management and monitoring via the driver

New in JPPF 3.2.2 (Jan 28, 2013)

  • Proportional algorithm results in uneven load with small number of long-lived tasks
  • NPE in AbstractJPPFClassLoader.findResources
  • Task timeout is not working as expected
  • (Regression) Impossible to make an SSL connection to the server

New in JPPF 3.3 Alpha (Jan 21, 2013)

  • Bug Fixes:
  • Temporary files disappear when setting a large MemoryMapDataProvider as data provider in a JPPFJob
  • Missing exception handling upon invocation of NodeLifeCycleListener methods JPPF-108 Deadlock in the server upon client disconnection
  • NullPointerException in the console upon connection to first driver
  • Missing unit tests for node management and monitoring APIs
  • NPE in AbstractJPPFClassLoader.findResources()
  • Feature Requests:
  • Ability to deactivate a node
  • Enable node management via the driver connection
  • Pluggable error handler for NodeLifeCycleListener
  • Refactor the admin console for management and monitoring via the driver

New in JPPF 3.2.1 (Jan 8, 2013)

  • Bugs fixes:
  • Temporary files disappear when setting a large MemoryMapDataProvider as data provider in a JPPFJob
  • Missing exception handling upon invocation of NodeLifeCycleListener methods
  • Deadlock in the server upon client disconnection
  • NullPointerException in the console upon connection to first driver
  • Missing unit tests for node management and monitoring APIs

New in JPPF 3.2 (Dec 18, 2012)

  • Load balancing in the client:
  • As for the server with the nodes, the client can now distribute jobs over multiple server channels and the local execution channel.
  • This opens up a broad variety of distribution capabilities, including:
  • distribution through connections to multiple servers
  • distribution through multiple connections to the same server
  • distribution to the client-local execution channel
  • any combination of the above Load-balancing / scheduling is applied in exactly the same way as within the server, with the same APIs and configuration properties and the ability to implement custom class loaders.
  • Client-side SLA:
  • All jobs now have a distinct service level agreement for the client-side dispatching of their tasks.
  • This provides the ability for each job to specifiy:
  • a start and expiration schedule on the client side
  • an execution policy to determine through which channels a job can be dispatched (channel filtering)
  • the maximum number of channels to dispatch to - as a result, the ability to specifiy local vs. remote execution on a per job basis
  • Executor services enhancements:
  • a data provider can now be sent along with the jobs
  • ability to register a listener to receive notfications of each job's execution status
  • a JPPF-specific CompletionListener is now available
  • Class loading improvements:
  • Parallel class loading requests from the same node are now batched and sent together to the server, providing a sigificant speed-up of the nodes performance
  • Nodes maintain a cache of classes and resources not found in the remote classpath, avoiding costly network requests and improving class loading performance overall
  • Local cache of resources found in remote classpaths can now be switched from file system to memory storage with automatic fallback strategy. This addresses environments where disk space available to the node is minimal or inexistent.
  • New JPPF task APIs:
  • Two very useful methods were added to JPPFTask:
  • isInNode() determines whether the task is executing within a node or in the client's local executor
  • compute(JPPFCallable) enables the execution of a callback in the client. This replaces the ClientDataProvider API which is now deprecated.
  • IPv6 ready:
  • All areas of JPPF networking have been updated to handle IPv6 addresses properly and transparently:
  • discovery information broadcast by the server
  • connectivity from the nodes and clients
  • JMX-based connections for management and monitoring of the Grid
  • Automated testing:
  • A major effort has taken place to provide automated testing of the JPPF features, to ensure that the quality of each release meets the expectations. This results in a large and growing set of tests based on JUnit and integrated into our development process.
  • An additional module was created to perform stress testing of JPPF grids and improve its stability and resilience under high-throughput and highly unstable networking conditions.
  • Feature Requests:
  • JPPF-3 API to provide information of client connections
  • JPPF-46 Missing public API to determine which and how many nodes are idle
  • JPPF-47 Add a management API to determine how many nodes are attached to a driver
  • JPPF-40 Provide ClientDataProvider functionality in the tasks
  • JPPF-36 Toggle Local execution per Job
  • JPPF-44 Restrict server broadcast to specific interfaces for discovery
  • JPPF-34 Inefficient load balancing with peer servers
  • JPPF-35 Job submission through multiple channels
  • JPPF-84 Add isLocal() to JPPFManagementInfo
  • JPPF-83 Add systemInformation() to JPPFClient, JPPFNode, JPPFDriver
  • JPPF-77 Extend Client, JPPFManagementInfo with identifiaction for local, remove node and peer driver
  • JPPF-101 Ability to provide dynamic binding for the driver
  • JPPF-30 Broadcast job: execute on ALL nodes (currently only ACTIVE)
  • Bug Fixes:
  • JPPF-5 NoSuchFieldException: target for ForkJoinWorkerThread
  • JPPF-43 MemLeak: ResourceCache (minor)
  • JPPF-60 NPE: AbstractJPPFClassLoader.findResources(284)
  • JPPF-67 NPE: periodic task
  • JPPF-71 Regression: administration console is broken
  • JPPF-54 LocalNode: long init when network is broken
  • JPPF-74 Reg: Failing test on slow single core machine
  • JPPF-73 Peer nodes - infinite reconnection
  • JPPF-75 NPE: display information about peer node in admin
  • JPPF-72 Server deadlock in TaskQueueChecker / NodeNioServer
  • JPPF-78 Generic serializer throws a ClassFormatError
  • JPPF-81 FAIL: TestExecutorServiceConfiguration.testSubmitWithClientExecutionPolicy
  • JPPF-82 FAIL: TestJobPersistence.testJobRecovery
  • JPPF-41 BarChart: queue size sometimes negative
  • JPPF-42 ServerStats/Latest number of jobs show negative value
  • JPPF-70 IllegalStateException: Job xxx already enqueued when job is submitted via multiple channels
  • JPPF-64 Deadlock: state transition in NodeClass and ClientClass
  • JPPF-85 P2P connection failure: IllegalArgumentException: bundle is null
  • JPPF-87 Memory leak in the driver: ServerJob instances fill the heap
  • JPPF-88 Nodes and drivers running as services cannot be restarted via JMX
  • JPPF-94 JPPF source distribution is missing 'jdk7-addons' and 'application-template' modules
  • JPPF-95 ConcurrentModificationException in DriverJobManagement.getAllJobIds()
  • JPPF-91 NPE: in class loaders when AbstractJPPFClassLoaderLifeCycle:loadRemoteData return NULL
  • JPPF-96 Deadlock in the client: RemoteChannelWrapper / TaskQUeueChecker JPPF-90 Job never ends after reconnection
  • JPPF-89 ConnectException during performTransition
  • JPPF-98 Server discovery threads are duplicated int he client
  • JPPF-92 Regression: results returned by the driver should depend on the driver load-balancer
  • JPPF-100 Missing deployment instructions for custom execution policies
  • JPPF-103 Node local resources cache may lead to grid hang in some environments

New in JPPF 3.1.4 (Nov 13, 2012)

  • Bug Fixes:
  • JPPF-58 JPPFResultCollector.setStatus(COMPLETE) is called twice for each job JPPF-59 Cannot submit multiple jobs concurrently with JCA adaptor
  • JPPF-62 Jobs with timeout expire in the client instead of the server
  • JPPF-65 Some threads are still alive when the client is closed
  • JPPF-78 Generic serializer throws a ClassFormatError
  • JPPF-88 Nodes and drivers running as services cannot be restarted via JMX
  • JPPF-94 JPPF source distribution is missing "jdk7-addons" and "application-template" modules
  • JPPF-95 ConcurrentModificationException in DriverJobManagement.getAllJobIds()
  • JPPF-96 Deadlock in the client: RemoteChannelWrapper / TaskQueueChecker
  • JPPF-97 OutOfMemoryError in the driver when using multiple client connections

New in JPPF 3.2 RC 2 (Nov 8, 2012)

  • Bug fixes:
  • JPPF-5 NoSuchFieldException: target for ForkJoinWorkerThread
  • JPPF-43 MemLeak: ResourceCache (minor)
  • JPPF-60 NPE: AbstractJPPFClassLoader.findResources(284)
  • JPPF-67 NPE: periodic task
  • JPPF-71 Regression: administration console is broken
  • JPPF-54 LocalNode: long init when network is broken
  • JPPF-74 Reg: Failing test on slow single core machine
  • JPPF-73 Peer nodes - infinite reconnection
  • JPPF-75 NPE: display information about peer node in admin
  • JPPF-72 Server deadlock in TaskQueueChecker / NodeNioServer
  • JPPF-78 Generic serializer throws a ClassFormatError
  • JPPF-81 FAIL: TestExecutorServiceConfiguration.testSubmitWithClientExecutionPolicy
  • JPPF-82 FAIL: TestJobPersistence.testJobRecovery
  • JPPF-41 BarChart: queue size sometimes negative
  • JPPF-42 ServerStats/Latest number of jobs show negative value
  • JPPF-70 IllegalStateException: Job xxx already enqueued when job is submitted via multiple channels
  • JPPF-64 Deadlock: state transition in NodeClass and ClientClass
  • JPPF-85 P2P connection failure: IllegalArgumentException: bundle is null
  • JPPF-87 Memory leak in the driver: ServerJob instances fill the heap
  • JPPF-88 Nodes and drivers running as services cannot be restarted via JMX
  • JPPF-94 JPPF source distribution is missing 'jdk7-addons' and 'application-template' modules
  • JPPF-95 ConcurrentModificationException in DriverJobManagement.getAllJobIds()
  • JPPF-96 Deadlock in the client: RemoteChannelWrapper / TaskQUeueChecker
  • Enhancements:
  • JPPF-50 Add data provider to the JPPFExecutor service job configuration
  • JPPF-55 Extensions to NodeLifeCycleListener
  • JPPF-45 Class loader enhancements
  • JPPF-66 Additional notifications needed for JobListener
  • JPPF-63 Add a separate job SLA for processing on the client side
  • JPPF-53 Enhancements to JPPFExecutorService
  • JPPF-76 Make sure JPPF is IPv6-ready
  • Feature requests:
  • JPPF-3 API to provide information of client connections
  • JPPF-46 Missing public API to determine which and how many nodes are idle
  • JPPF-47 Add a management API to determine how many nodes are attached to a driver
  • JPPF-40 Provide ClientDataProvider functionality in the tasks
  • JPPF-36 Toggle Local execution per Job
  • JPPF-44 Restrict server broadcast to specific interfaces for discovery
  • JPPF-34 Inefficient load balancing with peer servers
  • JPPF-35 Job submission through multiple channels
  • JPPF-84 Add isLocal() to JPPFManagementInfo

New in JPPF 3.1.3 (Sep 21, 2012)

  • Bugs fixes: JPPF-
  • Bad initialization of management broadcast information
  • Driver management port not used in the client when SSL is enabled
  • JPPFResultCollector.setStatus(COMPLETE) is called twice for each job
  • Cannot submit multiple jobs concurrently with JCA adaptor
  • Jobs with timeout expire in the client instead of the server
  • Some threads are still alive when the client is closed

New in JPPF 3.1.2 (Aug 27, 2012)

  • JPPF-48 Impossible to get the class loader of a Runnable submitted via JPPFExecutorService should not return null
  • JPPF-51 Leak in the node: task timeout timer thread groups
  • JPPF-52 MemLeak: JPPFLocalClassLoade

New in JPPF 3.1.1 (Jul 9, 2012)

  • Bundler.getMaxBundleSize() always returns 0
  • Job does not terminate when using connection pool
  • Local execution does not use configured number of threads
  • JMX: performConnection is blocking connectAndWait
  • Regression: driver2 waits till driver1 timeouts
  • ClientDataProvider: computeValue=null on drivers local node
  • Broadcast job: can hang on connection failure
  • Exception in resource cache when starting multiple nodes
  • Broadcast job not executed if submitted too soon
  • Errors in the documentation

New in JPPF 3.1 (Jul 3, 2012)

  • Security:
  • JPPF 3.1 brings a new security layer by performing all network communications through SSL/TLS, providing data encryption, data integrity and certificate-based authentication. Switching from plain to secure connections is as easy as toggling a single configuration flag. In this new context, a JPPF driver can serve both plain and secure connections, whereas clients and nodes attach via either. Secure communication has been implemented on top of all connections used by JPPF: client to server, node to server, server to server and JMX remote connectors.
  • Management and monitoring:
  • A new graph view of the grid topology has been added to the administration console A new management policy was added to test execution policies against the current grid state Jobs can now be cancelled directly from a standalone JPPF client or from a JCA connection to the J2EE connector Executor services Job SLAs and metadata, along with task timeout and cancel handlers, can now be dynamically configured for tasks and jobs submitted from a JPPFExecutorService
  • Nodes:
  • A new node extension enables switching the node execution model to a local fork/join model, using the JDK 7 APIs.
  • All implemented feature requests:
  • 2977885 - Add SSL capabilities to JPPF
  • 3390360 - Graph view of the grid topology (admin console)
  • 3442570 - Enable timeout/onCancel for Callable/Runnable/POJO tasks 3522495 - Add management capabilities to J2EE connector
  • 3502395 - Document runtime dependencies for JPPF components
  • 3488092 - Determine if a job SLA matches any node before submission 3481576 - ForkJoin executor service
  • 3353566 - Add JPPFClient.cancelJob()
  • 3285058 - Enable configurable load-balancing on the client
  • 3353578 - JPPFTask timeout for local execution

New in JPPF 3.0.1 (Apr 3, 2012)

  • Fixed bugs:
  • 3484823 - CommandLineTask does not provide the subprocess exit code
  • 3486440 - JPPFExecutorService.throws NPE on Future.get()
  • 3485206 - J2EE connector build fails
  • 3488090 - JMXConnectionWrapper.connectAndWait(0) does not wait
  • 3492730 - Tomcat port is missing jmxremote_optional.jar
  • 3504612 - IllegalAccessError with startup deployed on node and server
  • 3512624 - Bad handling of incorrect server port configuration
  • 3513973 - Client does not pick the right connection pool size

New in JPPF 3.0 (Jan 31, 2012)

  • Simplification and improvement of the configuration
  • Servers, nodes and clients now only require a single TCP port instead of 3 for executing jobs.
  • Adoption of the JMXMP remote connector allows JMX-based management to use a single port instead of 2.
  • Server discovery and manual configuration can now be mixed for clients and servers in P2P. Improved recovery and failover on the client side
  • A persistence manager allows job states to be recovered after an application crash. The persistence manager is an API which allows storing the states of the jobs on the fly and recover them after an application crash or restart. A default implementation is provided and demonstrated in a new sample. Upon recovery of a client connection to the server, only the un-executed tasks in each job are resubmitted.
  • Applications can now receive notifications when a job is sent to the server, and when the final results are returned. Class loading
  • The distributed class loading mechanism is now fully documented.
  • New extensions enable the optimization of the class loading overhead at node startup, along with the ability to update the classpath at runtime.
  • New class loader delegation model enables faster class loading.
  • A new sample illustrates how to automate the management of remote library repositories on the grid nodes. New customizations and extension points Ability to receive node connection events in the server.
  • Node initialization hooks enable sophisticated strategies for failover and recovery of broken server connections.
  • The node life cycle listener extension can now be deployed both at the server and node level. Administration console, management and monitoring improvements
  • The server statistics panel now displays jobs data.
  • The priority of each job can now be dynamically and remotely updated.
  • The driver system information can now be displayed in the admin console as for the nodes.
  • The number of idle nodes is now monitored in the server statistics. New samples
  • How to receive notifications of nodes connecting and disconnecting on the server.
  • Job recovery after an application crash.
  • Using a node initialization hook to implement a sophisticated failover mechanism.
  • Using the JPPF class loading extensions to automate the deployment and management of application libraries in the nodes at runtime.
  • All implemented feature requests:
  • Server:
  • 3315345 - NIO-based server to client communication
  • 3315349 - Have the driver use 1 port instead of three
  • 3370967 - Enable JMXMP remote connector
  • 3016253 - Add new extension points on node connection events
  • 3315028 - Configurable initial bundle size for proportional algorithm Node: 3405336 - Enable overriding the class loader delegation model
  • 3302047 - Use thread pool instead of timer for task timeout
  • 3424072 - Refactoring needed for node life cycle add-on
  • 3451045 - Node initialization hooks
  • Client: 3420815 - Make job priority manageable
  • 3314053 - Improve the flow of results for local execution
  • 3378701 - Enable or disable cancel job upon client disconnection
  • 3407602 - StartListener for jobs on the client side
  • 3362723 - Allow driver definition with auto discovery
  • 3158724 - Avoid resubmission of already executed tasks
  • 3427483 - Jobs persistence and failover on the client side
  • Administration console, monitoring and management:
  • 3299267 - Add job statistics in the server
  • 3423470 - Add number of idle nodes to server statistics
  • 3452103 - Driver system information in the admin console
  • 3420815 - Make job priority manageable
  • Other:
  • 3452118 - Code cleanup
  • 3434615 - Fix typos in source code/javadoc
  • 3439821 - Remove task cancel/restart features
  • 3400572 - Avoid 'SocketException: Address in use when localNode=T 3102697 - Document JPPF class loading in details

New in JPPF 2.5.5 (Dec 20, 2011)

  • Driver doesn't recognize that client connection was closed http://sourceforge.net/tracker/?func=detail&aid=3438303&group_id=135654&atid=733518 JPPFExecutorService.submit(Callable) doesn't handle JPPFTask http://sourceforge.net/tracker/?func=detail&aid=3442606&group_id=135654&atid=733518
  • Broadcasting service does not recover from network breakdown http://sourceforge.net/tracker/?func=detail&aid=3454260&group_id=135654&atid=733518
  • Broadcast job not executed when local execution is enabled http://sourceforge.net/tracker/?func=detail&aid=3398676&group_id=135654&atid=733518

New in JPPF 2.5.4 (Nov 14, 2011)

  • Bugs fixes:
  • Use of direct buffers causes mem leak and perf hotspot Mishandling of file permissions in ResourceCache
  • JPPFTaskFuture.get(time, unit) does not wait
  • Empty jobs are not handled properly
  • Node failover isn't working as expected JMXDriverConnectionWrapper.getAllJobIds() throws Exception

New in JPPF 1.0 Generally Available (Dec 28, 2007)

  • A new, very efficient load balancing algorithm was added.
  • The administration console was upgraded accordingly.
  • The server performance was enhanced.
  • A web search engine application was added to the samples pack.
  • Many minor bugs were fixed.