JPPF 6.2 new features highlights
Tasks dependencies
- tasks within the same job can now depend on each other
- JPPF guarantees that all dependencies of a task are executed before it can start
- traversal of the tasks graph can be performed on either server or client side
- built-in detection and handling of dependency cycles
JPPF in Docker containers and Kubernetes
- the JPPF drivers, nodes and web administration console are now available as Docker images, publicly available on Docker Hub
- JPPF grids can be deployed on Kubernetes clusters using the JPPF Helm chart
- JPPF grids can also be deployed on Docker swarm clusters as Docker service stacks
Performance improvement
A new client-side cache of class definitions was implemented, to improve the overall dynamic class loading performance.
Job dependencies and job graphs
- JPPF jobs can now be organized into dependency graphs, where a job can start only when its dependencies have completed
- new convenient and intuitive APIs to define the dependency graphs
- automatic detection and handling of circular dependencies (i.e. cycles)
- by default, cancellation of a job is automatically cascaded to dependent jobs. This can be overriden for each job
- built-in management MBean to monitor the state of the job dependency graph
DSL for job selectors
The job selector API was extended to include complex boolean expressions and comparison tests, in a way similar to execution policies
- boolean opearators AND, OR, XOR, Negate
- comparison operators on Comparable values: more than, less than, at least, at most
- range comparison operators on Comparable values: between with inclusion or exclusion of upper and lower bounds
- "contains", "one of" and "regex" selectors
- job name selector
- already existing selectors: all jobs, job uuids, scripted and custom
Use of java.time.* classes for JPPF schedules
java.time.* classes can now be used to build JPPFSchedule instances to specify jobs start or expiration schedules
Inspection of the client-side jobs queue
New methods were added to the client API to inspect the jobs queue
Major refactoring of the management and monitoring MBeans
- the node forwarding MBean now provides compile-time typing of the results
- all built-in MBeans are annotated with metadata available at runtime
- the same metadata is used to generate static forwarding proxies (and their unit tests) for the built-in node MBeans
- the MBeans metadata is also used to generate the built-in MBeans reference documentation
- the management and monitoring documentation was refactored for greater clarity and readability
Administration and monitoring console improvements
- numerous performance hotspots were identified and fixed, both in the monitoring API and in the UI rendering code
- for license compatibility reasons, the JFreeChart charting library was replaced with XCharts, resulting in further performance improvements
Performance improvements in the driver and JMX remote connector
Several performance sinks were identified and fixed, in high stress scenarios where a very large number of job lifecyclle notifications were generated, causing high spikes in CPU and memory usage.
All implemented issues
Features
- JPPF-583 Tasks dependencies within a job
- JPPF-589 Docker images for JPPF components
- JPPF-582 Job dependencies and job graphs
- JPPF-600 DSL for complex job selectors
- JPPF-607 Reorganize the documentation on management and monitoring
- JPPF-608 Typed results map for JPPFNodeForwardingMBean methods
Enhancements
- JPPF-586 Cache of class/resource definitions in the client
- JPPF-587 Ability to create JPPFSchedule instances using java.time.* APIs
- JPPF-601 Add a client API to list the queued jobs in a JPPF client
- JPPF-604 Various performance improvements
- JPPF-610 Add an API to instrospect the properties defined in the monitoring data providers
- JPPF-611 Document the values limits and validity in the constructors of JPPFSchedule
Tasks
- JPPF-584 Refactor the distributed class loader into the asynchronous Nio communication model
- JPPF-591 Come up with a lightweight test suite for day-to-day development purposes
- JPPF-595 Remove Android and .Net sections of the documentation
- JPPF-592 Security scans
- JPPF-598 Fix vulnerabilities found in security scans
- JPPF-609 Explore the possibility to replace JFreeChart with XChart in the admin console
Bug fixes
- JPPF-605 Investigate the performance of the monitoring APIs and administration console
- JPPF-612 JMX remote connector: poor handling of large number of notifications
Links
JPPF Links: Web Site - Downloads - Documentation - User forums - Issue tracker