Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't delete/update inherited type instance with ValueHash subdocument that has a list #2090

Open
hoijnet opened this issue Feb 5, 2024 · 4 comments
Assignees
Labels
bug Something isn't working

Comments

@hoijnet
Copy link

hoijnet commented Feb 5, 2024

Describe the bug
When creating a document with this configuration, it locks up the data product branch. It's not possible to delete/update inherited type instance with ValueHash subdocument that has a list, but it is also not possible to create anything else.

Note that this is performed in a branch called "_logic_main" and not in the main branch.

The only way back is to reset the branch to a previous commit.

Created document:

{
  "@type": "SubCant",
  "query": {
    "@type": "And",
    "and": []
  }
}

To Reproduce
Steps to reproduce the behavior:

  1. Created document above
  2. Delete or update document above
  3. See error message

Expected behavior
It should be possible to delete and update the document without issue

Screenshots
Here is the error message:

{
  "name": "Server request error",
  "message": "Error: rust_error(panic(\"called `Option::unwrap()` on a `None` value\"))\n  [40] delete_document(<GetDocumentContext>,transaction_object{commit_info:commit_info{},descriptor:branch_descriptor{branch_name:\"_bug_issue\",repository_descriptor: ...},inference_objects:[],instance_objects:[...],parent:transaction_object{descriptor: ...,inference_objects:[],instance_objects: ...,parent: ...,schema_objects: ...},schema_objects:[...]},'terminusdb:///data/SubCant/AN_Mo-Rrfl1xvcqw',true)\n  [35] forall(api_document:json_read_list_stream(<stream>(0x560a3d515500),\"SubCant/AN_Mo-Rrfl1xvcqw\"),api_document:(...,...)) at /usr/lib/swipl/boot/apply.pl:52\n  [33] call(api_document:(...,...)) at /usr/lib/swipl/boot/init.pl:502\n  [32] catch(database:call(...),fail_transaction,database:(_9098=true)) at /usr/lib/swipl/boot/init.pl:565\n  [31] database:with_transaction_(query_context{all_witnesses:false,authorization:'#################',bindings:[],commit_info:commit_info{author:'###################',message:'delete document'},default_collection:branch_descriptor{branch_name:\"_bug_issue\",repository_descriptor: ...},files:[],filter:type_filter{types: ...},prefixes:_9206{'@base':\"terminusdb:///data/\",'@schema':\"terminusdb:///schema#\",'@type':'Context',api:'http://terminusdb.com/schema/api#',json:'http://terminusdb.com/schema/json#',owl:'http://www.w3.org/2002/07/owl#',rdf:'http://www.w3.org/1999/02/22-rdf-syntax-ns#',rdfs:'http://www.w3.org/2000/01/rdf-schema#',sys:'http://terminusdb.com/schema/sys#',vio:'http://terminusdb.com/schema/vio#',woql:'http://terminusdb.com/schema/woql#',xdd:'http://terminusdb.com/schema/xdd#',xsd:'http://www.w3.org/2001/XMLSchema#'},selected:[],system:system_descriptor{},transaction_objects:[...],update_guard:_9192,write_graph:branch_graph{branch_name:\"_bug_issue\",database_name:\"#################\",organization_name:\"##############",repository_name:\"local\",type:instance}},api_document:(...,...),_9140,[allow_destructive_migration(false),...|...]) at /app/terminusdb/src/core/transaction/database.pl:245\n  [30] setup_call_catcher_cleanup(database:pre_transaction_tabling,database:with_transaction_(...,...,_9404,...),_9382,database:post_transaction_tabling) at /usr/lib/swipl/boot/init.pl:679\n  [27] api_document:api_delete_documents('<garbage_collected>','terminusdb://system/data/User/######HIDDEN_USER########','##########HIDDEN_ORG_DP##############/local/branch/_bug_issue',<stream>(0x560a3d515500),no_data_version,_9458,'<garbage_collected>','<garbage_collected>') at /app/terminusdb/src/core/api/api_document.pl:415\n  [26] '<meta-call>'('<garbage_collected>') <foreign>\n  [25] catch(routes:(...,...),error(rust_error(...),context(_9556,_9558)),routes:do_or_die(...,...)) at /usr/lib/swipl/boot/init.pl:565\n  [24] catch_with_backtrace('<garbage_collected>','<garbage_collected>','<garbage_collected>') at /usr/lib/swipl/boot/init.pl:645\n\nNote: some frames are missing due to last-call optimization.\nRe-run your program in debug mode (:- debug.) to get more detail.\n",
  "data": {
    "api:message": "Error: rust_error(panic(\"called `Option::unwrap()` on a `None` value\"))\n  [40] delete_document(<GetDocumentContext>,transaction_object{commit_info:commit_info{},descriptor:branch_descriptor{branch_name:\"_bug_issue\",repository_descriptor: ...},inference_objects:[],instance_objects:[...],parent:transaction_object{descriptor: ...,inference_objects:[],instance_objects: ...,parent: ...,schema_objects: ...},schema_objects:[...]},'terminusdb:///data/SubCant/AN_Mo-Rrfl1xvcqw',true)\n  [35] forall(api_document:json_read_list_stream(<stream>(0x560a3d515500),\"SubCant/AN_Mo-Rrfl1xvcqw\"),api_document:(...,...)) at /usr/lib/swipl/boot/apply.pl:52\n  [33] call(api_document:(...,...)) at /usr/lib/swipl/boot/init.pl:502\n  [32] catch(database:call(...),fail_transaction,database:(_9098=true)) at /usr/lib/swipl/boot/init.pl:565\n  [31] database:with_transaction_(query_context{all_witnesses:false,authorization:'##########HIDE#############',bindings:[],commit_info:commit_info{author:'philippe@hoij.net',message:'delete document'},default_collection:branch_descriptor{branch_name:\"_bug_issue\",repository_descriptor: ...},files:[],filter:type_filter{types: ...},prefixes:_9206{'@base':\"terminusdb:///data/\",'@schema':\"terminusdb:///schema#\",'@type':'Context',api:'http://terminusdb.com/schema/api#',json:'http://terminusdb.com/schema/json#',owl:'http://www.w3.org/2002/07/owl#',rdf:'http://www.w3.org/1999/02/22-rdf-syntax-ns#',rdfs:'http://www.w3.org/2000/01/rdf-schema#',sys:'http://terminusdb.com/schema/sys#',vio:'http://terminusdb.com/schema/vio#',woql:'http://terminusdb.com/schema/woql#',xdd:'http://terminusdb.com/schema/xdd#',xsd:'http://www.w3.org/2001/XMLSchema#'},selected:[],system:system_descriptor{},transaction_objects:[...],update_guard:_9192,write_graph:branch_graph{branch_name:\"_bug_issue\",database_name:\"######HIDE#####\",organization_name:\"########HIDE#######\",repository_name:\"local\",type:instance}},api_document:(...,...),_9140,[allow_destructive_migration(false),...|...]) at /app/terminusdb/src/core/transaction/database.pl:245\n  [30] setup_call_catcher_cleanup(database:pre_transaction_tabling,database:with_transaction_(...,...,_9404,...),_9382,database:post_transaction_tabling) at /usr/lib/swipl/boot/init.pl:679\n  [27] api_document:api_delete_documents('<garbage_collected>','terminusdb://system/data/User/#######HIDE_USERNAME##########','#########HIDE_INSTANCE_DATAPRODUCT##########/local/branch/_bug_issue',<stream>(0x560a3d515500),no_data_version,_9458,'<garbage_collected>','<garbage_collected>') at /app/terminusdb/src/core/api/api_document.pl:415\n  [26] '<meta-call>'('<garbage_collected>') <foreign>\n  [25] catch(routes:(...,...),error(rust_error(...),context(_9556,_9558)),routes:do_or_die(...,...)) at /usr/lib/swipl/boot/init.pl:565\n  [24] catch_with_backtrace('<garbage_collected>','<garbage_collected>','<garbage_collected>') at /usr/lib/swipl/boot/init.pl:645\n\nNote: some frames are missing due to last-call optimization.\nRe-run your program in debug mode (:- debug.) to get more detail.\n",
    "api:status": "api:server_error"
  }
}

Info (please complete the following information):

  • OS: DFRNT
  • Version: 11.1.11

Additional context
Here is a minimal reproducible schema:

[
  {
    "@base": "terminusdb:///data/",
    "@schema": "terminusdb:///schema#",
    "@type": "@context"
  },
  {
    "@type": "Class",
    "@key": {
      "@type": "Random"
    },
    "@id": "CantBeRemoved",
    "query": "Container"
  },
  {
    "@type": "Class",
    "@key": {
      "@type": "Random"
    },
    "@id": "Container",
    "@subdocument": []
  },
  {
    "@type": "Class",
    "@key": {
      "@type": "Random"
    },
    "@id": "SubCant",
    "@inherits": [
      "CantBeRemoved"
    ]
  },
  {
    "@type": "Class",
    "@key": {
      "@type": "ValueHash"
    },
    "@id": "And",
    "@inherits": [
      "Container"
    ],
    "@subdocument": [],
    "and": {
      "@class": "Container",
      "@type": "List"
    }
  }
]
@hoijnet hoijnet added the bug Something isn't working label Feb 5, 2024
@hoijnet
Copy link
Author

hoijnet commented Feb 10, 2024

After some more testing, I seem to be getting more of this kinds of errors even when it's not a list. This is when working with a branch _logic_main.

Edit: After a more thorough checking, it seems that a type that previously inherited causes problems for new instances created from that type too. When I create a new type that has previously not inherited from the non-working type, all is smooth. It seems I have a workaround that enables the next couple of days' work.

@hoijnet
Copy link
Author

hoijnet commented Feb 10, 2024

Please also check that you can delete a branch with the WOQL schema as well. It seems that a branch with a WOQL schema can't be deleted (I believe it's the same basic issue, so I'm not creating another issue for it yet)

@GavinMendelGleason
Copy link
Member

I think this can be fixed relatively straightforwardly.

@hoijnet
Copy link
Author

hoijnet commented Mar 12, 2024

I could delete the documents again with the latest version (v11.1.12 that is deployed at TerminusDB). This issue can be closed now!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants