Bug 1564986

Summary: Dashboard widget is not providing exact content due to Type conversion Exception.
Product: Red Hat CloudForms Management Engine Reporter: Neha Chugh <nchugh>
Component: ApplianceAssignee: Yuri Rudman <yrudman>
Status: CLOSED CURRENTRELEASE QA Contact: Dmitry Misharov <dmisharo>
Severity: high Docs Contact:
Priority: high    
Version: 5.8.0CC: abellott, cpelland, dmisharo, hkataria, jprause, lavenel, mpovolny, nchugh, obarenbo, yrudman
Target Milestone: GAKeywords: TestOnly, ZStream
Target Release: 5.10.0   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: 5.10.0.0 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1573539 1573540 (view as bug list) Environment:
Last Closed: 2019-02-11 14:03:15 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: CFME Core Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1573539, 1573540    
Attachments:
Description Flags
sample_report_widget_is_not_working none

Description Neha Chugh 2018-04-09 06:19:56 UTC
Description of problem:

While generating the content from dashboard widgets, below exception observed:

[----] E, [2018-04-09T02:07:34.420909 #4965:ec7138] ERROR -- : [TypeError]: no implicit conversion from nil to integer  Method:[rescue in generate_one_content_for_user]

Version-Release number of selected component (if applicable):
5.8.3.4

How reproducible:
For specific widgets in the customer's environment.

Steps to Reproduce:
1. Custom report was generated and its providing required records.
2. For few widgets based on the custom reports, while generating the content, it is throwing type conversion exception for example "Groups: vCPU (Total)" it throws below exception:

[----] E, [2018-04-09T02:07:34.421192 #4965:ec7138] ERROR -- : /opt/rh/cfme-gemset/bundler/gems/manageiq-ui-classic-176dad0f32b3/lib/report_formatter/c3.rb:80:in `[]'
/opt/rh/cfme-gemset/bundler/gems/manageiq-ui-classic-176dad0f32b3/lib/report_formatter/c3.rb:80:in `build_document_header'
/opt/rh/cfme-gemset/bundler/gems/ruport-3727775479b0/lib/ruport/controller.rb:598:in `maybe'
/opt/rh/cfme-gemset/bundler/gems/ruport-3727775479b0/lib/ruport/controller.rb:584:in `block in execute_stages'
/opt/rh/cfme-gemset/bundler/gems/ruport-3727775479b0/lib/ruport/controller.rb:583:in `each'
/opt/rh/cfme-gemset/bundler/gems/ruport-3727775479b0/lib/ruport/controller.rb:583:in `execute_stages'
/opt/rh/cfme-gemset/bundler/gems/ruport-3727775479b0/lib/ruport/controller.rb:574:in `_run_'
/opt/rh/cfme-gemset/bundler/gems/ruport-3727775479b0/lib/ruport/controller.rb:520:in `run'
/opt/rh/cfme-gemset/bundler/gems/ruport-3727775479b0/lib/ruport/controller.rb:436:in `render'
/var/www/miq/vmdb/app/models/miq_report/formatters/graph.rb:13:in `to_chart'
/var/www/miq/vmdb/app/models/miq_widget/chart_content.rb:8:in `generate'
/var/www/miq/vmdb/app/models/miq_widget.rb:285:in `generate_one_content_for_user'
/var/www/miq/vmdb/app/models/miq_widget/content_generator.rb:32:in `block in determine_content'
/var/www/miq/vmdb/app/models/miq_widget/content_generator.rb:32:in `collect'
/var/www/miq/vmdb/app/models/miq_widget/content_generator.rb:32:in `determine_content'
/var/www/miq/vmdb/app/models/miq_widget/content_generator.rb:8:in `generate'
/var/www/miq/vmdb/app/models/miq_widget.rb:221:in `generate_content'
/var/www/miq/vmdb/app/models/miq_queue.rb:347:in `block in deliver'
/opt/rh/rh-ruby23/root/usr/share/ruby/timeout.rb:91:in `block in timeout'
/opt/rh/rh-ruby23/root/usr/share/ruby/timeout.rb:33:in `block in catch'
/opt/rh/rh-ruby23/root/usr/share/ruby/timeout.rb:33:in `catch'
/opt/rh/rh-ruby23/root/usr/share/ruby/timeout.rb:33:in `catch'
/opt/rh/rh-ruby23/root/usr/share/ruby/timeout.rb:106:in `timeout'
/var/www/miq/vmdb/app/models/miq_queue.rb:343:in `deliver'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:106:in `deliver_queue_message'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:135:in `deliver_message'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:153:in `block in do_work'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:147:in `loop'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:147:in `do_work'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:340:in `block in do_work_loop'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:337:in `loop'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:337:in `do_work_loop'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:160:in `run'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:134:in `start'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:21:in `start_worker'
/var/www/miq/vmdb/app/models/miq_worker.rb:357:in `block in start_runner'
/opt/rh/cfme-gemset/gems/nakayoshi_fork-0.0.3/lib/nakayoshi_fork.rb:24:in `fork'
/opt/rh/cfme-gemset/gems/nakayoshi_fork-0.0.3/lib/nakayoshi_fork.rb:24:in `fork'
/var/www/miq/vmdb/app/models/miq_worker.rb:355:in `start_runner'
/var/www/miq/vmdb/app/models/miq_worker.rb:366:in `start'
/var/www/miq/vmdb/app/models/miq_worker.rb:266:in `start_worker'
/var/www/miq/vmdb/app/models/miq_worker.rb:150:in `block in sync_workers'
/var/www/miq/vmdb/app/models/miq_worker.rb:150:in `times'
/var/www/miq/vmdb/app/models/miq_worker.rb:150:in `sync_workers'
/var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:53:in `block in sync_workers'
/var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:50:in `each'
/var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:50:in `sync_workers'
/var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:22:in `monitor_workers'
/var/www/miq/vmdb/app/models/miq_server.rb:349:in `block in monitor'
/opt/rh/cfme-gemset/bundler/gems/manageiq-gems-pending-a29aab0471c6/lib/gems/pending/util/extensions/miq-benchmark.rb:11:in `realtime_store'
/opt/rh/cfme-gemset/bundler/gems/manageiq-gems-pending-a29aab0471c6/lib/gems/pending/util/extensions/miq-benchmark.rb:30:in `realtime_block'
/var/www/miq/vmdb/app/models/miq_server.rb:349:in `monitor'
/var/www/miq/vmdb/app/models/miq_server.rb:371:in `block (2 levels) in monitor_loop'
/opt/rh/cfme-gemset/bundler/gems/manageiq-gems-pending-a29aab0471c6/lib/gems/pending/util/extensions/miq-benchmark.rb:11:in `realtime_store'

Actual results:
It is throwing type conversion error:

[----] E, [2018-04-09T02:07:34.420909 #4965:ec7138] ERROR -- : [TypeError]: no implicit conversion from nil to integer  Method:[rescue in generate_one_content_for_user]
[----] E, [2018-04-09T02:07:34.421192 #4965:ec7138] ERROR -- : /opt/rh/cfme-gemset/bundler/gems/manageiq-ui-classic-176dad0f32b3/lib/report_formatter/c3.rb:80:in `[]'
/opt/rh/cfme-gemset/bundler/gems/manageiq-ui-classic-176dad0f32b3/lib/report_formatter/c3.rb:80:in `build_document_header'



Expected results:

It should not throw any exception and generate the contents for all the widgets.

Additional info:

I have checked at rails console, below is the result:


irb(main):001:0> widget_object = MiqWidget.find_by_id('99000000000065')

PostgreSQLAdapter#log_after_checkout, connection_pool: size: 5, connections: 1, in use: 1, waiting_in_queue: 0
=> #<MiqWidget id: 99000000000065, guid: "0c4ff776-d122-11e6-9e30-00505680312b", description: "Groups: vCPU (Total)", title: "Groups: vCPU (Total)", content_type: "chart", options: {}, visibility: {:roles=>["_ALL_"]}, user_id: nil, resource_id: 99000000000189, resource_type: "MiqReport", miq_schedule_id: 99000000000091, enabled: true, read_only: false, created_at: "2017-01-02 19:31:24", updated_at: "2018-04-09 06:07:36", last_generated_content_on: "2018-04-09 06:07:36", miq_task_id: 99000000894270>

irb(main):002:0> widget_object.queue_generate_content_for_users_or_group

=> #<MiqQueue id: 99000089321939, target_id: nil, priority: 100, method_name: "generate_content", state: "ready", created_on: "2018-04-09 06:18:34", updated_on: "2018-04-09 06:18:34", lock_version: 0, task_id: nil, deliver_on: nil, queue_name: "reporting", class_name: "MiqWidget", instance_id: 99000000000065, args: [], miq_callback: {:class_name=>"MiqWidget", :instance_id=>99000000000065, :method_name=>:generate_content_complete_callback}, msg_data: nil, zone: nil, role: "reporting", server_guid: nil, msg_timeout: 3600, handler_id: nil, handler_type: nil, for_user: nil, for_user_id: nil, expires_on: nil>

Comment 7 Neha Chugh 2018-04-12 05:53:19 UTC
Created attachment 1420689 [details]
sample_report_widget_is_not_working

Comment 17 CFME Bot 2018-05-01 13:41:36 UTC
New commit detected on ManageIQ/manageiq/master:

https://github.com/ManageIQ/manageiq/commit/d7a37e8ff374e040fc946cc6246f038baa18823a
commit d7a37e8ff374e040fc946cc6246f038baa18823a
Author:     Yuri Rudman <yrudman>
AuthorDate: Thu Apr 26 09:08:38 2018 -0400
Commit:     Yuri Rudman <yrudman>
CommitDate: Thu Apr 26 09:08:38 2018 -0400

    do not change current_group for super admin user when executing Rbac#lookup_user_group
    Example when updating user.current_group in group's look-up is bad: if widget set-up for different group than during content generation (triggered manually from UI) the last group will become current group for super user and this may throw unexpectd errors ( like failing ApplicationController.assert_privileges(widget_refresh)
    Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1564986

 lib/rbac/filterer.rb | 8 +-
 1 file changed, 5 insertions(+), 3 deletions(-)

Comment 18 CFME Bot 2018-05-01 13:43:41 UTC
New commit detected on ManageIQ/manageiq/master:

https://github.com/ManageIQ/manageiq/commit/d7a37e8ff374e040fc946cc6246f038baa18823a
commit d7a37e8ff374e040fc946cc6246f038baa18823a
Author:     Yuri Rudman <yrudman>
AuthorDate: Thu Apr 26 09:08:38 2018 -0400
Commit:     Yuri Rudman <yrudman>
CommitDate: Thu Apr 26 09:08:38 2018 -0400

    do not change current_group for super admin user when executing Rbac#lookup_user_group
    Example when updating user.current_group in group's look-up is bad: if widget set-up for different group than during content generation (triggered manually from UI) the last group will become current group for super user and this may throw unexpectd errors ( like failing ApplicationController.assert_privileges(widget_refresh)
    Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1564986

 lib/rbac/filterer.rb | 8 +-
 1 file changed, 5 insertions(+), 3 deletions(-)

Comment 21 Dmitry Misharov 2018-06-26 12:04:22 UTC
Fixed and verified in 5.10.0.1.20180619163011_900fdc4. Widget content is generated successfully.