UnboundLocalError: local variable 'sumOfSquares' referenced before assignment

Bug #907586 reported by Rob Smith
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Graphite
Fix Released
Medium
Unassigned

Bug Description

http://graphite/render/?target=stdev(*.natasha.memory.active,100)&format=json

Traceback (most recent call last):
  File "/usr/lib64/python2.6/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/opt/graphite/webapp/graphite/render/views.py", line 105, in renderView
    seriesList = evaluateTarget(requestContext, target)
  File "/opt/graphite/webapp/graphite/render/evaluator.py", line 10, in evaluateTarget
    result = evaluateTokens(requestContext, tokens)
  File "/opt/graphite/webapp/graphite/render/evaluator.py", line 21, in evaluateTokens
    return evaluateTokens(requestContext, tokens.expression)
  File "/opt/graphite/webapp/graphite/render/evaluator.py", line 29, in evaluateTokens
    return func(requestContext, *args)
  File "/opt/graphite/webapp/graphite/render/functions.py", line 1069, in stdev
    (sd, sumOfSquares) = doStdDev(sumOfSquares, toDrop, series[index+time], time, avg)
UnboundLocalError: local variable 'sumOfSquares' referenced before assignment

Revision history for this message
Michael Leinartas (mleinartas) wrote :

This is due to the series having missing points. The specific stacktrace here was fixed sometime after 0.9.9 but missing data now triggers this instead:

Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.6/site-packages/graphite/render/views.py", line 105, in renderView
    seriesList = evaluateTarget(requestContext, target)
  File "/usr/lib/python2.6/site-packages/graphite/render/evaluator.py", line 10, in evaluateTarget
    result = evaluateTokens(requestContext, tokens)
  File "/usr/lib/python2.6/site-packages/graphite/render/evaluator.py", line 21, in evaluateTokens
    return evaluateTokens(requestContext, tokens.expression)
  File "/usr/lib/python2.6/site-packages/graphite/render/evaluator.py", line 29, in evaluateTokens
    return func(requestContext, *args)
  File "/usr/lib/python2.6/site-packages/graphite/render/functions.py", line 1310, in stdev
    (sd, sumOfSquares) = doStdDev(sumOfSquares, toDrop, series[index+time], time, avg)
  File "/usr/lib/python2.6/site-packages/graphite/render/functions.py", line 1268, in doStdDev
    return (math.sqrt((newSumOfSquares / float(n)) - (avg * avg)), newSumOfSquares)
ValueError: math domain error

Revision history for this message
Michael Leinartas (mleinartas) wrote :

I have a proposed fix to this, looking for comments: https://code.launchpad.net/~mleinartas/graphite/stdev/+merge/94248

Changed in graphite:
status: New → Confirmed
Revision history for this message
Michael Leinartas (mleinartas) wrote :

Committed in r715

Changed in graphite:
importance: Undecided → Medium
milestone: none → 0.9.10
status: Confirmed → Fix Committed
Changed in graphite:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.