I was feeling part of the scenery. I walked right out of the machinery. by Neal.
The other day I was trying to create a page repository item using the BCC when I got an error saying it could not create the item. Looking in the logs I saw this exception.
16:13:59,909 ERROR [RepositoryAssetService] atg.repository.RepositoryException: createItem() was called with an existing ID : '3100007' for type 'page'. Use getItemForUpdate() instead. at atg.adapter.version.VersionRepository.createItem(VersionRepository.java:1903) at atg.adapter.version.VersionRepository.createItem(VersionRepository.java:1125) at atg.remote.assetmanager.editor.service.RepositoryAssetServiceImpl.doCreateAsset(RepositoryAssetServiceImpl.java:476) at atg.remote.assetmanager.editor.service.AssetServiceImpl.createAsset(AssetServiceImpl.java:331) at atg.remote.assetmanager.editor.service.AssetEditorService.createAssetAndLink(AssetEditorService.java:555) at atg.remote.assetmanager.editor.service.AssetEditorService.createAsset(AssetEditorService.java:508)
The problem was the ID generator was producing IDâ€™s that already existed in the database. This sometimes happens when things are imported into the BCC.
To fix this problem do the following.
- Look for the row in the das_id_generator table which has the item descriptor that is causing the error.
- Change the seed value (typically upwards) or put a prefix or suffix on it.
- Restart the server.
In this case I ended up running this SQL to fix the existing ID error:
UPDATE DAS_ID_GENERATOR SET PREFIX = 'pg_' WHERE id_space_name = â€˜pageâ€™;