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