caosdb-server issueshttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues2024-03-18T00:05:06Zhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/331Extern: Querying for entities with property fails if using ID2024-03-18T00:05:06ZDaniel HornungExtern: Querying for entities with property fails if using ID---
extern: https://gitlab.com/linkahead/linkahead-server/-/issues/248
---
https://gitlab.com/linkahead/linkahead-server/-/issues/248
Possible duplicate of https://gitlab.com/linkahead/linkahead-server/-/issues/247
- [ ] Reproduced
- ...---
extern: https://gitlab.com/linkahead/linkahead-server/-/issues/248
---
https://gitlab.com/linkahead/linkahead-server/-/issues/248
Possible duplicate of https://gitlab.com/linkahead/linkahead-server/-/issues/247
- [ ] Reproduced
- [ ] Fixed or documented (if intentional behavior)
- [ ] Followup issues created if necessaryBatCAT WP4 - Knowledge IntegrationTimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/295Extern: Server accepts any string for DATETIME properties.2024-03-18T00:05:06ZDaniel HornungExtern: Server accepts any string for DATETIME properties.https://gitlab.com/caosdb/caosdb-server/-/issues/205
The server does not properly check if datetime properties follow some format.https://gitlab.com/caosdb/caosdb-server/-/issues/205
The server does not properly check if datetime properties follow some format.BatCAT WP4 - Knowledge IntegrationTimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/250Extern: Documentation: Howto for setting up new users.2024-03-03T21:10:22ZDaniel HornungExtern: Documentation: Howto for setting up new users.---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/163
---
Documentation: Howto for setting up new users.
## DoD
- [ ] There is some great documentation for this issue.---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/163
---
Documentation: Howto for setting up new users.
## DoD
- [ ] There is some great documentation for this issue.Daniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/320Extern: Cannot update entity permissions if file is missing.2024-03-18T00:05:06ZTimm Fitschent.fitschen@indiscale.comExtern: Cannot update entity permissions if file is missing.https://gitlab.com/linkahead/linkahead-server/-/issues/36https://gitlab.com/linkahead/linkahead-server/-/issues/36Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/315EXTERN: RecordTypes with name duplicates cannot be used as list datatype2024-01-03T13:59:20ZFlorian SpreckelsenEXTERN: RecordTypes with name duplicates cannot be used as list datatypehttps://gitlab.com/caosdb/caosdb-server/-/issues/230https://gitlab.com/caosdb/caosdb-server/-/issues/230Florian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/330Extern: Unexpected Server Error when updating an Entity with a FILE Property2024-03-04T08:35:34ZHenrik tom WördenExtern: Unexpected Server Error when updating an Entity with a FILE Propertyhttps://gitlab.com/linkahead/linkahead-server/-/issues/246https://gitlab.com/linkahead/linkahead-server/-/issues/246Henrik tom WördenHenrik tom Wördenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/289Extern: (Query-)Caches need to be cleared when permissions are changed2024-03-18T00:05:06ZHenrik tom WördenExtern: (Query-)Caches need to be cleared when permissions are changedhttps://gitlab.com/caosdb/caosdb-server/-/issues/156https://gitlab.com/caosdb/caosdb-server/-/issues/156Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/303EXTERN: Cache of children is not removed when parent is updated2024-03-18T00:05:06ZFlorian SpreckelsenEXTERN: Cache of children is not removed when parent is updatedhttps://gitlab.com/caosdb/caosdb-server/-/issues/220https://gitlab.com/caosdb/caosdb-server/-/issues/220Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/215FileStorage: Implement Import2022-10-17T10:02:51ZTimm Fitschent.fitschen@indiscale.comFileStorage: Implement Import* Implement new subclass of `LocalFileSystem` for a read-only by the server but writable by others file system.
* Implement import function which creates a new `File` entity for a file which already exists on the back-end
* implementatio...* Implement new subclass of `LocalFileSystem` for a read-only by the server but writable by others file system.
* Implement import function which creates a new `File` entity for a file which already exists on the back-end
* implementation in pylibRefactoring of File Storage APITimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/40Query parser: =< confuses parser2022-12-12T09:42:00ZHenrik tom WördenQuery parser: =< confuses parser*Created by: Quazgar*
On the IndiScale demo server, the following query confuses the parser:
`query=FIND Record Analysis WITH date =< 2019-05-16`
The server returns this message:
```xml
<Query string="FIND Record Analysis WITH date...*Created by: Quazgar*
On the IndiScale demo server, the following query confuses the parser:
`query=FIND Record Analysis WITH date =< 2019-05-16`
The server returns this message:
```xml
<Query string="FIND Record Analysis WITH date =< 2019-05-16" results="0">
<ParseTree>
<ParsingError type="AttemptingFullContext">AttemptingFullContext conflict in query. Please report this with a bug ticket.</ParsingError>
<ParsingError type="Ambiguity">Ambiguity conflict in query. Please report this with a bug ticket.</ParsingError>
<ParsingError type="SyntaxError" line="1" character="32">mismatched input '<' expecting {<EOF>, SINGLE_QUOTE_START, DOUBLE_QUOTE_START, WITH, A, WHERE, WHICH, HAS_A, '#', STAR, DOT, '-', NUM, TXT}</ParsingError>
</ParseTree>
<Role />
<Entity />
<TransactionBenchmark since="Tue Oct 01 15:52:15 CEST 2019" />
</Query>
```
**Imported comments:**
*By Quazgar on 2019-10-01T14:00:08.330Z*
changed title from **Query parser: {-"`=<`-} confuses parser** to **Query parser: {+=<+} confuses parser**
*By Quazgar on 2019-10-01T13:59:56.404Z*
changed title from **Query parser: `=<` confuses parser** to **Query parser: {+"+}`=<` confuses parser**
*By Quazgar on 2019-10-01T13:59:49.770Z*
changed title from **Query parser: {-=<-} confuses parser** to **Query parser: {+`=<`+} confuses parser**Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/229Valid types for operators2024-03-04T08:35:38ZHenrik tom WördenValid types for operators## Summary
Currently, some values in Property-Operator-Value filters are interpreted as types that might not be expected by the user and
could thus lead to unexpected behavior
## Expected Behavior
Queries are interpreted in a nonsurp...## Summary
Currently, some values in Property-Operator-Value filters are interpreted as types that might not be expected by the user and
could thus lead to unexpected behavior
## Expected Behavior
Queries are interpreted in a nonsurprising way.
## Actual Behavior
I expect that floats and integers are also interpreted as dates and date times and entity ids.
## Problematic cases
1. Smaller or greater when using integers is compared to entity IDs (I.e. an entity is included if it reference an entity that is a child of the given ID (and not a child of an entity with ID smaller/greater the given value))
2. Text data is used (always?). " > 519" is translated to "... value>519" on text data (what ever that is).
3. 519 is interpreted as a datetime (-45757440000). Is that meaningful???
## Specifications
- Version: *Which version of this software?*
- Platform: *Which operating system, which other relevant software versions?*
## Possible fixes
*Do you have ideas how the issue can be resolved?*Henrik tom WördenHenrik tom Wördenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/230Performance Improvement: Filter data tables with property_id2024-03-04T08:35:35ZHenrik tom WördenPerformance Improvement: Filter data tables with property_id## Summary
When `applyPOV` is executed, data tables are currently only filtered using the value. However, most of the data is usually unrelated (as it belongs to the wrong properties). Thus, we could introduce an index with property_id ...## Summary
When `applyPOV` is executed, data tables are currently only filtered using the value. However, most of the data is usually unrelated (as it belongs to the wrong properties). Thus, we could introduce an index with property_id and value in it and use the property_id as first condition in the `WHERE` clause.
- [x] create a plan how this can be implemented
- [ ] implement the changeHenrik tom WördenHenrik tom Wördenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/226DOC: Write CQL cheat sheet2022-06-03T06:06:15ZDaniel HornungDOC: Write CQL cheat sheet## Summary
The query language is very simple, but its documentation is hard to read. A visual representation (one A4 page) of the possibilities would be very useful for new users.
## Expected Behavior
CQL should be intuitive to use f...## Summary
The query language is very simple, but its documentation is hard to read. A visual representation (one A4 page) of the possibilities would be very useful for new users.
## Expected Behavior
CQL should be intuitive to use for people with basic programming understanding.
## Actual Behavior
People are confused by syntactic sugar, and they do not know which parts can be omitted and which cannot. The query language has more keywords that it seems at the beginning.
## Steps to Reproduce the Problem
1. Try to run a course of students through a pycaosdb tutorial without a lengthy (20-30 minutes) CQL introduction.
## Specifications
- Version: Current demo server.
- Platform: Any.
## Possible fixes
- [ ] Write a cheat sheet with the main elements of CQL, enough to do most tutorials.
- [ ] The cheat sheet should have graphical elements to easily find commands which relate to dates, references, etc.Daniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/29Server error when trying to change the password of a user which is authentica...2024-03-18T10:22:27ZHenrik tom WördenServer error when trying to change the password of a user which is authenticated via PAM*Created by: Quazgar*
I tried to change the password of admin with admin-tools of pylib/utils. The admin user is included from PAM and this resulted in a server error.
**Imported comments:**
*By Timm Fitschen on 2021-02-26T11:25:45....*Created by: Quazgar*
I tried to change the password of admin with admin-tools of pylib/utils. The admin user is included from PAM and this resulted in a server error.
**Imported comments:**
*By Timm Fitschen on 2021-02-26T11:25:45.660Z*
marked this issue as related to #121
*By Alexander Schlemmer on 2020-10-28T13:17:51.266Z*
Solution: A meaningful message should be displayed instead of changing the password.
*By Timm Fitschen on 2019-09-03T06:27:50.595Z*
changed due date to October 02, 2019
*By Timm Fitschen on 2019-08-30T06:26:58.805Z*
assigned to @timm.fitschen and unassigned @quazgar
*By Timm Fitschen on 2019-08-30T06:26:53.945Z*
changed due date to September 04, 2019
*By Quazgar on 2019-08-13T09:56:20.366Z*
@henrik_indiscale Should this stay assigned to me?
# DoD
- [ ] A meaningful error message is displayed whenever a user outside CaosDB realm is tried to be edited.Florian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/244Define behavior and write unit and integration tests for querying integer / f...2024-03-03T21:10:39ZDaniel HornungDefine behavior and write unit and integration tests for querying integer / float properties## Summary
Conversion between ints and floats is a mess, but needs to be done to make queries intuitive. Sometimes however, there should be warnings and/or errors, for example when queries cannot be executed without loss of precision. ...## Summary
Conversion between ints and floats is a mess, but needs to be done to make queries intuitive. Sometimes however, there should be warnings and/or errors, for example when queries cannot be executed without loss of precision. The desired behavior can be best be defined by tests which probe `POV.java`.
## Expected Behavior
There should be unit and integration tests for said conversion.Daniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/159DOC: add information about encryption of previously unencrypted key files (SS...2023-06-30T12:36:11ZAlexander SchlemmerDOC: add information about encryption of previously unencrypted key files (SSL) to docuAffected documentation file:
https://docs.indiscale.com/caosdb-deploy/configuration.html#option-1-using-an-existing-certificate
The manual should start from a previously unencrypted private key file.
Furthermore, a hint to the differen...Affected documentation file:
https://docs.indiscale.com/caosdb-deploy/configuration.html#option-1-using-an-existing-certificate
The manual should start from a previously unencrypted private key file.
Furthermore, a hint to the different available formats for keys and certs could be helpful (as an additional source):
https://crypto.stackexchange.com/questions/43697/what-is-the-difference-between-pem-csr-key-and-crt-and-other-such-file-ext
Example:
```bash
openssl rsa -aes256 -in private-key.key -out private-key.encrypted.key
```
Futhermore, the manual should include a line stating how to generate a fullchain.pem from a server-chain and a certificate, e.g.:
```bash
cat server-certificate.crt server-chain.crt > fullchain.pem
```
The current paragraph reads "use the same passwords"... which sounds a bit like a suggestion. It would be informative to add, that it must be the same password to work properly! This could be also added to the README_SETUP.md.
In the paragraph for the second option, this block follows the commands:
> During the execution of the following two commands you will be asked to supply a password with at least six characters. Use the same password for both commands and note that you will need it in a later step again.
Therefore "following" should be replaced by "previous".https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/149Document NIS and LDAP authentication2021-10-01T13:44:42ZFlorian SpreckelsenDocument NIS and LDAP authenticationOnly PAM is documented on https://docs.indiscale.com/caosdb-server/README_SETUP.html#pam right now.
# DoD
Documented how to setup
- [ ] LDAP
- [ ] NISOnly PAM is documented on https://docs.indiscale.com/caosdb-server/README_SETUP.html#pam right now.
# DoD
Documented how to setup
- [ ] LDAP
- [ ] NISFlorian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/282EXTERN: Using an invalid permission should cause error2024-03-18T00:05:06ZFlorian SpreckelsenEXTERN: Using an invalid permission should cause errorhttps://gitlab.com/caosdb/caosdb-server/-/issues/195
* [x] ~"Bug::Confirmed" https://gitlab.com/caosdb/caosdb-pyinttest/-/commit/22760ada04c802b38f569b9d0163cf6485d95911
* [ ] fixedhttps://gitlab.com/caosdb/caosdb-server/-/issues/195
* [x] ~"Bug::Confirmed" https://gitlab.com/caosdb/caosdb-pyinttest/-/commit/22760ada04c802b38f569b9d0163cf6485d95911
* [ ] fixedTimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/177Extern: Change passwords2024-03-18T00:05:06ZTimm Fitschent.fitschen@indiscale.comExtern: Change passwords---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/128
...
also: USER:RETRIEVE:INFO
* [ ] review and merge https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/merge_requests/33/edit
* [ ] review and merge https://gitlab.i...---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/128
...
also: USER:RETRIEVE:INFO
* [ ] review and merge https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/merge_requests/33/edit
* [ ] review and merge https://gitlab.indiscale.com/caosdb/src/caosdb-pyinttest/-/merge_requests/15
* [ ] Close https://gitlab.com/caosdb/caosdb-server/-/issues/128Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/274EXTERN: Create Server Job that prevents user defined subproperties2024-03-18T00:05:06ZFlorian SpreckelsenEXTERN: Create Server Job that prevents user defined subpropertieshttps://gitlab.com/caosdb/caosdb-server/-/issues/161https://gitlab.com/caosdb/caosdb-server/-/issues/161Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/101EXTERN: Query with long string value causes unexpected ServerError2024-01-17T08:26:14ZHenrik tom WördenEXTERN: Query with long string value causes unexpected ServerErrorhttps://gitlab.com/linkahead/linkahead-server/-/issues/101https://gitlab.com/linkahead/linkahead-server/-/issues/101Florian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/2BUG: ugly 401page when scripting request fails2021-07-14T11:55:53ZHenrik tom WördenBUG: ugly 401page when scripting request fails*Created by: Quazgar*
# Actual Behavior
When a scripting request is sent without successful authentication an ugly standard 401 page ist returned.
# Expected Bahavior
The nice "please login here" page should show up
**Imported comme...*Created by: Quazgar*
# Actual Behavior
When a scripting request is sent without successful authentication an ugly standard 401 page ist returned.
# Expected Bahavior
The nice "please login here" page should show up
**Imported comments:**
*By Timm Fitschen on 2020-10-28T13:53:15.779Z*
Reproduce:
* go to https://demo.indiscale.com/Entity/?query=Select%20name%20FROM%20Record
* login
* delete all cookies.
* click `Download this table`->`Download XLS File`
*By Timm Fitschen on 2019-09-03T06:29:12.403Z*
changed due date to December 04, 2019
*By Timm Fitschen on 2019-08-29T09:30:21.278Z*
changed due date to September 04, 2019
*By Quazgar on 2019-08-13T09:27:38.525Z*
assigned to @timm.fitschen and unassigned @quazgar
*By Quazgar on 2019-04-14T23:08:51.410Z*
removed due date
*By Timm Fitschen on 2019-04-14T23:08:51 (imported from GitLab project)*
*By Quazgar on 2019-04-11T07:58:15.568Z*
This issue is not outdated.
*By Timm Fitschen on 2019-04-11T07:58:15 (imported from GitLab project)*
*By Quazgar on 2019-04-10T16:10:59.956Z*
assigned to @aschlem and unassigned @tfitsch
*By Daniel Hornung on 2019-04-10T16:10:59 (imported from GitLab project)*
*By Quazgar on 2019-04-10T16:10:59.840Z*
Does this refer to server-side scripting or is this an outdated issue?
*By Daniel Hornung on 2019-04-10T16:10:59 (imported from GitLab project)*Florian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/9Adding a comment fails on a fresh server2021-07-14T11:58:28ZHenrik tom WördenAdding a comment fails on a fresh server*Created by: Quazgar*
On a freshly installed server, adding a comment to the default entities fails with:
```
<record>
<permissions>
<permission name="USE:AS_REFERENCE"></permission>
<permission name="USE:AS_DATA_TYPE">...*Created by: Quazgar*
On a freshly installed server, adding a comment to the default entities fails with:
```
<record>
<permissions>
<permission name="USE:AS_REFERENCE"></permission>
<permission name="USE:AS_DATA_TYPE"></permission>
<permission name="RETRIEVE:ENTITY"></permission>
<permission name="UPDATE:DESCRIPTION"></permission>
<permission name="UPDATE:FILE:ADD"></permission>
<permission name="UPDATE:FILE:MOVE"></permission>
<permission name="RETRIEVE:ACL"></permission>
<permission name="DELETE"></permission>
<permission name="RETRIEVE:OWNER"></permission>
<permission name="UPDATE:PROPERTY:ADD"></permission>
<permission name="UPDATE:ROLE"></permission>
<permission name="UPDATE:PARENT:ADD"></permission>
<permission name="RETRIEVE:FILE"></permission>
<permission name="USE:AS_PROPERTY"></permission>
<permission name="UPDATE:PARENT:REMOVE"></permission>
<permission name="USE:AS_PARENT"></permission>
<permission name="UPDATE:PROPERTY:REMOVE"></permission>
<permission name="UPDATE:NAME"></permission>
<permission name="UPDATE:DATA_TYPE"></permission>
<permission name="UPDATE:VALUE"></permission>
<permission name="RETRIEVE:HISTORY"></permission>
<permission name="EDIT:ACL"></permission>
<permission name="UPDATE:FILE:REMOVE"></permission>
<permission name="UPDATE:QUERY_TEMPLATE_DEFINITION"></permission>
</permissions>
<error code="114" description="Entity has unqualified properties."></error>
<warning code="0" description="Entity has no name."></warning>
<parent name="CommentAnnotation">
<error code="101" description="Entity does not exist."></error>
</parent>
<property name="comment" importance="FIX">
Comment for entity 20
<error code="101" description="Entity does not exist."></error>
<error code="110" description="Property has no datatype."></error>
</property>
<property name="annotationOf" importance="FIX">
20
<error code="101" description="Entity does not exist."></error>
<error code="110" description="Property has no datatype."></error>
</property>
</record>
```
The payload according to Firefox' dev tools:
<Insert><Record><Parent name="CommentAnnotation"/><Property name="comment">Comment for entity 20</Property><Property name="annotationOf">20</Property></Record></Insert>
**Imported comments:**
*By Alexander Schlemmer on 2020-11-18T12:10:15.791Z*
changed due date to February 28, 2021
*By Alexander Schlemmer on 2020-11-18T12:09:55.037Z*
see https://gitlab.com/caosdb/caosdb/-/wikis/dev/webui/The-Comments-Feature-of-the-CaosDB-WebUI
*By Timm Fitschen on 2019-09-03T06:29:16.170Z*
changed due date to December 04, 2019
*By Timm Fitschen on 2019-08-29T09:50:09.520Z*
changed due date to September 04, 2019
*By Quazgar on 2019-08-13T09:14:59.819Z*
assigned to @timm.fitschen and unassigned @quazgarhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/10Retrieving low ID special entities results in 500 server errors.2021-08-12T15:24:50ZHenrik tom WördenRetrieving low ID special entities results in 500 server errors.*Created by: Quazgar*
E.g. `https://localhost:8888/Entity/?query=FIND 4` returns a 500 error instead of a meaningful response. Even if the result is not an entity, the response should be more meaningful.
**Imported comments:**
*By ...*Created by: Quazgar*
E.g. `https://localhost:8888/Entity/?query=FIND 4` returns a 500 error instead of a meaningful response. Even if the result is not an entity, the response should be more meaningful.
**Imported comments:**
*By Quazgar on 2019-12-11T12:31:06.549Z*
mentioned in commit 3e044b0ac8e0322f8eed434507a354da2ff41328
*By Timm Fitschen on 2019-09-03T06:29:21.621Z*
changed due date to December 04, 2019
*By Timm Fitschen on 2019-08-29T09:55:29.254Z*
changed due date to September 04, 2019
*By Quazgar on 2019-08-13T09:14:21.120Z*
assigned to @timm.fitschen and unassigned @quazgar
*By Quazgar on 2019-08-13T09:14:20.901Z*
```
caosdb-server_1 | caosdb.server.entity.NoSuchRoleException: No such role 'ROLE'. [40/4896]
caosdb-server_1 | at caosdb.server.entity.Role.parse(Role.java:57) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?] caosdb-server_1 | at caosdb.server.entity.Entity.setRole(Entity.java:331) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.entity.Entity.parseSparseEntity(Entity.java:1049) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?] caosdb-server_1 | at caosdb.server.database.DatabaseUtils.parseFromSparseEntities(DatabaseUtils.java:140) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.database.backend.transaction.RetrieveSparseEntity.process(RetrieveSparseEntity.java:83) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.database.backend.transaction.RetrieveSparseEntity.process(RetrieveSparseEntity.java:38) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.database.CacheableBackendTransaction.execute(CacheableBackendTransaction.java:40) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.database.BackendTransaction.executeTransaction(BackendTransaction.java:142) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.database.Database.execute(Database.java:36) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.query.Query.filterEntitiesWithoutRetrievePermission(Query.java:587) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.query.Query.execute(Query.java:479) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.jobs.core.ExecuteQuery.job(ExecuteQuery.java:43) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.jobs.FlagJob.run(FlagJob.java:35) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.jobs.ScheduledJob.run(Schedule.java:42) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.jobs.Schedule.runJob(Schedule.java:122) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.jobs.Schedule.runJobs(Schedule.java:104) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.transaction.Transaction.execute(Transaction.java:126) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.resource.transaction.EntityResource.httpGetInChildClass(EntityResource.java:113) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.resource.AbstractCaosDBServerResource.httpGet(AbstractCaosDBServerResource.java:247) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) ~[?:?]
caosdb-server_1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_222]
caosdb-server_1 | at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_222]
caosdb-server_1 | at org.restlet.resource.ServerResource.doHandle(ServerResource.java:511) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.resource.ServerResource.get(ServerResource.java:723) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.resource.ServerResource.doHandle(ServerResource.java:603) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:662) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.resource.ServerResource.handle(ServerResource.java:1020) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.resource.Finder.handle(Finder.java:236) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.CaosDBServer$2.handle(CaosDBServer.java:524) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.CaosDBServer$3.handle(CaosDBServer.java:542) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:77) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.Application.handle(Application.java:385) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.Component.handle(Component.java:408) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at caosdb.server.CaosDBComponent.handle(CaosDBServer.java:880) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.Server.handle(Server.java:507) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:143) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.restlet.ext.jetty.JettyServerHelper$WrappedServer.handle(JettyServerHelper.java:256) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
caosdb-server_1 | at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
```Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/52Regular Expression for includes in loadfiles does not behave properly2021-07-14T12:00:55ZHenrik tom WördenRegular Expression for includes in loadfiles does not behave properly*Created by: Quazgar*
One might expect that a call
./loadfiles -i ".*.pdf" -p lol /path/to/files
would insert all pdf files.
However, this expression is matched against parts of the path and thus no files are inserted.
**Imported com...*Created by: Quazgar*
One might expect that a call
./loadfiles -i ".*.pdf" -p lol /path/to/files
would insert all pdf files.
However, this expression is matched against parts of the path and thus no files are inserted.
**Imported comments:**
*By Timm Fitschen on 2019-11-18T12:33:30.094Z*
it is.
*By Timm Fitschen on 2019-11-18T12:32:57.986Z*
moved from caosdb-advanced-user-tools#1
*By Timm Fitschen on 2019-11-18T12:32:57.251Z*
changed due date to December 04, 2019
*By Henrik tom Wörden on 2019-11-18T09:40:20.524Z*
assigned to @quazgar and unassigned @henrik_indiscale
*By Timm Fitschen on 2019-09-03T06:29:04.443Z*
changed due date to December 04, 2019
*By Quazgar on 2019-08-13T07:52:55.229Z*
assigned to @henrik_indiscale and unassigned @quazgar
*By Quazgar on 2019-08-13T07:52:55.075Z*
Is this still the current behaviour?
*By Quazgar on 2019-02-05T13:29:18.204Z*
Note to self: The bug is about [this file](src/caosadvancedtools/loadFiles.py).
*By Daniel Hornung on 2019-02-05T13:29:18 (imported from GitLab project)*Daniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/16Implement (derived) units2021-05-12T11:27:00ZHenrik tom WördenImplement (derived) units*Created by: Quazgar*
These units should be implemented:
## Base units ##
- [ ] C :: Coulomb
## Derived units ##
- [ ] J = kg*m/s^2
- [ ] W = J/s
- [ ] A = C/s
- [ ] V = J/C
- [ ] F = C/V
- [ ] l = m^3/1000
- [ ] ... Add your own wis...*Created by: Quazgar*
These units should be implemented:
## Base units ##
- [ ] C :: Coulomb
## Derived units ##
- [ ] J = kg*m/s^2
- [ ] W = J/s
- [ ] A = C/s
- [ ] V = J/C
- [ ] F = C/V
- [ ] l = m^3/1000
- [ ] ... Add your own wishes here (and reopen)
**Imported comments:**
*By Timm Fitschen on 2019-09-11T15:03:44.326Z*
changed due date to September 18, 2019
*By Timm Fitschen on 2019-09-03T06:31:28.039Z*
changed due date to September 11, 2019
*By Timm Fitschen on 2019-08-30T12:42:17.730Z*
changed due date to September 04, 2019
*By Quazgar on 2019-08-13T07:46:04.223Z*
assigned to @timm.fitschen and unassigned @quazgar
*By Quazgar on 2019-04-14T22:57:29.780Z*
assigned to @tfitsch
*By Timm Fitschen on 2019-04-14T22:57:29 (imported from GitLab project)*
*By Quazgar on 2019-03-05T10:02:36.066Z*
changed the description
*By Daniel Hornung on 2019-03-05T10:02:36 (imported from GitLab project)*
*By Quazgar on 2019-02-27T08:52:57.450Z*
changed the description
*By Daniel Hornung on 2019-02-27T08:52:57 (imported from GitLab project)*
*By Quazgar on 2019-02-27T08:52:57.415Z*
changed title from **Implement {-derived-} units** to **Implement {+(derived)+} units**
*By Daniel Hornung on 2019-02-27T08:52:57 (imported from GitLab project)*https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/284Fix --no-tls setup2024-03-18T00:05:06ZTimm Fitschent.fitschen@indiscale.comFix --no-tls setup```bash
export CAOSDB_COMMAND_LINE_OPTIONS="--no-tls"
make run-debug
```
leads to
```java
java.lang.IllegalArgumentException: File does not exist or it does not refer to a normal file:
at java.security.KeyStore.getInstance(KeyStore.j...```bash
export CAOSDB_COMMAND_LINE_OPTIONS="--no-tls"
make run-debug
```
leads to
```java
java.lang.IllegalArgumentException: File does not exist or it does not refer to a normal file:
at java.security.KeyStore.getInstance(KeyStore.java:1751) ~[?:?]
at java.security.KeyStore.getInstance(KeyStore.java:1681) ~[?:?]
at org.caosdb.server.grpc.GRPCServer.buildSslContext(GRPCServer.java:91) ~[caosdb-server-0.9.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.caosdb.server.grpc.GRPCServer.buildServer(GRPCServer.java:161) ~[caosdb-server-0.9.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.caosdb.server.grpc.GRPCServer.startServer(GRPCServer.java:192) ~[caosdb-server-0.9.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.caosdb.server.CaosDBServer.initWebServer(CaosDBServer.java:408) ~[caosdb-server-0.9.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.caosdb.server.CaosDBServer.main(CaosDBServer.java:159) ~[caosdb-server-0.9.1-SNAPSHOT-jar-with-dependencies.jar:?]
```Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/119Query: Intersect/join query results2021-05-12T11:16:45ZHenrik tom WördenQuery: Intersect/join query results*Created by: Florian Spreckelsen*
This could solve a number of specific queries that are not supported at the moment and for which there is no (user-friendly) workaround:
* Finding a record that is a child of two record types (could al...*Created by: Florian Spreckelsen*
This could solve a number of specific queries that are not supported at the moment and for which there is no (user-friendly) workaround:
* Finding a record that is a child of two record types (could also be resolved by #70)
* Finding a record type or property with name=somethinghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/118User-specified entity-ids2023-01-02T10:45:14ZHenrik tom WördenUser-specified entity-ids*Created by: Alexander Schlemmer*
Currently it is not possible to insert an entity with a preset ID. Is this intended behavior?
```python
>>> p = db.Property(id=124, name="test", datatype="INTEGER")
>>> p.insert()
<Property id="100" cu...*Created by: Alexander Schlemmer*
Currently it is not possible to insert an entity with a preset ID. Is this intended behavior?
```python
>>> p = db.Property(id=124, name="test", datatype="INTEGER")
>>> p.insert()
<Property id="100" cuid="124--9dfe260e-f699-47c8-9244-dd19dfa4b9ea" name="test" datatype="INTEGER">
<Version id="389ed77ea3eafb318cc8b6ee0dc7f1765e86022a" date="2021-02-12T09:02:43.376+0100"/>
<Warning code="0" description="Entity has no unit."/>
</Property>
```Timm Fitschent.fitschen@indiscale.comHenrik tom WördenFlorian SpreckelsenTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/115Allow queries with versioning and subqueries2021-05-12T11:16:30ZHenrik tom WördenAllow queries with versioning and subqueries*Created by: Florian Spreckelsen*
We should allow queries like `FIND any version OF RecordA WITH RecordB.PropertyA LIKE *Bla*` or `FIND any version OF RecordA WHICH REFERENCES A RecordB WHICH HAS PropertyB=42`.
How should these queries...*Created by: Florian Spreckelsen*
We should allow queries like `FIND any version OF RecordA WITH RecordB.PropertyA LIKE *Bla*` or `FIND any version OF RecordA WHICH REFERENCES A RecordB WHICH HAS PropertyB=42`.
How should these queries behave if the properties of `RecordB` change? Should all versions of `RecordB` be considered? Only the most recent?https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/113ENH: Allow custom mysql queries2021-05-12T11:19:42ZHenrik tom WördenENH: Allow custom mysql queries*Created by: Alexander Schlemmer*
In order to address performance critical applications I have a suggestion:
Allow to include raw mysql queries and provide access via a REST endpoint.
Example use case:
An institution is using the djang...*Created by: Alexander Schlemmer*
In order to address performance critical applications I have a suggestion:
Allow to include raw mysql queries and provide access via a REST endpoint.
Example use case:
An institution is using the django-frontend and replaced their MySQL-database with CaosDB in order to become more flexible. Although the backend works as expected some queries become really slow, although they had a simple MySQL-representation before, e.g.: `SELECT ID from JOIN ...` .
**Solution:**
- Transform the original mysql query in its (use-case specific) analogon using CaosDBs MySQL-tables.
- Connect the specific MySQL-procedure frontend via e.g. "https://name-of-instance.org/CustomQuery/NameOfSpecificQuery?var1=val1"
- `val1` could be used within the query as variable e.g. in a where-clause.
The query and its CQL counterpart should become part of integration tests. Tests should be really straight-forward here, as result sets are expected to be equivalent.
Another advantage is that this procedure allows for direct performance comparisons to simple MySQL-statements and therefore provide an objective baseline for optimizations and for calculating the performance-loss due to the increased flexibility in CQL.
**Imported comments:**
*By Alexander Schlemmer on 2020-12-16T14:00:43.790Z*
Discussed on 2020-12-16:
- Use case for this rather testing.
- One of the main problems is permission checking.
- It seems to be consensus to spend more time on improving performance of specific cases in CQL directly.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/112No meaningful default for authtoken.yml2022-12-12T09:36:12ZHenrik tom WördenNo meaningful default for authtoken.yml*Created by: Henrik tom Wörden*
Currently, in the example config, no authtoken.yml is given. This leads to an error. I suggest a default setting that does not fail.*Created by: Henrik tom Wörden*
Currently, in the example config, no authtoken.yml is given. This leads to an error. I suggest a default setting that does not fail.Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/65Inserting db.File without file leads to unkown server error2022-04-04T07:17:07ZHenrik tom WördenInserting db.File without file leads to unkown server error*Created by: Henrik tom Wörden*
```
In [11]: f = db.File(path="path")
In [12]: f.insert()
```
results in
```
ServerErrorException: An une...*Created by: Henrik tom Wörden*
```
In [11]: f = db.File(path="path")
In [12]: f.insert()
```
results in
```
ServerErrorException: An unexpected server error has occurred.
SRID = bb3acf86bbfc9097cab821b1f428f3fe
Please report this server error to and include the SRID into your report.
```Florian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/108move scripting/bin/xls_from_csv.py to webui2023-06-30T10:59:25ZHenrik tom Wördenmove scripting/bin/xls_from_csv.py to webui*Created by: Henrik tom Wörden*
**Imported comments:**
*By Henrik tom Wörden on 2020-11-13T12:16:21.326Z*
mentioned in merge request caosdb-webui!96*Created by: Henrik tom Wörden*
**Imported comments:**
*By Henrik tom Wörden on 2020-11-13T12:16:21.326Z*
mentioned in merge request caosdb-webui!96https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/107Allow to download files of size 02022-06-07T12:05:28ZHenrik tom WördenAllow to download files of size 0*Created by: Henrik tom Wörden*
In the webinterface, clicking on a link to a file with size=0, which would normally start the download, simply has no effect.
In python the following happens:
```
In [3]: db.File(id=6636).download()
----...*Created by: Henrik tom Wörden*
In the webinterface, clicking on a link to a file with size=0, which would normally start the download, simply has no effect.
In python the following happens:
```
In [3]: db.File(id=6636).download()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-baf54aec0251> in <module>
----> 1 db.File(id=6636).download()
~/CaosDB/caosdb-pylib/src/caosdb/common/models.py in download(self, target)
1622 else:
1623 file_ = NamedTemporaryFile(mode='wb', delete=False)
-> 1624 checksum = File.download_from_path(file_, self.path)
1625
1626 if self._checksum is not None and self._checksum.lower() != checksum.hexdigest().lower():
~/CaosDB/caosdb-pylib/src/caosdb/common/models.py in download_from_path(target_file, path)
1633 def download_from_path(target_file, path):
1634
-> 1635 _log_request("GET (download): " + path)
1636 response = get_connection().download_file(path)
1637
TypeError: can only concatenate str (not "NoneType") to str
```
Eventhough, it is pretty useless to download a file with 0B. This case should be treated properly. I think it should not behave differently than other downloads, i.e. a file with the correct name of size=0 should be created.Refactoring of File Storage APIhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/106Datatype of old properties is changed2024-03-04T08:35:37ZHenrik tom WördenDatatype of old properties is changed*Created by: Henrik tom Wörden*
Please see the attached script. The datatype of the property attached to the record changes. This was unexpected.
I tested this with a current software version and with
SERVER: 1b938aea ...*Created by: Henrik tom Wörden*
Please see the attached script. The datatype of the property attached to the record changes. This was unexpected.
I tested this with a current software version and with
SERVER: 1b938aea
PYLIB: 85b74141
MYSQLBACKEND: '39029749'
WEBUI: ce213dff
[test_dtc.py](/uploads/1ba0bcbee559b9d7101b614e53500c73/test_dtc.py)
**Imported comments:**
*By Timm Fitschen on 2021-02-10T12:33:12.375Z*
confirmation is ~"P 1"Timm Fitschent.fitschen@indiscale.comHenrik tom WördenTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/105Unnecessary slow query including `with id`2022-10-18T12:29:27ZHenrik tom WördenUnnecessary slow query including `with id`*Created by: Henrik tom Wörden*
In a database with roughly 300k entities, I observed, that a query of the type `FIND <RECORDTYPE> WHICH REFERENCES <ID> WITH id=<ID>` takes quite long (1.5s). Both <ID>s are the same. And the result set i...*Created by: Henrik tom Wörden*
In a database with roughly 300k entities, I observed, that a query of the type `FIND <RECORDTYPE> WHICH REFERENCES <ID> WITH id=<ID>` takes quite long (1.5s). Both <ID>s are the same. And the result set is 0. The query without the `with`, i.e. `FIND <RECORDTYPE> WHICH REFERENCES <ID>` is very fast and also has no results.
Naively, one would have expected that the condition `with id=xyz` is applied to the result set of the first part and, as that one is small or empty, should not have an impact.
**Imported comments:**
*By Timm Fitschen on 2021-02-17T13:58:01.725Z*
mentioned in merge request !78
*By Henrik tom Wörden on 2020-11-09T07:51:27.284Z*
changed title from **Unnecessary slow query including {-with id-}** to **Unnecessary slow query including {+`with id`+}**https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/104Extern: Allow path searches in CQL2022-06-15T11:20:00ZHenrik tom WördenExtern: Allow path searches in CQLExtern: https://gitlab.com/caosdb/caosdb-server/-/issues/104
*Created by: Henrik tom Wörden*
If you have the situation, that `A->B->C` or `A->B->B'->C`, and you do not know which is actually in the data, you currently have to use workar...Extern: https://gitlab.com/caosdb/caosdb-server/-/issues/104
*Created by: Henrik tom Wörden*
If you have the situation, that `A->B->C` or `A->B->B'->C`, and you do not know which is actually in the data, you currently have to use workarounds. For example, recursively query for referencing entities.
Desirable would be to allow this via a query. E.g. `FIND RECORD WHICH REFERENCES VIA ENTITIES <id>` or `FIND RECORD WHICH REFERENCES VIA <RT> <id>`.
**Imported comments:**
*By Alexander Schlemmer on 2020-11-11T13:38:01.216Z*
Can we add some concrete use cases here?
I remember some related to the Ice DB.
And does the Geomar already have ideas?
https://gitlab.com/caosdb/caosdb-server/-/issues/104https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/103CaosDB accepts empty File XML in PUT request2022-06-07T12:02:00ZHenrik tom WördenCaosDB accepts empty File XML in PUT request*Created by: Alexander Schlemmer*
This issue is related to bug 103 in caosdb-webui:
https://gitlab.com/caosdb/caosdb-webui/-/issues/103
Sending a PUT request for an existing file with ID 130 to the CaosDB server
```xml
<Request><File i...*Created by: Alexander Schlemmer*
This issue is related to bug 103 in caosdb-webui:
https://gitlab.com/caosdb/caosdb-webui/-/issues/103
Sending a PUT request for an existing file with ID 130 to the CaosDB server
```xml
<Request><File id="130"/></Request>
```
leads to a defect File Entity where path, checksum and size are removed.
Such a broken request for a file entity must not be accepted.
**Imported comments:**
*By Alexander Schlemmer on 2020-10-28T19:35:19.647Z*
mentioned in issue caosdb-webui#121
*By Alexander Schlemmer on 2020-10-28T16:13:29.984Z*
mentioned in issue caosdb-webui#103Refactoring of File Storage APIhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/96Query: REFERENCED AS2024-02-13T13:07:45ZHenrik tom WördenQuery: REFERENCED AS*Created by: Timm Fitschen*
Query: `FIND Person WHICH IS REFERENCED BY Party AS Guests`
When `Party` has a `Person` property with an overridden ("Guests") name and overridden data type.(`LIST<Person>`), the query does not return the ex...*Created by: Timm Fitschen*
Query: `FIND Person WHICH IS REFERENCED BY Party AS Guests`
When `Party` has a `Person` property with an overridden ("Guests") name and overridden data type.(`LIST<Person>`), the query does not return the expected records.
See failing test in caosdb-pyinttest@64b4f070
**Imported comments:**
*By Timm Fitschen on 2020-07-01T19:04:23.107Z*
changed the description
*By Timm Fitschen on 2020-07-01T19:00:20.619Z*
mentioned in commit caosdb-pyinttest@64b4f0705367423117c43055160cd30a8696ef1bhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/75Define: How will the `GET /Shared/ABC123` info resource know what to respond?2023-05-31T12:31:39ZHenrik tom WördenDefine: How will the `GET /Shared/ABC123` info resource know what to respond?*Created by: Quazgar*
For example, should `GET https://host/Shared/ABC123` simply return the content of a special file in the corresponding folder? Or is there another API call such as `UPDATE https://host/Shared/ABC123/Status` which c...*Created by: Quazgar*
For example, should `GET https://host/Shared/ABC123` simply return the content of a special file in the corresponding folder? Or is there another API call such as `UPDATE https://host/Shared/ABC123/Status` which can be called by the server-side script to publish its completed percentage?
Since this will be used often by many developers, the solution should be simple to use.
## Definition of done ##
- [ ] The way to update the `/Shared/` status for server-side scripts is defined.
**Imported comments:**
*By Timm Fitschen on 2021-02-11T20:04:27.063Z*
assigned to @quazgar
*By Quazgar on 2021-02-10T11:34:41.976Z*
No, this is the definition of which resources exist, whereas #74 is about the content of the results.
*By Timm Fitschen on 2021-02-10T11:06:53.519Z*
Is this a duplicate of #74 ?
*By Quazgar on 2020-02-17T12:44:23.430Z*
changed milestone to %4Daniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/74Define format and content of the `/Shared/` Info resource.2023-05-31T12:31:39ZHenrik tom WördenDefine format and content of the `/Shared/` Info resource.*Created by: Quazgar*
What should be in the response to `GET https://host/Shared/ABC123`? An XML with which elements and which meanings?
Note that it would be nice for client scripts if the content of stdout, stderr were in a format t...*Created by: Quazgar*
What should be in the response to `GET https://host/Shared/ABC123`? An XML with which elements and which meanings?
Note that it would be nice for client scripts if the content of stdout, stderr were in a format that can be easily split into "old" and "new".
## Definition of done ##
- [ ] Info `GET` response is defined (by example, by description, by formal definition...)
**Imported comments:**
*By Timm Fitschen on 2021-02-11T20:04:46.090Z*
assigned to @quazgar
*By Timm Fitschen on 2021-02-10T11:06:55.786Z*
mentioned in issue #75
*By Quazgar on 2020-02-17T12:46:52.498Z*
changed the description
*By Quazgar on 2020-02-17T12:39:07.697Z*
changed milestone to %4Daniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/72CQL: FIND RECORD OR FILE ...2021-05-31T06:10:44ZHenrik tom WördenCQL: FIND RECORD OR FILE ...*Created by: Timm Fitschen*
Add disjunction filter for roles.*Created by: Timm Fitschen*
Add disjunction filter for roles.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/71CQL: CHECK IF ANY/EVERY <FILTER> ALSO IS/HAS <FILTER>2021-05-12T11:23:11ZHenrik tom WördenCQL: CHECK IF ANY/EVERY <FILTER> ALSO IS/HAS <FILTER>*Created by: Timm Fitschen*
e.g `CHECK IF ANY Person WHICH has age > 55 ALSO HAS PROPERTY gender = male`
returns true/false
**Imported comments:**
*By Timm Fitschen on 2020-01-07T16:21:29.386Z*
changed the description*Created by: Timm Fitschen*
e.g `CHECK IF ANY Person WHICH has age > 55 ALSO HAS PROPERTY gender = male`
returns true/false
**Imported comments:**
*By Timm Fitschen on 2020-01-07T16:21:29.386Z*
changed the descriptionhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/70CQL: FIND ... WHICH IS SUBTYPE OF e12021-05-12T11:22:46ZHenrik tom WördenCQL: FIND ... WHICH IS SUBTYPE OF e1*Created by: Timm Fitschen*
**Imported comments:**
*By Florian Spreckelsen on 2021-02-12T09:34:41.286Z*
mentioned in issue #119*Created by: Timm Fitschen*
**Imported comments:**
*By Florian Spreckelsen on 2021-02-12T09:34:41.286Z*
mentioned in issue #119https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/69CQL: Filter for transitive references2021-05-12T11:22:29ZHenrik tom WördenCQL: Filter for transitive references*Created by: Timm Fitschen*
E.g.
* `FIND ... WHICH IS CONNECTED TO e1`
* `... [DIRECTLY] REFERENCES e1 via e2`
* `... IS [DIRECTLY] REFERENCED BY e1 via e2`
**Imported comments:**
*By Timm Fitschen on 2020-01-07T16:15:43.330Z*
cha...*Created by: Timm Fitschen*
E.g.
* `FIND ... WHICH IS CONNECTED TO e1`
* `... [DIRECTLY] REFERENCES e1 via e2`
* `... IS [DIRECTLY] REFERENCED BY e1 via e2`
**Imported comments:**
*By Timm Fitschen on 2020-01-07T16:15:43.330Z*
changed the descriptionhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/67Show caching stats in Info resource2021-07-14T12:12:10ZHenrik tom WördenShow caching stats in Info resource*Created by: Timm Fitschen**Created by: Timm Fitschen*Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/64Inserting file with wrong checksum leads to Unknown server error2023-06-30T11:07:03ZHenrik tom WördenInserting file with wrong checksum leads to Unknown server error*Created by: Henrik tom Wörden*
This may occur if a file record was exported by one CaosDB instance and shall be imported into another one.*Created by: Henrik tom Wörden*
This may occur if a file record was exported by one CaosDB instance and shall be imported into another one.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/62datatype is not changed when recordtype name changes2023-08-16T09:38:52ZHenrik tom Wördendatatype is not changed when recordtype name changes*Created by: Henrik tom Wörden*
Suppose you have a RecordType A and a Property p with datatype A. Now you rename A to B. The datatype of p is not changed.
Confirmation for this bug is in https://gitlab.com/caosdb/caosdb-pyinttest/-/mer...*Created by: Henrik tom Wörden*
Suppose you have a RecordType A and a Property p with datatype A. Now you rename A to B. The datatype of p is not changed.
Confirmation for this bug is in https://gitlab.com/caosdb/caosdb-pyinttest/-/merge_requests/27
**Imported comments:**
*By Timm Fitschen on 2020-06-19T12:37:52.831Z*
changed the description
*By Florian Spreckelsen on 2020-06-12T14:35:38.060Z*
mentioned in merge request caosdb-pyinttest!27
*By Quazgar on 2020-06-10T12:14:57.029Z*
mentioned in issue caosdb-webui#82
*By Florian Spreckelsen on 2020-06-05T11:27:34.642Z*
... probably a server-side caching problem; after restarting the server, the renaming is reflected in record and property.
*By Florian Spreckelsen on 2020-06-05T11:15:31.173Z*
Confirmed for WebUI and python client.
*By Quazgar on 2020-05-27T14:23:35.112Z*
This was observed in the WebUI.
- Is this a problem on the server side?
- Can a `B` reference be assigned to the property `p` (nominally still `A`) after the renaming?
- Is this only a problem in a client (for example due to caching in the WebUI)?
- What is the desired behavior? (Probably: `p` should be of datatype `B` after the renaming)Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/58BUG: no reasonable error when caosroot does not exist2022-06-07T12:05:55ZHenrik tom WördenBUG: no reasonable error when caosroot does not exist*Created by: Henrik tom Wörden*
I stumbled over a problem where caosroot points to a mount that was not accessible (maybe in general simply a path that does not exist?) and started the server. There was a time out after some time with a...*Created by: Henrik tom Wörden*
I stumbled over a problem where caosroot points to a mount that was not accessible (maybe in general simply a path that does not exist?) and started the server. There was a time out after some time with an HTTP related error message but no meaningful error.
**Imported comments:**
*By Quazgar on 2020-05-27T14:10:00.196Z*
changed the description
*By Quazgar on 2020-01-08T16:02:50.253Z*
Should probably go to caosdb-deploy
*By Quazgar on 2019-12-18T14:20:47.605Z*
changed milestone to %"Health checks"Refactoring of File Storage APIDaniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/57Provide capabilities to check files only for existence (query language enhanc...2023-06-30T11:07:42ZHenrik tom WördenProvide capabilities to check files only for existence (query language enhancement)*Created by: Henrik tom Wörden*
There is a file system check in the server, however it checks everything, including checksums, and is slow.
For the scenario where a user moves or deletes files it would be helpful to have the possibil...*Created by: Henrik tom Wörden*
There is a file system check in the server, however it checks everything, including checksums, and is slow.
For the scenario where a user moves or deletes files it would be helpful to have the possibility to check whether some inserted file do no longer exist.
This might be implemented by enhancing the query language to allow filtering for checksums, file names and file sizes similarly to names.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/55Are timezones allowed in a query?2023-05-31T13:02:02ZHenrik tom WördenAre timezones allowed in a query?*Created by: Henrik tom Wörden*
The query using a timestamp like '2017-02-13T07:57:22+0000' does not return a result even though it should. This is especially surprising since it is the way CaosDB prints timestamps.
If this is not allo...*Created by: Henrik tom Wörden*
The query using a timestamp like '2017-02-13T07:57:22+0000' does not return a result even though it should. This is especially surprising since it is the way CaosDB prints timestamps.
If this is not allowed intentionally, please update the Docs which do not mention this currently: https://gitlab.com/caosdb/caosdb/wikis/manuals/CQL/CaosDB%20Query%20Language#time-special-case-datetimeTimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/50Max length of paths currently at 2552022-06-07T12:00:39ZHenrik tom WördenMax length of paths currently at 255*Created by: Alexander Schlemmer*
Please increase the max length for path to > 2000.
```
alter table files modify path varchar(21844) not null;
```
Can be tested with:
```python
fi=db.File(file="./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...*Created by: Alexander Schlemmer*
Please increase the max length for path to > 2000.
```
alter table files modify path varchar(21844) not null;
```
Can be tested with:
```python
fi=db.File(file="./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
...: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
...: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
...: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", path="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
...: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
...: a/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
...: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
fi.insert()
**Imported comments:**
*By Henrik tom Wörden on 2021-01-05T10:19:47.926Z*
changed the description
*By Alexander Schlemmer on 2019-10-22T12:02:41.727Z*
changed due date to October 29, 2019Refactoring of File Storage APIhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/43Server should give better response when script cannot be called due to unsuff...2022-12-12T09:36:25ZHenrik tom WördenServer should give better response when script cannot be called due to unsufficient authorization*Created by: Quazgar*
Currently, the server only gives a 500 error when trying to run a server-side script, when the user is not logged in:
A POST request to `https://localhost:10443/scripting` with argument `call: foo.py` returns this...*Created by: Quazgar*
Currently, the server only gives a 500 error when trying to run a server-side script, when the user is not logged in:
A POST request to `https://localhost:10443/scripting` with argument `call: foo.py` returns this response:
```
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://localhost:10443/webinterface/webcaosdb.xsl" ?>
<Response srid="847a8704a9832976d61a061022df85e" timestamp="1570629981560" baseuri="https://localhost:10443">
<UserInfo>
<Roles>
<Role>anonymous</Role>
</Roles>
</UserInfo>
<Error code="500" description="An unexpected server error has occurred.">SRID = 847a8704a9832976d61a061022df85e
Please report this server error to and include the SRID into your report.</Error>
</Response>
```
A 401 response or similar seems more appropriate.
**Imported comments:**
*By Timm Fitschen on 2019-10-21T07:35:27.299Z*
assigned to @timm.fitschen
*By Quazgar on 2019-10-10T07:10:29.095Z*
changed title from **Server should give better response when script cannot be called due to uns{-i-}fficient authorization** to **Server should give better response when script cannot be called due to uns{+u+}fficient authorization**Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/38NullPointerException when accessing db.Info() due to missing read permissions...2022-07-08T11:21:07ZHenrik tom WördenNullPointerException when accessing db.Info() due to missing read permissions in DropOffBox*Created by: Henrik tom Wörden*
The following error
```
2019-09-30 10:24:34 10.218.100.146 - 10.3.128.3 10443 GET /Info - 401 - 0 1 https://dumiatis01 - -
2019-09-30 10:24:34 10.218.100.146 - 10.3.128.3 10443 POST /login - 200 - 41 35 h...*Created by: Henrik tom Wörden*
The following error
```
2019-09-30 10:24:34 10.218.100.146 - 10.3.128.3 10443 GET /Info - 401 - 0 1 https://dumiatis01 - -
2019-09-30 10:24:34 10.218.100.146 - 10.3.128.3 10443 POST /login - 200 - 41 35 https://dumiatis01 - -
UNKNOWN ERROR
java.lang.NullPointerException
at caosdb.server.utils.Info.getFlatList(Info.java:101)
at caosdb.server.utils.Info.toElement(Info.java:181)
at caosdb.server.utils.Info.toElement(Info.java:158)
at caosdb.server.resource.InfoResource.httpGetInChildClass(InfoResource.java:41)
at caosdb.server.resource.AbstractCaosDBServerResource.httpGet(AbstractCaosDBServerResource.java:250)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:511)
at org.restlet.resource.ServerResource.get(ServerResource.java:723)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:603)
at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:662)
at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348)
at org.restlet.resource.ServerResource.handle(ServerResource.java:1020)
at org.restlet.resource.Finder.handle(Finder.java:236)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Router.doHandle(Router.java:422)
at org.restlet.routing.Router.handle(Router.java:641)
at caosdb.server.CaosDBServer$2.handle(CaosDBServer.java:524)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Router.doHandle(Router.java:422)
at org.restlet.routing.Router.handle(Router.java:641)
at caosdb.server.CaosDBServer$3.handle(CaosDBServer.java:542)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202)
at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:77)
at org.restlet.Application.handle(Application.java:385)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Router.doHandle(Router.java:422)
at org.restlet.routing.Router.handle(Router.java:641)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Router.doHandle(Router.java:422)
at org.restlet.routing.Router.handle(Router.java:641)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202)
at org.restlet.Component.handle(Component.java:408)
at caosdb.server.CaosDBComponent.handle(CaosDBServer.java:880)
at org.restlet.Server.handle(Server.java:507)
at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63)
at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:143)
at org.restlet.ext.jetty.JettyServerHelper$WrappedServer.handle(JettyServerHelper.java:256)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:748)
2019-09-30 10:24:34 10.218.100.146 - 10.3.128.3 10443 GET /Info - 500 - 0 12 https://dumiatis01 - -
10:24:34.408 [qtp1232373427-213] ERROR REQUEST_ERRORS_LOGGER - SRID: bfb5eb86b5bc7d4690815c9b12b22ffc
REQUEST: GET https://dumiatis01/Info HTTPS/1.1
REQUEST HEADERS: [Cookie: SessionToken=["PAM","henrik",1569839074364,43200000,"1bba9185-022d-4fa5-96b3-1ea8471d398c","20f664369157f2111cd932add088625de52a9fa8228d7878b07d3a2779118861da59f79693aa17481b390d1144c2dafccbccfb8e8e6670e5aa90cf5636618f40"];][Host: dumiatis01][Accept-Encoding: identity]
RESPONSE: HTTPS/1.1 - Internal Server Error (500) - The server encountered an unexpected condition which prevented it from fulfilling the request
RESPONSE ENTITY:<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://dumiatis01/webinterface/webcaosdb.xsl" ?>
<Response username="henrik" realm="PAM" srid="bfb5eb86b5bc7d4690815c9b12b22ffc" timestamp="1569839074395" baseuri="https://dumiatis01">
<UserInfo username="henrik" realm="PAM">
<Roles>
<Role>administration</Role>
</Roles>
</UserInfo>
<Error code="500" description="An unexpected server error has occurred.">SRID = bfb5eb86b5bc7d4690815c9b12b22ffc
Please report this server error to and include the SRID into your report.</Error>
</Response>
java.lang.NullPointerException: null
at caosdb.server.utils.Info.getFlatList(Info.java:101) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at caosdb.server.utils.Info.toElement(Info.java:181) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at caosdb.server.utils.Info.toElement(Info.java:158) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at caosdb.server.resource.InfoResource.httpGetInChildClass(InfoResource.java:41) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at caosdb.server.resource.AbstractCaosDBServerResource.httpGet(AbstractCaosDBServerResource.java:250) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_222]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_222]
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:511) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.resource.ServerResource.get(ServerResource.java:723) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:603) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:662) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.resource.ServerResource.handle(ServerResource.java:1020) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.resource.Finder.handle(Finder.java:236) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at caosdb.server.CaosDBServer$2.handle(CaosDBServer.java:524) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at caosdb.server.CaosDBServer$3.handle(CaosDBServer.java:542) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:77) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.Application.handle(Application.java:385) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.Component.handle(Component.java:408) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at caosdb.server.CaosDBComponent.handle(CaosDBServer.java:880) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.Server.handle(Server.java:507) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:143) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.restlet.ext.jetty.JettyServerHelper$WrappedServer.handle(JettyServerHelper.java:256) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
```
occured when db.Info() was called in a python client. The problem was resolved after adding missing read permissions to the DropOffBox Folder.
**Imported comments:**
*By Alexander Schlemmer on 2020-06-12T15:11:21.060Z*
Server-version: acc6fbde
*By Alexander Schlemmer on 2020-06-12T15:11:01.273Z*
We think it might be related to inconsistencies in the file system, e.g. broken symlinks, but couldn't reproduce it with a clean container (unfortunately).
*By Alexander Schlemmer on 2020-06-12T15:08:05.931Z*
We are currently having problems with a similar issue: `db.Info()` leads to an unknown server error, but the dropoffbox exists and seems to have the correct permissions.
However, the exception on the server looks different:
```
linkahead | RESPONSE: HTTPS/1.1 - Internal Server Error (500) - The server encountered an unexpected condition which prevented it from fulfilling the request
linkahead | RESPONSE ENTITY:<?xml version="1.0" encoding="UTF-8"?>
linkahead | <?xml-stylesheet type="text/xsl" href="(...)" ?>
linkahead | <Response username="(...)" realm="PAM" srid="(...)" timestamp="(...)" baseuri="(...)">
linkahead | <UserInfo username="admin" realm="PAM">
linkahead | <Roles>
linkahead | <Role>administration</Role>
linkahead | </Roles>
linkahead | </UserInfo>
linkahead | <Error code="500" description="An unexpected server error has occurred.">SRID = 2429317594ce4a6bb989c4fd29963176
linkahead |
linkahead | Please report this server error to and include the SRID into your report.</Error>
linkahead | </Response>
linkahead |
linkahead | java.lang.NullPointerException: null
linkahead | at caosdb.server.database.misc.TransactionBenchmark.called_from(TransactionBenchmark.java:431) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.database.misc.JdomConverter.convert(TransactionBenchmark.java:239) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.database.misc.JdomConverter.convert(TransactionBenchmark.java:256) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.database.misc.TransactionBenchmark.toElement(TransactionBenchmark.java:366) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.resource.InfoResource.httpGetInChildClass(InfoResource.java:51) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.resource.AbstractCaosDBServerResource.httpGet(AbstractCaosDBServerResource.java:258) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at jdk.internal.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) ~[?:?]
linkahead | at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
linkahead | at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
linkahead | at org.restlet.resource.ServerResource.doHandle(ServerResource.java:511) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.get(ServerResource.java:723) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.doHandle(ServerResource.java:603) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:662) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.handle(ServerResource.java:1020) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.Finder.handle(Finder.java:236) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.CaosDBServer$2.handle(CaosDBServer.java:530) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
(...)
```
(Some information left out intentionally with "(...)".)
Is this a new bug?Refactoring of File Storage APITimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/36Extern: Cannot update entity permissions if file is missing.2024-02-05T11:41:53ZHenrik tom WördenExtern: Cannot update entity permissions if file is missing.---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/36
...
*Created by: Timm Fitschen*
On demo server, when I
```python
import caosdb
f = caosdb.execute_query("FIND FILE ...")[0]
f.update_acl()
```
this happened:
```
caos...---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/36
...
*Created by: Timm Fitschen*
On demo server, when I
```python
import caosdb
f = caosdb.execute_query("FIND FILE ...")[0]
f.update_acl()
```
this happened:
```
caosdb-server_1 | REQUEST: PUT https://localhost:10443/Entity?uniquename=true HTTPS/1.1
caosdb-server_1 | REQUEST HEADERS: [Cookie: SessionToken=["PAM","admin",1569232708088,600000,"0f81e347-0acd-4a3d-8ed2-170a50da110d","4ad3ff5af267181b9df1d07f89a9cb2c556bbf16e5b1164a8d9a9d7b2ced5c230453f6a0657e6b2ad78e6824f0ebfb92aa1c3b26ce891ae04ad2d4538b80bb13"];][Host: localhost:10443][Accept-Encoding: identity][Content-Length: 3208]
caosdb-server_1 | REQUEST ENTITY: <Update>
caosdb-server_1 | <File id="126" cuid="126--1ae8640c-45a6-42ad-9a09-81e88210b3dd" name="Report G / 2019-023" path="/reports/report_g_2019-023.pdf" size="38130">
caosdb-server_1 | <EntityACL>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:PROPERTY:ADD"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="RETRIEVE:ACL"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="USE:AS_DATA_TYPE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="RETRIEVE:OWNER"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="RETRIEVE:ENTITY"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:QUERY_TEMPLATE_DEFINITION"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:PROPERTY:REMOVE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:NAME"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="RETRIEVE:FILE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="DELETE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:ROLE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="RETRIEVE:HISTORY"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:FILE:REMOVE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:FILE:MOVE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:DATA_TYPE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:DESCRIPTION"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:VALUE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="USE:AS_PARENT"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="EDIT:ACL"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:PARENT:REMOVE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:FILE:ADD"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="USE:AS_REFERENCE"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="USE:AS_PROPERTY"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Grant priority="False" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:PARENT:ADD"/>
caosdb-server_1 | </Grant>
caosdb-server_1 | <Deny priority="True" username="admin" realm="PAM">
caosdb-server_1 | <Permission name="UPDATE:*"/>
caosdb-server_1 | </Deny>
caosdb-server_1 | </EntityACL>
caosdb-server_1 | </File>
caosdb-server_1 | </Update>
caosdb-server_1 |
caosdb-server_1 | RESPONSE: HTTPS/1.1 - Internal Server Error (500) - The server encountered an unexpected condition which prevented it from fulfilling the request
caosdb-server_1 | RESPONSE ENTITY:<?xml version="1.0" encoding="UTF-8"?>
caosdb-server_1 | <?xml-stylesheet type="text/xsl" href="https://localhost:10443/webinterface/webcaosdb.xsl" ?>
caosdb-server_1 | <Response username="admin" realm="PAM" srid="840d31a4aeaa90a5bb092134aba55e51" timestamp="1569232708107" baseuri="https://localhost:10443">
caosdb-server_1 | <UserInfo username="admin" realm="PAM">
caosdb-server_1 | <Roles>
caosdb-server_1 | <Role>administration</Role>
caosdb-server_1 | </Roles>
caosdb-server_1 | </UserInfo>
caosdb-server_1 | <Error code="500" description="An unexpected server error has occurred.">SRID = 840d31a4aeaa90a5bb092134aba55e51
caosdb-server_1 |
caosdb-server_1 | Please report this server error to and include the SRID into your report.</Error>
caosdb-server_1 | </Response>
caosdb-server_1 |
caosdb-server_1 | caosdb.server.CaosDBException: File not in file system. File system is not consistent with the data base!!! reports/report_g_2019-023.pdf
caosdb-server_1 | at caosdb.server.entity.FileProperties.retrieveFromFileSystem(FileProperties.java:253) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
```
**Imported comments:**
*By Timm Fitschen on 2019-09-23T10:05:09.395Z*
changed due date to October 02, 2019Refactoring of File Storage APITimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/26UniqueNamesError when updating files2022-06-07T12:05:22ZHenrik tom WördenUniqueNamesError when updating files*Created by: Quazgar*
Somehow files in our CaosDB where inserted with names (e.g. name="analysis.py"). In contrast to the usual situation many files have the same name. If one now tries to update one of these (e.g. to add a parent="Sour...*Created by: Quazgar*
Somehow files in our CaosDB where inserted with names (e.g. name="analysis.py"). In contrast to the usual situation many files have the same name. If one now tries to update one of these (e.g. to add a parent="Source"), the following error is thrown:
```
Traceback (most recent call last):
File "./crawl.py", line 65, in <module>
c.crawl(files)
File "/home/professional/.local/lib/python3.7/site-packages/caosadvancedtools/crawler.py", line 49, in crawl
cfood.treat_match(crawled_file, match)
File "/home/professional/.local/lib/python3.7/site-packages/caosadvancedtools/cfood.py", line 113, in treat_match
self.update_identifiables(entities, crawled_file, match)
File "/home/professional/CaosDB/caosdb-bmp/converter_scripts/specification_crawler/rheo_ana_cfood.py", line 132, in update_identifiables
fi.update()
File "/home/professional/.local/lib/python3.7/site-packages/caosdb/common/models.py", line 879, in update
flags=flags)[0]
File "/home/professional/.local/lib/python3.7/site-packages/caosdb/common/models.py", line 2520, in update
raise_errors(cresp)
File "/home/professional/.local/lib/python3.7/site-packages/caosdb/common/models.py", line 3301, in raise_errors
raise t
File "/home/professional/.local/lib/python3.7/site-packages/caosdb/common/models.py", line 3275, in raise_errors
raise_errors(e)
File "/home/professional/.local/lib/python3.7/site-packages/caosdb/common/models.py", line 3257, in raise_errors
raise r
File "/home/professional/.local/lib/python3.7/site-packages/caosdb/common/models.py", line 3239, in raise_errors
raise UniqueNamesError(error=e, entity=arg0)
caosdb.exceptions.UniqueNamesError: FILE (362608,'cluster_ad_hoc_model.py') CAUSED UniqueNamesError: Name is already in use. Choose a different name or reuse an existing entity.
```
**Imported comments:**
*By Timm Fitschen on 2020-10-28T13:36:41.614Z*
problem is in InsertFilesInDir.java
```java
final String targetPath = root + sub.getName();
final Entity newFileEntity = new Entity(sub.getName(), Role.File);
final long size = sub.length();
```
*By Alexander Schlemmer on 2020-10-28T13:36:27.649Z*
A procedure in the server automatically assigns names to files. This should be changed.
*By Timm Fitschen on 2019-09-03T06:28:19.746Z*
changed due date to October 02, 2019
*By Timm Fitschen on 2019-08-29T13:28:12.716Z*
changed due date to September 04, 2019
*By Timm Fitschen on 2019-08-29T13:27:58.292Z*
assigned to @timm.fitschen and unassigned @henrik_indiscale
*By Quazgar on 2019-08-13T09:44:29.167Z*
assigned to @henrik_indiscale and unassigned @quazgarRefactoring of File Storage APIhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/123Unexpected server error when retrieving entity 12023-05-31T12:54:51ZDaniel HornungUnexpected server error when retrieving entity 1Happening on the default profile.
```
UNKNOWN ERROR
org.caosdb.server.entity.NoSuchRoleException: No such role 'ROLE'.
at org.caosdb.server.entity.Role.parse(Role.java:62)
at org.caosdb.server.entity.Entity.setRole(Entity.jav...Happening on the default profile.
```
UNKNOWN ERROR
org.caosdb.server.entity.NoSuchRoleException: No such role 'ROLE'.
at org.caosdb.server.entity.Role.parse(Role.java:62)
at org.caosdb.server.entity.Entity.setRole(Entity.java:345)
at org.caosdb.server.entity.Entity.parseSparseEntity(Entity.java:1080)
at org.caosdb.server.database.DatabaseUtils.parseFromSparseEntities(DatabaseUtils.java:140)
at org.caosdb.server.database.backend.transaction.RetrieveSparseEntity.process(RetrieveSparseEntity.java:78)
at org.caosdb.server.database.backend.transaction.RetrieveSparseEntity.process(RetrieveSparseEntity.java:38)
at org.caosdb.server.database.CacheableBackendTransaction.execute(CacheableBackendTransaction.java:47)
at org.caosdb.server.database.BackendTransaction.execute(BackendTransaction.java:234)
at org.caosdb.server.database.backend.transaction.RetrieveFullEntityTransaction.retrieveFullEntity(RetrieveFullEntityTransaction.java:104)
at org.caosdb.server.database.backend.transaction.RetrieveFullEntityTransaction.retrieveFullEntitiesInContainer(RetrieveFullEntityTransaction.java:87)
at org.caosdb.server.database.backend.transaction.RetrieveFullEntityTransaction.execute(RetrieveFullEntityTransaction.java:76)
at org.caosdb.server.database.BackendTransaction.executeTransaction(BackendTransaction.java:150)
at org.caosdb.server.transaction.TransactionInterface.execute(TransactionInterface.java:44)
at org.caosdb.server.transaction.Retrieve.retrieveFullEntities(Retrieve.java:140)
at org.caosdb.server.transaction.Retrieve.transaction(Retrieve.java:135)
at org.caosdb.server.transaction.Transaction.execute(Transaction.java:171)
at org.caosdb.server.resource.transaction.RetrieveEntityResource.httpGetInChildClass(RetrieveEntityResource.java:89)
at org.caosdb.server.resource.AbstractCaosDBServerResource.httpGet(AbstractCaosDBServerResource.java:239)
at jdk.internal.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.restlet.resource.ServerResource.doHandle(ServerResource.java:511)
at org.restlet.resource.ServerResource.get(ServerResource.java:723) at org.restlet.resource.ServerResource.doHandle(ServerResource.java:603)
at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:662) at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348)
at org.restlet.resource.ServerResource.handle(ServerResource.java:1020) at org.restlet.resource.Finder.handle(Finder.java:236)
at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Router.doHandle(Router.java:422) at org.restlet.routing.Router.handle(Router.java:641)
at org.caosdb.server.CaosDBServer$1.handle(CaosDBServer.java:525)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.doHandle(Filter.java:150) at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Router.doHandle(Router.java:422) at org.restlet.routing.Router.handle(Router.java:641)
at org.caosdb.server.CaosDBServer$1.handle(CaosDBServer.java:525)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Router.doHandle(Router.java:422)
at org.restlet.routing.Router.handle(Router.java:641)
at org.caosdb.server.CaosDBServer$2.handle(CaosDBServer.java:543)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202)
at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:77)
at org.restlet.Application.handle(Application.java:385)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Router.doHandle(Router.java:422)
at org.restlet.routing.Router.handle(Router.java:641)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Router.doHandle(Router.java:422)
at org.restlet.routing.Router.handle(Router.java:641)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.routing.Filter.doHandle(Filter.java:150)
at org.restlet.routing.Filter.handle(Filter.java:197)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202)
at org.restlet.Component.handle(Component.java:408)
at org.caosdb.server.CaosDBComponent.handle(CaosDBServer.java:856)
at org.restlet.Server.handle(Server.java:507)
at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63)
at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:143)
at org.restlet.ext.jetty.JettyServerHelper$WrappedServer.handle(JettyServerHelper.java:256)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.base/java.lang.Thread.run(Thread.java:834)
2021-03-04 14:20:42 172.29.0.1 - 172.29.0.3 10443 GET /Entity/1 - 500 - 0 2 https://localhost:10443 Mozilla/5.0
```Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/153make cache.ccf overridable2021-07-14T11:44:29ZTimm Fitschent.fitschen@indiscale.commake cache.ccf overridableTimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/126Server does not accept file upload identifiers containing slashes2022-02-07T09:53:10ZAlexander SchlemmerServer does not accept file upload identifiers containing slashesUploading the following file form data currently does not work:
```
-----------------------------118239662738460814643246749165
Content-Disposition: form-data; name="FileRepresentation"
<Request><File upload="tf/test.txt" name="test.txt...Uploading the following file form data currently does not work:
```
-----------------------------118239662738460814643246749165
Content-Disposition: form-data; name="FileRepresentation"
<Request><File upload="tf/test.txt" name="test.txt" path="/DataAnalysis/tf/test.txt"></File></Request>
-----------------------------118239662738460814643246749165
Content-Disposition: form-data; name="tf/test.txt"; filename="tf/test.txt"
Content-Type: application/octet-stream
hi
-----------------------------118239662738460814643246749165--
```
However, it does work, using a version without slashes:
```
-----------------------------395145887815014542773023851246
Content-Disposition: form-data; name="FileRepresentation"
<Request><File upload="file1" name="test.txt" path="/DataAnalysis/tf/test.txt"></File></Request>
-----------------------------395145887815014542773023851246
Content-Disposition: form-data; name="file1"; filename="file1"
Content-Type: application/octet-stream
hi
-----------------------------395145887815014542773023851246--
```
Apparently the changed identifier from "tf/test.txt" to "file1" did solve the issue.Refactoring of File Storage APITimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/127Documentation for file upload API is outdated2022-02-07T09:53:17ZAlexander SchlemmerDocumentation for file upload API is outdatedSome information on the following doc page is outdated:
https://docs.indiscale.com/caosdb-server/specification/Fileserver.html
- "destination" has been renamed to "path"
- "FileRepresentation" must be the first entry in the form data (t...Some information on the following doc page is outdated:
https://docs.indiscale.com/caosdb-server/specification/Fileserver.html
- "destination" has been renamed to "path"
- "FileRepresentation" must be the first entry in the form data (this is not mentioned in the docs)
- currently the $temporary_identifier must not contain slashes... see: #126Refactoring of File Storage APITimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/128EXTERN: Boolean property values have to be queried in upper case2022-12-12T09:42:48ZFlorian SpreckelsenEXTERN: Boolean property values have to be queried in upper case---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/174
---
https://gitlab.com/caosdb/caosdb-server/-/issues/174---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/174
---
https://gitlab.com/caosdb/caosdb-server/-/issues/174Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/129Improve timestamp queries2021-06-07T09:00:41ZFlorian SpreckelsenImprove timestamp queriesIt would be nice if timestamp queries, e.g., `FIND ENTITY WHICH WAS CREATED ON 2021-04-07` supported more possibilities to specify times and time ranges:
- [x] `CREATED BEFORE/AFTER timestamp` or inequalities (https://gitlab.indiscale.c...It would be nice if timestamp queries, e.g., `FIND ENTITY WHICH WAS CREATED ON 2021-04-07` supported more possibilities to specify times and time ranges:
- [x] `CREATED BEFORE/AFTER timestamp` or inequalities (https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/132)
- [ ] instead of a timestamp, simplifications like `10 minutes ago`
- [ ] ranges, e.g., with `FROM timestamp1 TO timestamp2`
- [ ] timezones in timestamps (see #55)?Florian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/268Plan: String ID2023-01-09T16:57:50ZTimm Fitschent.fitschen@indiscale.comPlan: String ID# MVP
* pylib und webui können mit string ids umgehen, wenn diese statt integer vom server returned werden.
* server generiert string ids
* im `legacy-id` Mode gibt der server sowohl die (intern weiterhin verwendeten) integer ids als au...# MVP
* pylib und webui können mit string ids umgehen, wenn diese statt integer vom server returned werden.
* server generiert string ids
* im `legacy-id` Mode gibt der server sowohl die (intern weiterhin verwendeten) integer ids als auch die neuen string ids zurück
* im `legacy-id` Mode mapped der server integer ids auf die neuen string ids.
* Wenn der `legacy-id` Mode aus ist, werden die integer ids unterdrückt.
* Neue ID heißt `eid`.
# DoD
* [x] MVP definieren
* [x] Risikoanalyse der Umstellung
* [ ] Grobe Planung der nötigen Implementationsphasen (hier dokumentieren und issues erstellen)
* [ ] Alles im Story Telling vorstellen.
# See also
%"String ID"
# Risiken/Technical Dept
* pytinttests müssen teilweise refactored werden, weil cleanup häufig über "FIND Entity WITH id > 99" stattfindet.
* Die Umstellung bei den Entities selber dürfte kaum Probleme bereiten, insbesondere wenn der legacy-id mode an ist, sollten alte Clients die Umstellung überhaupt nicht bemerken.
* Probleme können bei der Abschaffung der alten Konvention von temporären ids auftauchen: Derzeit werden negative IDs als client ids verwendet. Diese sollten durch cuid ersetzt werden.
* Probleme können bei Reference Properties auftauchen: Alte Clients versuchen die Values als Integers zu parsen und sind gleichzeitig sehr restriktiv was mögliche Childnodes der Properties angeht.
* Weitestgehende Rückwärtskompatibilität zu wahren ist nur dann interessant, wenn dies auch beim versioning eingehalten werden kann.
* Risiken verbergen sich in den folgenden von uns verantworteten code bases: Server, MySQLBackend, WebUI, Pylib, Pyinttests, CaosadvancedTools, Customer Repos mit Erweiterungen in JS und Python, Demoinstanzen.
* Um nicht gezwungen zu sein, zu früh zu viel Code zu ändern, soll die implementation so gestaltet werden, dass vorerst nur pylib und webui umgestellt werden, mit der Fähigkeit sich im legacy-id mode so zu verhalten, als wenn eid einfach eine zusätzliche Eigenschaft von entities wäre.
# Implementationsphasen
Alle Phasen und deren nummerierte Unterpunkte sind so designed, dass sie direkt reviewed und gemerged werden können, ohne komplexe Abhängigkeiten.
## Phase 1 - Entities bekommen zusätzliche Eigenschaft `eid`.
1. Server: Entities (`EntityInterface.java`) bekommen in der internen representation eine weitere Membervariable: `eid`. Diese wird bei Insert-Transaktionen generiert (512 random bits, in Base36 codierung).
2. MySQL Backend: entities table bekommt weitere Spalte `eid BLOB DEFAULT NULL`. Diese wird bei retrieveEntity ausgelesen (Tests für retrieveEntity).
3. MySQL Backend, Server: `eid` wird in schreibende Transaktionen integriert (Unittests für MySQL und Server, noch keine integration tests).
4. Server: `eid` wird in XML Serialisierung integriert (Auch für Properties und Parents)
5. Server: ReferenceValue bekommen `eid` Membervariable, sodass Values von Reference Properties auch über die `eid` identifiziert werden können.
6. Pylib:
- Entity in Pylib bekommt `eid` property.
- Die parents von entities bekommen die `eid` property und können über `Entity.get_parent(eid)` gefunden werden.
- Die properties von entities bekommen die `eid` property und können über `Entity.get_property(eid)` gefunden werden.
- Container bekommen die `get_entity(eid)` methode. (Unittests)
- Die Generierung von negativen IDs als temporären ids wird auf die Nutzung von `cuid`s umgestellt. Dies ist im Server bereits möglich.
7. Pyinttests für `eid` mit insert/update/retrieve/delete - nur testen, dass die `eid` da ist.
8. WebUI:
- `data-entity-eid` attribute analog `data-entity-id`.
- `getEntityEID` methode analog `getEntityID`.
- Nutzung von negative IDs als temporären IDs wird auf Nutzung von `cuid` umgestellt.
## Phase 2 - Legacy-id Mode
9. Server:
- ServerProperty "LEGACY_ID_MODE = TRUE|FALSE" mit default TRUE. Wenn FALSE, werden nur eids ausgegeben und akzeptiert ansonsten ids und eids nebeneinander.
- Response bekommt `legacy-id` Eigenschaft, damit Clients verifizieren können, dass der Server sich im `legacy-id` mode befindet.
10. Pylib:
- pycaosdb.ini/config module bekommen `legacy-id` option (default: true).
- Exception, wenn sich Server und Pylib nicht im selben mode befinden.
11. WebUI:
- WebUI bekommt build property `BUILD_LEGACY_ID`.
- Alert, wenn Server und WebUI sich nicht im selben mode befinden.
## Phase 3 - Reference Values werden vom Server als `eìd` ausgegeben.
10. Pylib/WebUI/Server
- Pylib sucht im `legacy-id` mode beim Parsen von Reference Values nach `<Legacy-id id="{id}"/>` Nodes und gibt diese als Value aus. Pylib akzeptiert weiterhin ids als reference values.
- WebUI: Der `legacy-id` mode sorgt beim Compilieren des `webcaosdb.xsl` scripts dafür, dass `<Legacy-id id="{id}"/> ausgelesen wird.
- Server: Im LEGACY_ID mode werden ids und eids ausgegeben und aktzeptiert. Reference Values werden als `<Value>{eid}<Legacy-id id="{id}"/></Value>` xml-serialisiert.
Damit sollte die Einführung von `eid`s abgeschlossen sein. Pyinttests und WebUI Unittests sollten weiterhin passen.
Es folgen die Anpassungen der src/core/js/ Module in der WebUI und bei caosadvancedtools. Außerdem ist eine Duplizierung aller Pyinttests für `eid` ohne `legacy-id` mode zu erwägen. Dann kommen die customer repos.
Mit der Einführung von `eid`s sind die Weichen gestellt für eine universale, persistente Identifikation von Entities, die nicht mehr von der Server-Instanz abhängt. Dann sollte in Zukunft erlaubt werden, `eid`s beim Insert vorzugeben (mit entsprechenden Permissions) und außerdem das Namespace System eingeführt werden.
# Discussion/Ausblick
* URIs are case-sensitive!
* Handle System PID: e.g. 21.1000/ABCD1234 info:hdl/21.1000/ABCD1234 https://hdl.handle.net/21.1000/ABCD1234
* URN: e.g. urn:isbn:0451450523
* HTTP URIS: e.g. https://caosdb.example.com/entity/<namespace>/<eid>
* URI SCHEME: e.g. git, https, mailto, urn, doi rdf. org.caosdb:<namespace>/<eid> org.linkahead:<namespace>/<vid|eid>
* Namespaces: "core" - e.g. "core:unit", "core:comment", "core:datatype:integer", "DC" (Dublin Core Metadata Initiative) - e.g. "DC:Title"
* References ohne Namespace beziehen sich auf den Server der die Reference Property hat. References mit Namespace können evtl. vom Server aufgelöst werden. Jeder Server definiert einen eigenen Namespace unter dem Entities ohne explizite angabe des NS angelegt werden. Dieser sollte konfiguriert werden, default is `hostname` (Achtung docker).Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/270Versioning: Query2023-03-09T16:10:47ZTimm Fitschent.fitschen@indiscale.comVersioning: QueryUrsprünglich als Phase 11 geplant. Wegen Nichterfüllbarkeit von caosdb/internal/docs#521 wird dieses Enhancement aber schwieriger werden und
womöglich an Priorität verlieren.
Siehe caosdb/internal/docs#482
Depends: caosdb/internal/doc...Ursprünglich als Phase 11 geplant. Wegen Nichterfüllbarkeit von caosdb/internal/docs#521 wird dieses Enhancement aber schwieriger werden und
womöglich an Priorität verlieren.
Siehe caosdb/internal/docs#482
Depends: caosdb/internal/docs#524Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/271Versioning Phase 10 - Delete/Forget2023-01-09T17:05:09ZTimm Fitschent.fitschen@indiscale.comVersioning Phase 10 - Delete/ForgetSiehe caosdb/internal/docs#482
Depends: caosdb/internal/docs#523Siehe caosdb/internal/docs#482
Depends: caosdb/internal/docs#523Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/266Units Resource (GET) for the Server2023-10-27T15:42:51ZTimm Fitschent.fitschen@indiscale.comUnits Resource (GET) for the Server
# DoD
- [ ] implement a server resource to view all existing units:
* [ ] GET /units/ returns all currently known units
* [ ] GET /units/<signature> returns the unit with the given signature e.g. `units/m` and `units/metre` re...
# DoD
- [ ] implement a server resource to view all existing units:
* [ ] GET /units/ returns all currently known units
* [ ] GET /units/<signature> returns the unit with the given signature e.g. `units/m` and `units/metre` return both the same unit.
* [ ] GET /units/<id> returns the unit with the given id. e.g `units/23742374283` returns also the unit for "metre".
This also is a necessary basis for CUD transactions of user-defined base units.
see also:
- https://gitlab.com/caosdb/caosdb-server/issues/16 (rejected?)Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/267Units in Query2023-10-27T10:59:56ZTimm Fitschent.fitschen@indiscale.comUnits in QueryBug spotted in caosdb1.awi.de:
`FIND ENTITY WITH height = 1m` did not return entities with `height = 100cm`.Bug spotted in caosdb1.awi.de:
`FIND ENTITY WITH height = 1m` did not return entities with `height = 100cm`.Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/269Extern: Max length of paths currently at 2552023-01-09T17:03:43ZDaniel HornungExtern: Max length of paths currently at 255Fix external issue
https://gitlab.com/caosdb/caosdb-server/issues/50
- [ ] Ist gefixtFix external issue
https://gitlab.com/caosdb/caosdb-server/issues/50
- [ ] Ist gefixtRefactoring of File Storage APITimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/165Can't update records with properties without an id2021-12-13T08:25:32ZFlorian SpreckelsenCan't update records with properties without an idRelates to caosdb-pylib#50.
E.g., on the demo instance, doing
```python
ana_rt = db.RecordType(name="MusicalAnalysis").retrieve()
test_ana = db.Record(name="TestAnalysis").add_parent(ana_rt)
test_ana.insert()
test_ana.add_property(nam...Relates to caosdb-pylib#50.
E.g., on the demo instance, doing
```python
ana_rt = db.RecordType(name="MusicalAnalysis").retrieve()
test_ana = db.Record(name="TestAnalysis").add_parent(ana_rt)
test_ana.insert()
test_ana.add_property(name="quality_factor", value=0.7)
test_ana.update()
```
results in
```
TransactionError: TransactionError: One or more entities are not qualified. None of them have been inserted/updated/deleted.
+--| REASONS |--
| -> RECORD (id: 357, name: 'TestAnalysis') CAUSED |UnqualifiedPropertiesError: Entity has unqualified properties.
| +--| REASONS |--
| | -> PROPERTY (id: 101, name: 'quality_factor') CAUSED | |EntityError: Entity has no ID.
| +----------------
+----------------
```
while updating with the id of the property works fine. Especially annoying since the correct id is even shown in the error message, so clearly the server resolves the name correctly and still doesn't update.Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/143Documenting Dependencies2023-04-14T12:31:46ZHenrik tom WördenDocumenting DependenciesThere is [DEPENDENCIES.md](DEPENDENCIES.md) and [README_SETUP.md](README_SETUP.md) which also lists dependencies. Should we keep both?
Should we not also list licenses of dependencies?There is [DEPENDENCIES.md](DEPENDENCIES.md) and [README_SETUP.md](README_SETUP.md) which also lists dependencies. Should we keep both?
Should we not also list licenses of dependencies?Henrik tom WördenHenrik tom Wördenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/155SELECT results should be marked as incomplete2021-06-24T10:28:58ZFlorian SpreckelsenSELECT results should be marked as incompleteResults of SELECT queries (and possibly other use cases that return incomplete entities) should be marked as "incomplete" by the server s.th. they can be treated separately by the clients. This way, an erroneous update can be prevented ...Results of SELECT queries (and possibly other use cases that return incomplete entities) should be marked as "incomplete" by the server s.th. they can be treated separately by the clients. This way, an erroneous update can be prevented by the client, see https://gitlab.indiscale.com/caosdb/src/caosdb-pylib/-/issues/48.
Bug (i.e. dangerous default behavior) in pylib also affects other clients. Therefore, we regard this thing as bug.
# DoD
* [ ] add "projection" or "incomplete" hint to server response on select queries.
* [ ] add same property to resulting containers in caosdb-pylib.
* [ ] prevent update on flagged containers.
* [ ] Removed xfail from tests in pyinttest test_select.py.
# See also
Confirmation is in https://gitlab.indiscale.com/caosdb/src/caosdb-pyinttest/-/merge_requests/10Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/157Unified treatment of files2023-06-30T12:35:39ZAlexander SchlemmerUnified treatment of filesCurrently there are two possibilities for File objects in CaosDB that lead to different behavior:
- 1) A file was inserted using the standard insert API method and resides directly in the CaosDB root file system.
- 2) A file was inserted...Currently there are two possibilities for File objects in CaosDB that lead to different behavior:
- 1) A file was inserted using the standard insert API method and resides directly in the CaosDB root file system.
- 2) A file was inserted using the "create link" method, which is the de-facto default for all crawler based applications. The file itself does not reside in the CaosDB root file system, but on an external file system, but a symlink exists to the corresponding location in the CaosDB root file system.
There are important implications, especially in setups, where both methods are used simultaneously:
- On deletion of a CaosDB file entity created with method 1, the actual real file will vanish, while in case of method 2, only the symlink will vanish and the original file is preserved. It is impossible to identify this difference in behaviours e.g. from the web frontend, as it is not possible to see whether the file behind the file entity is a symlink or a real file.
- Files inserted with method 1 will be part of the standard CaosDB file backup, file there will be only a corresponding symlink in case of method 2.
- ...
I think the current mix of methods for inserting files can lead to unpredictable behaviour, and therefore there should be only one way to insert files into CaosDB.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/160Better error message for unreadable or nonexistent key stores2021-07-07T08:14:25ZAlexander SchlemmerBetter error message for unreadable or nonexistent key storesCurrently the server responds with the following error message, when a key store (jks file) cannot be found:
```
Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException:...Currently the server responds with the following error message, when a key store (jks file) cannot be found:
```
Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
```
A better error message would be: "keystore file not found" or something similar.Daniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/163When deleting files an error occured2021-07-30T07:14:46ZHenrik tom WördenWhen deleting files an error occured`org.caosdb.server.database.exceptions.TransactionException: org.caosdb.server.CaosDBException: could not unlink /opt/caosdb/mnt/caosroot/cloudkite-proc/processed_data/eurec4a/msm89/cloudkite/level_1/EUREC4A_CloudKite_MPCK-plus_MPCKplusB...`org.caosdb.server.database.exceptions.TransactionException: org.caosdb.server.CaosDBException: could not unlink /opt/caosdb/mnt/caosroot/cloudkite-proc/processed_data/eurec4a/msm89/cloudkite/level_1/EUREC4A_CloudKite_MPCK-plus_MPCKplusBox-Dragonfly_Level-1_Flight009-20200209_v1.0 (copy).nc`
It seems to be related to the file name. Other files could be deleted.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/164Unexpected Server Error when non-existent file shall be inserted2021-07-30T07:47:49ZHenrik tom WördenUnexpected Server Error when non-existent file shall be insertedThis error is easy to reproduce with python: `db.File(path='randomstring').insert()`This error is easy to reproduce with python: `db.File(path='randomstring').insert()`https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/167Allow sorting of result sets2021-08-25T09:28:03ZHenrik tom WördenAllow sorting of result setsThis especially interesting if you want for example to find out what kinds of RecordTypes exist in your data model. An unordered list is quite unhelpful.This especially interesting if you want for example to find out what kinds of RecordTypes exist in your data model. An unordered list is quite unhelpful.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/168Property is falsly interpreted as reference2021-08-26T10:46:28ZHenrik tom WördenProperty is falsly interpreted as referenceFor what ever reason the following situation occured in a data set:
1. A record A has a property B with datatype TEXT and value "2342"
2. A record C has the name B and no properties and the id=2342
It is not possible to delete record C ...For what ever reason the following situation occured in a data set:
1. A record A has a property B with datatype TEXT and value "2342"
2. A record C has the name B and no properties and the id=2342
It is not possible to delete record C because the server will say it is still referenced and clicking on the "References" button leads to record A, i.e. the server interprets this as A references C.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/171Mismatching parent name and id should raise error or warning2021-08-31T10:21:19ZTimm Fitschent.fitschen@indiscale.comMismatching parent name and id should raise error or warningSee test in caosdb-pyinttest https://gitlab.indiscale.com/caosdb/src/caosdb-pyinttest/-/blob/06205692534c32de76e0acf1fe5c9cfa643137d7/tests/test_parents.pySee test in caosdb-pyinttest https://gitlab.indiscale.com/caosdb/src/caosdb-pyinttest/-/blob/06205692534c32de76e0acf1fe5c9cfa643137d7/tests/test_parents.pyhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/172Illustrate in documentation how the name property is different than other pro...2021-08-31T13:52:48ZHenrik tom WördenIllustrate in documentation how the name property is different than other propertieshttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/182Derived Properties2023-12-14T12:57:31ZTimm Fitschent.fitschen@indiscale.comDerived PropertiesProperty with a value which is being derived/calculated from other properties. E.g.
# MVP Option 1 (string concatenation/format strings)
```python
Property("first name", datatype=db.TEXT).insert()
Property("last name", datatype=db.TEX...Property with a value which is being derived/calculated from other properties. E.g.
# MVP Option 1 (string concatenation/format strings)
```python
Property("first name", datatype=db.TEXT).insert()
Property("last name", datatype=db.TEXT).insert()
Property("full name", datatype=db.TEXT, derived="{first name} {last name}").insert()
r = Record().add_property("first name", "Anna").add_property("last name", "Lytics").add_property("full name").insert()
assert r.get_property("full name").value == "Anna Lytics"
```
which results in a property which has a value which is automatically being set by the server during write transactions.
In a first version, this is only possible for string concatenation. But it is is the goal to have more flexible definition involving other string operations and possibly values with other data types, e.g. mean values of doubles, and derived values from the properties of referenced entities
# MVP Option 2 (copy properties of referenced entities)
```python
Property("Species", datatype=db.TEXT).insert()
sample = Record("Sample").add_property("Species", "Hering").insert()
r = Record("DNA-Sample").add_property("Sample", sample).add_property("Species", derived="{Sample.Species}).insert()
assert r.get_property("Species").value == "Hering"
```
* If sample is not readable (current user lacks RETRIEVE permission) the value is None (?)
* The value of "Species" of "DNA-Sample" is calculated on-the-fly during retrieval and not stored persistently
* This change is backwards compatible for read operations. Server will ignore attempts to update the value and issue a warning.
* Edit-mode should be aware that this value cannot be updated (at least).
* No need to touch the mariadbbackend for now.
* Query will not know about derived values for now
First rough estimation ~"(::G" (pylib, cpplib, grpc-api, webui, server)Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/194DOC: Insert file in dir2022-11-28T10:01:34ZAlexander SchlemmerDOC: Insert file in dirIs there a function analogous to https://docs.indiscale.com/caosdb-server/_apidoc/org/caosdb/server/jobs/core/InsertFilesInDir.html?highlight=insert%20files%20dir#org.caosdb.server.jobs.core.InsertFilesInDir.job(String)
that would allow ...Is there a function analogous to https://docs.indiscale.com/caosdb-server/_apidoc/org/caosdb/server/jobs/core/InsertFilesInDir.html?highlight=insert%20files%20dir#org.caosdb.server.jobs.core.InsertFilesInDir.job(String)
that would allow inserting a single file as a symlink into the CaosDB file system?
Something like this would be needed for the new crawler design.
Could there be a workaround with a manual insertion of a symlink into the CaosDB file system using the python interface? How would that look like?Refactoring of File Storage APITimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/198DocumentationMissing: InsertFilesInDir2021-12-03T11:09:45ZAlexander SchlemmerDocumentationMissing: InsertFilesInDirDoc here is missing:
https://docs.indiscale.com/caosdb-server/_apidoc/org/caosdb/server/jobs/core/InsertFilesInDir.html?highlight=insertfiles#org.caosdb.server.jobs.core.InsertFilesInDir
Can probably be at least partially taken from:
ht...Doc here is missing:
https://docs.indiscale.com/caosdb-server/_apidoc/org/caosdb/server/jobs/core/InsertFilesInDir.html?highlight=insertfiles#org.caosdb.server.jobs.core.InsertFilesInDir
Can probably be at least partially taken from:
https://gitlab.indiscale.com/caosdb/src/caosdb-advanced-user-tools/-/blob/dev/src/caosadvancedtools/loadFiles.py#L84Florian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/200How to do proper i18n?2021-12-06T09:01:16ZAlexander SchlemmerHow to do proper i18n?Currently, data model names (of entities, properties, ...) and descriptions have to be provided in a single language. This might be an issue in international applications where subsets of users possibly don't feel at ease with English. T...Currently, data model names (of entities, properties, ...) and descriptions have to be provided in a single language. This might be an issue in international applications where subsets of users possibly don't feel at ease with English. Therefore this can result in usability problems.
We should discuss the possibility to implement proper internationalization, to provide a switchable translation for data and data models. There might be libraries to simplify this issue.Timm Fitschent.fitschen@indiscale.comDaniel HornungSina RohdeTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/201Weird exception in case of missing RecordType for parent2021-12-06T14:03:26ZAlexander SchlemmerWeird exception in case of missing RecordType for parentI tried inserting an entity, but obviously forgot to insert the RecordType "Person" before
```xml
<Record id="-1" cuid="-1--acc2c922-4bf0-40f8-9017-26df8cdc348b">
<Parent name="Person"/>
<Property name="first_name" importance="FIX" ...I tried inserting an entity, but obviously forgot to insert the RecordType "Person" before
```xml
<Record id="-1" cuid="-1--acc2c922-4bf0-40f8-9017-26df8cdc348b">
<Parent name="Person"/>
<Property name="first_name" importance="FIX" flag="inheritance:FIX"/>
<Property name="last_name" importance="FIX" flag="inheritance:FIX">AuthorA</Property>
</Record>
```
The server responds with:
```
HTTPServerError: An unexpected server error has occurred.
SRID = 20d015c5-5c0a-4436-9ba1-3129575d2b5e
Please report this server error to and include the SRID into your report.
```
The server log, however, says:
```
linkahead | UNKNOWN ERROR
linkahead |
linkahead | org.caosdb.server.database.exceptions.EntityDoesNotExistException
linkahead | at org.caosdb.server.database.backend.transaction.GetIDByName.execute(GetIDByName.java:69)
```
Expected behaviour would be some error message like "Record type `Person` does not exist."
For reproducing just use a fresh caosdb-deploy with the `debug` profile.Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/203Emphasize in docs that RecordTypes can be used as Properties2021-12-09T16:04:33ZHenrik tom WördenEmphasize in docs that RecordTypes can be used as PropertiesNew users often struggle because they try to create a "Photo" Property for a "Photo" RecordType.New users often struggle because they try to create a "Photo" Property for a "Photo" RecordType.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/208Bad Property name leads to Unknown Server Error2024-02-19T11:56:42ZHenrik tom WördenBad Property name leads to Unknown Server ErrorThe following leads to an Unknown Server error if BOTH the RecordType "RT" and the Property "P" is not known in the server.
`db.Record().add_parent("RT").add_property("P","abc").insert()`The following leads to an Unknown Server error if BOTH the RecordType "RT" and the Property "P" is not known in the server.
`db.Record().add_parent("RT").add_property("P","abc").insert()`Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/209Pattern in path is matched incorrectly2022-02-07T09:25:05ZHenrik tom WördenPattern in path is matched incorrectlyThe result of ` find file which is stored at "**/\~\$*` is incorrect.The result of ` find file which is stored at "**/\~\$*` is incorrect.Henrik tom WördenHenrik tom Wördenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/210A RecordType with a datatype property can be created.2022-09-01T15:31:26ZHenrik tom WördenA RecordType with a datatype property can be created.`db.RecordType("TestDT", datatype=db.DOUBLE).insert()``db.RecordType("TestDT", datatype=db.DOUBLE).insert()`https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/211Cannot change name even with the appropriate permission2021-12-28T10:48:03ZHenrik tom WördenCannot change name even with the appropriate permissionI gave a user a role that allows all transactions and added a permission rule to the entity acl that only provides a single update permission: Changing the name.
Changing the name fails. With the Error "You are not allowed to do this"
...I gave a user a role that allows all transactions and added a permission rule to the entity acl that only provides a single update permission: Changing the name.
Changing the name fails. With the Error "You are not allowed to do this"
In the response xml:
```xml
<Error code="403" description="You are not allowed to do this." />
<Warning code="1104" description="User role does not exist." />
<Info code="0" description="User Role `admin@PAM` does not exist." />
<Info code="0" description="henrik doesn't have permission update:property:add" />https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/212Please add information about usage of "NULL" to CQL docs2022-06-21T11:01:06ZAlexander SchlemmerPlease add information about usage of "NULL" to CQL docsIn:
https://docs.indiscale.com/caosdb-server/CaosDB-Query-Language.html
There's currently no documentation on how to search for empty properties.
```cql
FIND Record with property IS NULL
```In:
https://docs.indiscale.com/caosdb-server/CaosDB-Query-Language.html
There's currently no documentation on how to search for empty properties.
```cql
FIND Record with property IS NULL
```Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/213Confusing output of Info-Resource2022-01-18T09:44:10ZAlexander SchlemmerConfusing output of Info-ResourceIn a new, empty CaosDB instance I issued:
```
https://localhost:10443/Entity/?all=Property&P=0L10
```
and received (as expected):
```xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://localhost:104...In a new, empty CaosDB instance I issued:
```
https://localhost:10443/Entity/?all=Property&P=0L10
```
and received (as expected):
```xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://localhost:10443/webinterface/1642496917/webcaosdb.xsl" ?>
<Response username="admin" realm="PAM" srid="..." timestamp="..." baseuri="https://localhost:10443" count="0">
<noscript>
<h1>Please enable JavaScript!</h1>
</noscript>
<UserInfo username="admin" realm="PAM">
<Roles>
<Role>administration</Role>
</Roles>
</UserInfo>
<TransactionBenchmark info="TransactionBenchmark is disabled." />
</Response>
```
... indicating an empty database.
However, the Info-Resource (https://localhost:10443/Info) responds with:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://localhost:10443/webinterface/1642496917/webcaosdb.xsl" ?>
<Response username="admin" realm="PAM" srid="..." timestamp="..." baseuri="https://localhost:10443">
<noscript>
<h1>Please enable JavaScript!</h1>
</noscript>
<UserInfo username="admin" realm="PAM">
<Roles>
<Role>administration</Role>
</Roles>
</UserInfo>
<TimeZone offset="+0000" id="Etc/UTC">Coordinated Universal Time</TimeZone>
<Stats>
<counts records="0" properties="3" recordTypes="1" files="0" fssize="0B" tmpfiles="0" debug="true" />
<dropOffBox path="/opt/caosdb/mnt/dropoffbox" />
</Stats>
<TransactionBenchmark info="TransactionBenchmark is disabled." />
</Response>
```
(left out flags)
So, whom do I trust? Info counts 3 properties and 1 record type... but they are not yielded when retrieving all the Entities.
I need the Info-Resource for checking the database for emptiness, so this approach will lead to bugs.Timm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/218Simultaneous update of a file's parent and adding to a record (as part of an ...2022-03-07T14:05:06ZAlexander SchlemmerSimultaneous update of a file's parent and adding to a record (as part of an update) impossibleI am trying to do a simultaneous update (using a single container from pylib) of:
- adding parent "SimulationOutput" to a file (id=169)
- adding the file to a LIST<SimulationOutput> - property (id=156, name="output") of an existing recor...I am trying to do a simultaneous update (using a single container from pylib) of:
- adding parent "SimulationOutput" to a file (id=169)
- adding the file to a LIST<SimulationOutput> - property (id=156, name="output") of an existing record
This currently leads to an error: "Reference not qualified. The value of this Reference Property is to be a child of its data type."
This would be correct if I had not added the parent in the first place. Somehow, the server does not take into account the simultaneously added parent during the type check for the property of the record.
If I do an ".update()" on both entries of the container separately, adding the parent first, the update transaction works.
(xml shortened):
```xml
<File id="169" path=".../SimulationOutput/run1/result.npy">
<Parent id="158" name="SimulationOutput"/>
</File>
,
<Record id="185" description="*[possibly short] description of the event*">
<Parent id="155" name="SimulationCase"/>
(...)
<Property id="156" name="output" importance="FIX" flag="inheritance:FIX">
<Value>169</Value>
</Property>
</Record>
```
```
Traceback (most recent call last):
File "/home/salexan/.local/bin/crawler2.0", line 33, in <module>
sys.exit(load_entry_point('newcrawler', 'console_scripts', 'crawler2.0')())
File "/home/salexan/Projekte/CaosDB/caosdb-newcrawler/src/newcrawler/crawl.py", line 759, in main
crawler.synchronize(commit_changes=True)
File "/home/salexan/Projekte/CaosDB/caosdb-newcrawler/src/newcrawler/crawl.py", line 327, in synchronize
return self._synchronize(self.updateList, commit_changes)
File "/home/salexan/Projekte/CaosDB/caosdb-newcrawler/src/newcrawler/crawl.py", line 611, in _synchronize
self.execute_updates_in_list(to_be_updated)
File "/home/salexan/Projekte/CaosDB/caosdb-newcrawler/src/newcrawler/crawl.py", line 578, in execute_updates_in_list
db.Container().extend(to_be_updated).update()
File "/home/salexan/Projekte/CaosDB/caosdb-pylib/src/caosdb/common/models.py", line 3316, in update
raise_errors(cresp)
File "/home/salexan/Projekte/CaosDB/caosdb-pylib/src/caosdb/common/models.py", line 4384, in raise_errors
raise transaction_error
caosdb.exceptions.TransactionError: TransactionError: One or more entities are not qualified. None of them have been inserted/updated/deleted.
+--| REASONS |--
| -> RECORD (id: 185) CAUSED |UnqualifiedPropertiesError: Entity has unqualified properties.
| +--| REASONS |--
| | -> PROPERTY (id: 156, name: 'output') CAUSED | |EntityError: Reference not qualified. The value of this Reference Property is to be a child of its data type.
| +----------------
+----------------
```Timm Fitschent.fitschen@indiscale.comDaniel HornungTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/219Unknown error instead of "Entity does not exist error"2022-05-16T08:21:24ZAlexander SchlemmerUnknown error instead of "Entity does not exist error"I recently tried inserting a large container using the crawler, but forgot to insert the data model first.
The server responded with:
```
Traceback (most recent call last):
File "/home/salexan/.local/bin/crawler2.0", line 33, in <modu...I recently tried inserting a large container using the crawler, but forgot to insert the data model first.
The server responded with:
```
Traceback (most recent call last):
File "/home/salexan/.local/bin/crawler2.0", line 33, in <module>
sys.exit(load_entry_point('newcrawler', 'console_scripts', 'crawler2.0')())
File "/home/salexan/Projekte/CaosDB/caosdb-newcrawler/src/newcrawler/crawl.py", line 780, in main
crawler.synchronize(commit_changes=True)
File "/home/salexan/Projekte/CaosDB/caosdb-newcrawler/src/newcrawler/crawl.py", line 330, in synchronize
return self._synchronize(self.updateList, commit_changes)
File "/home/salexan/Projekte/CaosDB/caosdb-newcrawler/src/newcrawler/crawl.py", line 631, in _synchronize
self.execute_inserts_in_list(to_be_inserted)
File "/home/salexan/Projekte/CaosDB/caosdb-newcrawler/src/newcrawler/crawl.py", line 584, in execute_inserts_in_list
db.Container().extend(to_be_inserted).insert()
File "/home/salexan/Projekte/CaosDB/caosdb-pylib/src/caosdb/common/models.py", line 3472, in insert
http_response = con.insert(
File "/home/salexan/Projekte/CaosDB/caosdb-pylib/src/caosdb/connection/connection.py", line 551, in insert
http_response = self._http_request(
File "/home/salexan/Projekte/CaosDB/caosdb-pylib/src/caosdb/connection/connection.py", line 575, in _http_request
return self._retry_http_request(method=method, path=path,
File "/home/salexan/Projekte/CaosDB/caosdb-pylib/src/caosdb/connection/connection.py", line 615, in _retry_http_request
_handle_response_status(http_response)
File "/home/salexan/Projekte/CaosDB/caosdb-pylib/src/caosdb/connection/connection.py", line 416, in _handle_response_status
raise HTTPServerError(body=body)
caosdb.exceptions.HTTPServerError: An unexpected server error has occurred.
SRID = e7d63ee6-9cf2-4d5c-94f7-dcd971fa9b28
Please report this server error to and include the SRID into your report.
```
... although, on the server-side things seemed pretty clear:
```
linkahead | RESPONSE: HTTPS/1.1 - Internal Server Error (500) - The server encountered an unexpected condition which prevented it from fulfilling the request
linkahead | RESPONSE ENTITY:<?xml version="1.0" encoding="UTF-8"?>
linkahead | <?xml-stylesheet type="text/xsl" href="https://localhost:10443/webinterface/1646744029/webcaosdb.xsl" ?>
linkahead | <Response username="admin" realm="PAM" srid="e7d63ee6-9cf2-4d5c-94f7-dcd971fa9b28" timestamp="1646744821061" baseuri="https://localhost:10443">
linkahead | <noscript>
linkahead | <h1>Please enable JavaScript!</h1>
linkahead | </noscript>
linkahead | <UserInfo username="admin" realm="PAM">
linkahead | <Roles>
linkahead | <Role>administration</Role>
linkahead | </Roles>
linkahead | </UserInfo>
linkahead | <Error code="0" description="An unexpected server error has occurred.">SRID = e7d63ee6-9cf2-4d5c-94f7-dcd971fa9b28
linkahead |
linkahead | Please report this server error to and include the SRID into your report.</Error>
linkahead | </Response>
linkahead |
linkahead | org.caosdb.server.database.exceptions.EntityDoesNotExistException: null
linkahead | at org.caosdb.server.database.backend.transaction.GetIDByName.execute(GetIDByName.java:69) ~[caosdb-server-0.8.0-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.caosdb.server.database.BackendTransaction.executeTransaction(BackendTransaction.java:152) ~[caosdb-server-0.8.0-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.caosdb.server.transaction.TransactionInterface.execute(TransactionInterface.java:49) ~[caosdb-server-0.8.0-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.caosdb.server.jobs.Job.execute(Job.java:91) ~[caosdb-server-0.8.0-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.caosdb.server.jobs.Job.retrieveValidIDByName(Job.java:293) ~[caosdb-server-0.8.0-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.caosdb.server.jobs.Job.resolve(Job.java:556) ~[caosdb-server-0.8.0-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.caosdb.server.jobs.core.Inheritance.run(Inheritance.java:144) ~[caosdb-server-0.8.0-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.caosdb.server.jobs.ScheduledJob.run(ScheduledJob.java:47) ~[caosdb-server-0.8.0-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.caosdb.server.jobs.Schedule.runJob(Schedule.java:83) ~[caosdb-server-0.8.0-SNAPSHOT-jar-with-dependencies.jar:?]
```
Obviously, that's an "entity does not exist error" which is not forwarded to the client correctly.Daniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/222Update of file when not setting "size" leads to an unknown server error2022-03-11T08:46:55ZAlexander SchlemmerUpdate of file when not setting "size" leads to an unknown server errorThe following reproducibly leads to an unknown server error:
The entity with id=174 is a File.
rt can be an arbitrary RecordType.
```python
f = db.File(id=174).retrieve()
f._size = None
f.add_parent(rt)
f.update()
```
The error does n...The following reproducibly leads to an unknown server error:
The entity with id=174 is a File.
rt can be an arbitrary RecordType.
```python
f = db.File(id=174).retrieve()
f._size = None
f.add_parent(rt)
f.update()
```
The error does not occur when setting _checksum to None.Refactoring of File Storage APITimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/224Unexpected server error when retrieving an Entity with name="1"2022-03-18T10:40:44ZFlorian SpreckelsenUnexpected server error when retrieving an Entity with name="1"## Summary
When retrieving an entity with the name of a low integer number, e.g., "1", "2", an unexpected server error occurs.
## Expected Behavior
The retrieve should return an entity if one exists, and throw an error otherwise.
## ...## Summary
When retrieving an entity with the name of a low integer number, e.g., "1", "2", an unexpected server error occurs.
## Expected Behavior
The retrieve should return an entity if one exists, and throw an error otherwise.
## Actual Behavior
An unexpected Server Error
## Steps to Reproduce the Problem
With the Python client, simply do
```python
import caosdb as db
db.Record(name="1").retrieve() # or db.RecordType or db.Property or db.Entity
```
which will result in the following error
```
HTTPServerError: An unexpected server error has occurred.
SRID = 3b427e0e-5ec9-4c24-bdd8-7ab197fbf556
Please report this server error to and include the SRID into your report.
```
In the server logs, we see a `NoSuchRoleException`
```
linkahead | org.caosdb.server.entity.NoSuchRoleException: No such role 'ROLE'.
linkahead | at org.caosdb.server.entity.Role.parse(Role.java:62)
linkahead | at org.caosdb.server.entity.Entity.setRole(Entity.java:348)
linkahead | at org.caosdb.server.entity.Entity.parseSparseEntity(Entity.java:975)
linkahead | at org.caosdb.server.database.DatabaseUtils.parseFromSparseEntities(DatabaseUtils.java:140)
linkahead | at org.caosdb.server.database.backend.transaction.RetrieveSparseEntity.process(RetrieveSparseEntity.java:78)
linkahead | at org.caosdb.server.database.backend.transaction.RetrieveSparseEntity.process(RetrieveSparseEntity.java:38)
linkahead | at org.caosdb.server.database.CacheableBackendTransaction.execute(CacheableBackendTransaction.java:47)
linkahead | at org.caosdb.server.database.BackendTransaction.execute(BackendTransaction.java:239)
linkahead | at org.caosdb.server.database.backend.transaction.RetrieveFullEntityTransaction.retrieveFullEntity(RetrieveFullEntityTransaction.java:107)
linkahead | at org.caosdb.server.database.backend.transaction.RetrieveFullEntityTransaction.retrieveFullEntitiesInContainer(RetrieveFullEntityTransaction.java:87)
linkahead | at org.caosdb.server.database.backend.transaction.RetrieveFullEntityTransaction.execute(RetrieveFullEntityTransaction.java:76)
linkahead | at org.caosdb.server.database.BackendTransaction.executeTransaction(BackendTransaction.java:152)
linkahead | at org.caosdb.server.transaction.TransactionInterface.execute(TransactionInterface.java:49)
linkahead | at org.caosdb.server.transaction.Retrieve.retrieveFullEntities(Retrieve.java:145)
linkahead | at org.caosdb.server.transaction.Retrieve.transaction(Retrieve.java:140)
linkahead | at org.caosdb.server.transaction.Transaction.execute(Transaction.java:197)
linkahead | at org.caosdb.server.resource.transaction.RetrieveEntityResource.httpGetInChildClass(RetrieveEntityResource.java:86)
linkahead | at org.caosdb.server.resource.AbstractCaosDBServerResource.httpGet(AbstractCaosDBServerResource.java:239)
linkahead | at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
linkahead | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
linkahead | at java.base/java.lang.reflect.Method.invoke(Method.java:566)
linkahead | at org.restlet.resource.ServerResource.doHandle(ServerResource.java:511)
linkahead | at org.restlet.resource.ServerResource.get(ServerResource.java:723)
linkahead | at org.restlet.resource.ServerResource.doHandle(ServerResource.java:603)
linkahead | at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:662)
linkahead | at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348)
linkahead | at org.restlet.resource.ServerResource.handle(ServerResource.java:1020)
linkahead | at org.restlet.resource.Finder.handle(Finder.java:236)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Router.doHandle(Router.java:422)
linkahead | at org.restlet.routing.Router.handle(Router.java:641)
linkahead | at org.caosdb.server.CaosDBServer$1.handle(CaosDBServer.java:560)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Router.doHandle(Router.java:422)
linkahead | at org.restlet.routing.Router.handle(Router.java:641)
linkahead | at org.caosdb.server.CaosDBServer$2.handle(CaosDBServer.java:578)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202)
linkahead | at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:77)
linkahead | at org.restlet.Application.handle(Application.java:385)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Router.doHandle(Router.java:422)
linkahead | at org.restlet.routing.Router.handle(Router.java:641)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Router.doHandle(Router.java:422)
linkahead | at org.restlet.routing.Router.handle(Router.java:641)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150)
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197)
linkahead | at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202)
linkahead | at org.restlet.Component.handle(Component.java:408)
linkahead | at org.caosdb.server.CaosDBComponent.handle(CaosDBServer.java:894)
linkahead | at org.restlet.Server.handle(Server.java:507)
linkahead | at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63)
linkahead | at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:143)
linkahead | at org.restlet.ext.jetty.JettyServerHelper$WrappedServer.handle(JettyServerHelper.java:237)
linkahead | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
linkahead | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
linkahead | at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
linkahead | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
linkahead | at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:291)
linkahead | at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:151)
linkahead | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
linkahead | at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
linkahead | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
linkahead | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
linkahead | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
linkahead | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
linkahead | at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
linkahead | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)
linkahead | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)
linkahead | at java.base/java.lang.Thread.run(Thread.java:829)
linkahead | UNKNOWN ERROR
```
## Specifications
- Version:
- Server: dev
- PyLib: dev
- Platform: anyTimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.comhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/231Add capabilities for sensor data2022-04-27T07:18:57ZDaniel HornungAdd capabilities for sensor data## Summary
CaosDB should be able to handle sensor data / time series data with high performance.
This included
- data input
- outputting data
- querying data
- querying for bulk properties
## Specifications
- TBD
## Ideas
- Use a...## Summary
CaosDB should be able to handle sensor data / time series data with high performance.
This included
- data input
- outputting data
- querying data
- querying for bulk properties
## Specifications
- TBD
## Ideas
- Use a different backend for sensor data (possibly InfluxDB?)
- Use some special permission caching.
- Restrict type flexibility for sensor data.https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/235EXTERN: Searching for entities referencing files does not work2022-06-15T12:15:29ZFlorian SpreckelsenEXTERN: Searching for entities referencing files does not workhttps://gitlab.com/caosdb/caosdb-server/-/issues/133https://gitlab.com/caosdb/caosdb-server/-/issues/133Florian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/236/Info ressource should also provide the version string2022-05-09T13:35:11ZDaniel Hornung/Info ressource should also provide the version string## Summary
Currently it is hard or near impossible for users to obtain the server's version. This info should be provided, for example as content of the `/Info` ressource.
## Expected Behavior
Something along the lines of
```xml
<S...## Summary
Currently it is hard or near impossible for users to obtain the server's version. This info should be provided, for example as content of the `/Info` ressource.
## Expected Behavior
Something along the lines of
```xml
<Stats>
<counts records="95" properties="57" recordTypes="44" files="62" fssize="2MiB" tmpfiles="6" />
<dropOffBox path="/opt/caosdb/mnt/dropoffbox" />
<version string="0.8.0" /> <!-- This line is new -->
</Stats>
```
## Actual Behavior
```xml
...
<Stats>
<counts records="95" properties="57" recordTypes="44" files="62" fssize="2MiB" tmpfiles="6" />
<dropOffBox path="/opt/caosdb/mnt/dropoffbox" />
</Stats>
...
```
## Possible fixes
* See above.Daniel HornungDaniel Hornunghttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/237Review file-storage refactoring2024-03-18T00:05:06ZFlorian SpreckelsenReview file-storage refactoringRefactoring of File Storage APITimm Fitschent.fitschen@indiscale.comTimm Fitschent.fitschen@indiscale.com