Description of problem:
When performing the "Scanning [Profile-Files] information" stage of a SmartState Analysis, a stack trace is seen in evm.log, as follows:
[----] E, [2020-04-15T12:04:44.691853 #5584:2abf39d245c4] ERROR -- : Q-task_id([job_dispatcher]) process_each_glob_file: Exception undefined method `difference' for #<Array:0x0000557e87f6e608> rescued
[----] D, [2020-04-15T12:04:44.692014 #5584:2abf39d245c4] DEBUG -- : Q-task_id([job_dispatcher]) /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/find_class_methods.rb:74:in `get_dir_entries'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/find_class_methods.rb:62:in `find'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/find_class_methods.rb:17:in `glob'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/md5deep.rb:74:in `process_each_glob_file'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/md5deep.rb:68:in `scan_glob'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/md5deep.rb:52:in `scan_glob'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/modules/VmScanItemFile.rb:32:in `block in parse_data'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/modules/VmScanItemFile.rb:27:in `each'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/modules/VmScanItemFile.rb:27:in `parse_data'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:43:in `block in parse_data'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfileBase.rb:30:in `block in each_scan_item'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfileBase.rb:30:in `each'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfileBase.rb:30:in `each_scan_item'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:39:in `block in each_scan_item'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:39:in `each'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:39:in `each_scan_item'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:43:in `parse_data'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/MIQExtract/MIQExtract.rb:123:in `getProfileData'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/MIQExtract/MIQExtract.rb:141:in `block in extract'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/MIQExtract/MIQExtract.rb:130:in `each'
/opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/MIQExtract/MIQExtract.rb:130:in `extract'
/var/www/miq/vmdb/app/models/mixins/scanning_mixin.rb:252:in `block in scan_via_miq_vm'
/var/www/miq/vmdb/app/models/mixins/scanning_mixin.rb:248:in `each'
/var/www/miq/vmdb/app/models/mixins/scanning_mixin.rb:248:in `scan_via_miq_vm'
/opt/rh/cfme-gemset/bundler/gems/cfme-providers-vmware-d03136548933/app/models/manageiq/providers/vmware/infra_manager/vm_or_template_shared/scanning.rb:29:in `perform_metadata_scan'
/var/www/miq/vmdb/app/models/miq_server/server_smart_proxy.rb:125:in `scan_metadata'
/var/www/miq/vmdb/app/models/miq_queue.rb:479:in `block in dispatch_method'
/usr/share/ruby/timeout.rb:93:in `block in timeout'
/usr/share/ruby/timeout.rb:33:in `block in catch'
/usr/share/ruby/timeout.rb:33:in `catch'
/usr/share/ruby/timeout.rb:33:in `catch'
/usr/share/ruby/timeout.rb:108:in `timeout'
/var/www/miq/vmdb/app/models/miq_queue.rb:477:in `dispatch_method'
/var/www/miq/vmdb/app/models/miq_queue.rb:454:in `block in deliver'
/var/www/miq/vmdb/app/models/user.rb:290:in `with_user_group'
/var/www/miq/vmdb/app/models/miq_queue.rb:454:in `deliver'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:104:in `deliver_queue_message'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:137:in `deliver_message'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:155:in `block in do_work'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:149:in `loop'
/var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:149:in `do_work'
/var/www/miq/vmdb/app/models/miq_smart_proxy_worker/runner.rb:71:in `do_work'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:329:in `block in do_work_loop'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:326:in `loop'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:326:in `do_work_loop'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:153:in `run'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:127:in `start'
/var/www/miq/vmdb/app/models/miq_worker/runner.rb:22:in `start_worker'
/var/www/miq/vmdb/app/models/miq_worker.rb:398:in `block in start_runner_via_fork'
/opt/rh/cfme-gemset/gems/nakayoshi_fork-0.0.4/lib/nakayoshi_fork.rb:23:in `fork'
/opt/rh/cfme-gemset/gems/nakayoshi_fork-0.0.4/lib/nakayoshi_fork.rb:23:in `fork'
/var/www/miq/vmdb/app/models/miq_worker.rb:396:in `start_runner_via_fork'
/var/www/miq/vmdb/app/models/miq_worker.rb:386:in `start_runner'
/var/www/miq/vmdb/app/models/miq_worker.rb:437:in `start'
/var/www/miq/vmdb/app/models/miq_worker.rb:269:in `start_worker'
/var/www/miq/vmdb/app/models/miq_worker.rb:147:in `block in sync_workers'
/var/www/miq/vmdb/app/models/miq_worker.rb:147:in `times'
/var/www/miq/vmdb/app/models/miq_worker.rb:147:in `sync_workers'
/var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:54: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.rb:156:in `start'
/var/www/miq/vmdb/app/models/miq_server.rb:247:in `start'
/var/www/miq/vmdb/lib/workers/evm_server.rb:27:in `start'
/var/www/miq/vmdb/lib/workers/evm_server.rb:48:in `start'
/var/www/miq/vmdb/lib/workers/bin/evm_server.rb:4:in `<main>'
Version-Release number of selected component (if applicable):
5.11.5.0
How reproducible:
Every time
Steps to Reproduce:
1. Perform a SmartState Analysis of a small VM
2. Examine evm.log for the stack trace
Actual results:
See the stack trace and error
Expected results:
No error
Additional info:
This seems to be related to the new glob processing in a directory path. If I add an entry '/home/*/.bash_profile' to the analysis profile, I see a similar stack trace that shows that the directories /home/{nags,pemcg,sjames} have been discovered, i.e.
[----] I, [2020-04-15T11:58:28.280355 #5584:2abf39d245c4] INFO -- : Q-task_id([job_dispatcher]) Directory '/home/*' not found
[----] E, [2020-04-15T11:58:28.283845 #5584:2abf39d245c4] ERROR -- : Q-task_id([job_dispatcher]) process_each_glob_file: Exception undefined method `difference' for [".", "..", "nagios", "pemcg", "sjames"]:Array rescued
[----] D, [2020-04-15T11:58:28.284013 #5584:2abf39d245c4] DEBUG -- : Q-task_id([job_dispatcher]) /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/find_class_methods.rb:74:in `get_dir_entries'
...
Description of problem: When performing the "Scanning [Profile-Files] information" stage of a SmartState Analysis, a stack trace is seen in evm.log, as follows: [----] E, [2020-04-15T12:04:44.691853 #5584:2abf39d245c4] ERROR -- : Q-task_id([job_dispatcher]) process_each_glob_file: Exception undefined method `difference' for #<Array:0x0000557e87f6e608> rescued [----] D, [2020-04-15T12:04:44.692014 #5584:2abf39d245c4] DEBUG -- : Q-task_id([job_dispatcher]) /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/find_class_methods.rb:74:in `get_dir_entries' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/find_class_methods.rb:62:in `find' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/find_class_methods.rb:17:in `glob' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/md5deep.rb:74:in `process_each_glob_file' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/md5deep.rb:68:in `scan_glob' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/md5deep.rb:52:in `scan_glob' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/modules/VmScanItemFile.rb:32:in `block in parse_data' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/modules/VmScanItemFile.rb:27:in `each' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/modules/VmScanItemFile.rb:27:in `parse_data' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:43:in `block in parse_data' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfileBase.rb:30:in `block in each_scan_item' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfileBase.rb:30:in `each' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfileBase.rb:30:in `each_scan_item' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:39:in `block in each_scan_item' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:39:in `each' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:39:in `each_scan_item' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/ScanProfile/ScanProfilesBase.rb:43:in `parse_data' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/MIQExtract/MIQExtract.rb:123:in `getProfileData' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/MIQExtract/MIQExtract.rb:141:in `block in extract' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/MIQExtract/MIQExtract.rb:130:in `each' /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/MIQExtract/MIQExtract.rb:130:in `extract' /var/www/miq/vmdb/app/models/mixins/scanning_mixin.rb:252:in `block in scan_via_miq_vm' /var/www/miq/vmdb/app/models/mixins/scanning_mixin.rb:248:in `each' /var/www/miq/vmdb/app/models/mixins/scanning_mixin.rb:248:in `scan_via_miq_vm' /opt/rh/cfme-gemset/bundler/gems/cfme-providers-vmware-d03136548933/app/models/manageiq/providers/vmware/infra_manager/vm_or_template_shared/scanning.rb:29:in `perform_metadata_scan' /var/www/miq/vmdb/app/models/miq_server/server_smart_proxy.rb:125:in `scan_metadata' /var/www/miq/vmdb/app/models/miq_queue.rb:479:in `block in dispatch_method' /usr/share/ruby/timeout.rb:93:in `block in timeout' /usr/share/ruby/timeout.rb:33:in `block in catch' /usr/share/ruby/timeout.rb:33:in `catch' /usr/share/ruby/timeout.rb:33:in `catch' /usr/share/ruby/timeout.rb:108:in `timeout' /var/www/miq/vmdb/app/models/miq_queue.rb:477:in `dispatch_method' /var/www/miq/vmdb/app/models/miq_queue.rb:454:in `block in deliver' /var/www/miq/vmdb/app/models/user.rb:290:in `with_user_group' /var/www/miq/vmdb/app/models/miq_queue.rb:454:in `deliver' /var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:104:in `deliver_queue_message' /var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:137:in `deliver_message' /var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:155:in `block in do_work' /var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:149:in `loop' /var/www/miq/vmdb/app/models/miq_queue_worker_base/runner.rb:149:in `do_work' /var/www/miq/vmdb/app/models/miq_smart_proxy_worker/runner.rb:71:in `do_work' /var/www/miq/vmdb/app/models/miq_worker/runner.rb:329:in `block in do_work_loop' /var/www/miq/vmdb/app/models/miq_worker/runner.rb:326:in `loop' /var/www/miq/vmdb/app/models/miq_worker/runner.rb:326:in `do_work_loop' /var/www/miq/vmdb/app/models/miq_worker/runner.rb:153:in `run' /var/www/miq/vmdb/app/models/miq_worker/runner.rb:127:in `start' /var/www/miq/vmdb/app/models/miq_worker/runner.rb:22:in `start_worker' /var/www/miq/vmdb/app/models/miq_worker.rb:398:in `block in start_runner_via_fork' /opt/rh/cfme-gemset/gems/nakayoshi_fork-0.0.4/lib/nakayoshi_fork.rb:23:in `fork' /opt/rh/cfme-gemset/gems/nakayoshi_fork-0.0.4/lib/nakayoshi_fork.rb:23:in `fork' /var/www/miq/vmdb/app/models/miq_worker.rb:396:in `start_runner_via_fork' /var/www/miq/vmdb/app/models/miq_worker.rb:386:in `start_runner' /var/www/miq/vmdb/app/models/miq_worker.rb:437:in `start' /var/www/miq/vmdb/app/models/miq_worker.rb:269:in `start_worker' /var/www/miq/vmdb/app/models/miq_worker.rb:147:in `block in sync_workers' /var/www/miq/vmdb/app/models/miq_worker.rb:147:in `times' /var/www/miq/vmdb/app/models/miq_worker.rb:147:in `sync_workers' /var/www/miq/vmdb/app/models/miq_server/worker_management/monitor.rb:54: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.rb:156:in `start' /var/www/miq/vmdb/app/models/miq_server.rb:247:in `start' /var/www/miq/vmdb/lib/workers/evm_server.rb:27:in `start' /var/www/miq/vmdb/lib/workers/evm_server.rb:48:in `start' /var/www/miq/vmdb/lib/workers/bin/evm_server.rb:4:in `<main>' Version-Release number of selected component (if applicable): 5.11.5.0 How reproducible: Every time Steps to Reproduce: 1. Perform a SmartState Analysis of a small VM 2. Examine evm.log for the stack trace Actual results: See the stack trace and error Expected results: No error Additional info: This seems to be related to the new glob processing in a directory path. If I add an entry '/home/*/.bash_profile' to the analysis profile, I see a similar stack trace that shows that the directories /home/{nags,pemcg,sjames} have been discovered, i.e. [----] I, [2020-04-15T11:58:28.280355 #5584:2abf39d245c4] INFO -- : Q-task_id([job_dispatcher]) Directory '/home/*' not found [----] E, [2020-04-15T11:58:28.283845 #5584:2abf39d245c4] ERROR -- : Q-task_id([job_dispatcher]) process_each_glob_file: Exception undefined method `difference' for [".", "..", "nagios", "pemcg", "sjames"]:Array rescued [----] D, [2020-04-15T11:58:28.284013 #5584:2abf39d245c4] DEBUG -- : Q-task_id([job_dispatcher]) /opt/rh/cfme-gemset/gems/manageiq-smartstate-0.3.7/lib/metadata/util/find_class_methods.rb:74:in `get_dir_entries' ...