From c020171e52cde7c5e1d3b77eeb99e35c86daf0cc Mon Sep 17 00:00:00 2001 From: richjohnrambo Date: Tue, 25 Aug 2026 22:17:59 +0800 Subject: [PATCH] fix: restore mysql docker build --- docker/tinode/Dockerfile.build | 11 ----------- docker/tinode/entrypoint.sh | 2 ++ server/db/mysql/adapter.go | 12 ++++++------ server/db/mysql/tenant_adapter.go | 16 +++++++++------- tinode-db/gendb.go | 2 +- 5 files changed, 18 insertions(+), 25 deletions(-) diff --git a/docker/tinode/Dockerfile.build b/docker/tinode/Dockerfile.build index 247f4a2..38f7722 100644 --- a/docker/tinode/Dockerfile.build +++ b/docker/tinode/Dockerfile.build @@ -33,14 +33,10 @@ ENV NO_DB_INIT=true ENV SAMPLE_DATA= ENV DEFAULT_COUNTRY_CODE=US -# DB connection is provided at deploy time via secret-backed env var. No default value. -ENV MYSQL_DSN= ENV STORE_USE_ADAPTER=mysql ENV REDIS_ADDR= ENV REDIS_USERNAME= -ENV REDIS_PASSWORD= ENV REDIS_DB=0 -ENV REDIS_KEY_PREFIX=im ENV REDIS_DIAL_TIMEOUT_MS=2000 ENV REDIS_READ_TIMEOUT_MS=2000 ENV REDIS_WRITE_TIMEOUT_MS=2000 @@ -72,13 +68,6 @@ ENV SERVER_STATUS_PATH='' ENV ACC_GC_ENABLED=false ENV PLUGIN_PYTHON_CHAT_BOT_ENABLED=false -# Secrets: intentionally NO default values. Must be injected at deploy time. -# An empty/missing value fails loudly at startup rather than silently falling -# back to Tinode's publicly-known demo keys. -ENV API_KEY_SALT= -ENV AUTH_TOKEN_KEY= -ENV UID_ENCRYPTION_KEY= - RUN apk add --no-cache ca-certificates bash grep WORKDIR /opt/tinode diff --git a/docker/tinode/entrypoint.sh b/docker/tinode/entrypoint.sh index dd51a09..5b02932 100644 --- a/docker/tinode/entrypoint.sh +++ b/docker/tinode/entrypoint.sh @@ -12,6 +12,8 @@ if [ ! -z "$EXT_CONFIG" ] ; then else CONFIG=working.config + : "${REDIS_KEY_PREFIX:=im}" + # Remove the old config. rm -f working.config diff --git a/server/db/mysql/adapter.go b/server/db/mysql/adapter.go index bb26e32..a33fabd 100644 --- a/server/db/mysql/adapter.go +++ b/server/db/mysql/adapter.go @@ -3704,8 +3704,8 @@ func (a *adapter) MessageGetAll(topic string, forUser t.Uid, opts *t.QueryOpt) ( // Get ranges of deleted messages func (a *adapter) MessageGetDeleted(topic string, forUser t.Uid, opts *t.QueryOpt) ([]t.DelMessage, error) { var limit = a.maxResults - var lower = 0 - var upper = 1<<31 - 1 + var lower int64 = 0 + var upper int64 = 1<<31 - 1 if opts != nil { if opts.Since > 0 { @@ -3738,8 +3738,8 @@ func (a *adapter) MessageGetDeleted(topic string, forUser t.Uid, opts *t.QueryOp Topic string Deletedfor int64 Delid int - Low int - Hi int + Low int64 + Hi int64 } var dmsgs []t.DelMessage var dmsg t.DelMessage @@ -3817,7 +3817,7 @@ func messageDeleteList(tx *sqlx.Tx, topic string, toDel *t.DelMessage) error { } // Find the actual IDs still present in the database. - var seqIDs []int + var seqIDs []int64 err = tx.Select(&seqIDs, "SELECT seqid FROM im_messages AS m WHERE "+where, args...) if err != nil { return err @@ -3829,7 +3829,7 @@ func messageDeleteList(tx *sqlx.Tx, topic string, toDel *t.DelMessage) error { } // Recalculate the actual ranges to delete. - sort.Ints(seqIDs) + sort.Slice(seqIDs, func(i, j int) bool { return seqIDs[i] < seqIDs[j] }) delRanges = t.SliceToRanges(seqIDs) // Compose a new query with the new ranges. diff --git a/server/db/mysql/tenant_adapter.go b/server/db/mysql/tenant_adapter.go index a5c23c9..ef5cb5f 100644 --- a/server/db/mysql/tenant_adapter.go +++ b/server/db/mysql/tenant_adapter.go @@ -1118,14 +1118,14 @@ func tenantMessageDeleteList(tx *sqlx.Tx, tenantID t.TenantID, topic string, toD where += " AND m.createdat>?" args = append(args, newerThan) } - var seqIDs []int + var seqIDs []int64 if err := tx.Select(&seqIDs, "SELECT seqid FROM im_messages AS m WHERE "+where, args...); err != nil { return err } if len(seqIDs) == 0 { return nil } - sort.Ints(seqIDs) + sort.Slice(seqIDs, func(i, j int) bool { return seqIDs[i] < seqIDs[j] }) delRanges = t.SliceToRanges(seqIDs) rSQL, rArgs := common.RangesToSql(delRanges) where = "m.tenant_id=? AND m.topic=? AND m.seqid " + rSQL @@ -1178,14 +1178,14 @@ func groupMessageDeleteList(tx *sqlx.Tx, topic string, toDel *t.DelMessage) erro where += " AND m.created_at>?" args = append(args, newerThan) } - var seqIDs []int + var seqIDs []int64 if err = tx.Select(&seqIDs, "SELECT seqid FROM im_group_messages AS m WHERE "+where, args...); err != nil { return err } if len(seqIDs) == 0 { return nil } - sort.Ints(seqIDs) + sort.Slice(seqIDs, func(i, j int) bool { return seqIDs[i] < seqIDs[j] }) delRanges = t.SliceToRanges(seqIDs) rSQL, rArgs := common.RangesToSql(delRanges) where = "m.topic=? AND m.seqid " + rSQL @@ -5617,7 +5617,9 @@ func (a *adapter) TenantMessageGetDeleted(id t.TenantID, topic string, uid t.Uid } return deleted, err } - limit, lower, upper := a.maxResults, 0, 1<<31-1 + limit := a.maxResults + var lower int64 = 0 + var upper int64 = 1<<31 - 1 if opts != nil { if opts.Since > 0 { lower = opts.Since @@ -5648,8 +5650,8 @@ func (a *adapter) TenantMessageGetDeleted(id t.TenantID, topic string, uid t.Uid Topic string Deletedfor int64 Delid int - Low int - Hi int + Low int64 + Hi int64 } if err = rows.StructScan(&row); err != nil { return nil, err diff --git a/tinode-db/gendb.go b/tinode-db/gendb.go index 082ace0..b864977 100644 --- a/tinode-db/gendb.go +++ b/tinode-db/gendb.go @@ -277,7 +277,7 @@ func genDb(data *Data, p2pDel bool, tenantID types.TenantID) { } } - seqIds := map[string]int{} + seqIds := map[string]int64{} now := types.TimeNow().Add(-time.Minute * 10) messageCount := len(data.Messages)