Closed rodvand closed 2 years ago
I believe it relates to having a Changelog entry from a cable creation.
I suspect you're right, but I haven't been able to reproduce this. It would help to see the full stack trace; are you able to post that? (If you click "Switch to copy-and-paste view" next to the "Traceback" heading it will show a plaintext traceback.)
This is the error text from the email notification. As I've deleted all the change logs I'm unable to reproduce the issue right now.
Internal Server Error: /
AttributeError at /
'NoneType' object has no attribute '_base_manager'
Request Method: GET
Request URL: https://****/ Django Version: 3.2.9 Python Executable: /opt/netbox-3.1-beta1/venv/bin/python3
Python Version: 3.8.3
Python Path: ['/opt/netbox/netbox', '/opt/netbox-3.1-beta1/netbox', '/opt/netbox-3.1-beta1/venv/bin', '/usr/lib64/python38.zip', '/usr/lib64/python3.8', '/usr/lib64/python3.8/lib-dynload', '/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages', '/opt/netbox-3.1-beta1/venv/lib/python3.8/site-packages']
Server time: Mon, 08 Nov 2021 19:35:54 +0100 Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'corsheaders',
'debug_toolbar',
'graphiql_debug_toolbar',
'django_filters',
'django_tables2',
'django_prometheus',
'graphene_django',
'mptt',
'rest_framework',
'social_django',
'taggit',
'timezone_field',
'circuits',
'dcim',
'ipam',
'extras',
'tenancy',
'users',
'utilities',
'virtualization',
'wireless',
'django_rq',
'drf_yasg']
Installed Middleware:
['graphiql_debug_toolbar.middleware.DebugToolbarMiddleware',
'django_prometheus.middleware.PrometheusBeforeMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'netbox.middleware.ExceptionHandlingMiddleware',
'netbox.middleware.RemoteUserMiddleware',
'netbox.middleware.LoginRequiredMiddleware',
'netbox.middleware.DynamicConfigMiddleware',
'netbox.middleware.APIVersionMiddleware',
'netbox.middleware.ObjectChangeMiddleware',
'django_prometheus.middleware.PrometheusAfterMiddleware']
Traceback (most recent call last):
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 829, in _resolve_lookup
current = current[bit]
During handling of the above exception ('ObjectChange' object is not subscriptable), another exception occurred:
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/views/generic/base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch
return handler(request, *args, **kwargs)
File "/opt/netbox/netbox/netbox/views/__init__.py", line 150, in get
return render(request, self.template_name, {
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 170, in render
return self._render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render
return self.nodelist.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render
return self.nodelist.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render
return self.nodelist.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/defaulttags.py", line 312, in render
return nodelist.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django_tables2/templatetags/django_tables2.py", line 167, in render
return template.render(context={"table": table}, request=request)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 170, in render
return self._render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render
return self.nodelist.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/defaulttags.py", line 211, in render
nodelist.append(node.render_annotated(context))
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/defaulttags.py", line 167, in render
values = list(values)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django_tables2/rows.py", line 244, in items
column.current_value = self.get_cell(column.name)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django_tables2/rows.py", line 197, in get_cell
return self._get_and_render_with(
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django_tables2/rows.py", line 173, in _get_and_render_with
return render_func(bound_column, value)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django_tables2/rows.py", line 206, in _call_render
content = call_with_appropriate(bound_column.render, render_kwargs)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django_tables2/utils.py", line 572, in call_with_appropriate
return fn(**kwargs)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django_tables2/columns/templatecolumn.py", line 66, in render
return Template(self.template_code).render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 172, in render
return self._render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render
return self.nodelist.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/defaulttags.py", line 305, in render
match = condition.eval(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/defaulttags.py", line 889, in eval
return self.value.resolve(context, ignore_failures=True)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 671, in resolve
obj = self.var.resolve(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 796, in resolve
value = self._resolve_lookup(context)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/template/base.py", line 837, in _resolve_lookup
current = getattr(current, bit)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/contrib/contenttypes/fields.py", line 241, in __get__
rel_obj = ct.get_object_for_this_type(pk=pk_val)
File "/opt/netbox-3.1-beta1/venv/lib64/python3.8/site-packages/django/contrib/contenttypes/models.py", line 175, in get_object_for_this_type
return self.model_class()._base_manager.using(self._state.db).get(**kwargs)
Exception Type: AttributeError at /
Exception Value: 'NoneType' object has no attribute '_base_manager'
Unfortunately I still haven't been able to reproduce this. I've been populating the changelog under v3.0 with all types of changes that might be relevant and then upgrading to v3.1, but I never encounter an error. @rodvand can you think of anything else to try?
@rodvand I know this is a long shot, but... Would you happen to have a pre-upgrade db snapshot?
I can revert to an older install and try upgrading again. Can you give me some pointers on what would be useful info to collect when I do so? We do have "unlimited" change log retention enabled so there would be stuff there from 2.8 and onward.
I'd love to see if we can narrow it down to the specific change record that's causing the error. Maybe try navigating to the change log with ?per_page=1
and trying clicking through one by one? If the exception is showing on the home page, it should be in the top 15.
Good point. I was thinking revert and get an export of the content types so we could see what type ID is up, then get a list of content types from the DB.
@rodvand any luck reproducing this? I still haven't been able to, and I've been jumping between develop
and feature
pretty frequently.
I managed to reproduce it with the backup of my database. It was due to change log entries by a plugin (netbox-bgp). I had disabled the plugin for the upgrade, but the change log entries were still lurking behind creating havoc. Apologies for the confusion.
Ahh, that makes sense. Thanks for following up!
NetBox version
v3.1-beta1
Python version
3.8
Steps to Reproduce
Unsure on the full steps to reproduce, but I believe it relates to having a Changelog entry from a cable creation. Upgraded from NetBox 3.0.9 to 3.1-beta1.
Expected Behavior
Front page to load with no issue.
Observed Behavior
I can load pages where Changelogs are not fetched, so it' definitely related to changelog entries.
Apologies for providing error message by screenshot... it was just the easiest way here.