Hash slotname, if it exceeds 63 characters in streams
This commit is contained in:
parent
c206eb38a8
commit
8b03db1c9c
|
|
@ -2,6 +2,7 @@ package cluster
|
|||
|
||||
import (
|
||||
"context"
|
||||
"crypto/sha1"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"reflect"
|
||||
|
|
@ -288,7 +289,11 @@ func getOutboxTable(tableName string, idColumn *string) zalandov1.EventStreamTab
|
|||
}
|
||||
|
||||
func getSlotName(dbName, appId string) string {
|
||||
return fmt.Sprintf("%s_%s_%s", constants.EventStreamSourceSlotPrefix, dbName, strings.Replace(appId, "-", "_", -1))
|
||||
name := fmt.Sprintf("%s_%s_%s", constants.EventStreamSourceSlotPrefix, dbName, strings.Replace(appId, "-", "_", -1))
|
||||
if len(name) > 63 {
|
||||
name = fmt.Sprintf("%s_%s", constants.EventStreamSourceSlotPrefix, sha1.Sum([]byte(name)))
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
func (c *Cluster) getStreamConnection(database, user, appId string) zalandov1.Connection {
|
||||
|
|
|
|||
|
|
@ -752,3 +752,27 @@ func patchPostgresqlStreams(t *testing.T, cluster *Cluster, pgSpec *acidv1.Postg
|
|||
|
||||
return streams
|
||||
}
|
||||
|
||||
func TestSlotNameWithinMaxLength(t *testing.T) {
|
||||
dbName := "testdb"
|
||||
appId := "test-app"
|
||||
expected := constants.EventStreamSourceSlotPrefix + "_testdb_test_app"
|
||||
result := getSlotName(dbName, appId)
|
||||
assert.Equal(t, expected, result)
|
||||
}
|
||||
|
||||
func TestSlotNameExceedsMaxLength(t *testing.T) {
|
||||
dbName := "testdb"
|
||||
appId := "this-is-a-very-long-application-id-that-will-exceed-the-maximum-length"
|
||||
expected := constants.EventStreamSourceSlotPrefix + "_5a300d179c894b672b35bac212eab875d4c4145a"
|
||||
result := getSlotName(dbName, appId)
|
||||
assert.Equal(t, expected, result)
|
||||
}
|
||||
|
||||
func TestSlotNameWithHyphens(t *testing.T) {
|
||||
dbName := "testdb"
|
||||
appId := "test-app-with-hyphens"
|
||||
expected := constants.EventStreamSourceSlotPrefix + "_testdb_test_app_with_hyphens"
|
||||
result := getSlotName(dbName, appId)
|
||||
assert.Equal(t, expected, result)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue