Subscription detail blank

Problem:
When I go to Content -> Subscriptions and want to open a subscription, content container is blank and the container reactRoot only shows an empty div.

Expected outcome:
Subscription details should be shown.

Foreman and Proxy versions:
Foreman 1.19.0 (occurs from 1.18.0 on)

Foreman and Proxy plugin versions:
Katello 3.8.0

I’ve just reproduced this on a katello 3.8 box.
Looks like an issue in react code, there is no request being sent to the server when loading this page at all. Only actions fired other than the regular ones are GET_ORGANIZATION_REQUEST and GET_ORGANIZATION_SUCCESS, none of the subscription actions are triggered.
cc @ui_ux team for further investigation.

I’m looking into this one (Redmine ticket).

So far I haven’t been able to reproduce it in development setup when using appropriate Foreman and Katello versions. It’s reproducible easily in production.

2 Likes

FYI so far no luck :confused: When I rebuild assets on the production machine (separately for the Foreman and Katello) the issue disappears…

What do you mean by “rebuild assets” ?

Do you speak of the web-assets (css/js etc.) ?

I meant rebuilding the webpack bundles. I checked out the git branches for appropriate versions and built the bundles with plugin:assets:precompile same way as packaging is supposed to do it.

I think we need a better way to detect if a rebuild is needed. For the RPM side I think we should use the autoprov feature. http://ftp.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

The short story is that you can generate Provides: foreman-webpack(vendor) = c8538f32d3b65c1dc38f.js (or similar) on the foreman RPM side. On the plugin side you can automatically add a Require: foreman-webpack(vendor) = c8538f32d3b65c1dc38f.js. It would mean we can detect with repoclosure if there would be a build issue.

We’ll still need to manually rebuild if the bundle has changed, but because we have a semi static set of nodejs modules in koji I think that doesn’t happen too often.

It would probably look something like this (100% untested):

I’m talking with @evgeni about implementing this.

1 Like

That would definitely be a big help. I still see it as only a first step. The goal should be to prevent the need for rebuilds completely. But if we can detect such situation in advance and reduce time spent on debugging and creating Redmine issues, it would be a big improvement for now.

Thank you both!

1 Like

You can see our progress here: https://github.com/theforeman/foreman-packaging/pull/3012

The rough idea is:

  • When we build Foreman, we generate RPM Provides that list webpack assets the plugins can reuse. This includes a hash of the asset file.
  • When we build a plugin, we generate RPM Requires that list the used webpack assets and their hashes.
  • Now if Foremans assets change (and thus the hash), the plugin RPMs become uninstallable which is an indicator for us to rebuild them.

Certainly not optimal, but at least we now have a asset-related relationship between Foreman and the plugins that can be acted upon.

1 Like

@evgeni I still see this, when I start a centos7-katello-3.11 box in my forklift.

As far as I see, the Subscription-detail page is the only page not being viewed.
I do not see any related errors in the Browser’s console.

The ‘reactRoot’ div is simply empty:
<div id=“reactRoot”> <div></div></div>

I also saw this with Katello-3.9 and 3.10 forklift-boxes.
The only box it works in is centos7-devel with running webpack-dev-server.

1 Like

We are looking into this, here’s a formal issue for tracking: Bug #25515: Subscription detail page is empty - Katello - Foreman

1 Like

Thanks

Just wanted to update here and say that this issue has been resolved - thanks @ekohl for the patch!

It’s slated for the upcoming Katello 3.11 release and future backports into 3.9.2 and 3.10.1

1 Like