Support #22999

Updated by Lorena Lobato Pardavila over 1 year ago

As per request from OSG we should maintain Factory compatibility w/ older 3.4 Frontends, including the buggy 3.4.2 and older.
As from a preliminary analysis in *[#22928]* [#22928] this probably implies going back to send the REQUIRE_VOMS/REQUIRE_GLEXEC_USE attributes as a string instead of boolean. The example that was breaking was when you set these attributes to "NEVER", because in this case, it is added checking to the match expression:

<attr name=“GLIDEIN_Glexec_Use" glidein_publish="True" job_publish="True" parameter="False" type="string" value="NEVER"/>

We didn't catch this in our tests as exposed in the ticket #22928, those attributes were not present in the compatibility testing setup. (For the record, they should have, considering that they were in important tickets for the release)

This should give back 3.4.2 compatibility and not break anything else (3.4.5 and 3.5).
This change will be only for the 3.4 series (at least any workaround to be compatible w/ buggy behavior).

Ticket tasks:
* test 3.4.5 Factory against different Frontend versions (at least 3.4.5 and 3.4.2) to verify the incompatibility
* verify the actual cause
* change the Factory code to be compatible w/ any 3.4 Frontend (repeat the tests above, this time all should work)
* identify the things to change back for [#23046]

Below are the requests from OSG
<pre>Hi Marco,

I still prefer what I proposed (option B) so that frontend users have
the option to revert to an older 3.4 version no matter what 3.4 version
the factory is on. Imagine that the release of 3.4.6 has a critical bug
for some VO and for whatever reason the only version not affected by
this bug is 3.4.2. If we went ahead with plan A, then that VO will be
dead in the water due to the bug and factory/FE version incompatibility
until you can look at the issue and provide a workaround.

I think compatibility between minor versions is a must wherever possible
and supporting compatibility of old/new methods between major versions
is important for simplifying transitions for users.

On 7/26/19 12:53 PM, Marco Mambelli wrote:
Hi Brian,
I don't know if the email was clear.

The incompatibility was already in 3.4.5 that is currently in OSG and CMS production.
People using these attributes had already to update their Frontends when after the upgrade of the Factory their Frontends were not matching jobs:
- FIFE frontend at Fermilab

Was involuntary but the incompatibility has been already introduced and is there in production.
3.5 is behaving like 3.4.5 respect to that, nothing new introduced

For 3.4.6 and following (3.5.1, ...) should I keep the current behavior A (send booleans as booleans) or change back to B (send booleans as strings) ?
Factory 3.4.4, 3.4.5 and 3.5 do A
All older Factories do B
3.4.5 and 3.5 Frontends (and future ones) will work with both A and B
Frontends < 3.4.3 work only with B

Going back to B is still your suggestion?

On Jul 26, 2019, at 11:10 AM, Brian Lin <> wrote:

Hi Marco,

Instead of introducing version incompatibilities, I think it would make
sense to go back to sending strings with boolean values inside. Then in
3.5.1, you change the frontends to prefer booleans but handle the string
versions so that they are compatible with older factories. Then after we
are confident that all FEs are on 3.5 (+ maybe a few months of slush
time), you can complete the string -> boolean transition on the factory
side. Then when all factories are updated, you can remove the string

Does that sounds reasonable?

- Brian

On 7/26/19 10:18 AM, Marco Mambelli wrote:
Hi Brian,
here the summary about the Frontend problems after the Factory upgrade.
More details are in the ticket:

The problem is with 3.4.2 Frontends and 3.4.3 or bigger Factories (3.4.5, because 3.4.3 and 3.4.4 did not go into production)
It happens when the REQUIRE_VOMS/REQUIRE_GLEXEC_USE attributes are used.

This is related to a series of tickets about booleans vs strings in Frontend and Factory.
The final result is correct but creates an incompatibility with FEs < 3.4.4.

For 3.4.6 we could go back sending strings with boolean values inside from The Factory (for the REQUIRE_VOMS/REQUIRE_GLEXEC_USE attributes) and that would be backward compatible and not cause problems.
But Factory 3.4.5 is out in production and is the one causing the incompatibility (triggering the Frontend bug).

Do you have any advise?

Thank you,

PS GlideinWMS 3.5 (no to be confused w/ 3.4.5), currently in OSG upcoming testing, includes all code in 3.4.5, so it will trigger the bug as well, same as 3.4.5, no more, no less