Uploaded image for project: 'SAFe Program'
  1. SAFe Program
  2. SP-3185

Wait for underlying resources to be ready on Subarray Configure

Change Owns to Parent OfsSet start and due date...
    XporterXMLWordPrintable

Details

    • Enabler
    • Must have
    • PI18
    • COM SDP SW
    • None
    • True
    • Data Processing
    • Hide

      See Why? in description

      Show
      See Why? in description
    • Hide

      See What? in description

      Show
      See What? in description
    • Intra Program
    • 2
    • 2
    • 0
    • Team_ORCA
    • Sprint 5
    • Hide

      Demoed at System Demo 18.6 (slides)

      AC1:

      SDP components have been updated to implement this feature:

      • SDP LMC: v0.22.0 (REL-655)
      • SDP Helm Deployer: v0.12.1 (REL-665; see also changes listed in v0.12.0 - REL-656)
      • SDP Scripting Library: v0.5.2 (REL-664, also superseded versions: 0.5.0, 0.5.1 - REL-654, REL-660)

      All of the processing scripts have been updated to use ska-sdp-scripting 0.5.0. The realtime processing scripts were further updated to use 0.5.2 (bug fix only relevant for realtime scripts). Versions integrated with SDP tests:

      • test-receive-addresses 0.6.1
      • vis-receive 1.1.1

      Relevant merge requests:

      The new versions are integrated as part of MR162 (draft) of ska-sdp-integration.

      AC2:

      The existing Configure command test was updated in the SDP integration repository so that now it accounts for the new behaviour. For this, test-receive-addresses==0.6.1 is used, which has been updated to take a new argument called `time-to-ready`. This is translated to a time-delay in the code between setting the `deployments_ready` key in the processing block state from False to True and hence triggering the obsState change.

      See MRs: 

      AC3:

      Workarounds are removed as part of the following merge requests:

      • SDP integration: MR162
      • SDP notebooks: MR25 (draft)
      Show
      Demoed at System Demo 18.6 ( slides ) AC1: SDP components have been updated to implement this feature: SDP LMC: v0.22.0 ( REL-655 ) SDP Helm Deployer: v0.12.1 ( REL-665 ; see also changes listed in v0.12.0 - REL-656 ) SDP Scripting Library: v0.5.2 ( REL-664 , also superseded versions: 0.5.0, 0.5.1 - REL-654 , REL-660 ) All of the processing scripts have been updated to use ska-sdp-scripting 0.5.0. The realtime processing scripts were further updated to use 0.5.2 (bug fix only relevant for realtime scripts). Versions integrated with SDP tests: test-receive-addresses 0.6.1 vis-receive 1.1.1 Relevant merge requests: LMC: MR63 , MR66 Helm Deployer: MR36 , MR37 , MR38 , MR41 , MR42 , MR43 Scripting Library: MR39 , MR40 , MR41 , MR42 , MR43 , MR44 Scripts: MR69 , MR70 The new versions are integrated as part of MR162 (draft) of ska-sdp-integration. AC2: The existing Configure command test was updated in the SDP integration repository so that now it accounts for the new behaviour. For this, test-receive-addresses==0.6.1 is used, which has been updated to take a new argument called `time-to-ready`. This is translated to a time-delay in the code between setting the `deployments_ready` key in the processing block state from False to True and hence triggering the obsState change. See MRs:  Scripting Library Script   SDP integration AC3: Workarounds are removed as part of the following merge requests: SDP integration: MR162 SDP notebooks: MR25 (draft)
    • 18.6
    • Stories Completed, Integrated, Solution Intent Updated, BDD Testing Passes (no errors), Outcomes Reviewed, NFRS met, Demonstrated, Satisfies Acceptance Criteria, Accepted by FO
    • PI24 - UNCOVERED

    • SOL-G4

    Description

      The SDP subarray, like all subarray devices, goes through the AssignResources command into the IDLE obsState, and then through Configure to READY.

      In the first command, all the necessary resources needed by an observation are specified (e.g., the PB to create, its script and its parameters, etc.), and the command only transitions the subarray to IDLE once the resources have been created. For example, in the case of the vis-receive script, the subarray transitions to IDLE as soon as the vis-receive script launches the underlying receive Helm Chart.

      In the second command, the subarray transitions to READY directly without further ado (except for checking it is in a valid obsState that allows the transition).

      This situation creates a race condition for external SDP users: if the AssignResources returns, and the Configure command is issued immediately after, the resources that have just been created might not be ready just yet. Following the example above, the receiver pod might take a while to transition to its Ready phase, depending on how long its initContainers take to run, any filesystem latencies, Kubernetes scheduling latencies, etc., so by the time the Configure command arrives the subarray will transition to READY, thus allowing a Scan to start, even though the visibility receiver might not be ready to actually receive any data.

      To overcome this limitation, different techniques have been developed in different places. For instance:

      To avoid these horrible hacks, after receiving the Configure command the subarray should check that the visibility receive is indeed ready before entering the READY obsState. If it is not ready immediately, it can enter the transitional CONFIGURING obsState and subsequently go to READY when that condition is met.

      In order to do this, the processing script needs to monitor the status of the pods (via the Helm deployer) and report their status in the processing block state. The subarray can use this information to make the appropriate state transitions (cf. the EMPTY-RESOURCING-IDLE transition in response to the AssignResources command).

      Who?

      • SDP developers.
      • AIV engineers.
      • Commissioning scientists.

      What?

      • SDP Subarrays ensure that the resources created as part of AssignResources are ready by the time the READY obsState is reached.
      • A new test checks the behavior by starting a script with a configurable minimum time-to-ready delay, checking that the transition to READY obsState takes no less than said time.
      • Workarounds are removed from known, relevant locations (SDP integration tests and SDP notebook mentioned above).

      Why?

      • Because otherwise users have to work-around this oversight and figure out by themselves if SDP is really ready to perform a scan.

      Attachments

        Issue Links

          Structure

            Activity

              People

                m.ashdown Ashdown, Mark
                R.Tobar Tobar, Rodrigo
                Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Feature Progress

                  Story Point Burn-up: (100.00%)

                  Feature Estimate: 2.0

                  IssuesStory Points
                  To Do00.0
                  In Progress   00.0
                  Complete1219.0
                  Total1219.0

                  Dates

                    Created:
                    Updated:
                    Resolved:

                    Structure Helper Panel