Project

General

Profile

Bug #22618

cetskelgen throwing errors

Added by Jeremy Hewes 8 months ago. Updated 8 months ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Application
Target version:
Start date:
05/22/2019
Due date:
% Done:

100%

Estimated time:
Spent time:
Occurs In:
Scope:
Internal
Experiment:
DUNE
SSI Package:
art
Duration:

Description

In new versions of LArSoft, I find the cetskelgen command throws an error whenever I try to use it -- even when I just call --help for informational output. The error I get is:

-bash-4.1$ cetskelgen --help-types
Couldn't require CetSkelPlugins::Analyzer : Type of arg 1 to keys must be hash (not private variable) at /cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_04/perllib/CetSkelPlugins/Analyzer.pm line 95, near "$entries_for_flavor) "
Type of arg 1 to keys must be hash (not private variable) at /cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_04/perllib/CetSkelPlugins/Analyzer.pm line 169, near "$entries_for_flavor) "
Compilation failed in require at (eval 16) line 3.
at /usr/share/perl5/Module/Pluggable.pm line 28

I've heard reports from a couple of other people that they've also seen this, so it doesn't seem to be limited to just me. Any help is much appreciated!

History

#1 Updated by Kyle Knoepfel 8 months ago

  • Scope set to Internal
  • Assignee set to Kyle Knoepfel
  • Status changed from New to Assigned
  • Project changed from LArSoft to art

Error reproduced on SLF6 machine. Will investigate.

#2 Updated by Kyle Knoepfel 8 months ago

The SLF6 machine I logged in to used Perl 5.10. But when I type 'cetskelgen --help-types' on an SL7 machine, which uses Perl 5.16, I get the expected printout:

-bash-4.2$ cetskelgen --help-types
Available plugin types:
* analyzer from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/Analyzer.pm)
  Usage: analyzer[:<arg>[,<arg>]+]
  Args:
    [--flavor,<LEGACY|SHARED|REPLICATED>]
      Define the threading flavor of the analyzer (default LEGACY).
* eldestination from messagefacility version v2_04_03 (/cvmfs/larsoft.opensciencegrid.org/products/messagefacility/v2_04_03/perllib/CetSkelPlugins/ELdestination.pm)
* emptyeventtimestampplugin from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/EmptyEventTimestampPlugin.pm)
* filecatalogmetadataplugin from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/FileCatalogMetadataPlugin.pm)
* filter from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/Filter.pm)
  Usage: filter[:<arg>[,<arg>]+]
  Args:
    [--flavor,<LEGACY|SHARED|REPLICATED>]
      Define the threading flavor of the analyzer (default LEGACY).
* output from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/Output.pm)
* producer from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/Producer.pm)
  Usage: producer[:<arg>[,<arg>]+]
  Args:
    [--flavor,<LEGACY|SHARED|REPLICATED>]
      Define the threading flavor of the analyzer (default LEGACY).
* resultsproducer from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/ResultsProducer.pm)
* service from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/Service.pm)
  Usage: service[:<arg>[,<arg>]+]
  Args:
    [--scope,<LEGACY|GLOBAL>]
      Define the scope of the service for the DECLARE and DEFINE service
      macros as applicable (default LEGACY).
* serviceimpl from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/ServiceImpl.pm)
  Usage: serviceimpl[:<arg>[,<arg>]+]
  Args:
    [--scope,<LEGACY|GLOBAL>]
      Define the scope of the service for the DECLARE and DEFINE service
      macros as applicable (default LEGACY).

    <interface>[,<interface-header>]
      Specify the interface this service implements, and optionally the
      header include location (default "<interface>.h").
* serviceinterface from art version v3_02_05 (/cvmfs/larsoft.opensciencegrid.org/products/art/v3_02_05/perllib/CetSkelPlugins/ServiceInterface.pm)
  Usage: serviceinterface[:<arg>[,<arg>]+]
  Args:
    [--scope,<LEGACY|GLOBAL>]
      Define the scope of the service for the DECLARE and DEFINE service
      macros as applicable (default LEGACY).
For information on required and optional functions for each type,
use --help-type <type>

So this looks like a difference in Perl versions. Will continue to investigate.

#3 Updated by Kyle Knoepfel 8 months ago

  • % Done changed from 0 to 100
  • Status changed from Assigned to Resolved
  • Category set to Application
  • SSI Package art added

The problem is understood. It stemmed in a difference in behavior between Perl 5.10 and 5.16 regarding how iterating through hashes is handled. This problem has been fixed with commit art:d4b85b7c. Unfortunately, it will require a new version of art before the --help-types command will work properly for SLF6, or any platform that relies on a Perl version older than 5.14.

Please let us know if a bug-fix release for art 3.02 is desired, or if you would rather wait until art 3.03 is released (around the beginning of June). Note that upgrading LArSoft to art 3.03 will take longer than upgrading it to a bug-fix release.

#4 Updated by Kyle Knoepfel 8 months ago

  • Target version set to 3.02.06

#5 Updated by Kyle Knoepfel 8 months ago

  • Status changed from Resolved to Closed


Also available in: Atom PDF