go-vikunja / vikunja

Mirror of vikunja from https://code.vikunja.io/api
GNU Affero General Public License v3.0
887 stars 63 forks source link

New Todos are silently discarded. Field `positions.view_178` must be an int64. #317

Open iron-apeiron opened 3 weeks ago

iron-apeiron commented 3 weeks ago

Description

After creating some tasks and reloading the Page I noticed that half of my tasks are gone. I inspected the log and saw that at some point every task creation failed with a 400.

This is persistent across restarting the Docker Container and only affects this one project making it defacto readonly.

Here is the censored log entry (censored info is replaced by #####)
2024-08-22T11:11:29.481375575Z: ERROR ▶ events/func1 333c6 Error while handling message 93003185-437c-4dfa-ab82-2ee785421cf7, reason_poisoned=status: 400 response: {"message":"Fieldpositions.view_178must be an int64."}, topic_poisoned=task.created, handler_poisoned=task.created.typesense.task.add, subscriber_poisoned=gochannel.GoChannel, payload={"task":{"id":166,"title":"#####","description":"","done":false,"done_at":"0001-01-01T00:00:00Z","due_date":"0001-01-01T00:00:00Z","reminders":null,"project_id":38,"repeat_after":0,"repeat_mode":0,"priority":0,"start_date":"0001-01-01T00:00:00Z","end_date":"0001-01-01T00:00:00Z","assignees":[],"labels":[],"hex_color":"","percent_done":0,"identifier":"#36","index":36,"related_tasks":{},"attachments":[],"cover_image_attachment_id":0,"is_favorite":false,"created":"2024-08-22T11:11:27.631475944Z","updated":"2024-08-22T11:11:27.631478549Z","bucket_id":0,"position":0.5,"reactions":{},"created_by":{"id":2,"name":"#####","username":"#####","created":"2024-07-27T06:05:45Z","updated":"2024-07-27T07:09:23Z"}},"doer":{"id":2,"name":"#####","username":"#####","created":"2024-07-27T06:05:45Z","updated":"2024-07-27T07:09:23Z"}}

Vikunja Version

0.24.1

Browser and version

Version 126.0.6478.182 (Offizieller Build) (64-Bit)

Can you reproduce the bug on the Vikunja demo site?

No

Screenshots

No response

kolaente commented 2 weeks ago

Is this still a problem with 0.24.2?

iron-apeiron commented 2 weeks ago

Update to 0.24.2 and the Error is still present.

2024-08-24T23:46:28.561202192Z: ERROR ▶ events/func1 218 Error while handling message 8677a1e3-749f-48bf-9b6b-d24aa7918050, reason_poisoned=status: 400 response: {"message":"Fieldpositions.view_178must be an int64."},

kolaente commented 2 weeks ago

Are you using Typesense?

iron-apeiron commented 2 weeks ago

Yes iam using this Image: typesense/typesense:26.0

kolaente commented 2 weeks ago

Can you check which value is saved in Typesense for the positions.view_178 field?

iron-apeiron commented 2 weeks ago

Ok i had a look at this. New Documents from this project seem not to be stored in typesense. I had a look at the last tasks i create before the bug occured and there seems to be a pattern:

Descending Creation Order:

{ "assignees": [], "buckets": [ 48 ], "comments": [], "cover_image_attachment_id": 0, "created": 1724324957, "created_by_id": 0, "description": "<p></p>", "done": false, "hex_color": "", "id": "165", "identifier": "#35", "index": 35, "percent_done": 0, "positions": { "view_177": 1, "view_178": 1, "view_179": 1, "view_180": 1 }, "priority": 0, "project_id": 38, "repeat_after": 0, "repeat_mode": 0, "title": "#####", "uid": "", "updated": 1724324967 } { "assignees": [], "buckets": [ 48 ], "comments": [], "cover_image_attachment_id": 0, "created": 1724324802, "created_by_id": 0, "description": "<p></p>", "done": false, "hex_color": "", "id": "164", "identifier": "#34", "index": 34, "percent_done": 0, "positions": { "view_177": 2, "view_178": 2, "view_179": 2, "view_180": 2 }, "priority": 0, "project_id": 38, "repeat_after": 0, "repeat_mode": 0, "title": "######", "uid": "", "updated": 1724324820 } { "assignees": [], "attachments": [], "buckets": [ 48 ], "comments": [], "cover_image_attachment_id": 0, "created": 1724324742, "created_by_id": 0, "description": "", "done": false, "hex_color": "", "id": "163", "identifier": "#33", "index": 33, "labels": [], "percent_done": 0, "positions": { "view_177": 4, "view_178": 4, "view_179": 4, "view_180": 4 }, "priority": 0, "project_id": 38, "reminders": null, "repeat_after": 0, "repeat_mode": 0, "title": "#####", "uid": "", "updated": 1724324742 } { "assignees": [], "attachments": [], "buckets": [ 48 ], "comments": [], "cover_image_attachment_id": 0, "created": 1724324730, "created_by_id": 0, "description": "", "done": false, "hex_color": "", "id": "162", "identifier": "#32", "index": 32, "labels": [], "percent_done": 0, "positions": { "view_177": 8, "view_178": 8, "view_179": 8, "view_180": 8 }, "priority": 0, "project_id": 38, "reminders": null, "repeat_after": 0, "repeat_mode": 0, "title": "######", "uid": "", "updated": 1724324730 }

Notice that from Task 162 to 165 which are all part of the affected project ("project_id": 38) the field view_178 and the other positions fields are essentially halving until now where new task will be created with position 0.5.

Seeing this i just tried to create a Task in "Inbox" and then move it into the project 38 and this works!

{ "assignees": [], "buckets": [ 48 ], "comments": [], "cover_image_attachment_id": 0, "created": 1724596643, "created_by_id": 0, "description": "<p></p>", "done": false, "hex_color": "", "id": "183", "identifier": "#51", "index": 51, "percent_done": 0, "positions": { "view_180": 3342336, "view_5": 32768, "view_6": 32768, "view_7": 32768, "view_8": 32768 }, "priority": 0, "project_id": 38, "repeat_after": 0, "repeat_mode": 0, "title": "test", "uid": "", "updated": 1724596654 }