415 views

Description

Performance Analytic jobs are failing when using an Indicator Condition based on a field with the type Translated Text. The error displayed is "Error collecting for 20170606 java.lang.IllegalStateException: Sparse storage format has one field, sys_id".

Steps to Reproduce

Note – This example is based on the [asmt_metric_definition.display] field which is the type of Translated Text.

  1. Ensure that the Performance Analytics - Premium plugin [com.snc.pa.premium] is installed and active.

    For more information about administering Performance Analytics, see the product documentation topic Performance Analytics and Reporting.

  2. Create an Indicator Source based on the Metric Result table [asmt_metric_result].

    You do not need to add any condition.

    For more information, see the product documentation topic Performance Analytics indicators.

  3. Create an Indicator based on the new Indicator Source with the following values:

    • Frequency: Daily
    • Direction: Maximize
    • Unit: #
    • Precision: 0
    • Aggregate: Count
  4. Add the following condition: [Metric definition.Display] [contains] [true] (dot walk to .Metric definition >> Assessment Metric Definition fields >> Display).

    You do not need to add any Breakdown.

  5. Create an On Demand PA Job and link it to the new Indicator.

  6. Execute the job and check the logs.

    The job fails with State = 'Collected with errors' and the following error:

    Error collecting for 20170606 java.lang.IllegalStateException: Sparse storage format has one field, sys_id
    at com.glide.db.meta.SparseStorage.getValue(SparseStorage.java:70)
    at com.snc.pa.dc.Row.getValue(Row.java:104)
    at com.snc.pa.dc.Indicator.match(Indicator.java:232)
    at com.snc.pa.dc.DataCollector.map(DataCollector.java:421)
    at com.snc.pa.dc.DataCollector.collect(DataCollector.java:271)
    at com.snc.pa.dc.DataCollector.collect(DataCollector.java:213)
    at com.snc.pa.dc.DataCollector.collect(DataCollector.java:171)
    at com.snc.pa.dc.DataCollectorJob.collect(DataCollectorJob.java:195)
    at com.snc.pa.dc.DataCollectorJob.collectWithMutex(DataCollectorJob.java:114)
    at com.snc.pa.dc.DataCollectorJob.execute(DataCollectorJob.java:100)
    at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:103)
    at com.glide.schedule.JobExecutor.execute(JobExecutor.java:89)
    at com.glide.schedule.GlideScheduleWorker.executeJob(GlideScheduleWorker.java:219)
    at com.glide.schedule.GlideScheduleWorker.process(GlideScheduleWorker.java:157)
    at com.glide.schedule.GlideScheduleWorker.run(GlideScheduleWorker.java:67)

 

Workaround

Add the Condition based on a field with the type Translated Text at the Indicator Source level instead of at the Indicator level.

Note that you need only to re-create the Additional Conditions from the indicator into the Indicator Source.  You do not need to reference each individual question, for every translated text field, in the Indicator Source conditions.


Related Problem: PRB1041283

Seen In

There is no data to report.

Intended Fix Version

Madrid

Safe Harbor Statement

This "Intended Fix Version" information is meant to outline ServiceNow's general product direction and should not be relied upon in making a purchasing decision. The information provided here is for information purposes only and may not be incorporated into any contract. It is not a commitment, promise, or legal obligation to deliver any material, code, or functionality. The development, release, and timing of any features or functionality described for our products remains at ServiceNow's sole discretion.

Associated Community Threads

There is no data to report.

Article Information

Last Updated:2018-09-14 16:15:53
Published:2017-11-08