caosdb-server issueshttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues2022-11-23T12:25:09Zhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/245The entities table contains residuals2022-11-23T12:25:09ZHenrik tom WördenThe entities table contains residuals## Summary
The `entities` table is not cleaned up properly.
## Expected Behavior
After inserting and deleting Entities the `entities` table does not contain residuals (like domain ids).
## Actual Behavior
It can occur that a Domain...## Summary
The `entities` table is not cleaned up properly.
## Expected Behavior
After inserting and deleting Entities the `entities` table does not contain residuals (like domain ids).
## Actual Behavior
It can occur that a Domain persists.
## Steps to Reproduce the Problem
1. Start a server with an empty database in debug mode
2. Perform the python integration tests in `tests/test_query.py`
3. Check the `entities` table using mysql
The initial state of the `entities` table:
```
MariaDB [caosdb]> select * from entities;
+----+---------------------------------------+------------+------+
| id | description | role | acl |
+----+---------------------------------------+------------+------+
| 0 | The default domain. | ROLE | 0 |
| 1 | The default recordtype. | ROLE | 0 |
| 2 | The default record. | ROLE | 0 |
| 3 | The default file. | ROLE | 0 |
| 4 | The default property. | ROLE | 0 |
| 7 | The default datatype. | ROLE | 0 |
| 8 | The QueryTemplate role. | ROLE | 0 |
| 11 | The default reference data type. | DATATYPE | 0 |
| 12 | The default integer data type. | DATATYPE | 0 |
| 13 | The default double data type. | DATATYPE | 0 |
| 14 | The default text data type. | DATATYPE | 0 |
| 15 | The default datetime data type. | DATATYPE | 0 |
| 16 | The default timespan data type. | DATATYPE | 0 |
| 17 | The default file reference data type. | DATATYPE | 0 |
| 18 | The defaulf boolean data type | DATATYPE | 0 |
| 20 | Name of an entity | PROPERTY | 0 |
| 21 | Unit of an entity. | PROPERTY | 0 |
| 24 | Description of an entity. | PROPERTY | 0 |
| 50 | The SQLite file data type. | DATATYPE | 0 |
| 99 | NULL | RECORDTYPE | 0 |
+----+---------------------------------------+------------+------+
20 rows in set (0.121 sec)
```
After the integrationtests, there is an additional row:
```
| 105 | NULL | DOMAIN | 0 |
```
## Specifications
I did this with server commit 5f9962cbca.
pyint: 6f6a570
## Possible fixes
*Do you have ideas how the issue can be resolved?*https://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/241Document the Entity API within docs.indiscale.com2022-06-29T13:53:16ZFlorian SpreckelsenDocument the Entity API within docs.indiscale.comThe openAPI-Bug, which made us link to gitlab instead of embedding the API documentation on docs.indiscale.com (see https://docs.indiscale.com/caosdb-server/specification/entity_api.html), has been [fixed](https://github.com/OpenAPITools...The openAPI-Bug, which made us link to gitlab instead of embedding the API documentation on docs.indiscale.com (see https://docs.indiscale.com/caosdb-server/specification/entity_api.html), has been [fixed](https://github.com/OpenAPITools/openapi-generator/issues/9923). We can now use `$ref`s inside of `$ref`s in the schema definition.
If we want to, we can now include the API specification in our own documentation. For this, we still need to investigate how to include the openapi-generator HTML output nicely within sphinx.Florian SpreckelsenFlorian Spreckelsenhttps://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/240Extern: Searching for integer properties fails if floating point values are g...2024-02-19T08:05:20ZDaniel HornungExtern: Searching for integer properties fails if floating point values are given---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/147
---
> Searching for `property < 1.5` yields no results if `property` is integer typed and has a value of 1.
- [x] Define desired behavior in server/backend -> don't touch...---
extern: https://gitlab.com/caosdb/caosdb-server/-/issues/147
---
> Searching for `property < 1.5` yields no results if `property` is integer typed and has a value of 1.
- [x] Define desired behavior in server/backend -> don't touch QL backend
- [ ] Querying does not depend on the parsing of numbers as integer or float type.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.comhttps://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/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/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/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/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/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/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/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/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/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/216SSS testing2023-06-02T14:04:15ZDaniel HornungSSS testing
Server side scripting should be testable. There is a branch and MR already: https://gitlab.com/caosdb/caosdb-server/-/merge_requests/58
- [ ] Server-side scripts can be tested.
Server side scripting should be testable. There is a branch and MR already: https://gitlab.com/caosdb/caosdb-server/-/merge_requests/58
- [ ] Server-side scripts can be tested.Timm 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/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/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/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" />