What do you have for project 333
in the database?
Table webhooks
has the following row:
- id:
333
- target_url:
https://n8n.example.com/webhook/a858e228-ea7f-4036-8eb7-e50559e6d871/webhook
- events:
["task.updated"]
- project_id:
7
- created_by_id:
3
- created:
2025-06-23 18:15:30.0
- updated:
2025-06-23 18:15:30.0
And project with the id 333
?
Thanks for looking into this. I don’t have a project 333
. The highest id in my projects
table is 54
. I thought you meant the webhook, which I assume is what the 333
in my log is referring to.
Please let me know if I’m mistaken or I can provide additional information!
ah, yes I meant the webhook. Seems like you paid better attention to it than I did!
I assume the project with the id 7
exists? And was created by a user who still exists?
Yes, project with id 7
exists as does user id 3
from created by.
However — I figured out my issue… I turned on UFW. Turning it off again unloaded tons of webhooks into n8n without issue. I’ll go figure out my firewall rules now…
I’m not sure about the error, Could not load project for webhook 333: User does not exist [user id: 0]
. I do still get the error, but webhooks for task updates are working as expected. FYI, I created a test environment with 0.24.6 and did NOT get the error in that release.
Projects are still not functioning as mentioned in the first post of this topic.
Ah, seems like this is a different error then. Which event is webhook 333
listening on?
Webhook 333
was listening for event task.updated
when the error was generated (but the webhook still worked).
When I use project events such as project.updated
or project.deleted
, I receive the following error and the webhook does not work:
ERROR ▶ 193 Error while handling message 32a3f362-3239-44f3-b3d0-bbef13fad5e7, topic_poisoned=project.updated, handler_poisoned=project.updated.webhook.listener, subscriber_poisoned=gochannel.GoChannel, reason_poisoned=User does not exist [user id: 0], payload={"project":{"id":1,"title":"Inbox","description":"","identifier":"","hex_color":"","parent_project_id":0,"owner":{"id":1,"name":"","username":"k4j8","created":"2025-06-23T17:41:04Z","updated":"2025-06-23T17:41:05Z"},"is_archived":false,"background_information":null,"background_blur_hash":"","is_favorite":false,"position":65536,"views":[{"id":1,"title":"List","project_id":1,"view_kind":"list","filter":{"s":"","sort_by":null,"order_by":null,"filter":"done = false","filter_include_nulls":false},"position":100,"bucket_configuration_mode":"none","bucket_configuration":[],"default_bucket_id":0,"done_bucket_id":0,"updated":"2025-06-23T12:41:04-05:00","created":"2025-06-23T12:41:04-05:00"},{"id":2,"title":"Gantt","project_id":1,"view_kind":"gantt","filter":{"s":"","sort_by":[],"order_by":[],"filter":"","filter_include_nulls":true},"position":200,"bucket_configuration_mode":"none","bucket_configuration":[],"default_bucket_id":0,"done_bucket_id":0,"updated":"2025-06-23T12:41:04-05:00","created":"2025-06-23T12:41:04-05:00"},{"id":3,"title":"Table","project_id":1,"view_kind":"table","filter":{"s":"","sort_by":[],"order_by":[],"filter":"","filter_include_nulls":true},"position":300,"bucket_configuration_mode":"none","bucket_configuration":[],"default_bucket_id":0,"done_bucket_id":0,"updated":"2025-06-23T12:41:05-05:00","created":"2025-06-23T12:41:05-05:00"},{"id":4,"title":"Kanban","project_id":1,"view_kind":"kanban","filter":{"s":"","sort_by":[],"order_by":[],"filter":"","filter_include_nulls":true},"position":400,"bucket_configuration_mode":"manual","bucket_configuration":[],"default_bucket_id":1,"done_bucket_id":3,"updated":"2025-06-23T12:41:05-05:00","created":"2025-06-23T12:41:05-05:00"}],"max_right":2,"created":"2025-06-23T17:41:04Z","updated":"2025-06-25T09:18:14.71188049-05:00"},"doer":{"id":1,"name":"","username":"k4j8","email":"k4j8@example.com","created":"0001-01-01T00:00:00Z","updated":"0001-01-01T00:00:00Z"}}
The webhook is created in the table properly with a valid created_by_id
.
Full debug log running unstable (adc1ecae) below.
Log
vikunja-1 | ORDER BY p.id, sh.user_id [2] - 5.790099ms
vikunja-1 | 2025-06-25T14:18:14.731440562Z: INFO ▶ [DATABASE] 166 [SQL] WITH RECURSIVE all_projects AS (
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | WHERE
vikunja-1 | p.id = ?
vikunja-1 | UNION ALL
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | INNER JOIN all_projects pc ON p.ID = pc.parent_project_id
vikunja-1 | )
vikunja-1 | SELECT DISTINCT * FROM all_projects [1] - 14.410022ms
vikunja-1 | 2025-06-25T14:18:14.732650636Z: INFO ▶ [DATABASE] 167 [SQL] SELECT `id`, `title`, `project_id`, `view_kind`, `filter`, `position`, `bucket_configuration_mode`, `bucket_configuration`, `default_bucket_id`, `done_bucket_id`, `updated`, `created` FROM `project_views` WHERE (project_id = ?) ORDER BY position asc [1] - 1.973193ms
vikunja-1 | 2025-06-25T14:18:14Z: WEB ▶ 10.0.0.143 POST 200 /api/v1/projects/1 32.61861ms - Mozilla/5.0 (X11; Linux x86_64; rv:139.0) Gecko/20100101 Firefox/139.0
vikunja-1 | 2025-06-25T14:18:14.735883639Z: INFO ▶ [DATABASE] 168 [SQL] SELECT `id`, `target_url`, `events`, `project_id`, `secret`, `created_by_id`, `created`, `updated` FROM `webhooks` WHERE `project_id` IN (?) [1] - 3.887344ms
vikunja-1 | 2025-06-25T14:18:14.737997718Z: INFO ▶ [DATABASE] 169 [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 976.036µs
vikunja-1 | 2025-06-25T14:18:14.795903137Z: INFO ▶ [DATABASE] 16a [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 1.417676ms
vikunja-1 | 2025-06-25T14:18:14Z: WEB ▶ 10.0.0.143 GET 200 /api/v1/user 2.215369ms - Mozilla/5.0 (X11; Linux x86_64; rv:139.0) Gecko/20100101 Firefox/139.0
vikunja-1 | 2025-06-25T14:18:14.861227458Z: INFO ▶ [DATABASE] 16b [SQL] WITH RECURSIVE all_projects AS (
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | WHERE
vikunja-1 | p.id = ?
vikunja-1 | UNION ALL
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | INNER JOIN all_projects pc ON p.ID = pc.parent_project_id
vikunja-1 | )
vikunja-1 | SELECT DISTINCT * FROM all_projects [1] - 10.775188ms
vikunja-1 | 2025-06-25T14:18:14.863407557Z: INFO ▶ [DATABASE] 16c [SQL] SELECT `id`, `target_url`, `events`, `project_id`, `secret`, `created_by_id`, `created`, `updated` FROM `webhooks` WHERE `project_id` IN (?) [1] - 1.531753ms
vikunja-1 | 2025-06-25T14:18:14.866550475Z: INFO ▶ [DATABASE] 16d [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 1.783122ms
vikunja-1 | 2025-06-25T14:18:14.884351654Z: INFO ▶ [DATABASE] 16f [SQL] SELECT `id`, `title`, `project_id`, `view_kind`, `filter`, `position`, `bucket_configuration_mode`, `bucket_configuration`, `default_bucket_id`, `done_bucket_id`, `updated`, `created` FROM `project_views` WHERE (id = ? AND project_id = ?) LIMIT 1 [1 1] - 1.235842ms
vikunja-1 | 2025-06-25T14:18:14.886157258Z: INFO ▶ [DATABASE] 170 [SQL] SELECT `id`, `title`, `description`, `identifier`, `hex_color`, `owner_id`, `parent_project_id`, `is_archived`, `background_file_id`, `background_blur_hash`, `position`, `created`, `updated` FROM `projects` WHERE id=? ORDER BY position LIMIT 1 [1] - 2.837513ms
vikunja-1 | 2025-06-25T14:18:14.886836387Z: INFO ▶ [DATABASE] 171 [SQL] SELECT `id`, `title`, `description`, `identifier`, `hex_color`, `owner_id`, `parent_project_id`, `is_archived`, `background_file_id`, `background_blur_hash`, `position`, `created`, `updated` FROM `projects` WHERE id=? ORDER BY position LIMIT 1 [1] - 1.609471ms
vikunja-1 | 2025-06-25T14:18:14.891038833Z: INFO ▶ [DATABASE] 172 [SQL]
vikunja-1 | WITH RECURSIVE
vikunja-1 | project_hierarchy AS (
vikunja-1 | -- Base case: Start with the specified projects
vikunja-1 | SELECT id,
vikunja-1 | parent_project_id,
vikunja-1 | 0 AS level,
vikunja-1 | id AS original_project_id
vikunja-1 | FROM projects
vikunja-1 | WHERE id IN (1)
vikunja-1 |
vikunja-1 | UNION ALL
vikunja-1 |
vikunja-1 | -- Recursive case: Traverse up the hierarchy
vikunja-1 | SELECT p.id,
vikunja-1 | p.parent_project_id,
vikunja-1 | ph.level + 1,
vikunja-1 | ph.original_project_id
vikunja-1 | FROM projects p
vikunja-1 | INNER JOIN project_hierarchy ph ON p.id = ph.parent_project_id),
vikunja-1 |
vikunja-1 | project_permissions AS (SELECT ph.id,
vikunja-1 | ph.original_project_id,
vikunja-1 | CASE
vikunja-1 | WHEN p.owner_id = ? THEN 2
vikunja-1 | WHEN COALESCE(ul.right, 0) > COALESCE(tl.right, 0) THEN ul.right
vikunja-1 | ELSE COALESCE(tl.right, 0)
vikunja-1 | END AS project_right,
vikunja-1 | CASE
vikunja-1 | WHEN p.owner_id = ? THEN 1 -- Direct project ownership
vikunja-1 | ELSE ph.level + 1 -- Derived from parent project
vikunja-1 | END AS priority
vikunja-1 | FROM project_hierarchy ph
vikunja-1 | LEFT JOIN projects p
vikunja-1 | ON ph.id = p.id
vikunja-1 | LEFT JOIN users_projects ul ON ul.project_id = ph.id AND ul.user_id = ?
vikunja-1 | LEFT JOIN team_projects tl ON tl.project_id = ph.id
vikunja-1 | LEFT JOIN team_members tm ON tm.team_id = tl.team_id AND tm.user_id = ?
vikunja-1 | WHERE p.owner_id = ? OR ul.user_id = ? OR tm.user_id = ?)
vikunja-1 |
vikunja-1 | SELECT ph.original_project_id AS id,
vikunja-1 | COALESCE(MAX(pp.project_right), -1) AS max_right
vikunja-1 | FROM project_hierarchy ph
vikunja-1 | LEFT JOIN (SELECT *,
vikunja-1 | ROW_NUMBER() OVER (PARTITION BY original_project_id ORDER BY priority) AS rn
vikunja-1 | FROM project_permissions) pp ON ph.id = pp.id AND pp.rn = 1
vikunja-1 | GROUP BY ph.original_project_id [1 1 1 1 1 1 1] - 4.317128ms
vikunja-1 | 2025-06-25T14:18:14.891671755Z: INFO ▶ [DATABASE] 173 [SQL]
vikunja-1 | WITH RECURSIVE
vikunja-1 | project_hierarchy AS (
vikunja-1 | -- Base case: Start with the specified projects
vikunja-1 | SELECT id,
vikunja-1 | parent_project_id,
vikunja-1 | 0 AS level,
vikunja-1 | id AS original_project_id
vikunja-1 | FROM projects
vikunja-1 | WHERE id IN (1)
vikunja-1 |
vikunja-1 | UNION ALL
vikunja-1 |
vikunja-1 | -- Recursive case: Traverse up the hierarchy
vikunja-1 | SELECT p.id,
vikunja-1 | p.parent_project_id,
vikunja-1 | ph.level + 1,
vikunja-1 | ph.original_project_id
vikunja-1 | FROM projects p
vikunja-1 | INNER JOIN project_hierarchy ph ON p.id = ph.parent_project_id),
vikunja-1 |
vikunja-1 | project_permissions AS (SELECT ph.id,
vikunja-1 | ph.original_project_id,
vikunja-1 | CASE
vikunja-1 | WHEN p.owner_id = ? THEN 2
vikunja-1 | WHEN COALESCE(ul.right, 0) > COALESCE(tl.right, 0) THEN ul.right
vikunja-1 | ELSE COALESCE(tl.right, 0)
vikunja-1 | END AS project_right,
vikunja-1 | CASE
vikunja-1 | WHEN p.owner_id = ? THEN 1 -- Direct project ownership
vikunja-1 | ELSE ph.level + 1 -- Derived from parent project
vikunja-1 | END AS priority
vikunja-1 | FROM project_hierarchy ph
vikunja-1 | LEFT JOIN projects p
vikunja-1 | ON ph.id = p.id
vikunja-1 | LEFT JOIN users_projects ul ON ul.project_id = ph.id AND ul.user_id = ?
vikunja-1 | LEFT JOIN team_projects tl ON tl.project_id = ph.id
vikunja-1 | LEFT JOIN team_members tm ON tm.team_id = tl.team_id AND tm.user_id = ?
vikunja-1 | WHERE p.owner_id = ? OR ul.user_id = ? OR tm.user_id = ?)
vikunja-1 |
vikunja-1 | SELECT ph.original_project_id AS id,
vikunja-1 | COALESCE(MAX(pp.project_right), -1) AS max_right
vikunja-1 | FROM project_hierarchy ph
vikunja-1 | LEFT JOIN (SELECT *,
vikunja-1 | ROW_NUMBER() OVER (PARTITION BY original_project_id ORDER BY priority) AS rn
vikunja-1 | FROM project_permissions) pp ON ph.id = pp.id AND pp.rn = 1
vikunja-1 | GROUP BY ph.original_project_id [1 1 1 1 1 1 1] - 4.468522ms
vikunja-1 | 2025-06-25T14:18:14.894033184Z: INFO ▶ [DATABASE] 174 [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 2.546622ms
vikunja-1 | 2025-06-25T14:18:14.897052874Z: INFO ▶ [DATABASE] 175 [SQL] SELECT `id`, `title`, `description`, `identifier`, `hex_color`, `owner_id`, `parent_project_id`, `is_archived`, `background_file_id`, `background_blur_hash`, `position`, `created`, `updated` FROM `projects` WHERE id=? ORDER BY position LIMIT 1 [1] - 1.325517ms
vikunja-1 | 2025-06-25T14:18:14.900909661Z: INFO ▶ [DATABASE] 176 [SQL] SELECT `entity_id`, `user_id`, `kind` FROM `favorites` WHERE (entity_id = ? AND user_id = ? AND kind = ?) LIMIT 1 [1 1 2] - 925.53µs
vikunja-1 | 2025-06-25T14:18:14.901750834Z: INFO ▶ [DATABASE] 177 [SQL] SELECT DISTINCT `tasks`.*, `task_positions`.`position` FROM `tasks` LEFT JOIN `task_positions` ON task_positions.task_id = tasks.id AND task_positions.project_view_id = ? LEFT JOIN `task_relations` ON tasks.id = task_relations.task_id and task_relations.relation_kind = 'parenttask' WHERE (project_id IN (?)) AND tasks.`done`=? AND task_relations.id IS NULL ORDER BY task_positions.`position` IS NULL, task_positions.`position` asc, task_positions.`position` IS NULL, task_positions.`position` asc, tasks.`id` IS NULL, tasks.`id` asc LIMIT 50 [1 1 false] - 9.173805ms
vikunja-1 | 2025-06-25T14:18:14.904001343Z: INFO ▶ [DATABASE] 178 [SQL] SELECT * FROM tasks WHERE id IN (WITH RECURSIVE sub_tasks AS (
vikunja-1 | SELECT task_id,
vikunja-1 | other_task_id,
vikunja-1 | relation_kind,
vikunja-1 | created_by_id,
vikunja-1 | created
vikunja-1 | FROM task_relations
vikunja-1 | WHERE 0=1
vikunja-1 | AND relation_kind = 'subtask'
vikunja-1 |
vikunja-1 | UNION ALL
vikunja-1 |
vikunja-1 | SELECT tr.task_id,
vikunja-1 | tr.other_task_id,
vikunja-1 | tr.relation_kind,
vikunja-1 | tr.created_by_id,
vikunja-1 | tr.created
vikunja-1 | FROM task_relations tr
vikunja-1 | INNER JOIN
vikunja-1 | sub_tasks st ON tr.task_id = st.other_task_id
vikunja-1 | WHERE tr.relation_kind = 'subtask')
vikunja-1 | SELECT other_task_id
vikunja-1 | FROM sub_tasks) [] - 1.087453ms
vikunja-1 | 2025-06-25T14:18:14.905418255Z: INFO ▶ [DATABASE] 179 [SQL]
vikunja-1 | WITH RECURSIVE project_hierarchy AS (
vikunja-1 | -- Base case: Start with the specified projects
vikunja-1 | SELECT
vikunja-1 | id,
vikunja-1 | parent_project_id,
vikunja-1 | 0 AS level,
vikunja-1 | id AS original_project_id
vikunja-1 | FROM projects
vikunja-1 | WHERE id IN (1)
vikunja-1 |
vikunja-1 | UNION ALL
vikunja-1 |
vikunja-1 | -- Recursive case: Get parent projects
vikunja-1 | SELECT
vikunja-1 | p.id,
vikunja-1 | p.parent_project_id,
vikunja-1 | ph.level + 1,
vikunja-1 | ph.original_project_id
vikunja-1 | FROM projects p
vikunja-1 | INNER JOIN project_hierarchy ph ON p.id = ph.parent_project_id
vikunja-1 | ),
vikunja-1 |
vikunja-1 | subscription_hierarchy AS (
vikunja-1 | -- Check for project subscriptions (including parent projects)
vikunja-1 | SELECT
vikunja-1 | s.id,
vikunja-1 | s.entity_type,
vikunja-1 | s.entity_id,
vikunja-1 | s.created,
vikunja-1 | s.user_id,
vikunja-1 | CASE
vikunja-1 | WHEN s.entity_id = ph.original_project_id THEN 1 -- Direct project match
vikunja-1 | ELSE ph.level + 1 -- Parent projects
vikunja-1 | END AS priority,
vikunja-1 | ph.original_project_id
vikunja-1 | FROM subscriptions s
vikunja-1 | INNER JOIN project_hierarchy ph ON s.entity_id = ph.id
vikunja-1 | WHERE s.entity_type = ? AND s.user_id = 1
vikunja-1 | )
vikunja-1 |
vikunja-1 | SELECT
vikunja-1 | p.id AS original_entity_id,
vikunja-1 | sh.id AS subscription_id,
vikunja-1 | sh.entity_type,
vikunja-1 | sh.entity_id,
vikunja-1 | sh.created,
vikunja-1 | sh.user_id,
vikunja-1 | CASE
vikunja-1 | WHEN sh.priority = 1 THEN 'Direct Project'
vikunja-1 | ELSE 'Parent Project'
vikunja-1 | END
vikunja-1 | AS subscription_level,
vikunja-1 | users.*
vikunja-1 | FROM projects p
vikunja-1 | LEFT JOIN (
vikunja-1 | SELECT *,
vikunja-1 | ROW_NUMBER() OVER (PARTITION BY original_project_id, user_id ORDER BY priority) AS rn
vikunja-1 | FROM subscription_hierarchy
vikunja-1 | ) sh ON p.id = sh.original_project_id AND sh.rn = 1
vikunja-1 | LEFT JOIN users ON sh.user_id = users.id
vikunja-1 | WHERE p.id IN (1)
vikunja-1 | ORDER BY p.id, sh.user_id [2] - 4.337465ms
vikunja-1 | 2025-06-25T14:18:14.906219001Z: INFO ▶ [DATABASE] 17a [SQL] SELECT count(DISTINCT tasks.id) FROM `tasks` LEFT JOIN `task_relations` ON tasks.id = task_relations.task_id and task_relations.relation_kind = 'parenttask' WHERE (project_id IN (?)) AND tasks.`done`=? AND task_relations.id IS NULL [1 false] - 1.964097ms
vikunja-1 | 2025-06-25T14:18:14Z: WEB ▶ 10.0.0.143 GET 200 /api/v1/projects/1/views/1/tasks?sort_by[]=position&order_by[]=asc&filter=&filter_include_nulls=false&filter_timezone=America%2FChicago&s=&expand=subtasks&page=1 23.678446ms - Mozilla/5.0 (X11; Linux x86_64; rv:139.0) Gecko/20100101 Firefox/139.0
vikunja-1 | 2025-06-25T14:18:14.907847428Z: INFO ▶ [DATABASE] 17b [SQL] SELECT `id`, `title`, `project_id`, `view_kind`, `filter`, `position`, `bucket_configuration_mode`, `bucket_configuration`, `default_bucket_id`, `done_bucket_id`, `updated`, `created` FROM `project_views` WHERE (project_id = ?) ORDER BY position asc [1] - 1.693026ms
vikunja-1 | 2025-06-25T14:18:14Z: WEB ▶ 10.0.0.143 GET 200 /api/v1/projects/1 25.905742ms - Mozilla/5.0 (X11; Linux x86_64; rv:139.0) Gecko/20100101 Firefox/139.0
vikunja-1 | 2025-06-25T14:18:15.095752354Z: INFO ▶ [DATABASE] 17c [SQL] WITH RECURSIVE all_projects AS (
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | WHERE
vikunja-1 | p.id = ?
vikunja-1 | UNION ALL
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | INNER JOIN all_projects pc ON p.ID = pc.parent_project_id
vikunja-1 | )
vikunja-1 | SELECT DISTINCT * FROM all_projects [1] - 10.674081ms
vikunja-1 | 2025-06-25T14:18:15.097662123Z: INFO ▶ [DATABASE] 17d [SQL] SELECT `id`, `target_url`, `events`, `project_id`, `secret`, `created_by_id`, `created`, `updated` FROM `webhooks` WHERE `project_id` IN (?) [1] - 1.45428ms
vikunja-1 | 2025-06-25T14:18:15.099782985Z: INFO ▶ [DATABASE] 17e [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 1.600244ms
vikunja-1 | 2025-06-25T14:18:15.735784071Z: INFO ▶ [DATABASE] 180 [SQL] WITH RECURSIVE all_projects AS (
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | WHERE
vikunja-1 | p.id = ?
vikunja-1 | UNION ALL
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | INNER JOIN all_projects pc ON p.ID = pc.parent_project_id
vikunja-1 | )
vikunja-1 | SELECT DISTINCT * FROM all_projects [1] - 7.986483ms
vikunja-1 | 2025-06-25T14:18:15.737306885Z: INFO ▶ [DATABASE] 181 [SQL] SELECT `id`, `target_url`, `events`, `project_id`, `secret`, `created_by_id`, `created`, `updated` FROM `webhooks` WHERE `project_id` IN (?) [1] - 1.218293ms
vikunja-1 | 2025-06-25T14:18:15.738694256Z: INFO ▶ [DATABASE] 182 [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 933.718µs
vikunja-1 | 2025-06-25T14:18:16.169422557Z: INFO ▶ [DATABASE] 184 [SQL] SELECT `id`, `notifiable_id`, `notification`, `name`, `subject_id`, `read_at`, `created` FROM `notifications` WHERE (notifiable_id = ?) ORDER BY id DESC LIMIT 50 [1] - 1.279924ms
vikunja-1 | 2025-06-25T14:18:16.171168338Z: INFO ▶ [DATABASE] 185 [SQL] SELECT count(*) FROM `notifications` WHERE (notifiable_id = ?) [1] - 1.418869ms
vikunja-1 | 2025-06-25T14:18:16Z: WEB ▶ 10.0.0.143 GET 200 /api/v1/notifications?page=1 3.618177ms - Mozilla/5.0 (X11; Linux x86_64; rv:139.0) Gecko/20100101 Firefox/139.0
vikunja-1 | 2025-06-25T14:18:16.496827216Z: INFO ▶ [DATABASE] 186 [SQL] WITH RECURSIVE all_projects AS (
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | WHERE
vikunja-1 | p.id = ?
vikunja-1 | UNION ALL
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | INNER JOIN all_projects pc ON p.ID = pc.parent_project_id
vikunja-1 | )
vikunja-1 | SELECT DISTINCT * FROM all_projects [1] - 10.723372ms
vikunja-1 | 2025-06-25T14:18:16.499132283Z: INFO ▶ [DATABASE] 187 [SQL] SELECT `id`, `target_url`, `events`, `project_id`, `secret`, `created_by_id`, `created`, `updated` FROM `webhooks` WHERE `project_id` IN (?) [1] - 1.827287ms
vikunja-1 | 2025-06-25T14:18:16.501391694Z: INFO ▶ [DATABASE] 188 [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 1.557541ms
vikunja-1 | 2025-06-25T14:18:19.648893878Z: INFO ▶ [DATABASE] 18a [SQL] WITH RECURSIVE all_projects AS (
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | WHERE
vikunja-1 | p.id = ?
vikunja-1 | UNION ALL
vikunja-1 | SELECT
vikunja-1 | p.*
vikunja-1 | FROM
vikunja-1 | projects p
vikunja-1 | INNER JOIN all_projects pc ON p.ID = pc.parent_project_id
vikunja-1 | )
vikunja-1 | SELECT DISTINCT * FROM all_projects [1] - 9.620935ms
vikunja-1 | 2025-06-25T14:18:19.651377721Z: INFO ▶ [DATABASE] 18b [SQL] SELECT `id`, `target_url`, `events`, `project_id`, `secret`, `created_by_id`, `created`, `updated` FROM `webhooks` WHERE `project_id` IN (?) [1] - 2.041631ms
vikunja-1 | 2025-06-25T14:18:19.653338269Z: INFO ▶ [DATABASE] 18c [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 1.411221ms
vikunja-1 | 2025-06-25T14:18:19Z: ERROR ▶ 193 Error while handling message 32a3f362-3239-44f3-b3d0-bbef13fad5e7, topic_poisoned=project.updated, handler_poisoned=project.updated.webhook.listener, subscriber_poisoned=gochannel.GoChannel, reason_poisoned=User does not exist [user id: 0], payload={"project":{"id":1,"title":"Inbox","description":"","identifier":"","hex_color":"","parent_project_id":0,"owner":{"id":1,"name":"","username":"k4j8","created":"2025-06-23T17:41:04Z","updated":"2025-06-23T17:41:05Z"},"is_archived":false,"background_information":null,"background_blur_hash":"","is_favorite":false,"position":65536,"views":[{"id":1,"title":"List","project_id":1,"view_kind":"list","filter":{"s":"","sort_by":null,"order_by":null,"filter":"done = false","filter_include_nulls":false},"position":100,"bucket_configuration_mode":"none","bucket_configuration":[],"default_bucket_id":0,"done_bucket_id":0,"updated":"2025-06-23T12:41:04-05:00","created":"2025-06-23T12:41:04-05:00"},{"id":2,"title":"Gantt","project_id":1,"view_kind":"gantt","filter":{"s":"","sort_by":[],"order_by":[],"filter":"","filter_include_nulls":true},"position":200,"bucket_configuration_mode":"none","bucket_configuration":[],"default_bucket_id":0,"done_bucket_id":0,"updated":"2025-06-23T12:41:04-05:00","created":"2025-06-23T12:41:04-05:00"},{"id":3,"title":"Table","project_id":1,"view_kind":"table","filter":{"s":"","sort_by":[],"order_by":[],"filter":"","filter_include_nulls":true},"position":300,"bucket_configuration_mode":"none","bucket_configuration":[],"default_bucket_id":0,"done_bucket_id":0,"updated":"2025-06-23T12:41:05-05:00","created":"2025-06-23T12:41:05-05:00"},{"id":4,"title":"Kanban","project_id":1,"view_kind":"kanban","filter":{"s":"","sort_by":[],"order_by":[],"filter":"","filter_include_nulls":true},"position":400,"bucket_configuration_mode":"manual","bucket_configuration":[],"default_bucket_id":1,"done_bucket_id":3,"updated":"2025-06-23T12:41:05-05:00","created":"2025-06-23T12:41:05-05:00"}],"max_right":2,"created":"2025-06-23T17:41:04Z","updated":"2025-06-25T09:18:14.71188049-05:00"},"doer":{"id":1,"name":"","username":"k4j8","email":"k4j8@example.com","created":"0001-01-01T00:00:00Z","updated":"0001-01-01T00:00:00Z"}}
I also tested this on 0.24.6. The project-based webhooks did not work there either and the debug log was similar.
I’ve implemented a potential fix for this in fix: guard invalid user lookups by kolaente · Pull Request #1034 · go-vikunja/vikunja · GitHub, please check with the next unstable build (should be ready for deployment in ~30min, also on try).
It works! Thank you for implementing the fix!
With all debug logs enabled on version/commit 59130766:
No errors when using webhook for tasks.
No errors when using webhook for projects.
Project-based webhooks work.
Hi. Is the next stable release not yet planned?