Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Serialisation

In ecflow 4 series, we used boost  Serialisation for the client/server communication.

Using the same boost version meant that different version versions of ecflow 4.X.X releases had client/server that could be used interchangeably.

However, this caused problems when we wanted to upgrade to a newer boost version , since it broke the client/server apiAPI.

This has been addressed in ecflow 5, we now use JSON for the client/server communication. 

Hence the future release of ecflow 5 series can be done with different boost releases.

Stats Command

For the stats command in 4 series version, the server returns a struct for the  the statistics, the client then formats this.

However, this meant we would break client/server api,  API if the struct was changed between releases.  When we added new statistics.

...

We still retain the ability to return the struct for test purposes.

Checkpoint and caching

Whenever the server checkpoints(i.e. saves the definition state), the full definition is written to disk.

The checkpoint uses ecFlow definition format , where when writing to disk and reading it back into memory,  can done faster the . (ecflow checkpointing is faster than boost or even Json  serialisation.)

In series 5 the server takes advantage of this by caching this as a string before writing it out as the checkpoint file.

 This This effectively caches the de-serialisation cost.

If any user requests the full definition,  we can return the cached string really fast.

...

Synchronizing/GUI

In the 4 series, whenever the GUI makes a change, it involves two calls to the server.

  • Invoke the command
  • call the sync command, This then syncs the changes from the server, into the client

In 5 series version  we support auto sync, which effectively combines the two separate commands into one.

ecflow 4.0 the status change times were not accurate, especially for short-lived tasks. This was because the server to client sync only passed the state change.

This has been improved in ecflow 5.0, where we now also sync for each state change the duration. This is duration is relative to the suite clock.

As a result, the status change time is more accurateThis reduces the latency for GUI and python clients  and improves responsiveness.

Generic Attribute

A new generic attribute has been added to the definition in ecflow 5 series.

...

Code Block
suite a
  generic a  
  generic b c f #
  family b
    generic a  
    generic b c f #
    task c
        generic a  
        generic b c f #
        generic x #
  endfamily
endsuite

std::auto_ptr

This has been removed from the code base and replaced with std::unique_ptr

C++11/14

The code base has been upgraded to c++11 using CLANG.  See Using clang tidy to upgrade code base to c++11

...