Closed fdomain closed 4 months ago
I just gave another try today, and I still get a similar error (on another object though):
[poc] Fetching from API (private)
[poc] Processing 49028 objects
Fetching dangling relationship Network 35061
Fetching dangling relationship Network 35090
Fetching dangling relationship Organization 37182
Fetching dangling relationship Network 35094
Fetching dangling relationship Organization 37185
Fetching dangling relationship Network 35098
Fetching dangling relationship Organization 37187
Fetching dangling relationship Network 35110
Fetching dangling relationship Organization 37196
Fetching dangling relationship Network 35102
Fetching dangling relationship Organization 37192
Fetching dangling relationship Network 35113
Fetching dangling relationship Organization 37198
Fetching dangling relationship Network 35083
Fetching dangling relationship Network 35106
Traceback (most recent call last):
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 83, in create_obj
self.backend.get_object(self.backend.get_concrete(resource), pk)
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/backend.py", line 27, in wrapped
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/django_peeringdb/client_adaptor/backend.py", line 94, in get_object
return concrete.objects.get(pk=id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/django/db/models/query.py", line 637, in get
raise self.model.DoesNotExist(
django_peeringdb.models.concrete.Network.DoesNotExist: Network matching query does not exist.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 142, in create_obj
self.clean_obj(obj)
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 69, in clean_obj
raise e
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 59, in clean_obj
self.backend.clean(obj)
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/django_peeringdb/client_adaptor/backend.py", line 142, in clean
obj.full_clean()
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/django/db/models/base.py", line 1502, in full_clean
raise ValidationError(errors)
django.core.exceptions.ValidationError: {'name': ['Network with this Name already exists.']}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/f.domain/dev/peeringdb-py/.venv/bin/peeringdb", line 8, in <module>
sys.exit(main())
^^^^^^
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/cli.py", line 68, in main
return handler(config=cfg, **vars(options))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/commands.py", line 20, in _wrapped
r = func(*a, **k)
^^^^^^^^^^^^^
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/commands.py", line 262, in handle
client.updater.update_all(rs, since, fetch_private=kwargs["fetch_private"])
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 235, in update_all
self._handle_initial_sync(entries, res)
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 164, in _handle_initial_sync
obj, ret = self.create_obj(row, res)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 95, in create_obj
rel_obj, _ = self.create_obj(related_row, resource)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 147, in create_obj
self.clean_obj(obj)
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 69, in clean_obj
raise e
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/peeringdb/_update.py", line 59, in clean_obj
self.backend.clean(obj)
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/django_peeringdb/client_adaptor/backend.py", line 142, in clean
obj.full_clean()
File "/home/f.domain/dev/peeringdb-py/.venv/lib/python3.11/site-packages/django/db/models/base.py", line 1502, in full_clean
raise ValidationError(errors)
django.core.exceptions.ValidationError: {'name': ['Network with this Name already exists.']}
This is still from the command peeringdb sync --fetch-private
am able to reproduce, think this needs a code fix
edit: to be clear, seems to only happen with --fetch-private
argument passed
Hello,
I tried to bootstrap a local peeringdb copy using peeringdb-py, however I can't make a full db initialization, the sync crashes due to (I suppose) duplicates entries.
Local environment
Description
The db is not fully synced as it fails when gathering the
poc
resources, the program exists with the following error:Network with this Name already exists.
By looking deeper into this issue, the sync fails when trying to add a dangling relationship for the Network
34901
(https://www.peeringdb.com/net/34901). Indeed, its network nameRapid-Fire-y
is already used by another entry (Network33473
).From the python interpreter:
Steps to reproduce
peeringdb sync --fetch-private
from a fresh installStacktrace