GAE: превышено максимальное количество выделенных идентификаторов

Кажется, что gae присваивает моделям очень высокие идентификаторы. Когда я загружаю свои сущности, я получаю для некоторых записей очень большие числа. Они были автоматически сгенерированы в первую очередь. Скачать их в формате csv не проблема. Но удаление существующих данных и повторная загрузка тех же данных вызывает исключение.

Exceeded maximum allocated IDs

Трассировка:

Traceback (most recent call last):
  File "/opt/eclipse/plugins/org.python.pydev_2.7.5.2013052819/pysrc/pydevd.py", line 1397, in <module>
    debugger.run(setup['file'], None, None)
  File "/opt/eclipse/plugins/org.python.pydev_2.7.5.2013052819/pysrc/pydevd.py", line 1090, in run
    pydev_imports.execfile(file, globals, locals) #execute the script
  File "/home/kave/workspace/google_appengine/appcfg.py", line 171, in <module>
    run_file(__file__, globals())
  File "/home/kave/workspace/google_appengine/appcfg.py", line 167, in run_file
    execfile(script_path, globals_)
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 4247, in <module>
    main(sys.argv)
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 4238, in main
    result = AppCfgApp(argv).Run()
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 2396, in Run
    self.action(self)
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 3973, in __call__
    return method()
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 3785, in PerformUpload
    run_fn(args)
  File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 3676, in RunBulkloader
    sys.exit(bulkloader.Run(arg_dict))
  File "/home/kave/workspace/google_appengine/google/appengine/tools/bulkloader.py", line 4379, in Run
    return _PerformBulkload(arg_dict)
  File "/home/kave/workspace/google_appengine/google/appengine/tools/bulkloader.py", line 4244, in _PerformBulkload
    loader.finalize()
  File "/home/kave/workspace/google_appengine/google/appengine/ext/bulkload/bulkloader_config.py", line 384, in finalize
    self.increment_id(high_id_key)
  File "/home/kave/workspace/google_appengine/google/appengine/tools/bulkloader.py", line 1206, in IncrementId
    unused_start, end = datastore.AllocateIds(high_id_key, max=high_id_key.id())
  File "/home/kave/workspace/google_appengine/google/appengine/api/datastore.py", line 1965, in AllocateIds
    return AllocateIdsAsync(model_key, size, **kwargs).get_result()
  File "/home/kave/workspace/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 612, in get_result
    return self.__get_result_hook(self)
  File "/home/kave/workspace/google_appengine/google/appengine/datastore/datastore_rpc.py", line 1863, in __allocate_ids_hook
    self.check_rpc_success(rpc)
  File "/home/kave/workspace/google_appengine/google/appengine/datastore/datastore_rpc.py", line 1236, in check_rpc_success
    raise _ToDatastoreError(err)
google.appengine.api.datastore_errors.BadRequestError: Exceeded maximum allocated IDs

Обычно мой идентификатор составляет около 26002, но новые идентификаторы, полученные несколько дней назад, достигают 4948283361329150. Они вызывают проблемы сейчас. (Если я изменю их на более низкие значения, все будет хорошо, но я не сгенерировал эти идентификаторы в первую очередь) Почему у GAE такие проблемы с его собственными сгенерированными идентификаторами?

Огромное спасибо


person Houman    schedule 11.07.2013    source источник
comment
не могли бы вы уточнить несколько моментов: 1, вы экспортируете данные вместе с _key_, а затем, прежде чем импортировать эти данные обратно в движок приложения, вы удаляете существующие данные движка приложения, а затем используете идентификатор, сохраненный в csv, чтобы добавить обратно измененные данные? 2, вы используете преобразование импорта: transform.create_foreign_key(Kind)?   -  person tony m    schedule 12.07.2013
comment
привет, Тони, да, я экспортирую данные вместе с ключом, и перед импортом данных обратно в gae я удаляю существующие данные, используя идентификатор, сохраненный в csv (который был создан gae в первую очередь).   -  person Houman    schedule 05.08.2013


Ответы (1)


Это известная проблема, исправленная в SDK 1.8.2 или более поздней версии.

Обратите внимание: если вы используете массовый загрузчик против сервера приложений разработки, эти SDK (1.8.2, 1.8.3), к сожалению, имеют отдельную проблему с массовым загрузчиком для этого варианта использования (см. appcfg-py-upload-data-fails-in-google-app-engine-sdk-1-8 -2), но не в производстве.

person Rohwer    schedule 09.08.2013