From 27bd9f561b466d20206c8ccf6216e51974648d29 Mon Sep 17 00:00:00 2001 From: Valerio Campanella Date: Fri, 14 Feb 2020 13:50:37 +0000 Subject: [PATCH 1/4] Corda 4.4 release notes --- docs/source/release-notes.rst | 63 ++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/docs/source/release-notes.rst b/docs/source/release-notes.rst index 8c427ed816..c13838693c 100644 --- a/docs/source/release-notes.rst +++ b/docs/source/release-notes.rst @@ -4,7 +4,68 @@ Release notes .. contents:: :depth: 2 -Welcome to the Corda 4.3 release notes. Please read these carefully to understand what’s new in this release and how the features can help you. Just as prior releases have brought with them commitments to wire and API stability, Corda 4.3 comes with those same guarantees. States and apps valid in Corda 3.0 are transparently usable in Corda 4.3. +Welcome to the Corda 4.4 release notes. Please read these carefully to understand what’s new in this release and how the features can help you. Just as prior releases have brought with them commitments to wire and API stability, Corda 4.4 comes with those same guarantees. States and apps valid in Corda 3.0 are transparently usable in Corda 4.4. + +.. _release_notes_v4_4: + +Corda 4.4 +========= + +Corda 4.4 lays the foundation of a new open-core approach for the Corda codebase. This involved a refactoring of the main functional components of Corda. Please consult :doc:`cordapp-overview.rst` to get an overview of the practical impact on CorDapp development. + +Furthermore, Corda 4.4 introduces improvements to the flow framework API, a new diagnostic ``ServiceHub`` call and includes a number of security enhancements. + +Changes for developers in Corda 4.4 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Flows API improvements ++++++++++++++++++++++++ + +Corda 4.4 introduces a new ``FlowLogic.await`` API that allows a CorDapp developers to suspend their flow when executing user-defined long-running operations (e.g. call-outs to external services, long-running DB operations). This prevents these long-running operations from blocking the flow thread, allowing other flows to progress in the interim. Previously, these operations had to be executed synchronously, blocking the flow thread. + +The CorDapp developer can decide whether to run these asynchronous flow operations on a dedicated node pool, or to handle the threading themselves directly. + +Note that as before, the flow framework suspends automatically for certain operations (e.g. when waiting to receive a message from a counterparty). These suspensions do not have to be triggered explicitly. + +The node operator can configure the number of threads to dedicate to external operations. + +Corda 4.4 also introduces a new ``HospitalizeFlowException`` exception type that, when thrown, causes a flow to halt execution and send itself to the flow hospital for observation. The flow will automatically be retried on the next node start. + +This exception gives user code a way to retry a flow from its last checkpoint if a known intermittent failure occurred. + + +Diagnostic API ++++++++++++++++++++++++ + +Corda 4.4 introduces a ``ServiceHub`` call available to CorDapp developers that allows them to access: + +* The edition of Corda being run (e.g. Open Source, Enterprise) +* The version of Corda being run including the patch number (eg. 3.2.20190215) + + +Security enhancements ++++++++++++++++++++++++ + +* The SSH server in the :doc:`shell` has been updated to remove outdated weak ciphers and algorithms. +* The ability to SSH into the standalone shell has been removed +* A new read-only RPC user role template has been documented in :doc:`shell` + + +Platform version change +~~~~~~~~~~~~~~~~~~~~~~~ + +Given the addition of new APIs, the platform version of Corda 4.4 has been bumped up from 5 to 6. This is to prevent CorDapps that use it being deployed onto nodes unable to host them. Note that the minimum platform version has not been changed - this means that older Corda nodes can still interoperate with Corda 4.4 nodes. Since the APIs added do not affect the wire protocol or have other zone-level implications, applications can take advantage of these new platform version 6 features even if the Corda 4.4 node is running on a network whose minimum platform version is 4. + +For more information on platform version, please see :doc:`versioning`. For more details on upgrading a CorDapp to use platform version 5, please see :doc:`app-upgrade-notes`. + + +Deprecations +~~~~~~~~~~~~ + + +Issues Fixed +~~~~~~~~~~~~ + .. _release_notes_v4_3: From c745f139135a67ae4c954145ca108df5d70521b7 Mon Sep 17 00:00:00 2001 From: Valerio Campanella Date: Fri, 14 Feb 2020 14:42:00 +0000 Subject: [PATCH 2/4] OS 4.4 release notes: fix incorrect info in flow api improvements section --- docs/source/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/release-notes.rst b/docs/source/release-notes.rst index c13838693c..dbe5964db2 100644 --- a/docs/source/release-notes.rst +++ b/docs/source/release-notes.rst @@ -23,7 +23,7 @@ Flows API improvements Corda 4.4 introduces a new ``FlowLogic.await`` API that allows a CorDapp developers to suspend their flow when executing user-defined long-running operations (e.g. call-outs to external services, long-running DB operations). This prevents these long-running operations from blocking the flow thread, allowing other flows to progress in the interim. Previously, these operations had to be executed synchronously, blocking the flow thread. -The CorDapp developer can decide whether to run these asynchronous flow operations on a dedicated node pool, or to handle the threading themselves directly. +The CorDapp developer can decide whether to run these asynchronous flow operations in a dedicated thread pool, or to handle the threading themselves directly. Note that as before, the flow framework suspends automatically for certain operations (e.g. when waiting to receive a message from a counterparty). These suspensions do not have to be triggered explicitly. From c23deee3fb4b793cc3d27a582df6374ea91d64ac Mon Sep 17 00:00:00 2001 From: Valerio Campanella Date: Mon, 17 Feb 2020 17:51:03 +0000 Subject: [PATCH 3/4] OS 4.4 release notes: address comments --- docs/source/release-notes.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/source/release-notes.rst b/docs/source/release-notes.rst index dbe5964db2..df6a62cfd0 100644 --- a/docs/source/release-notes.rst +++ b/docs/source/release-notes.rst @@ -4,7 +4,7 @@ Release notes .. contents:: :depth: 2 -Welcome to the Corda 4.4 release notes. Please read these carefully to understand what’s new in this release and how the features can help you. Just as prior releases have brought with them commitments to wire and API stability, Corda 4.4 comes with those same guarantees. States and apps valid in Corda 3.0 are transparently usable in Corda 4.4. +Welcome to the Corda 4.4 release notes. Please read these carefully to understand what’s new in this release and how the features can help you. Just as prior releases have brought with them commitments to wire and API stability, Corda 4.4 comes with those same guarantees. States and apps valid in Corda 3.0 are usable in Corda 4.4. .. _release_notes_v4_4: @@ -21,13 +21,13 @@ Changes for developers in Corda 4.4 Flows API improvements +++++++++++++++++++++++ -Corda 4.4 introduces a new ``FlowLogic.await`` API that allows a CorDapp developers to suspend their flow when executing user-defined long-running operations (e.g. call-outs to external services, long-running DB operations). This prevents these long-running operations from blocking the flow thread, allowing other flows to progress in the interim. Previously, these operations had to be executed synchronously, blocking the flow thread. +Corda 4.4 introduces a new ``FlowLogic.await`` API that allows a CorDapp developer to suspend their flow when executing user-defined long-running operations (e.g. call-outs to external services). This prevents these long-running operations from blocking the flow thread, allowing other flows to progress in the interim. Previously, these operations had to be executed synchronously, blocking the flow thread. The CorDapp developer can decide whether to run these asynchronous flow operations in a dedicated thread pool, or to handle the threading themselves directly. Note that as before, the flow framework suspends automatically for certain operations (e.g. when waiting to receive a message from a counterparty). These suspensions do not have to be triggered explicitly. -The node operator can configure the number of threads to dedicate to external operations. +The node operator can configure the number of threads in the threadpool to dedicate to external operations. Corda 4.4 also introduces a new ``HospitalizeFlowException`` exception type that, when thrown, causes a flow to halt execution and send itself to the flow hospital for observation. The flow will automatically be retried on the next node start. @@ -507,7 +507,7 @@ Corda 4 Welcome to the Corda 4 release notes. Please read these carefully to understand what's new in this release and how the changes can help you. Just as prior releases have brought with them commitments to wire and API stability, Corda 4 comes with those same guarantees. States and apps valid in -Corda 3 are transparently usable in Corda 4. +Corda 3 are usable in Corda 4. For app developers, we strongly recommend reading ":doc:`app-upgrade-notes`". This covers the upgrade procedure, along with how you can adjust your app to opt-in to new features making your app more secure and From 3eb88bca7dad0c78256d9ba43ca13bdb5439ba2d Mon Sep 17 00:00:00 2001 From: Valerio Campanella Date: Tue, 18 Feb 2020 17:37:41 +0000 Subject: [PATCH 4/4] OS 4.4 release notes: added pargraph on bonus AppServiceHub call, revised section title, removed deprecations section --- docs/source/release-notes.rst | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/source/release-notes.rst b/docs/source/release-notes.rst index df6a62cfd0..ff9c00a567 100644 --- a/docs/source/release-notes.rst +++ b/docs/source/release-notes.rst @@ -34,14 +34,15 @@ Corda 4.4 also introduces a new ``HospitalizeFlowException`` exception type that This exception gives user code a way to retry a flow from its last checkpoint if a known intermittent failure occurred. -Diagnostic API +New utility APIs +++++++++++++++++++++++ -Corda 4.4 introduces a ``ServiceHub`` call available to CorDapp developers that allows them to access: +Corda 4.4 introduces a new call (``ServiceHub.DiagnosticsService``) available to CorDapp developers that allows them to access: * The edition of Corda being run (e.g. Open Source, Enterprise) * The version of Corda being run including the patch number (eg. 3.2.20190215) +Corda 4.4 also provides a callback (``AppServiceHub.register``) to allow Corda services to register custom actions to be performed once the node is fully started-up. This pattern prevents issues caused by the service trying to immediately access a part of the node that hadn't yet been initialised . Security enhancements +++++++++++++++++++++++ @@ -59,10 +60,6 @@ Given the addition of new APIs, the platform version of Corda 4.4 has been bumpe For more information on platform version, please see :doc:`versioning`. For more details on upgrading a CorDapp to use platform version 5, please see :doc:`app-upgrade-notes`. -Deprecations -~~~~~~~~~~~~ - - Issues Fixed ~~~~~~~~~~~~