LTI, Juniper and language preferences?

I’ve encountered a strange bug while investigating a problem we had while testing LTI on open-release/juniper.alpha1

I imported a course that has an LTI ressource and that previously worked under ironwood.

I used http://ltiapps.net/test/tc.php while trying to access that course.

I got the following error messages about the language preference of the course in /edx/var/log/lms/edx.log:

What I find strange is that the anonymous user created by the LTI process needs a language preference? I don’t remember ever setting a language preference for LTI users in the past.

I also noticed that [user 17] in the error logs has not been created in the auth_user table in mysql.

If I try to access the course again, it goes to [user 18] as expected, but I get the same error messages and stil no user created in auth_user.

Anybody has an explanation for this? Or is there a big LTI issue with juniper.alpha1 ?

As we have a lot of our courses being used as LTI ressources by other LMS, this could be a major issue for us.

By the way, the only things modified from a default single-server juniper.alpha1 installation are the entries in /edx/etc/lms.yml.

Under FEATURES: we added:
ENABLE_LTI_PROVIDER: true

Under JWT_AUTH: we modified:
JWT_ISSUER
ISSUER
JWT_PRIVATE_SIGNING_JWK
JWT_PUBLIC_SIGNING_JWK_SET
JWT_SIGNING_ALGORITHM

It is as close to a vanilla installation as can be…

The migration were also run in order to create the 4 LTI tables in the database edxapp in mysql.

/edx/app/edxapp/reload_lms_config.sh was also ran in order to reload the LMS configuration.

Just for the sake of it, I modified LANGUAGE_CODE in /edx/etc/lms.yml from en to fr.

My site and my error logs are in French as expected. Nonetheless, it still complains about ‘en’ not being a valid preference for pref-lang for the user id 17 that it is trying to create as a result of accessing the ressource via LTI.

openedx.core.djangoapps.user_api.errors.PreferenceValidationError: {‘pref-lang’: {‘user_message’: “La valeur ‘en’ n’est pas valide pour la préférence utilisateur’pref-lang’.”, ‘developer_message’: 'Value ‘en’ not valid for preference ‘pref-lang’: {‘user’: ['Clé primaire “17” non valide - l\‘objet n\‘existe pas.’]}’}}

I am still unsure why it tries to validate the language preference of an anonymized user created for LTI purposes. Any idea?

I also created a Community Reported Issue as https://openedx.atlassian.net/browse/CRI-179