What’s changing?
Starting with Juju 4.0 the API for the AllWatcher will be removed and replaced a new design. A new specification is being drawn up to service the function, but is different from the old design.
This is because we no longer want to send full entity deltas over the API. Instead discrete event deltas of what has changed, will be emitted.
Why the change?
Prior to Juju 4.0, Juju stored entities relevant to the AllWatcher in a in-memory backing store. The backing store contained entities from charms, applications, machines, units and actions, including the input and output parameters.
For all deployments of Juju, but especially large deployments this can end up being a considerable portion of the Juju runtime memory.
In an effort to reduce the over footprint of Juju, we’re moving away from the backing store.
Who is this likely to affect?
All client libraries that utilise the AllWatcher. This especially impacts python-libjuju, which builds up an internal representation of the model via the AllWatcher API.
What action does it require?
Work is progressing to remove the hard dependency on the AllWatcher in python-libjuju. Instead replacing it with direct API calls. When Juju 4.0 is released, libraries and applications that depend on python-libjuju will require to move to the latest version. An announcement to that effect will be done nearer the launch of Juju 4.0.
Lastly, a goal of the change to python-libjuju will be compatible with Juju 3.6, which is expected to be the LTS of the 3 series.