Patching of Relays and BES servers

As I’m sure many of you do, we have a specific window for when our production servers can be patched. This includes our relays and BES servers.

How do you patch these servers? Do you patch them before all of the other servers, at the same time or afterwards?

What do the relays do if the BES server (or top-level relay) isn’t available when they are patching?

What does a client do if a relay isn’t available when it is patching? Does it wait until it’s assigned relay is available or does it choose another one?

Also what about the BES database server, what happens if that is not available during the patch window?

If you precache all of the necessary content/files to the respective BES infrastructure and/or clients, then they will operate independently of said BES infrastructure while it’s unavailable (i.e. rebooting, etc.). That said, if you can patch your BES infrastructure in advance of your other client, it will help with the near real-time reporting of said clients. The BES infrastructure updates should also include the RDBMS instance if they’re remote.

As far as how clients will react when their assigned relay isn’t available, this really depends on how you’ve configured your clients. Specifically the _BESClient_RelaySelect_ResistFailureIntervalSeconds setting. You can find additional details on the Configuration Settings wiki, but by default clients won’t fail over from their assigned relay until 10 minutes communications errors.

After 10 minutes they will go through the relay selection process to find another relay to talk to?

That’s assuming that the _BESClient_RelaySelect_ResistFailureIntervalSeconds setting is at its default value. However as per the Configuration Settings wiki, the maximum value for this setting is 6 hours. So it really depends on the implementation its default client settings.