How Do Mother Engines Automatically Upgrade Daughter Engines?

If you’re using Argent’s Mother/Daughter architecture and plan to upgrade to the latest version, this article describes exactly what happens behind the scenes, and some of the useful features that ensure minimal downtime in your critical monitoring.

While you can manually upgrade each Daughter Engine — this quickly becomes tedious if you have 70 Daughter Engines that need to be upgraded.

So Argent provides an automatic upgrade facility. The upgrade should be done only on the main “Mother Engine”.

After Upgrading The Mother Engine

After upgrading the Mother Engine, the database, and all executables and files on the Mother Engine are fully updated.

At this point, the Mother Engine is version B, while all Daughter Engines are still on version A.

Each time a Daughter Engine polls the Mother Engine, the first question from the Mother is:

Mother:

“Hang on — what version are you?”

Daughter:

“I’m version A.”

Mother:

“Version conflict. I’m version B — I’ll get you upgraded.”


This bit of exchange is automatic and transparent to you, of course.

The Mother Engine will send over a set of compressed files containing the upgrade software to the Daughter Engine via the usual TCP port.

Of course, if the link breaks half-way through, Argent retries and resumes from where it left off.

Once the files are sent, received, with CRC checks done — the Daughter Engine upgrades itself and shuts down its main service process.

During this stage, this Daughter Engine will not be performing any monitoring.

What If I Have Multiple Daughter Engines?

In the real world, you may have multiple Daughter Engines, some of which operate through slow and unreliable links.

Without proper throttling, ALL Daughter Engines would be upgrading at the same time. This means a huge load on the Mother Engine, as well as a huge load on the links between the Mother and Daughters. Think of it like a traffic jam during rush hour. Throw in slow and unreliable links into the mix, and links could be saturated for hours.

If you’re using Argent XT 8.0A-0907-A or above, the Mother Engine includes an automatic throttling system that only allows ONE Daughter Engine to be automatically upgraded at a time.

When an automatic Daughter Engine upgrade is in place, a flag is raised in the Mother Engine. This tells all other Daughter Engines to hold off until the upgrade is complete.

This eases the network load significantly, and ensures the Mother Engine will not be overloaded with requests.

When a Daughter Engine is told to hold off — the logs in both the Mother and Daughter Engines will show entries stating that the upgrade was rejected.

What About Monitoring?

From a monitoring standpoint, monitoring and alerting will still be done on the pre-upgraded Daughter Engines.

The nature of a Daughter Engine means it has a copy of the existing control information and schedules prior to the upgrade. The version conflict is simply treated as if the link between the Mother and Daughter is down.

While control information cannot be synchronized, and the central database will not be updated, data collected will be stored locally at the Daughter Engine, and Alerts will still be submitted and accepted by the Mother Engine.