Uploaded image for project: 'Satellite'
  1. Satellite
  2. SAT-21331 The notifications page in Satellite WebUI fails to load with http 500 error
  3. SAT-24145

[QE][AUTOMATION] The notifications page in Satellite WebUI fails to load with http 500 error

XMLWordPrintable

    • Icon: Sub-task Sub-task
    • Resolution: Done
    • Icon: Undefined Undefined
    • None
    • None
    • Notifications

      Description of problem:
      
      The notifications page in Satellite WebUI fails to load with http 500 error. Below error message is observed in /var/log/foreman/production.log:
       Started GET "/notification_recipients" for 10.x.x.x at 2023-01-01 00:00:00 +0100
       [I|app|fee71ac7] Processing by NotificationRecipientsController#index as JSON
       [W|app|fee71ac7] Action failed
       [I|app|fee71ac7] Backtrace for 'Action failed' error (TypeError): incompatible marshal file format (can't be read)
       fee71ac7 |     format version 4.8 required; 123.34 given
       fee71ac7 | /usr/share/gems/gems/activesupport-6.1.7.3/lib/active_support/core_ext/marshal.rb:8:in `load'
       fee71ac7 | /usr/share/gems/gems/activesupport-6.1.7.3/lib/active_support/core_ext/marshal.rb:8:in `load'
       fee71ac7 | /usr/share/gems/gems/activesupport-6.1.7.3/lib/active_support/cache.rb:598:in `deserialize_entry'
       fee71ac7 | /usr/share/gems/gems/activesupport-6.1.7.3/lib/active_support/cache/redis_cache_store.rb:459:in `deserialize_entry'
       fee71ac7 | /usr/share/gems/gems/activesupport-6.1.7.3/lib/active_support/cache/redis_cache_store.rb:349:in `block in read_entry'
       fee71ac7 | /usr/share/gems/gems/activesupport-6.1.7.3/lib/active_support/cache/redis_cache_store.rb:478:in `failsafe'
      
      
      Version-Release number of selected component (if applicable): Satellite version 6.14
      
      
      Foreman writes notification data to the (redis) cache as raw JSON, but then attempts to read them back using the cache default format (Ruby marshaling). This results in the UI failing to display some notifications, and persistent errors in the log that look like the example shown below. It appears it can be resolved with a one-line fix in the cache_handler to change it to pass the same "raw" parameter for reads as is used for writes:
      
      --- cache_handler.rb 
      +++ /usr/share/foreman/app/services/ui_notifications/cache_handler.rb 
      @@ -7,7 +7,7 @@
      
           # JSON Payload
           def payload
      -      result = cache.read(cache_key)
      +      result = cache.read(cache_key, raw: true)
             if result
               logger.debug("Cache Hit: notification, reading cache for #{cache_key}")
               return result
      
      This has been fixed in upstream: https://projects.theforeman.org/issues/36329

      QE Tracker for https://issues.redhat.com/browse/SAT-21331
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2249970

            pnovotny@redhat.com Pavel Novotny
            satellite-focaccia-bot Focaccia Bot
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: