migrate icon indicating copy to clipboard operation
migrate copied to clipboard

JSONDecodeError when importing users

Open petrcv-db opened this issue 3 years ago • 0 comments

When importing users I get the following error that fails the whole import pipeline

post: https://wehkamp-play-ground.cloud.databricks.com/api/2.0/preview/scim/v2/Users
Get: https://wehkamp-play-ground.cloud.databricks.com/api/2.0/preview/scim/v2/Users

2022-04-08,09:58:05;INFO;Creating user: [email protected]
Traceback (most recent call last):
  File "migrate/migration_pipeline.py", line 328, in <module>
    main()
  File "migrate/migration_pipeline.py", line 324, in main
    pipeline.run()
  File "/home/ubuntu/migrate/pipeline/pipeline.py", line 64, in run
    future.result()
  File "/usr/lib/python3.8/concurrent/futures/_base.py", line 444, in result
    return self.__get_result()
  File "/usr/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
  File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/ubuntu/migrate/pipeline/pipeline.py", line 73, in _run_task
    task.run()
  File "/home/ubuntu/migrate/tasks/tasks.py", line 76, in run
    scim_c.import_all_users()
  File "/home/ubuntu/migrate/dbclient/ScimClient.py", line 458, in import_all_users
    self.import_users(user_log, user_error_logger)
  File "/home/ubuntu/migrate/dbclient/ScimClient.py", line 438, in import_users
    fp.write(json.dumps(self.get_user_id_mapping()))
  File "/home/ubuntu/migrate/dbclient/ScimClient.py", line 157, in get_user_id_mapping
    user_list = self.get('/preview/scim/v2/Users').get('Resources', None)
  File "/home/ubuntu/migrate/dbclient/dbclient.py", line 203, in get
    results = raw_results.json()
  File "/usr/lib/python3/dist-packages/requests/models.py", line 888, in json
    return complexjson.loads(
  File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 518, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Seems like the GET got an empty body which failed to parse as json. It looks like it was a rate-limiting issue, because when re-running the pipeline, it didn't fail. This should at least fail with a more descriptive error. Even better than that, the error should be prevented by re-trying after some time

petrcv-db avatar Apr 11 '22 14:04 petrcv-db