Backport of 'Fix: self-hosted feature setting missing model_definitions'
What does this MR do and why?
This is a backport of the fix for issue #596569 (closed) to the 18-11-stable-ee branch.
model_definitions is a virtual attribute defined in FeaturesConfigurable, included by InstanceModelSelectionFeatureSetting and NamespaceFeatureSetting — but not by Ai::FeatureSetting.
The FeatureSetting decorator unconditionally called feature_setting.model_definitions as a fallback when no model_definitions were passed in. On SM instances with a self-hosted model configured and an offline cloud license (where FetchModelDefinitionsService returns a nil payload), this caused:
Error: undefined method `model_definitions' for an instance of Ai::FeatureSettingThis MR replaces the direct call with feature_setting.try(:model_definitions), which safely returns nil when the method doesn't exist, and adds a return if model_definitions.blank? guard in #feature_data to bail out early before indexing into the definitions hash.
References
- [IDE] aiChatAvailableModels query from LS retur... (#596569 - closed)
- Fix error in FeatureSetting decorator when mode... (!231758 - merged)
- Fix: self-hosted feature setting missing model_... (!232183 - merged)
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
- This MR is backporting a bug fix, documentation update, or spec fix, previously merged in the default branch.
- The MR that fixed the bug on the default branch has been deployed to GitLab.com (not applicable for documentation or spec changes).
- The MR title is descriptive (e.g. "Backport of 'title of default branch MR'"). This is important, since the title will be copied to the patch blog post.
- Required labels have been applied to this merge request
- severity label and bug subtype labels (if applicable)
- If this MR fixes a bug that affects customers, the customer label has been applied.
- This MR has been approved by a maintainer (only one approval is required).
- Ensure the
e2e:test-on-omnibus-eejob has succeeded, or if it has failed, investigate the failures. If you determine the failures are unrelated, you may proceed. If you need assistance investigating, reach out to a Software Engineer in Test in #s_developer_experience.
Note to the merge request author and maintainer
If you have questions about the patch release process, please:
- Refer to the patch release runbook for engineers and maintainers for guidance.
- Ask questions on the
#releasesSlack channel (internal only). - Once the backport has been merged, the commit changes will be automatically deployed to a release environment that can be used for manual validation. See after merging runbook for details.