-
Notifications
You must be signed in to change notification settings - Fork 34
Open
Description
Summary:
Encountered a duplicate index creation error while using js-ceramic . The error occurs when creating a composite, indicating that an index already exists. The issue arises even on a fresh local Ceramic node with no previous models loaded.
Steps to Reproduce:
- Set up a fresh local Ceramic node.
- Execute the following command to create a composite:
npx composedb composite:compile
- Observe the error indicating that the index already exists.
Observed Error Message:
Error: HTTP request to 'http://localhost:7007/api/v0/admin/modelData' failed with status 'Internal Server Error': {"error":"CREATE INDEX idx_v2jh5luud0_chain ON kjzl6hvfrbw6c5bmbxt6exlnu4kggb6tmoijnmvtcq0mjjvk4jhobv2jh5luud0 (json_extract(stream_content, '$.chainName')) - SQLITE_ERROR: index idx_v2jh5luud0_chain already exists"}
Analysis:
- The error suggests that
composedb
is attempting to create the same index twice. - This occurs when adding the following lines to the models:
@createIndex(fields: [{ path: "createdOn" }]) @createIndex(fields: [{ path: "updatedOn" }])
- These indexes are added to three different models, which should not typically cause a conflict as each model corresponds to a different table.
Code Snippet:
+++ b/packages/composedb/models/OamoCredentialRelation.graphql
@@ -11,8 +11,12 @@ type OamoCredential
...
@createIndex(fields: [{ path: "createdOn" }])
@createIndex(fields: [{ path: "updatedOn" }]) {
...
@@ -30,9 +34,12 @@ type OamoPublicProfile
...
@createIndex(fields: [{ path: "createdOn" }])
@createIndex(fields: [{ path: "updatedOn" }]) {
...
@@ -46,7 +53,9 @@ type OamoCredentialRelation
...
@createIndex(fields: [{ path: "createdOn" }])
@createIndex(fields: [{ path: "updatedOn" }]) {
...
Possible Causes:
- Duplicate index creation due to
composedb
trying to create indexes with the same name across different models. - Potential issue with handling of circular relations or index naming conflicts within
composedb
.
Next Steps:
- Investigate if the GraphQL schema or
composedb
configuration has any rules or limitations regarding circular relations or index naming. - Determine if there are any existing indexes that conflict with the new ones being created.
- Debug by removing indexes and relations one by one to identify the exact cause.
References:
- Diff between the branches indicating the changes that led to the error.
- Conversations with team members to isolate the problem.
Metadata
Metadata
Assignees
Labels
No labels