From 8fb01ee065772debfba99be52a7d0530ccf44426 Mon Sep 17 00:00:00 2001 From: Oskar Hahn Date: Fri, 7 Nov 2025 16:50:21 +0100 Subject: [PATCH 01/13] Use rel-db --- .gitignore | 2 ++ internal/autoupdate/flow.go | 4 ++-- internal/keysbuilder/keysbuilder_test.go | 9 +++++---- main.go | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index dce102b8..e7e409ed 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ cert workspace.code-workspace __debug_bin debug.test +go.work +go.work.sum diff --git a/internal/autoupdate/flow.go b/internal/autoupdate/flow.go index 01188fd4..a852adb4 100644 --- a/internal/autoupdate/flow.go +++ b/internal/autoupdate/flow.go @@ -32,8 +32,8 @@ type Flow struct { } // NewFlow initializes a flow for the autoupdate service. -func NewFlow(lookup environment.Environmenter, messageBus flow.Updater, skipVoteService bool) (*Flow, func(context.Context, func(error)), error) { - postgres, err := datastore.NewFlowPostgres(lookup, messageBus) +func NewFlow(lookup environment.Environmenter, skipVoteService bool) (*Flow, func(context.Context, func(error)), error) { + postgres, err := datastore.NewFlowPostgres(lookup) if err != nil { return nil, nil, fmt.Errorf("init postgres: %w", err) } diff --git a/internal/keysbuilder/keysbuilder_test.go b/internal/keysbuilder/keysbuilder_test.go index e963e691..27957518 100644 --- a/internal/keysbuilder/keysbuilder_test.go +++ b/internal/keysbuilder/keysbuilder_test.go @@ -11,6 +11,7 @@ import ( "github.com/OpenSlides/openslides-autoupdate-service/internal/keysbuilder" "github.com/OpenSlides/openslides-go/datastore/dskey" "github.com/OpenSlides/openslides-go/datastore/dsmock" + "github.com/OpenSlides/openslides-go/datastore/flow" ) func TestKeys(t *testing.T) { @@ -648,7 +649,7 @@ func TestConcurency(t *testing.T) { meeting_user/1/personal_note_ids: [1,2] meeting_user/2/personal_note_ids: [1,2] `), - dsmock.NewCounter, + func(g flow.Getter) flow.Getter { return dsmock.NewCounter(g) }, ) counter := ds.Middlewares()[0].(*dsmock.Counter) @@ -715,7 +716,7 @@ func TestManyRequests(t *testing.T) { user/1/organization_id: 1 user/2/organization_id: 1 `), - dsmock.NewCounter, + func(g flow.Getter) flow.Getter { return dsmock.NewCounter(g) }, ) counter := ds.Middlewares()[0].(*dsmock.Counter) @@ -794,7 +795,7 @@ func TestError(t *testing.T) { ds := dsmock.NewFlow( nil, dsmock.NewWait(waiter), - dsmock.NewCounter, + func(g flow.Getter) flow.Getter { return dsmock.NewCounter(g) }, ) counter := ds.Middlewares()[1].(*dsmock.Counter) waiter <- fmt.Errorf("some error") @@ -830,7 +831,7 @@ func TestRequestCount(t *testing.T) { ctx := context.Background() ds := dsmock.NewFlow( nil, - dsmock.NewCounter, + func(g flow.Getter) flow.Getter { return dsmock.NewCounter(g) }, ) counter := ds.Middlewares()[0].(*dsmock.Counter) json := `{ diff --git a/main.go b/main.go index 05e14b67..5304ab52 100644 --- a/main.go +++ b/main.go @@ -138,7 +138,7 @@ func initService(lookup environment.Environmenter) (func(context.Context) error, publicAccessOnly, _ := strconv.ParseBool(envPublicAccessOnly.Value(lookup)) // Autoupdate data flow. - flow, flowBackground, err := autoupdate.NewFlow(lookup, messageBus, publicAccessOnly) + flow, flowBackground, err := autoupdate.NewFlow(lookup, publicAccessOnly) if err != nil { return nil, fmt.Errorf("init autoupdate data flow: %w", err) } From 7cea8ee1ce5fba393425853c1dcabd6fe933cdc8 Mon Sep 17 00:00:00 2001 From: Oskar Hahn Date: Thu, 20 Nov 2025 12:18:04 +0100 Subject: [PATCH 02/13] Update os-go --- go.mod | 2 +- go.sum | 34 ++++++++++++++++------------------ 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index e8fbb848..6d743899 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/OpenSlides/openslides-autoupdate-service go 1.25.0 require ( - github.com/OpenSlides/openslides-go v0.0.0-20251120110525-cefa861c30d1 + github.com/OpenSlides/openslides-go v0.0.0-20251120110947-3889681b1200 github.com/alecthomas/kong v1.13.0 github.com/klauspost/compress v1.18.1 github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1 diff --git a/go.sum b/go.sum index 6f87bfcd..85b90ac0 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,13 @@ -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OpenSlides/openslides-go v0.0.0-20251120110525-cefa861c30d1 h1:hRUfj6xDayAouAk6uWn9pKFjAknFcc1iBO1v+idxR8A= -github.com/OpenSlides/openslides-go v0.0.0-20251120110525-cefa861c30d1/go.mod h1:O6m+Yb4v77z0Ey73H46msYFa/VCRVT4uLrrFsNJZ5jQ= +github.com/OpenSlides/openslides-go v0.0.0-20251120110947-3889681b1200 h1:b971V7AkH5sF66imS6oHYutt94/v4zJDBCE43CHyvTo= +github.com/OpenSlides/openslides-go v0.0.0-20251120110947-3889681b1200/go.mod h1:Cn/9+pAiazXhqPjaf10xnjREZ/njcHFO76wZVHxlBEA= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSrA= @@ -21,20 +21,18 @@ github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtU github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/cli v28.0.4+incompatible h1:pBJSJeNd9QeIWPjRcV91RVJihd/TXB77q1ef64XEu4A= -github.com/docker/cli v28.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/docker v28.0.4+incompatible h1:JNNkBctYKurkw6FrHfKqY0nKIDf5nrbxjVBtS+cdcok= -github.com/docker/docker v28.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= -github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/cli v28.4.0+incompatible h1:RBcf3Kjw2pMtwui5V0DIMdyeab8glEw5QY0UUU4C9kY= +github.com/docker/cli v28.4.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/docker v28.4.0+incompatible h1:KVC7bz5zJY/4AZe/78BIvCnPsLaC9T/zh72xnlrTTOk= +github.com/docker/docker v28.4.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= +github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/gomodule/redigo v1.9.3 h1:dNPSXeXv6HCq2jdyWfjgmhBdqnR6PRO3m/G05nvpPC8= @@ -61,8 +59,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= -github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= +github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1 h1:dOYG7LS/WK00RWZc8XGgcUTlTxpp3mKhdR2Q9z9HbXM= @@ -71,8 +69,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/opencontainers/runc v1.2.6 h1:P7Hqg40bsMvQGCS4S7DJYhUZOISMLJOB2iGX5COWiPk= -github.com/opencontainers/runc v1.2.6/go.mod h1:dOQeFo29xZKBNeRBI0B19mJtfHv68YgCTh1X+YphA+4= +github.com/opencontainers/runc v1.3.1 h1:c/yY0oh2wK7tzDuD56REnSxyU8ubh8hoAIOLGLrm4SM= +github.com/opencontainers/runc v1.3.1/go.mod h1:9wbWt42gV+KRxKRVVugNP6D5+PQciRbenB4fLVsqGPs= github.com/ory/dockertest/v3 v3.12.0 h1:3oV9d0sDzlSQfHtIaB5k6ghUCVMVLpAY8hwrqoCyRCw= github.com/ory/dockertest/v3 v3.12.0/go.mod h1:aKNDTva3cp8dwOWwb9cWuX84aH5akkxXRvO7KCwWVjE= github.com/ostcar/topic v0.6.0 h1:wAQ6ugkU/a4w3l/c4aH/xJriU833K8weEornVszpsHo= From 77394141b6e0a4adf2f13d6009880f98eb7f79b6 Mon Sep 17 00:00:00 2001 From: rrenkert Date: Wed, 10 Dec 2025 16:36:17 +0100 Subject: [PATCH 03/13] Update openslides-go --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 970972b5..7e0d7ac2 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/OpenSlides/openslides-autoupdate-service go 1.25.0 require ( - github.com/OpenSlides/openslides-go v0.0.0-20251210093006-6e9ab4021afa + github.com/OpenSlides/openslides-go v0.0.0-20251210153241-0ed1c585ad96 github.com/alecthomas/kong v1.13.0 github.com/klauspost/compress v1.18.1 github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1 diff --git a/go.sum b/go.sum index 9e40139a..07670afa 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OpenSlides/openslides-go v0.0.0-20251210093006-6e9ab4021afa h1:bN/QE/J4V30Q3BqMcN+aKly0Gqk3YP5nQieStIKj3as= -github.com/OpenSlides/openslides-go v0.0.0-20251210093006-6e9ab4021afa/go.mod h1:Cn/9+pAiazXhqPjaf10xnjREZ/njcHFO76wZVHxlBEA= +github.com/OpenSlides/openslides-go v0.0.0-20251210153241-0ed1c585ad96 h1:d+bOibIfTbB4XLd+FaPNpQVgczqNtqiPTsxCZjNwPUw= +github.com/OpenSlides/openslides-go v0.0.0-20251210153241-0ed1c585ad96/go.mod h1:Cn/9+pAiazXhqPjaf10xnjREZ/njcHFO76wZVHxlBEA= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSrA= From 64699aefabba42d2d287017ac711580f5164c1bc Mon Sep 17 00:00:00 2001 From: Oskar Hahn Date: Fri, 16 Jan 2026 11:12:48 +0100 Subject: [PATCH 04/13] Update os-go --- go.mod | 11 +++++------ go.sum | 22 ++++++++++------------ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index bb70bf11..ce892274 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/OpenSlides/openslides-autoupdate-service go 1.25.0 require ( - github.com/OpenSlides/openslides-go v0.0.0-20251217092432-92998726880c + github.com/OpenSlides/openslides-go v0.0.0-20260116100629-753b5399afd5 github.com/alecthomas/kong v1.13.0 github.com/klauspost/compress v1.18.2 github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1 @@ -14,19 +14,18 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/goccy/go-yaml v1.19.0 // indirect + github.com/goccy/go-yaml v1.19.2 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/gomodule/redigo v1.9.3 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.7.6 // indirect + github.com/jackc/pgx/v5 v5.8.0 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect - golang.org/x/crypto v0.45.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/sys v0.40.0 // indirect + golang.org/x/text v0.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index cdf82d41..f155b30e 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OpenSlides/openslides-go v0.0.0-20251217092432-92998726880c h1:UsptQ15BB9hJ1vRtZjuHnbSeQJJpVCJexQmv48X/vfw= -github.com/OpenSlides/openslides-go v0.0.0-20251217092432-92998726880c/go.mod h1:SF4TlhhsWx7I2ksrwWY5dHvz43wNEGYtFezrBdoHjrk= +github.com/OpenSlides/openslides-go v0.0.0-20260116100629-753b5399afd5 h1:i3evtfFG6SfGFrveY28KOTuGQKJAXkrBU4i3dAM/9oU= +github.com/OpenSlides/openslides-go v0.0.0-20260116100629-753b5399afd5/go.mod h1:6FZS1L9Ts3QduBf++4xPzBTNWXv3qEQNSX/nm1ONr0g= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSrA= @@ -31,8 +31,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/goccy/go-yaml v1.19.0 h1:EmkZ9RIsX+Uq4DYFowegAuJo8+xdX3T/2dwNPXbxEYE= -github.com/goccy/go-yaml v1.19.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= +github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/gomodule/redigo v1.9.3 h1:dNPSXeXv6HCq2jdyWfjgmhBdqnR6PRO3m/G05nvpPC8= @@ -45,8 +45,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.7.6 h1:rWQc5FwZSPX58r1OQmkuaNicxdmExaEz5A2DO2hUuTk= -github.com/jackc/pgx/v5 v5.7.6/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= +github.com/jackc/pgx/v5 v5.8.0 h1:TYPDoleBBme0xGSAX3/+NujXXtpZn9HBONkQC7IEZSo= +github.com/jackc/pgx/v5 v5.8.0/go.mod h1:QVeDInX2m9VyzvNeiCJVjCkNFqzsNb43204HshNSZKw= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/klauspost/compress v1.18.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uqnapk= @@ -100,14 +100,12 @@ github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= From fc6b5049431a8310d81007d2c691b75f52c0e460 Mon Sep 17 00:00:00 2001 From: Raimund Renkert Date: Thu, 22 Jan 2026 17:42:26 +0100 Subject: [PATCH 05/13] update openslides-go (#1331) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 82e4485c..64d9e699 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/OpenSlides/openslides-autoupdate-service go 1.25.0 require ( - github.com/OpenSlides/openslides-go v0.0.0-20260116100629-753b5399afd5 + github.com/OpenSlides/openslides-go v0.0.0-20260122162349-ad3f12b8ef70 github.com/alecthomas/kong v1.13.0 github.com/klauspost/compress v1.18.2 github.com/ostcar/topic v0.6.0 diff --git a/go.sum b/go.sum index 859ce366..02a1cc07 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OpenSlides/openslides-go v0.0.0-20260116100629-753b5399afd5 h1:i3evtfFG6SfGFrveY28KOTuGQKJAXkrBU4i3dAM/9oU= -github.com/OpenSlides/openslides-go v0.0.0-20260116100629-753b5399afd5/go.mod h1:6FZS1L9Ts3QduBf++4xPzBTNWXv3qEQNSX/nm1ONr0g= +github.com/OpenSlides/openslides-go v0.0.0-20260122162349-ad3f12b8ef70 h1:mcwYbMKXV0BLvz7P65nXQVoH01JjMDLN7vCSDneA9jE= +github.com/OpenSlides/openslides-go v0.0.0-20260122162349-ad3f12b8ef70/go.mod h1:Xv/9Hgj50/eBjh4k3iq4zOMVDLk76VoeFKhecE4yc7g= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSrA= From 680a027838bad177543373885f1622d445c1cd4d Mon Sep 17 00:00:00 2001 From: Raimund Renkert Date: Fri, 23 Jan 2026 15:48:51 +0100 Subject: [PATCH 06/13] Update openslides-go (#1332) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 64d9e699..4b143d12 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/OpenSlides/openslides-autoupdate-service go 1.25.0 require ( - github.com/OpenSlides/openslides-go v0.0.0-20260122162349-ad3f12b8ef70 + github.com/OpenSlides/openslides-go v0.0.0-20260123143241-e71615ff2b97 github.com/alecthomas/kong v1.13.0 github.com/klauspost/compress v1.18.2 github.com/ostcar/topic v0.6.0 diff --git a/go.sum b/go.sum index 02a1cc07..b4c7e0b7 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OpenSlides/openslides-go v0.0.0-20260122162349-ad3f12b8ef70 h1:mcwYbMKXV0BLvz7P65nXQVoH01JjMDLN7vCSDneA9jE= -github.com/OpenSlides/openslides-go v0.0.0-20260122162349-ad3f12b8ef70/go.mod h1:Xv/9Hgj50/eBjh4k3iq4zOMVDLk76VoeFKhecE4yc7g= +github.com/OpenSlides/openslides-go v0.0.0-20260123143241-e71615ff2b97 h1:6joNgHiU7A1azNfI+i1lHYyvjqx9P98uwa5oyPTvErg= +github.com/OpenSlides/openslides-go v0.0.0-20260123143241-e71615ff2b97/go.mod h1:Xv/9Hgj50/eBjh4k3iq4zOMVDLk76VoeFKhecE4yc7g= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSrA= From 9f8f665050f8b24a50511adff69d5ce1b6531c71 Mon Sep 17 00:00:00 2001 From: Raimund Renkert Date: Mon, 2 Feb 2026 16:29:06 +0100 Subject: [PATCH 07/13] Update openslides-go (#1338) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4b143d12..9b5a208d 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/OpenSlides/openslides-autoupdate-service go 1.25.0 require ( - github.com/OpenSlides/openslides-go v0.0.0-20260123143241-e71615ff2b97 + github.com/OpenSlides/openslides-go v0.0.0-20260202151036-f82da13ff713 github.com/alecthomas/kong v1.13.0 github.com/klauspost/compress v1.18.2 github.com/ostcar/topic v0.6.0 diff --git a/go.sum b/go.sum index b4c7e0b7..0935f530 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OpenSlides/openslides-go v0.0.0-20260123143241-e71615ff2b97 h1:6joNgHiU7A1azNfI+i1lHYyvjqx9P98uwa5oyPTvErg= -github.com/OpenSlides/openslides-go v0.0.0-20260123143241-e71615ff2b97/go.mod h1:Xv/9Hgj50/eBjh4k3iq4zOMVDLk76VoeFKhecE4yc7g= +github.com/OpenSlides/openslides-go v0.0.0-20260202151036-f82da13ff713 h1:gpJWGkxOfEgEr2GoY4MajoW2MdKVMLd0XAQmdypa1Vw= +github.com/OpenSlides/openslides-go v0.0.0-20260202151036-f82da13ff713/go.mod h1:Xv/9Hgj50/eBjh4k3iq4zOMVDLk76VoeFKhecE4yc7g= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSrA= From 2a8a8f0ab708ba13a31a0a6350420c70a185e1bf Mon Sep 17 00:00:00 2001 From: Oskar Hahn Date: Fri, 6 Feb 2026 08:03:47 +0100 Subject: [PATCH 08/13] Fix merge on os-go --- go.mod | 2 +- go.sum | 34 ++++++++++++++++------------------ 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index 9f6ccd05..c8ff766e 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/OpenSlides/openslides-autoupdate-service go 1.25.0 require ( - github.com/OpenSlides/openslides-go v0.0.0-20260206065025-75527a56056e + github.com/OpenSlides/openslides-go v0.0.0-20260206065132-09fa1a890081 github.com/alecthomas/kong v1.13.0 github.com/klauspost/compress v1.18.2 github.com/ostcar/topic v0.6.0 diff --git a/go.sum b/go.sum index b7f96739..25043b3a 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,13 @@ -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OpenSlides/openslides-go v0.0.0-20260206065025-75527a56056e h1:YlVAydRxdeS5tpm3t3wrQeElshanU/gaQSVuBQGcCSc= -github.com/OpenSlides/openslides-go v0.0.0-20260206065025-75527a56056e/go.mod h1:mC+f9Q1p3tizanosd5T90n5l6VSx8Vx2jZEJeRF3ZMI= +github.com/OpenSlides/openslides-go v0.0.0-20260206065132-09fa1a890081 h1:/pJdLneXnN6geusS7zIwTnaNX82xT7GAVvTk396cyZk= +github.com/OpenSlides/openslides-go v0.0.0-20260206065132-09fa1a890081/go.mod h1:Gsmd/Ex1YnCvMVVxU3Hu4Qyopfi1bMJwcMde+QGz2fI= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSrA= @@ -22,21 +22,19 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/cli v28.0.4+incompatible h1:pBJSJeNd9QeIWPjRcV91RVJihd/TXB77q1ef64XEu4A= -github.com/docker/cli v28.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/docker v28.0.4+incompatible h1:JNNkBctYKurkw6FrHfKqY0nKIDf5nrbxjVBtS+cdcok= -github.com/docker/docker v28.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= -github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/cli v28.4.0+incompatible h1:RBcf3Kjw2pMtwui5V0DIMdyeab8glEw5QY0UUU4C9kY= +github.com/docker/cli v28.4.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/docker v28.4.0+incompatible h1:KVC7bz5zJY/4AZe/78BIvCnPsLaC9T/zh72xnlrTTOk= +github.com/docker/docker v28.4.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= +github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/gomodule/redigo v1.9.3 h1:dNPSXeXv6HCq2jdyWfjgmhBdqnR6PRO3m/G05nvpPC8= @@ -64,16 +62,16 @@ github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APP github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= -github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= +github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/opencontainers/runc v1.2.6 h1:P7Hqg40bsMvQGCS4S7DJYhUZOISMLJOB2iGX5COWiPk= -github.com/opencontainers/runc v1.2.6/go.mod h1:dOQeFo29xZKBNeRBI0B19mJtfHv68YgCTh1X+YphA+4= +github.com/opencontainers/runc v1.3.1 h1:c/yY0oh2wK7tzDuD56REnSxyU8ubh8hoAIOLGLrm4SM= +github.com/opencontainers/runc v1.3.1/go.mod h1:9wbWt42gV+KRxKRVVugNP6D5+PQciRbenB4fLVsqGPs= github.com/ory/dockertest/v3 v3.12.0 h1:3oV9d0sDzlSQfHtIaB5k6ghUCVMVLpAY8hwrqoCyRCw= github.com/ory/dockertest/v3 v3.12.0/go.mod h1:aKNDTva3cp8dwOWwb9cWuX84aH5akkxXRvO7KCwWVjE= github.com/ostcar/topic v0.6.0 h1:wAQ6ugkU/a4w3l/c4aH/xJriU833K8weEornVszpsHo= From 08d0b937ffc3e2bc7c82082bb395b79ea49ca390 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20B=C3=B6hlke?= Date: Fri, 13 Feb 2026 11:16:53 +0100 Subject: [PATCH 09/13] feat: add OIDC logout handling and database pool for auth Add logout error type, SSE logout notification, HTTP handler extension, and database pool passing for OIDC authentication. Co-Authored-By: Claude Opus 4.6 --- internal/autoupdate/flow.go | 6 ++ internal/http/error.go | 17 +++++ internal/http/http.go | 130 ++++++++++++++++++++++++++++++++++-- main.go | 2 +- 4 files changed, 148 insertions(+), 7 deletions(-) diff --git a/internal/autoupdate/flow.go b/internal/autoupdate/flow.go index b4aa164e..b5405f58 100644 --- a/internal/autoupdate/flow.go +++ b/internal/autoupdate/flow.go @@ -10,6 +10,7 @@ import ( "github.com/OpenSlides/openslides-go/datastore/cache" "github.com/OpenSlides/openslides-go/datastore/flow" "github.com/OpenSlides/openslides-go/environment" + "github.com/jackc/pgx/v5/pgxpool" ) // Flow is the connection to the database for the autoupdate service. @@ -72,6 +73,11 @@ func (f *Flow) ResetCache() { f.cache.Reset() } +// Pool returns the underlying postgres connection pool. +func (f *Flow) Pool() *pgxpool.Pool { + return f.postgres.Pool +} + func (f *Flow) metric(values metric.Container) { values.Add("datastore_cache_key_len", f.cache.Len()) values.Add("datastore_cache_size", f.cache.Size()) diff --git a/internal/http/error.go b/internal/http/error.go index eba8e1d4..e6ed841c 100644 --- a/internal/http/error.go +++ b/internal/http/error.go @@ -13,3 +13,20 @@ func (e invalidRequestError) Error() string { func (e invalidRequestError) Type() string { return "invalid_request" } + +// logoutError is sent when a session is terminated due to server-initiated logout +// (e.g., backchannel logout from Keycloak). +type logoutError struct{} + +func (e logoutError) Error() string { + return "Session logged out" +} + +func (e logoutError) Type() string { + return "logout" +} + +// Reason returns the reason identifier for the client to handle logout redirection. +func (e logoutError) Reason() string { + return "Logout" +} diff --git a/internal/http/http.go b/internal/http/http.go index 2250d89e..2c8d87da 100644 --- a/internal/http/http.go +++ b/internal/http/http.go @@ -23,6 +23,7 @@ import ( "github.com/OpenSlides/openslides-autoupdate-service/internal/autoupdate" "github.com/OpenSlides/openslides-autoupdate-service/internal/keysbuilder" "github.com/OpenSlides/openslides-autoupdate-service/internal/metric" + "github.com/OpenSlides/openslides-go/auth" "github.com/OpenSlides/openslides-go/datastore/dskey" "github.com/OpenSlides/openslides-go/oserror" "github.com/OpenSlides/openslides-go/redis" @@ -53,6 +54,7 @@ func Run( mux := http.NewServeMux() HandleHealth(mux) + HandlePublicTheme(mux, autoupdate) HandleAutoupdate(mux, auth, autoupdate, connectionCount, heartbeat) HandleInternalAutoupdate(mux, auth, autoupdate, heartbeat) HandleShowConnectionCount(mux, autoupdate, auth, connectionCount) @@ -145,7 +147,7 @@ func autoupdateHandler(auth Authenticater, connecter Connecter, heartbeat time.D if isLongPolling { if headersSent, err := handleLongpolling(ctx, w, uid, builder, connecter, compress, hashes); err != nil { if headersSent { - handleErrorWithoutStatus(w, err) + handleErrorWithoutStatusCtx(ctx, w, err) } else { handleErrorWithStatus(w, err) } @@ -154,7 +156,7 @@ func autoupdateHandler(auth Authenticater, connecter Connecter, heartbeat time.D } if err := sendMessages(ctx, w, uid, builder, connecter, compress, heartbeat); err != nil { - handleErrorWithoutStatus(w, err) + handleErrorWithoutStatusCtx(ctx, w, err) return } }) @@ -465,6 +467,105 @@ func HandleHealth(mux *http.ServeMux) { mux.Handle(url, handler) } +// HandlePublicTheme serves the organization's active theme colors as a flat JSON +// object. No authentication required (like health endpoint). +func HandlePublicTheme(mux *http.ServeMux, connecter Connecter) { + url := prefixPublic + "/theme" + handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + http.Error(w, "only GET requests are supported", http.StatusMethodNotAllowed) + return + } + + ctx := r.Context() + + // Fetch organization/1/theme_id as anonymous user (userID=0) + themeIDBuilder, err := keysbuilder.FromKeys("organization/1/theme_id") + if err != nil { + http.Error(w, "internal error", http.StatusInternalServerError) + return + } + + themeIDData, err := connecter.SingleData(ctx, 0, themeIDBuilder) + if err != nil { + http.Error(w, "internal error", http.StatusInternalServerError) + return + } + + // Find the theme_id value + var themeID int + for k, v := range themeIDData { + if k.Field() == "theme_id" && v != nil { + if err := json.Unmarshal(v, &themeID); err != nil { + http.Error(w, "internal error", http.StatusInternalServerError) + return + } + } + } + + if themeID == 0 { + http.Error(w, "no theme configured", http.StatusNotFound) + return + } + + // Build keys for all theme color fields + themeFields := []string{ + "primary_50", "primary_100", "primary_200", "primary_300", "primary_400", + "primary_500", "primary_600", "primary_700", "primary_800", "primary_900", + "primary_a100", "primary_a200", "primary_a400", "primary_a700", + "accent_50", "accent_100", "accent_200", "accent_300", "accent_400", + "accent_500", "accent_600", "accent_700", "accent_800", "accent_900", + "accent_a100", "accent_a200", "accent_a400", "accent_a700", + "warn_50", "warn_100", "warn_200", "warn_300", "warn_400", + "warn_500", "warn_600", "warn_700", "warn_800", "warn_900", + "warn_a100", "warn_a200", "warn_a400", "warn_a700", + "headbar", "yes", "no", "abstain", + } + + themePrefix := fmt.Sprintf("theme/%d/", themeID) + rawKeys := make([]string, len(themeFields)) + for i, f := range themeFields { + rawKeys[i] = themePrefix + f + } + + themeBuilder, err := keysbuilder.FromKeys(rawKeys...) + if err != nil { + http.Error(w, "internal error", http.StatusInternalServerError) + return + } + + themeData, err := connecter.SingleData(ctx, 0, themeBuilder) + if err != nil { + http.Error(w, "internal error", http.StatusInternalServerError) + return + } + + // Build flat JSON response + result := make(map[string]string) + for k, v := range themeData { + if v == nil { + continue + } + var colorVal string + if err := json.Unmarshal(v, &colorVal); err != nil { + continue + } + if colorVal != "" { + result[k.Field()] = colorVal + } + } + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Cache-Control", "public, max-age=60") + w.Header().Set("Access-Control-Allow-Origin", "*") + if err := json.NewEncoder(w).Encode(result); err != nil { + return + } + }) + + mux.Handle(url, handler) +} + // HandleProfile adds routes for profiling. func HandleProfile(mux *http.ServeMux) { mux.HandleFunc("/debug/pprof/", pprof.Index) @@ -502,17 +603,21 @@ func internalAuthMiddleware(next http.Handler, auth Authenticater) http.Handler } func handleErrorWithStatus(w http.ResponseWriter, err error) { - handleError(w, err, true, false) + handleError(nil, w, err, true, false) } func handleErrorWithoutStatus(w http.ResponseWriter, err error) { - handleError(w, err, false, false) + handleError(nil, w, err, false, false) +} + +func handleErrorWithoutStatusCtx(ctx context.Context, w http.ResponseWriter, err error) { + handleError(ctx, w, err, false, false) } // handleErrorInternal is only for internal request routes. It returns the full // error message to the client. func handleErrorInternal(w http.ResponseWriter, err error) { - handleError(w, err, true, true) + handleError(nil, w, err, true, true) } // handleError interprets the given error and writes a corresponding message to @@ -523,11 +628,24 @@ func handleErrorInternal(w http.ResponseWriter, err error) { // // If the handler already started to write the body then it is not allowed to // set the http-status-code. In this case, writeStatusCode has to be fales. -func handleError(w http.ResponseWriter, err error, writeStatusCode bool, internal bool) { +func handleError(ctx context.Context, w http.ResponseWriter, err error, writeStatusCode bool, internal bool) { if writeStatusCode { w.Header().Set("Content-Type", "application/octet-stream") } + // Check for server-initiated logout (backchannel logout) + if ctx != nil && oserror.ContextDone(err) { + if cause := context.Cause(ctx); cause != nil { + if _, isLogout := cause.(auth.LogoutError); isLogout { + // Send logout error message so client can redirect to login + logoutErr := logoutError{} + fmt.Fprintf(w, `{"error": {"type": "%s", "msg": "%s", "reason": "%s"}}`, logoutErr.Type(), quote(logoutErr.Error()), logoutErr.Reason()) + fmt.Fprintln(w) + return + } + } + } + if oserror.ContextDone(err) || errors.Is(err, syscall.EPIPE) || errors.Is(err, syscall.ECONNRESET) { // Client closed connection. return diff --git a/main.go b/main.go index a0d09d5c..eb80dc5b 100644 --- a/main.go +++ b/main.go @@ -147,7 +147,7 @@ func initService(lookup environment.Environmenter) (func(context.Context) error, backgroundTasks = append(backgroundTasks, flowBackground) // Auth Service. - authService, authBackground, err := auth.New(lookup, messageBus) + authService, authBackground, err := auth.New(lookup, messageBus, flow.Pool()) if err != nil { return nil, fmt.Errorf("init connection to auth: %w", err) } From 6779d850ea50271b7484b2b4c1316570b09cb7a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20B=C3=B6hlke?= Date: Thu, 19 Feb 2026 10:26:14 +0100 Subject: [PATCH 10/13] refactor: remove HandlePublicTheme endpoint Theme serving has been moved to the backend presenter service. Co-Authored-By: Claude Opus 4.6 --- internal/http/http.go | 100 ------------------------------------------ 1 file changed, 100 deletions(-) diff --git a/internal/http/http.go b/internal/http/http.go index 2c8d87da..c38ca8d3 100644 --- a/internal/http/http.go +++ b/internal/http/http.go @@ -54,7 +54,6 @@ func Run( mux := http.NewServeMux() HandleHealth(mux) - HandlePublicTheme(mux, autoupdate) HandleAutoupdate(mux, auth, autoupdate, connectionCount, heartbeat) HandleInternalAutoupdate(mux, auth, autoupdate, heartbeat) HandleShowConnectionCount(mux, autoupdate, auth, connectionCount) @@ -467,105 +466,6 @@ func HandleHealth(mux *http.ServeMux) { mux.Handle(url, handler) } -// HandlePublicTheme serves the organization's active theme colors as a flat JSON -// object. No authentication required (like health endpoint). -func HandlePublicTheme(mux *http.ServeMux, connecter Connecter) { - url := prefixPublic + "/theme" - handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method != http.MethodGet { - http.Error(w, "only GET requests are supported", http.StatusMethodNotAllowed) - return - } - - ctx := r.Context() - - // Fetch organization/1/theme_id as anonymous user (userID=0) - themeIDBuilder, err := keysbuilder.FromKeys("organization/1/theme_id") - if err != nil { - http.Error(w, "internal error", http.StatusInternalServerError) - return - } - - themeIDData, err := connecter.SingleData(ctx, 0, themeIDBuilder) - if err != nil { - http.Error(w, "internal error", http.StatusInternalServerError) - return - } - - // Find the theme_id value - var themeID int - for k, v := range themeIDData { - if k.Field() == "theme_id" && v != nil { - if err := json.Unmarshal(v, &themeID); err != nil { - http.Error(w, "internal error", http.StatusInternalServerError) - return - } - } - } - - if themeID == 0 { - http.Error(w, "no theme configured", http.StatusNotFound) - return - } - - // Build keys for all theme color fields - themeFields := []string{ - "primary_50", "primary_100", "primary_200", "primary_300", "primary_400", - "primary_500", "primary_600", "primary_700", "primary_800", "primary_900", - "primary_a100", "primary_a200", "primary_a400", "primary_a700", - "accent_50", "accent_100", "accent_200", "accent_300", "accent_400", - "accent_500", "accent_600", "accent_700", "accent_800", "accent_900", - "accent_a100", "accent_a200", "accent_a400", "accent_a700", - "warn_50", "warn_100", "warn_200", "warn_300", "warn_400", - "warn_500", "warn_600", "warn_700", "warn_800", "warn_900", - "warn_a100", "warn_a200", "warn_a400", "warn_a700", - "headbar", "yes", "no", "abstain", - } - - themePrefix := fmt.Sprintf("theme/%d/", themeID) - rawKeys := make([]string, len(themeFields)) - for i, f := range themeFields { - rawKeys[i] = themePrefix + f - } - - themeBuilder, err := keysbuilder.FromKeys(rawKeys...) - if err != nil { - http.Error(w, "internal error", http.StatusInternalServerError) - return - } - - themeData, err := connecter.SingleData(ctx, 0, themeBuilder) - if err != nil { - http.Error(w, "internal error", http.StatusInternalServerError) - return - } - - // Build flat JSON response - result := make(map[string]string) - for k, v := range themeData { - if v == nil { - continue - } - var colorVal string - if err := json.Unmarshal(v, &colorVal); err != nil { - continue - } - if colorVal != "" { - result[k.Field()] = colorVal - } - } - - w.Header().Set("Content-Type", "application/json") - w.Header().Set("Cache-Control", "public, max-age=60") - w.Header().Set("Access-Control-Allow-Origin", "*") - if err := json.NewEncoder(w).Encode(result); err != nil { - return - } - }) - - mux.Handle(url, handler) -} - // HandleProfile adds routes for profiling. func HandleProfile(mux *http.ServeMux) { mux.HandleFunc("/debug/pprof/", pprof.Index) From ac8eace8ca428527d8f19a13877d943323b702a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20B=C3=B6hlke?= Date: Thu, 19 Feb 2026 10:37:39 +0100 Subject: [PATCH 11/13] refactor: use ClientError path for logout errors in handleError Remove manual JSON formatting for logout errors and let them fall through to the existing ClientError branch, keeping a single point of JSON formatting. Remove redundant Reason() method from logoutError. Co-Authored-By: Claude Opus 4.6 --- internal/http/error.go | 5 ----- internal/http/http.go | 6 +----- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/internal/http/error.go b/internal/http/error.go index e6ed841c..aa477e07 100644 --- a/internal/http/error.go +++ b/internal/http/error.go @@ -25,8 +25,3 @@ func (e logoutError) Error() string { func (e logoutError) Type() string { return "logout" } - -// Reason returns the reason identifier for the client to handle logout redirection. -func (e logoutError) Reason() string { - return "Logout" -} diff --git a/internal/http/http.go b/internal/http/http.go index c38ca8d3..468d86e5 100644 --- a/internal/http/http.go +++ b/internal/http/http.go @@ -537,11 +537,7 @@ func handleError(ctx context.Context, w http.ResponseWriter, err error, writeSta if ctx != nil && oserror.ContextDone(err) { if cause := context.Cause(ctx); cause != nil { if _, isLogout := cause.(auth.LogoutError); isLogout { - // Send logout error message so client can redirect to login - logoutErr := logoutError{} - fmt.Fprintf(w, `{"error": {"type": "%s", "msg": "%s", "reason": "%s"}}`, logoutErr.Type(), quote(logoutErr.Error()), logoutErr.Reason()) - fmt.Fprintln(w) - return + err = logoutError{} } } } From 287eb1c76a7bef21633a6e1fa69524296da1ceee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20B=C3=B6hlke?= Date: Thu, 19 Feb 2026 10:57:45 +0100 Subject: [PATCH 12/13] fix: point openslides-go dependency to kryptance fork with LogoutError The autoupdate service code uses auth.LogoutError which was added in commit 9224a36 on the kryptance fork. Add a replace directive so Go fetches from the fork, fixing the CI build failure. Co-Authored-By: Claude Opus 4.6 --- go.mod | 6 ++++-- go.sum | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index c8ff766e..218dcf64 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,9 @@ module github.com/OpenSlides/openslides-autoupdate-service go 1.25.0 require ( - github.com/OpenSlides/openslides-go v0.0.0-20260206065132-09fa1a890081 + github.com/OpenSlides/openslides-go v0.0.0-20260219070754-9224a36bfe96 github.com/alecthomas/kong v1.13.0 + github.com/jackc/pgx/v5 v5.8.0 github.com/klauspost/compress v1.18.2 github.com/ostcar/topic v0.6.0 github.com/zeebo/xxh3 v1.0.2 @@ -16,7 +17,6 @@ require ( github.com/gomodule/redigo v1.9.3 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.8.0 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -27,3 +27,5 @@ require ( golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect ) + +replace github.com/OpenSlides/openslides-go => github.com/kryptance/openslides-go v0.0.0-20260219070754-9224a36bfe96 diff --git a/go.sum b/go.sum index 25043b3a..d4b44250 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,6 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OpenSlides/openslides-go v0.0.0-20260206065132-09fa1a890081 h1:/pJdLneXnN6geusS7zIwTnaNX82xT7GAVvTk396cyZk= -github.com/OpenSlides/openslides-go v0.0.0-20260206065132-09fa1a890081/go.mod h1:Gsmd/Ex1YnCvMVVxU3Hu4Qyopfi1bMJwcMde+QGz2fI= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSrA= @@ -55,6 +53,8 @@ github.com/klauspost/compress v1.18.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uq github.com/klauspost/compress v1.18.2/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/kryptance/openslides-go v0.0.0-20260219070754-9224a36bfe96 h1:nlMB94u2j+lWht1huyAzjFimlYLdk0mCyQTVkPHyj2s= +github.com/kryptance/openslides-go v0.0.0-20260219070754-9224a36bfe96/go.mod h1:Gsmd/Ex1YnCvMVVxU3Hu4Qyopfi1bMJwcMde+QGz2fI= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= From 4c52113e9d445d57e715090cf5264180dd964efd Mon Sep 17 00:00:00 2001 From: Oskar Hahn Date: Mon, 23 Feb 2026 22:31:17 +0100 Subject: [PATCH 13/13] Some updates after topic update --- go.mod | 6 ++---- go.sum | 8 ++++---- internal/http/error.go | 12 ------------ internal/http/http.go | 26 ++++++-------------------- 4 files changed, 12 insertions(+), 40 deletions(-) diff --git a/go.mod b/go.mod index 218dcf64..0c4d9348 100644 --- a/go.mod +++ b/go.mod @@ -3,11 +3,11 @@ module github.com/OpenSlides/openslides-autoupdate-service go 1.25.0 require ( - github.com/OpenSlides/openslides-go v0.0.0-20260219070754-9224a36bfe96 + github.com/OpenSlides/openslides-go v0.0.0-20260223212237-803b40e49892 github.com/alecthomas/kong v1.13.0 github.com/jackc/pgx/v5 v5.8.0 github.com/klauspost/compress v1.18.2 - github.com/ostcar/topic v0.6.0 + github.com/ostcar/topic v0.7.0 github.com/zeebo/xxh3 v1.0.2 ) @@ -27,5 +27,3 @@ require ( golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect ) - -replace github.com/OpenSlides/openslides-go => github.com/kryptance/openslides-go v0.0.0-20260219070754-9224a36bfe96 diff --git a/go.sum b/go.sum index d4b44250..73a4aee2 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/OpenSlides/openslides-go v0.0.0-20260223212237-803b40e49892 h1:hl9GxdYHHB1ULvN83IMjkT3lj8nO4RUsp3oh0WJM6eU= +github.com/OpenSlides/openslides-go v0.0.0-20260223212237-803b40e49892/go.mod h1:Gsmd/Ex1YnCvMVVxU3Hu4Qyopfi1bMJwcMde+QGz2fI= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSrA= @@ -53,8 +55,6 @@ github.com/klauspost/compress v1.18.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uq github.com/klauspost/compress v1.18.2/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= -github.com/kryptance/openslides-go v0.0.0-20260219070754-9224a36bfe96 h1:nlMB94u2j+lWht1huyAzjFimlYLdk0mCyQTVkPHyj2s= -github.com/kryptance/openslides-go v0.0.0-20260219070754-9224a36bfe96/go.mod h1:Gsmd/Ex1YnCvMVVxU3Hu4Qyopfi1bMJwcMde+QGz2fI= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -74,8 +74,8 @@ github.com/opencontainers/runc v1.3.1 h1:c/yY0oh2wK7tzDuD56REnSxyU8ubh8hoAIOLGLr github.com/opencontainers/runc v1.3.1/go.mod h1:9wbWt42gV+KRxKRVVugNP6D5+PQciRbenB4fLVsqGPs= github.com/ory/dockertest/v3 v3.12.0 h1:3oV9d0sDzlSQfHtIaB5k6ghUCVMVLpAY8hwrqoCyRCw= github.com/ory/dockertest/v3 v3.12.0/go.mod h1:aKNDTva3cp8dwOWwb9cWuX84aH5akkxXRvO7KCwWVjE= -github.com/ostcar/topic v0.6.0 h1:wAQ6ugkU/a4w3l/c4aH/xJriU833K8weEornVszpsHo= -github.com/ostcar/topic v0.6.0/go.mod h1:F/Ywf86Jj8NoXr0gdHhDeUGzZf4bEvHcCEuZyOaG7ko= +github.com/ostcar/topic v0.7.0 h1:wjx1AytG+ugjV7XOzfJTZsmVv5y8MD7tyEoJsmhbgEM= +github.com/ostcar/topic v0.7.0/go.mod h1:F/Ywf86Jj8NoXr0gdHhDeUGzZf4bEvHcCEuZyOaG7ko= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/internal/http/error.go b/internal/http/error.go index aa477e07..eba8e1d4 100644 --- a/internal/http/error.go +++ b/internal/http/error.go @@ -13,15 +13,3 @@ func (e invalidRequestError) Error() string { func (e invalidRequestError) Type() string { return "invalid_request" } - -// logoutError is sent when a session is terminated due to server-initiated logout -// (e.g., backchannel logout from Keycloak). -type logoutError struct{} - -func (e logoutError) Error() string { - return "Session logged out" -} - -func (e logoutError) Type() string { - return "logout" -} diff --git a/internal/http/http.go b/internal/http/http.go index 468d86e5..2250d89e 100644 --- a/internal/http/http.go +++ b/internal/http/http.go @@ -23,7 +23,6 @@ import ( "github.com/OpenSlides/openslides-autoupdate-service/internal/autoupdate" "github.com/OpenSlides/openslides-autoupdate-service/internal/keysbuilder" "github.com/OpenSlides/openslides-autoupdate-service/internal/metric" - "github.com/OpenSlides/openslides-go/auth" "github.com/OpenSlides/openslides-go/datastore/dskey" "github.com/OpenSlides/openslides-go/oserror" "github.com/OpenSlides/openslides-go/redis" @@ -146,7 +145,7 @@ func autoupdateHandler(auth Authenticater, connecter Connecter, heartbeat time.D if isLongPolling { if headersSent, err := handleLongpolling(ctx, w, uid, builder, connecter, compress, hashes); err != nil { if headersSent { - handleErrorWithoutStatusCtx(ctx, w, err) + handleErrorWithoutStatus(w, err) } else { handleErrorWithStatus(w, err) } @@ -155,7 +154,7 @@ func autoupdateHandler(auth Authenticater, connecter Connecter, heartbeat time.D } if err := sendMessages(ctx, w, uid, builder, connecter, compress, heartbeat); err != nil { - handleErrorWithoutStatusCtx(ctx, w, err) + handleErrorWithoutStatus(w, err) return } }) @@ -503,21 +502,17 @@ func internalAuthMiddleware(next http.Handler, auth Authenticater) http.Handler } func handleErrorWithStatus(w http.ResponseWriter, err error) { - handleError(nil, w, err, true, false) + handleError(w, err, true, false) } func handleErrorWithoutStatus(w http.ResponseWriter, err error) { - handleError(nil, w, err, false, false) -} - -func handleErrorWithoutStatusCtx(ctx context.Context, w http.ResponseWriter, err error) { - handleError(ctx, w, err, false, false) + handleError(w, err, false, false) } // handleErrorInternal is only for internal request routes. It returns the full // error message to the client. func handleErrorInternal(w http.ResponseWriter, err error) { - handleError(nil, w, err, true, true) + handleError(w, err, true, true) } // handleError interprets the given error and writes a corresponding message to @@ -528,20 +523,11 @@ func handleErrorInternal(w http.ResponseWriter, err error) { // // If the handler already started to write the body then it is not allowed to // set the http-status-code. In this case, writeStatusCode has to be fales. -func handleError(ctx context.Context, w http.ResponseWriter, err error, writeStatusCode bool, internal bool) { +func handleError(w http.ResponseWriter, err error, writeStatusCode bool, internal bool) { if writeStatusCode { w.Header().Set("Content-Type", "application/octet-stream") } - // Check for server-initiated logout (backchannel logout) - if ctx != nil && oserror.ContextDone(err) { - if cause := context.Cause(ctx); cause != nil { - if _, isLogout := cause.(auth.LogoutError); isLogout { - err = logoutError{} - } - } - } - if oserror.ContextDone(err) || errors.Is(err, syscall.EPIPE) || errors.Is(err, syscall.ECONNRESET) { // Client closed connection. return