Octoprint: Autoreport settings failure

Created on 4 Aug 2018  ·  16Comments  ·  Source: OctoPrint/OctoPrint

What were you doing?

Changing the temperature autoreport interval in the settings from 2 to 5 or 10

  1. ... Settings
  2. ... Serial Connection
  3. ... Intervals & Timeouts
  4. ... Temperature interval (autoreport)
  5. ... Set to 5
  6. ... Save

What did you expect to happen?

Save and close the settings without errors. auto report interval change to 5s (M155 S5)

What happened instead?

Settings stay open.
This error occur in the log:

2018-08-04 08:31:37,135 - octoprint - ERROR - Exception on /api/settings [POST]
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 1140, in decorated_view
    return flask_login.login_required(func)(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_principal/__init__.py", line 198, in _decorated
    rv = f(*args, **kw)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 294, in setSettings
    response = _saveSettings(data)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 418, in _saveSettings
    if "timeoutTemperatureAutoreport" in data["serial"]: s.setFloat(["serial", "timeout", "temperatureAutoreport"], data["serial"]["timeoutTemperatureAutoreport"], minimum=0.0)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/settings.py", line 1688, in setFloat
    self.set(path, floatValue, **kwargs)
TypeError: set() got an unexpected keyword argument 'minimum'
2018-08-04 08:31:37,141 - tornado.access - ERROR - 500 POST /api/settings (::ffff:192.168.200.8) 24.39ms
2018-08-04 08:34:48,675 - octoprint.server.heartbeat - INFO - Server heartbeat <3

Did the same happen when running OctoPrint in safe mode?

Yes

Version of OctoPrint

1.3.9

Operating System running OctoPrint

Linux Octopi 0.15.0

Printer model & used firmware incl. version

Tevo Tornado, Marlin bugfixes-2.0.x
It fail with tornado connected or not.

Browser and version of browser, operating system running browser

Link to octoprint.log

Link to contents of terminal tab or serial.log

Link to contents of Javascript console in the browser

Screenshot(s)/video(s) showing the problem:

I have read the FAQ.

bug done

Most helpful comment

I didn't say anything about "the user screwed up", is said it looks like some corrupt cached file.

The stack trace from the OP:

2018-08-04 08:31:37,135 - octoprint - ERROR - Exception on /api/settings [POST]
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 1140, in decorated_view
    return flask_login.login_required(func)(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_principal/__init__.py", line 198, in _decorated
    rv = f(*args, **kw)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 294, in setSettings
    response = _saveSettings(data)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 418, in _saveSettings
    if "timeoutTemperatureAutoreport" in data["serial"]: s.setFloat(["serial", "timeout", "temperatureAutoreport"], data["serial"]["timeoutTemperatureAutoreport"], minimum=0.0)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/settings.py", line 1688, in setFloat
    self.set(path, floatValue, **kwargs)
TypeError: set() got an unexpected keyword argument 'minimum'

and the stack trace from @kazibole

2018-08-04 20:53:50,825 - octoprint - ERROR - Exception on /api/settings [POST]
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 1140, in decorated_view
    return flask_login.login_required(func)(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_principal/__init__.py", line 198, in _decorated
    rv = f(*args, **kw)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 294, in setSettings
    response = _saveSettings(data)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 419, in _saveSettings
    if "timeoutSdStatus" in data["serial"]: s.setFloat(["serial", "timeout", "sdStatus"], data["serial"]["timeoutSdStatus"], minimum=1.0)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/settings.py", line 1688, in setFloat
    self.set(path, floatValue, **kwargs)
TypeError: set() got an unexpected keyword argument 'minimum'

Your stack trace:

2018-08-12 18:26:56,758 - octoprint - ERROR - Exception on / [GET]
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/views.py", line 399, in index
    response = default_view()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/views.py", line 385, in default_view
    return preemptively_cached()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 887, in decorated_function
    return f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 941, in decorated_function
    return f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 674, in decorated_function
    rv = f_with_duration(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 643, in f_with_duration
    return f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 896, in decorated_function
    rv = f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 912, in decorated_function
    rv = f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/views.py", line 372, in make_default_ui
    r = make_response(render_template("index.jinja2", **render_kwargs))
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/templating.py", line 128, in render_template
    context, ctx.app)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/templating.py", line 110, in _render
    rv = template.render(context)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/jinja2/environment.py", line 989, in render
    return self.environment.handle_exception(exc_info, True)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/jinja2/environment.py", line 754, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/templates/index.jinja2", line 149, in top-level template code
    {% include 'javascripts.jinja2' %}
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/templates/javascripts.jinja2", line 4, in top-level template code
    {% assets "js_core" %}<script type="text/javascript" src="{{ ASSET_URL }}"></script>{% endassets %}
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/ext/jinja2.py", line 186, in _render_assets
    urls = bundle.urls()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 806, in urls
    urls.extend(bundle._urls(new_ctx, extra_filters, *args, **kwargs))
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 765, in _urls
    *args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 619, in _build
    force, disable_cache=disable_cache, extra_filters=extra_filters)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 543, in _merge_and_apply
    kwargs=item_data)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/merge.py", line 276, in apply
    return self._wrap_cache(key, func)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 219, in fixed_wrap_cache
    content = self.cache.get(key)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 182, in fixed_get
    hash = make_md5(self.V, key)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 84, in make_md5
    for d in walk(data):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 61, in walk
    for d in walk(item): yield d
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 61, in walk
    for d in walk(item): yield d
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 67, in walk
    yield obj.data().encode('utf-8')
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/merge.py", line 79, in data
    return f.read()
  File "/home/pi/oprint/lib/python2.7/codecs.py", line 314, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 4167: invalid start byte
2018-08-12 18:2

How is this the same file, the same line of code, the same endpoint, the same traceback, the same anything? It's not the same source file, it's not the same call that led to it, it's completely unrelated to this ticket. I'm not saying this isn't an issue or that you are who caused it, but it has nothing to do with this ticket here. Please open another ticket, include all required information (full logs, reproduction steps, etc) so this can be looked into properly.

All 16 comments

I am also experiencing the same problem while trying to change settings on that page, like:

  • Temperature interval (polling)
  • SD status interval (polling)
  • Communication timeout

Running OctoPrint 1.3.9 on OctoPi 0.15.1. Also tried in safe mode and the problem remains.

The following error occurs in the Octoprint log:

2018-08-04 20:53:50,825 - octoprint - ERROR - Exception on /api/settings [POST]
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 1140, in decorated_view
    return flask_login.login_required(func)(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_principal/__init__.py", line 198, in _decorated
    rv = f(*args, **kw)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 294, in setSettings
    response = _saveSettings(data)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 419, in _saveSettings
    if "timeoutSdStatus" in data["serial"]: s.setFloat(["serial", "timeout", "sdStatus"], data["serial"]["timeoutSdStatus"], minimum=1.0)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/settings.py", line 1688, in setFloat
    self.set(path, floatValue, **kwargs)
TypeError: set() got an unexpected keyword argument 'minimum'
2018-08-04 20:53:50,831 - tornado.access - ERROR - 500 POST /api/settings (::ffff:172.16.12.20) 29.13ms

Looking at some previous issues with the similar error (TypeError: got an unexpected keyword argument), I verified that I am running sarge 0.1.4 (as far as I can tell):

pi@octopi:~ $ ~/oprint/bin/pip freeze
argh==0.26.2
awesome-slugify==1.6.5
Babel==2.5.3
backports-abc==0.5
backports.csv==1.0.6
backports.functools-lru-cache==1.5
backports.ssl-match-hostname==3.5.0.1
blinker==1.4
certifi==2018.4.16
chainmap==1.0.2
chardet==3.0.4
click==6.2
cycler==0.10.0
docker==2.7.0
docker-pycreds==0.3.0
emoji==0.4.5
feedparser==5.2.1
Flask==0.10.1
Flask-Assets==0.10
Flask-Babel==0.9
Flask-Login==0.2.11
Flask-Principal==0.3.5
frozendict==1.2
future==0.15.2
futures==3.1.1
humanize==0.5.1
idna==2.6
imgurpython==1.1.7
ipaddress==1.0.22
itsdangerous==0.24
Jinja2==2.8.1
kiwisolver==1.0.1
Markdown==2.6.11
MarkupSafe==1.0
matplotlib==2.2.2
minio==4.0.0
monotonic==1.3
netaddr==0.7.19
netifaces==0.10.7
numpy==1.14.5
OctoPrint==1.3.9
OctoPrint-Autoscroll==0.0.2
OctoPrint-Fullscreen==0.0.4
OctoPrint-PrusaMeshMap==0.3.0
OctoPrint-TabOrder==0.5.0
OctoPrint-WebcamTab==0.1.2
Octoslack==1.5.0
pathtools==0.1.2
Pillow==5.1.0
pkg-resources==0.0.0
pkginfo==1.4.2
psutil==5.4.6
pyasn1==0.4.2
pybonjour==1.1.1
pylru==1.0.9
pyparsing==2.2.0
pyserial==3.4
python-dateutil==2.6.1
pytz==2018.4
PyYAML==3.10
regex==2018.2.21
requests==2.18.4
rsa==3.2.3
sarge==0.1.4
scandir==1.3
semantic-version==2.4.2
singledispatch==3.4.0.3
six==1.11.0
slackclient==1.2.1
slacker==0.9.65
sockjs-tornado==1.0.3
speaklater==1.3
SQLAlchemy==1.1.18
subprocess32==3.5.2
tinys3==0.1.12
tornado==4.5.3
Unidecode==0.4.21
uritools==2.1.1
urllib3==1.22
watchdog==0.8.3
webassets==0.12.1
websocket-client==0.40.0
Werkzeug==0.8.3
wrapt==1.10.11
XlsxWriter==1.0.5
YouTube-Live==0.4.0

I'm having the same issue, except it happens upon booting the pi. This system worked great until a few weeks ago until I shut it down and unplugged to move to a new location. Today, I get it set up in the new location and power on, and nothing will work. Once the pi boots, it gives only 500 errors after a 60 second delay. Investigation show this happen in the log during startup.

2018-08-12 18:25:58,995 - octoprint.server.preemptive_cache - INFO - Preemptively caching / (ui _default) for {'query_string': 'l10n=en', 'path': '/', 'base_url': 'http://octopi.jam/'}
2018-08-12 18:26:04,103 - octoprint.plugins.pluginmanager - INFO - Loaded notice data from disk, was still valid
2018-08-12 18:26:05,101 - octoprint.plugins.pluginmanager - INFO - Loaded notice data from disk, was still valid
2018-08-12 18:26:56,758 - octoprint - ERROR - Exception on / [GET]
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/views.py", line 399, in index
    response = default_view()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/views.py", line 385, in default_view
    return preemptively_cached()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 887, in decorated_function
    return f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 941, in decorated_function
    return f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 674, in decorated_function
    rv = f_with_duration(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 643, in f_with_duration
    return f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 896, in decorated_function
    rv = f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 912, in decorated_function
    rv = f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/views.py", line 372, in make_default_ui
    r = make_response(render_template("index.jinja2", **render_kwargs))
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/templating.py", line 128, in render_template
    context, ctx.app)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/templating.py", line 110, in _render
    rv = template.render(context)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/jinja2/environment.py", line 989, in render
    return self.environment.handle_exception(exc_info, True)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/jinja2/environment.py", line 754, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/templates/index.jinja2", line 149, in top-level template code
    {% include 'javascripts.jinja2' %}
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/templates/javascripts.jinja2", line 4, in top-level template code
    {% assets "js_core" %}<script type="text/javascript" src="{{ ASSET_URL }}"></script>{% endassets %}
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/ext/jinja2.py", line 186, in _render_assets
    urls = bundle.urls()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 806, in urls
    urls.extend(bundle._urls(new_ctx, extra_filters, *args, **kwargs))
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 765, in _urls
    *args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 619, in _build
    force, disable_cache=disable_cache, extra_filters=extra_filters)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 543, in _merge_and_apply
    kwargs=item_data)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/merge.py", line 276, in apply
    return self._wrap_cache(key, func)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 219, in fixed_wrap_cache
    content = self.cache.get(key)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 182, in fixed_get
    hash = make_md5(self.V, key)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 84, in make_md5
    for d in walk(data):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 61, in walk
    for d in walk(item): yield d
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 61, in walk
    for d in walk(item): yield d
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 67, in walk
    yield obj.data().encode('utf-8')
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/merge.py", line 79, in data
    return f.read()
  File "/home/pi/oprint/lib/python2.7/codecs.py", line 314, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 4167: invalid start byte
2018-08-12 18:2
6:56,834 - octoprint.server.preemptive_cache - INFO - ... done in 57.84s

Nothing changed from what was working a few weeks ago. When booting, I did see github called, so it is possible it downloaded a new patch?

@Carpedraconis that is not the same issue. Your's looks like your file system got corrupted. Never just pull power on the Pi, always shut it down properly first.

I'm a Linux admin, I know better. I'm getting the same python code error
on the same line as the other entries.

On Mon, Aug 13, 2018, 2:42 AM Gina Häußge notifications@github.com wrote:

@Carpedraconis https://github.com/Carpedraconis that is not the same
issue. Your's looks like your file system got corrupted. Never just pull
power on the Pi, always shut it down properly first.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/foosel/OctoPrint/issues/2780#issuecomment-412422302,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ARnLRWEkqiIa4rF4Fo2tQPMOp0w30Y7dks5uQR_lgaJpZM4Vu6WJ
.

@Carpedraconis this issue is about what looks to be a keyword issue inside OctoPrint's code, triggered when attempting to save one of the timeout options in the settings dialog. Your issue is about some mangled data inside the webasset cache triggered when attempting to access the UI. That's not even close "the same python code error".

Same line of code, same file, same stack trace puts both issues in the same
part of the code. I completely removed the web cache and rebooted the pi
(so it would rebuild) and the problem persists. So no, it's not a "user
screwed up the cache" issue.

On Wed, Aug 15, 2018, 3:35 AM Gina Häußge notifications@github.com wrote:

@Carpedraconis https://github.com/Carpedraconis this issue is about
what looks to be a keyword issue inside OctoPrint's code, triggered when
attempting to save one of the timeout options in the settings dialog. Your
issue is about some mangled data inside the webasset cache triggered when
attempting to access the UI. That's not even close "the same python code
error".


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/foosel/OctoPrint/issues/2780#issuecomment-413118251,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ARnLRQQickcrLjCRBMqVT6t-0pwCacWVks5uQ89HgaJpZM4Vu6WJ
.

I didn't say anything about "the user screwed up", is said it looks like some corrupt cached file.

The stack trace from the OP:

2018-08-04 08:31:37,135 - octoprint - ERROR - Exception on /api/settings [POST]
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 1140, in decorated_view
    return flask_login.login_required(func)(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_principal/__init__.py", line 198, in _decorated
    rv = f(*args, **kw)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 294, in setSettings
    response = _saveSettings(data)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 418, in _saveSettings
    if "timeoutTemperatureAutoreport" in data["serial"]: s.setFloat(["serial", "timeout", "temperatureAutoreport"], data["serial"]["timeoutTemperatureAutoreport"], minimum=0.0)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/settings.py", line 1688, in setFloat
    self.set(path, floatValue, **kwargs)
TypeError: set() got an unexpected keyword argument 'minimum'

and the stack trace from @kazibole

2018-08-04 20:53:50,825 - octoprint - ERROR - Exception on /api/settings [POST]
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 1140, in decorated_view
    return flask_login.login_required(func)(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask_principal/__init__.py", line 198, in _decorated
    rv = f(*args, **kw)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 294, in setSettings
    response = _saveSettings(data)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/api/settings.py", line 419, in _saveSettings
    if "timeoutSdStatus" in data["serial"]: s.setFloat(["serial", "timeout", "sdStatus"], data["serial"]["timeoutSdStatus"], minimum=1.0)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/settings.py", line 1688, in setFloat
    self.set(path, floatValue, **kwargs)
TypeError: set() got an unexpected keyword argument 'minimum'

Your stack trace:

2018-08-12 18:26:56,758 - octoprint - ERROR - Exception on / [GET]
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/views.py", line 399, in index
    response = default_view()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/views.py", line 385, in default_view
    return preemptively_cached()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 887, in decorated_function
    return f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 941, in decorated_function
    return f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 674, in decorated_function
    rv = f_with_duration(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 643, in f_with_duration
    return f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 896, in decorated_function
    rv = f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 912, in decorated_function
    rv = f(*args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/views.py", line 372, in make_default_ui
    r = make_response(render_template("index.jinja2", **render_kwargs))
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/templating.py", line 128, in render_template
    context, ctx.app)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/flask/templating.py", line 110, in _render
    rv = template.render(context)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/jinja2/environment.py", line 989, in render
    return self.environment.handle_exception(exc_info, True)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/jinja2/environment.py", line 754, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/templates/index.jinja2", line 149, in top-level template code
    {% include 'javascripts.jinja2' %}
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/templates/javascripts.jinja2", line 4, in top-level template code
    {% assets "js_core" %}<script type="text/javascript" src="{{ ASSET_URL }}"></script>{% endassets %}
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/ext/jinja2.py", line 186, in _render_assets
    urls = bundle.urls()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 806, in urls
    urls.extend(bundle._urls(new_ctx, extra_filters, *args, **kwargs))
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 765, in _urls
    *args, **kwargs)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 619, in _build
    force, disable_cache=disable_cache, extra_filters=extra_filters)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/bundle.py", line 543, in _merge_and_apply
    kwargs=item_data)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/merge.py", line 276, in apply
    return self._wrap_cache(key, func)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 219, in fixed_wrap_cache
    content = self.cache.get(key)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/server/util/flask.py", line 182, in fixed_get
    hash = make_md5(self.V, key)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 84, in make_md5
    for d in walk(data):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 61, in walk
    for d in walk(item): yield d
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 61, in walk
    for d in walk(item): yield d
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/cache.py", line 67, in walk
    yield obj.data().encode('utf-8')
  File "/home/pi/oprint/local/lib/python2.7/site-packages/webassets/merge.py", line 79, in data
    return f.read()
  File "/home/pi/oprint/lib/python2.7/codecs.py", line 314, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 4167: invalid start byte
2018-08-12 18:2

How is this the same file, the same line of code, the same endpoint, the same traceback, the same anything? It's not the same source file, it's not the same call that led to it, it's completely unrelated to this ticket. I'm not saying this isn't an issue or that you are who caused it, but it has nothing to do with this ticket here. Please open another ticket, include all required information (full logs, reproduction steps, etc) so this can be looked into properly.

I think the confusion here is that python dumps its tracebacks in the opposite order than is common for other languages (i.e. C/C++). As a primarily C/C++ developer, this was a point of confusion for me when I first started looking at python tracebacks. If you're a C/C++ developer, your eye automatically goes to the first function listed when comparing tracebacks instead of the last function as is produced by python.

@ManuelMcLure That's my impression as well. I have a couple of languages under my belt and am aware how much such differences can throw one off. But if I'm not familiar with a language, and someone who is tells me that I'm misinterpreting a traceback, then I listen the first time instead of doubling down, becoming passive aggressive and potentially misleading others, complicating the situation further 🤷

Fixed by the above commit, already available on maintenance, soon devel, will be released as part of 1.3.10.

thanks ! 👍
when do the rc/maintenance will be updated ?

When it's time to push out a first RC for 1.3.10, for which I don't have a date yet ;)

Hmmm...running 1.3.9 (stable) and get the same error when trying to change the timeouts:
"TypeError: set() got an unexpected keyword argument 'minimum'"
Any idea how to get rid of it?

Hmmm...running 1.3.9 (stable) and get the same error when trying to change the timeouts:
"TypeError: set() got an unexpected keyword argument 'minimum'"
Any idea how to get rid of it?

It will be fixed in 1.3.10.

Thanks, @kazibole - I was confused by the „solved“ tag of this issue.

i got this problem but i cant read the sd card to get the logs because i broke my sd card reader

Was this page helpful?
0 / 5 - 0 ratings