migrate
migrate copied to clipboard
JSONDecodeError when importing users
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