diff --git a/CHANGELOG/CHANGELOG-3.8.md b/CHANGELOG/CHANGELOG-3.8.md index 9ae41e6a3..bdec996d9 100644 --- a/CHANGELOG/CHANGELOG-3.8.md +++ b/CHANGELOG/CHANGELOG-3.8.md @@ -1,70 +1,285 @@ -## [v3.8.3-patch.6](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.6) (2025-07-23) - -### Bug Fixes -* fix: Add friend DB in notification sender [#3438](https://github.com/openimsdk/open-im-server/pull/3438) -* fix: remove update version file workflows have new line in 3.8.3-patch branch. [#3452](https://github.com/openimsdk/open-im-server/pull/3452) -* fix: s3 aws init [#3454](https://github.com/openimsdk/open-im-server/pull/3454) -* fix: use safe submodule init in workflows in v3.8.3-patch. [#3469](https://github.com/openimsdk/open-im-server/pull/3469) - -**Full Changelog**: [v3.8.3-patch.5...v3.8.3-patch.6](https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.5...v3.8.3-patch.6) - -## [v3.8.3-patch.5](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.5) (2025-06-10) +## [v3.8.3-patch.16](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.16) (2026-03-19) ### New Features -* feat: optimize friend and group applications [#3396](https://github.com/openimsdk/open-im-server/pull/3396) +* feat: provide the interface required [#2712](https://github.com/openimsdk/open-im-server/pull/2712) +* feat: add webhooks of online status and remove zookeeper configuration. [#2716](https://github.com/openimsdk/open-im-server/pull/2716) +* feat: Add More Multi Login Policy [#2770](https://github.com/openimsdk/open-im-server/pull/2770) +* feat: Push configuration can ignore case sensitivity [#2775](https://github.com/openimsdk/open-im-server/pull/2775) +* feat: support app update service [#2794](https://github.com/openimsdk/open-im-server/pull/2794) +* feat: implement merge milestone PR to target-branch. [#2796](https://github.com/openimsdk/open-im-server/pull/2796) +* feat: support app update service [#2811](https://github.com/openimsdk/open-im-server/pull/2811) +* feat: ApplicationVersion move chat [#2813](https://github.com/openimsdk/open-im-server/pull/2813) +* feat: Update login policy [#2822](https://github.com/openimsdk/open-im-server/pull/2822) +* feat: support stream message [#2824](https://github.com/openimsdk/open-im-server/pull/2824) +* feat: merge js sdk [#2856](https://github.com/openimsdk/open-im-server/pull/2856) +* feat: Print Panic Log [#2850](https://github.com/openimsdk/open-im-server/pull/2850) +* feat: seq user and conversation seq synchronization [#2924](https://github.com/openimsdk/open-im-server/pull/2924) +* feat: support aws [#2938](https://github.com/openimsdk/open-im-server/pull/2938) +* feat: Prometheus can auto set port [#2943](https://github.com/openimsdk/open-im-server/pull/2943) +* feat: Change upload logs systemType to AppFramework. [#2927](https://github.com/openimsdk/open-im-server/pull/2927) +* feat: support quote ContentType in SendMsg. [#2819](https://github.com/openimsdk/open-im-server/pull/2819) +* feat: Group Monitoring Components, Enable Host Mode && Deprecate reliabilityLevel and unreadCount in notification.yml [#2975](https://github.com/openimsdk/open-im-server/pull/2975) +* feat: Add node_exporter in docker-compose [#2979](https://github.com/openimsdk/open-im-server/pull/2979) +* feat: Optimize Scheduled Task [#2985](https://github.com/openimsdk/open-im-server/pull/2985) +* feat: Optimizing RPC call [#2993](https://github.com/openimsdk/open-im-server/pull/2993) +* feat: optimize error stack information [#2995](https://github.com/openimsdk/open-im-server/pull/2995) +* feat: config center [#2997](https://github.com/openimsdk/open-im-server/pull/2997) +* feat: support message cache [#3007](https://github.com/openimsdk/open-im-server/pull/3007) +* feat: optimize log output [#3026](https://github.com/openimsdk/open-im-server/pull/3026) +* feat: support GetLastMessage [#3029](https://github.com/openimsdk/open-im-server/pull/3029) +* feat: Add enable config center button && fix: grpc connection leakage [#3036](https://github.com/openimsdk/open-im-server/pull/3036) +* feat: change appNotificationAccount to appManagerAccount && fix: enable config center add env check && fix: error return [#3038](https://github.com/openimsdk/open-im-server/pull/3038) +* feat: SendBusinessNotification supported configuration parameters [#3048](https://github.com/openimsdk/open-im-server/pull/3048) +* feat: add backup volume && optimize log print [#3066](https://github.com/openimsdk/open-im-server/pull/3066) +* feat: optimize code and support running in single process mode [#3142](https://github.com/openimsdk/open-im-server/pull/3142) +* feat: Change after webhook filter && feat SendSimpleMsg [#3151](https://github.com/openimsdk/open-im-server/pull/3151) +* feat: the default notification.yml is not configured properly [#3168](https://github.com/openimsdk/open-im-server/pull/3168) +* feat: add a new message type: Markdown text [#3162](https://github.com/openimsdk/open-im-server/pull/3162) +* feat: add a field to specify whether to send a notification message w… [#3163](https://github.com/openimsdk/open-im-server/pull/3163) +* feat: optimizing BatchGetIncrementalGroupMember [#3180](https://github.com/openimsdk/open-im-server/pull/3180) +* feat: system account send msg doesn't need friend verify [#3187](https://github.com/openimsdk/open-im-server/pull/3187) +* feat: sending messages supports returning fields modified [#3192](https://github.com/openimsdk/open-im-server/pull/3192) +* feat: set configs api [#3183](https://github.com/openimsdk/open-im-server/pull/3183) +* feat: check if the secret in config/share.yml has been changed during registration [#3223](https://github.com/openimsdk/open-im-server/pull/3223) +* feat: Implement webhook in createConversation [#3228](https://github.com/openimsdk/open-im-server/pull/3228) +* feat: add a function for business info change to update related conve… [#3225](https://github.com/openimsdk/open-im-server/pull/3225) +* feat: add filtering for invalid messages and invalid conversations to… [#3239](https://github.com/openimsdk/open-im-server/pull/3239) +* feat: implement stress-test tools. [#3261](https://github.com/openimsdk/open-im-server/pull/3261) +* feat: support server-issued configuration, which can be set for individual users [#3271](https://github.com/openimsdk/open-im-server/pull/3271) +* feat: GetConversationsHasReadAndMaxSeq support pinned [#3281](https://github.com/openimsdk/open-im-server/pull/3281) +* feat: Implement stress test v2. [#3292](https://github.com/openimsdk/open-im-server/pull/3292) +* feat: GroupApplicationAgreeMemberEnterNotification splitting [#3297](https://github.com/openimsdk/open-im-server/pull/3297) +* feat: optimize server code [#3319](https://github.com/openimsdk/open-im-server/pull/3319) +* feat: add rpc interface permission check [#3366](https://github.com/openimsdk/open-im-server/pull/3366) +* feat: optimize friend and group applications [#3384](https://github.com/openimsdk/open-im-server/pull/3384) +* feat: support distributed lock in crontask. [#3401](https://github.com/openimsdk/open-im-server/pull/3401) +* feat: Implement etcd and kafka auth. [#3394](https://github.com/openimsdk/open-im-server/pull/3394) +* feat: support redis sentinel. [#3423](https://github.com/openimsdk/open-im-server/pull/3423) +* feat: add api logger [#3427](https://github.com/openimsdk/open-im-server/pull/3427) +* feat: add nickname for adminUser [#3435](https://github.com/openimsdk/open-im-server/pull/3435) +* feat: support mongo replicaset mode. [#3433](https://github.com/openimsdk/open-im-server/pull/3433) +* feat: enable redis aof-use-rdb-preamble && disable auto rdb [#3529](https://github.com/openimsdk/open-im-server/pull/3529) +* feat: implement auth local cache. [#3533](https://github.com/openimsdk/open-im-server/pull/3533) +* feat: add msgDBSave webhook when data save to DB. [#3578](https://github.com/openimsdk/open-im-server/pull/3578) +* feat: implement DeleteConversations interface. [#3549](https://github.com/openimsdk/open-im-server/pull/3549) +* feat: replace LongConn with ClientConn interface and simplify message handling [#3643](https://github.com/openimsdk/open-im-server/pull/3643) +* feat: add error code for handled friend requests and improve error handling in friend operations [#3670](https://github.com/openimsdk/open-im-server/pull/3670) +* feat: update protocol support botPlatform [#3696](https://github.com/openimsdk/open-im-server/pull/3696) +* feat: gomake upgrade [#3702](https://github.com/openimsdk/open-im-server/pull/3702) ### Bug Fixes -* fix: solve unocrrect invite notification [Created [#3219](https://github.com/openimsdk/open-im-server/pull/3219) +* fix: the message I sent is not set to read seq in mongodb [#2718](https://github.com/openimsdk/open-im-server/pull/2718) +* fix: cannot modify group member avatars [#2719](https://github.com/openimsdk/open-im-server/pull/2719) +* fix: auth package import twice [#2724](https://github.com/openimsdk/open-im-server/pull/2724) +* fix: join the group chat directly, notification type error [#2772](https://github.com/openimsdk/open-im-server/pull/2772) +* fix: change update group member level logic [#2730](https://github.com/openimsdk/open-im-server/pull/2730) +* fix: joinSource check args error. [#2773](https://github.com/openimsdk/open-im-server/pull/2773) +* fix: Change group member roleLevel can`t send notification [#2777](https://github.com/openimsdk/open-im-server/pull/2777) +* fix: client sends message status error to server [#2779](https://github.com/openimsdk/open-im-server/pull/2779) +* fix: del UserB's conversation version cache when userA set conversati… [#2785](https://github.com/openimsdk/open-im-server/pull/2785) +* fix: improve setConversationAtInfo logic. [#2782](https://github.com/openimsdk/open-im-server/pull/2782) +* fix: improve transfer Owner logic when newOwner is mute. [#2790](https://github.com/openimsdk/open-im-server/pull/2790) +* fix: improve getUserInfo logic. [#2792](https://github.com/openimsdk/open-im-server/pull/2792) +* fix: improve time condition check mehtod. [#2804](https://github.com/openimsdk/open-im-server/pull/2804) +* fix: webhook before online push [#2805](https://github.com/openimsdk/open-im-server/pull/2805) +* fix: set own read seq in MongoDB when sender send a message. [#2808](https://github.com/openimsdk/open-im-server/pull/2808) +* fix: solve err Notification when setGroupInfo. [#2806](https://github.com/openimsdk/open-im-server/pull/2806) +* fix: improve condition check. [#2815](https://github.com/openimsdk/open-im-server/pull/2815) +* fix: Write back message to Redis [#2836](https://github.com/openimsdk/open-im-server/pull/2836) +* fix: get group return repeated result [#2842](https://github.com/openimsdk/open-im-server/pull/2842) +* fix: SetConversations can update new conversation [#2838](https://github.com/openimsdk/open-im-server/pull/2838) +* fix(push): push content with jpush [#2844](https://github.com/openimsdk/open-im-server/pull/2844) +* fix #2860 migrate jpns to jpush [#2861](https://github.com/openimsdk/open-im-server/pull/2861) +* fix: concurrent write to websocket connection [#2866](https://github.com/openimsdk/open-im-server/pull/2866) +* fix: Remove admin token in redis [#2871](https://github.com/openimsdk/open-im-server/pull/2871) +* Fix Push2User webhookBeforeOfflinePush [#2862](https://github.com/openimsdk/open-im-server/pull/2862) +* fix: move workflow to correct path [#2837](https://github.com/openimsdk/open-im-server/pull/2837) +* fix: del login Policy [#2825](https://github.com/openimsdk/open-im-server/pull/2825) +* fix: Wrong Redis Error Check [#2876](https://github.com/openimsdk/open-im-server/pull/2876) +* fix: minor log typo [#2881](https://github.com/openimsdk/open-im-server/pull/2881) +* fix: webhookAfterSingleMsgRead will be called correctly [#2884](https://github.com/openimsdk/open-im-server/pull/2884) +* fix: webhookBeforeSendSingleMsg will call before black and friend check [#2885](https://github.com/openimsdk/open-im-server/pull/2885) +* fix: Wrong Redis Error Check [#2891](https://github.com/openimsdk/open-im-server/pull/2891) +* fix: improve crontask delete outdated Data. [#2901](https://github.com/openimsdk/open-im-server/pull/2901) +* fix: go mod [#2906](https://github.com/openimsdk/open-im-server/pull/2906) +* fix: group member update face_url [#2910](https://github.com/openimsdk/open-im-server/pull/2910) +* fix: update set seq implement. [#2911](https://github.com/openimsdk/open-im-server/pull/2911) +* fix https://github.com/openimsdk/open-im-server/issues/2895 [#2896](https://github.com/openimsdk/open-im-server/pull/2896) +* fix: Can choose whether to set the port. [#2929](https://github.com/openimsdk/open-im-server/pull/2929) +* fix: Configure move service discovery into discovery [#2934](https://github.com/openimsdk/open-im-server/pull/2934) +* fix: compilation failed under Windows [#2940](https://github.com/openimsdk/open-im-server/pull/2940) +* fix: server can return isEnd to control fetch messages when sdk pull … [#2949](https://github.com/openimsdk/open-im-server/pull/2949) +* fix:Only print panic function frame && feat: log.ZPanic [#2947](https://github.com/openimsdk/open-im-server/pull/2947) +* fix: seq user and conversation seq synchronization [#2958](https://github.com/openimsdk/open-im-server/pull/2958) +* fix: fetch message return isEnd and endSeq panic. [#2959](https://github.com/openimsdk/open-im-server/pull/2959) +* fix: rpc panic recover [#2957](https://github.com/openimsdk/open-im-server/pull/2957) +* fix: modifying other fields while setting IsPrivateChat does not take effect [#2972](https://github.com/openimsdk/open-im-server/pull/2972) +* fix: when fetching a referenced message, it indicates that the original message has been deleted. [#2977](https://github.com/openimsdk/open-im-server/pull/2977) +* fix: when unable EnableHistoryForNewMembers, new group member can read last one message. [#3001](https://github.com/openimsdk/open-im-server/pull/3001) +* fix: redis save error when KickTokens [#3002](https://github.com/openimsdk/open-im-server/pull/3002) +* fix: The message @ information will be set only for members in the gr… [#3009](https://github.com/openimsdk/open-im-server/pull/3009) +* fix: restart permission check [#3011](https://github.com/openimsdk/open-im-server/pull/3011) +* fix: The system cannot be restarted the first time the configuration is set. [#3013](https://github.com/openimsdk/open-im-server/pull/3013) +* fix: jssdk not init [#3016](https://github.com/openimsdk/open-im-server/pull/3016) +* fix: online status error [#3022](https://github.com/openimsdk/open-im-server/pull/3022) +* fix: GetUsersOnline returns an error in the online list [#3040](https://github.com/openimsdk/open-im-server/pull/3040) +* fix: seq conversion failed without exiting [#3052](https://github.com/openimsdk/open-im-server/pull/3052) +* fix: check error in BatchSetTokenMapByUidPid [#3076](https://github.com/openimsdk/open-im-server/pull/3076) +* fix: DeleteDoc crash [#3078](https://github.com/openimsdk/open-im-server/pull/3078) +* fix: the abnormal message has no sending time, causing the SDK to be abnormal [#3087](https://github.com/openimsdk/open-im-server/pull/3087) +* fix: crash caused [#3100](https://github.com/openimsdk/open-im-server/pull/3100) +* fix: the user sets the conversation timer cleanup timestamp unit incorrectly [#3102](https://github.com/openimsdk/open-im-server/pull/3102) +* fix: solve workflows stop when merge failed [#3106](https://github.com/openimsdk/open-im-server/pull/3106) +* fix: seq conversion not reading env in docker environment [#3130](https://github.com/openimsdk/open-im-server/pull/3130) +* fix: the source message of the reference is withdrawn, and the referenced message is deleted [#3137](https://github.com/openimsdk/open-im-server/pull/3137) +* fix: Offline push does not have a badge && Android offline push [#3146](https://github.com/openimsdk/open-im-server/pull/3146) +* fix: PCAndOther multi login policy can`t get old clients correctly [#3158](https://github.com/openimsdk/open-im-server/pull/3158) +* fix: solve uncorrect notification when set group info [#3172](https://github.com/openimsdk/open-im-server/pull/3172) +* fix: the sorting is wrong after canceling the administrator in group settings [#3185](https://github.com/openimsdk/open-im-server/pull/3185) +* fix: solve uncorrect GroupMember enter group notification type. [#3188](https://github.com/openimsdk/open-im-server/pull/3188) +* fix: solve unocrrect invite notification [#3213](https://github.com/openimsdk/open-im-server/pull/3213) +* fix: AdminToken save to redis && limit 1 for each userID [#3224](https://github.com/openimsdk/open-im-server/pull/3224) +* fix: improve stress test tools parms. [#3265](https://github.com/openimsdk/open-im-server/pull/3265) +* fix: oss specifies content-type when uploading [#3267](https://github.com/openimsdk/open-im-server/pull/3267) +* fix: transferring the group owner to a muted member, incremental version error [#3284](https://github.com/openimsdk/open-im-server/pull/3284) +* fix: group status in GroupDismissedNotification [#3286](https://github.com/openimsdk/open-im-server/pull/3286) +* fix: data version SetVersion will add record [#3304](https://github.com/openimsdk/open-im-server/pull/3304) +* fix: delete token [#3313](https://github.com/openimsdk/open-im-server/pull/3313) +* fix: optimize grpc option and fix some interface permission checks [#3327](https://github.com/openimsdk/open-im-server/pull/3327) +* fix: standalone mode cannot be used [#3360](https://github.com/openimsdk/open-im-server/pull/3360) +* fix: solve user not found when notification invitedUserID is zero in … [#3375](https://github.com/openimsdk/open-im-server/pull/3375) +* fix: send simple msg [#3362](https://github.com/openimsdk/open-im-server/pull/3362) +* fix: solve updateUserInfoEx null pointer. [#3326](https://github.com/openimsdk/open-im-server/pull/3326) +* fix: add rpc interface permission check [#3377](https://github.com/openimsdk/open-im-server/pull/3377) +* fix: optimize friend and group applications [#3389](https://github.com/openimsdk/open-im-server/pull/3389) +* fix redis config db field [#3395](https://github.com/openimsdk/open-im-server/pull/3395) +* fix: prometheus discovery [#3408](https://github.com/openimsdk/open-im-server/pull/3408) +* fix: import friends send notification [#3420](https://github.com/openimsdk/open-im-server/pull/3420) +* fix: improve mileston PR workflows contents. [#3382](https://github.com/openimsdk/open-im-server/pull/3382) +* fix: solve webhook incorrect attentionID references. [#3411](https://github.com/openimsdk/open-im-server/pull/3411) +* fix: solve `createTime` not set in setConversation and Create Conversation. [#3447](https://github.com/openimsdk/open-im-server/pull/3447) +* fix: update log level in crontask dist look. [#3440](https://github.com/openimsdk/open-im-server/pull/3440) +* fix: use safe submodule init in workflows. [#3468](https://github.com/openimsdk/open-im-server/pull/3468) +* fix: fix incorrect kicked logic. [#3480](https://github.com/openimsdk/open-im-server/pull/3480) +* fix: added AtUserIDList to the @ message for API sending. [#3472](https://github.com/openimsdk/open-im-server/pull/3472) +* fix: solve batch incorrect error in Find DocIDs [#3476](https://github.com/openimsdk/open-im-server/pull/3476) +* fix: correctly aggregate read seqs [#3442](https://github.com/openimsdk/open-im-server/pull/3442) +* fix: performance issues with Kafka caused [#3485](https://github.com/openimsdk/open-im-server/pull/3485) +* fix: searchMessage method has potential NPE bug [Created [#3289](https://github.com/openimsdk/open-im-server/pull/3289) +* fix: admin token in standalone mode [#3499](https://github.com/openimsdk/open-im-server/pull/3499) +* fix: revert contentType in API msg [#3509](https://github.com/openimsdk/open-im-server/pull/3509) +* fix: optimize to lru local cache. [#3514](https://github.com/openimsdk/open-im-server/pull/3514) +* fix: fill in the most recent sendTime for a gap message to prevent th… [#3522](https://github.com/openimsdk/open-im-server/pull/3522) +* fix: solve incorrect batchGetIncrGroupMember when group dismissed. [#3526](https://github.com/openimsdk/open-im-server/pull/3526) +* fix: GetSortedConversationList nil pointer when chatlog not found. [#3531](https://github.com/openimsdk/open-im-server/pull/3531) +* fix: switch kafka & etcd image namespace to bitnamilegacy [#3555](https://github.com/openimsdk/open-im-server/pull/3555) +* fix: solve incorrect time.Unix and logger asyncwrite [#3584](https://github.com/openimsdk/open-im-server/pull/3584) +* fix: db manager [#3600](https://github.com/openimsdk/open-im-server/pull/3600) +* fix: update JSON field names to camelCase in conversation structs [#3609](https://github.com/openimsdk/open-im-server/pull/3609) +* Fix: Resolved the issue of incorrect generation of conversationID [#3581](https://github.com/openimsdk/open-im-server/pull/3581) +* fix: solve msg wsHandler panic. [#3595](https://github.com/openimsdk/open-im-server/pull/3595) +* fix: resolve deadlock in cache eviction and improve GetBatch implementation and full id version [#3591](https://github.com/openimsdk/open-im-server/pull/3591) +* fix: reset user conversation seq when rejoining group to resolve message recall issue [#3640](https://github.com/openimsdk/open-im-server/pull/3640) +* fix(group): move member count retrieval after member deletion for accurate updates [#3651](https://github.com/openimsdk/open-im-server/pull/3651) +* fix(group): set max_seq to 0 when join group [#3649](https://github.com/openimsdk/open-im-server/pull/3649) +* fix: Mongo Malloc upsert overwrites min_seq initialization [#3657](https://github.com/openimsdk/open-im-server/pull/3657) + +### Chores +* chore: remove unused content [#2786](https://github.com/openimsdk/open-im-server/pull/2786) +* chore: update admin front image version [#2893](https://github.com/openimsdk/open-im-server/pull/2893) + +### Refactors +* refactor: Refactor rpc call && auto gen rpc_call code [#2969](https://github.com/openimsdk/open-im-server/pull/2969) +* refactor: improve workflows logic. [#3072](https://github.com/openimsdk/open-im-server/pull/3072) +* refactor: change sendNotification to sendMessage to avoid ambiguity regarding message sending behavior. [#3173](https://github.com/openimsdk/open-im-server/pull/3173) +* refactor: improve setConversations method. [#3194](https://github.com/openimsdk/open-im-server/pull/3194) +* refactor: move stress-test tools location. [#3295](https://github.com/openimsdk/open-im-server/pull/3295) +* refactor: support modified config and args in mage. [#3466](https://github.com/openimsdk/open-im-server/pull/3466) ### Builds -* build: update gomake version in dockerfile.[Patch branch] [#3416](https://github.com/openimsdk/open-im-server/pull/3416) +* build: improve workflows logic. [#2801](https://github.com/openimsdk/open-im-server/pull/2801) +* build: implement version file update when release. [#2826](https://github.com/openimsdk/open-im-server/pull/2826) +* build: update mongo and kafka start logic. [#2858](https://github.com/openimsdk/open-im-server/pull/2858) +* build: create changelog tool and workflows. [#2869](https://github.com/openimsdk/open-im-server/pull/2869) +* build(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.0 to 4.5.1 [#2851](https://github.com/openimsdk/open-im-server/pull/2851) +* build: update Server version. [#2887](https://github.com/openimsdk/open-im-server/pull/2887) +* build: implement services image build and CI release. [#2920](https://github.com/openimsdk/open-im-server/pull/2920) +* build: update kubernetes deployment Run. [#2919](https://github.com/openimsdk/open-im-server/pull/2919) +* build: fix uncorrect path. [#3020](https://github.com/openimsdk/open-im-server/pull/3020) +* build: fix docker images build. [#3024](https://github.com/openimsdk/open-im-server/pull/3024) +* build: keep conflict is true. [#3103](https://github.com/openimsdk/open-im-server/pull/3103) +* build: comment out admin services. [#3537](https://github.com/openimsdk/open-im-server/pull/3537) +* build: improve publish docker image workflow. [#3552](https://github.com/openimsdk/open-im-server/pull/3552) +* build: add sdk version log in registerClient [#3574](https://github.com/openimsdk/open-im-server/pull/3574) + +### Others +* Revert: Change group member roleLevel can`t send notification [#2789](https://github.com/openimsdk/open-im-server/pull/2789) +* Introducing OpenIM Guru on Gurubase.io [#2788](https://github.com/openimsdk/open-im-server/pull/2788) +* revert: write msg to redis [#2883](https://github.com/openimsdk/open-im-server/pull/2883) +* Add a lead time for the token's issuance time. [#2914](https://github.com/openimsdk/open-im-server/pull/2914) +* docs: improve deployment docs in kubernetes. [#2973](https://github.com/openimsdk/open-im-server/pull/2973) +* update: env image version [#3055](https://github.com/openimsdk/open-im-server/pull/3055) +* License [#3293](https://github.com/openimsdk/open-im-server/pull/3293) +* docs: update slack link. [#3479](https://github.com/openimsdk/open-im-server/pull/3479) +* Update CHANGELOG for release v3.8.3-patch.1 [#3164](https://github.com/openimsdk/open-im-server/pull/3164) +* Update CHANGELOG for release v3.8.3-patch.2 [#3175](https://github.com/openimsdk/open-im-server/pull/3175) +* Update CHANGELOG for release v3.8.3-patch.3 [#3206](https://github.com/openimsdk/open-im-server/pull/3206) +* Update CHANGELOG for release v3.8.3-patch.4 [#3226](https://github.com/openimsdk/open-im-server/pull/3226) +* Update CHANGELOG for release v3.8.3-patch.5 [#3405](https://github.com/openimsdk/open-im-server/pull/3405) +* Update CHANGELOG for release v3.8.3-patch.6 [#3473](https://github.com/openimsdk/open-im-server/pull/3473) +* docs: update readme of config file. [#3356](https://github.com/openimsdk/open-im-server/pull/3356) +* ​Build: Implement rate limiting and circuit breaker for API and RPC services.​​ [#3572](https://github.com/openimsdk/open-im-server/pull/3572) +* merge: pre-release-v3.8.4 [#3623](https://github.com/openimsdk/open-im-server/pull/3623) +* Simplify iOS background push gating (#3611) [#3612](https://github.com/openimsdk/open-im-server/pull/3612) +* bugfix(conversation):removed unexpectedly called functions and itself… [#3668](https://github.com/openimsdk/open-im-server/pull/3668) +* @lkzz made their first contribution in https://github.com/openimsdk/open-im-server/pull/2724 [#2724](https://github.com/openimsdk/open-im-server/pull/2724) +* @alilestera made their first contribution in https://github.com/openimsdk/open-im-server/pull/2773 [#2773](https://github.com/openimsdk/open-im-server/pull/2773) +* @kursataktas made their first contribution in https://github.com/openimsdk/open-im-server/pull/2788 [#2788](https://github.com/openimsdk/open-im-server/pull/2788) +* @yoyo930021 made their first contribution in https://github.com/openimsdk/open-im-server/pull/2844 [#2844](https://github.com/openimsdk/open-im-server/pull/2844) +* @wikylyu made their first contribution in https://github.com/openimsdk/open-im-server/pull/2861 [#2861](https://github.com/openimsdk/open-im-server/pull/2861) +* @storyn26383 made their first contribution in https://github.com/openimsdk/open-im-server/pull/2862 [#2862](https://github.com/openimsdk/open-im-server/pull/2862) +* @morya made their first contribution in https://github.com/openimsdk/open-im-server/pull/2881 [#2881](https://github.com/openimsdk/open-im-server/pull/2881) +* @HonQii made their first contribution in https://github.com/openimsdk/open-im-server/pull/3395 [#3395](https://github.com/openimsdk/open-im-server/pull/3395) +* @github-actions[bot] made their first contribution in https://github.com/openimsdk/open-im-server/pull/3164 [#3164](https://github.com/openimsdk/open-im-server/pull/3164) +* @xuzhijvn made their first contribution in https://github.com/openimsdk/open-im-server/pull/3289 [#3289](https://github.com/openimsdk/open-im-server/pull/3289) +* @ozudev made their first contribution in https://github.com/openimsdk/open-im-server/pull/3612 [#3612](https://github.com/openimsdk/open-im-server/pull/3612) -**Full Changelog**: [v3.8.3...v3.8.3-patch.5](https://github.com/openimsdk/open-im-server/compare/v3.8.3...v3.8.3-patch.5) +**Full Changelog**: [v3.8.3-patch.15...v3.8.3-patch.16](https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.15...v3.8.3-patch.16) -## [v3.8.3-patch.4](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.4) (2025-03-13) +## [v3.8.3-patch.12](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.12) (2025-10-24) ### Bug Fixes -* fix: solve unocrrect invite notificationfrom #3213 +* fix: full id version [#3589](https://github.com/openimsdk/open-im-server/pull/3589) +* fix: incorrect redis fields. [#3602](https://github.com/openimsdk/open-im-server/pull/3602) -**Full Changelog**: [v3.8.3-patch.3...v3.8.3-patch.4](https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.3...v3.8.3-patch.4) +**Full Changelog**: [v3.8.3-patch.11...v3.8.3-patch.12](https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.11...v3.8.3-patch.12) -## [v3.8.3-patch.3](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.3) (2025-03-07) +## [v3.8.3-patch.9](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.9) (2025-08-19) ### New Features -* feat: optimizing BatchGetIncrementalGroupMember #3180 +* feat: enable redis aof-use-rdb-preamble && disable auto rdb [Created [#3535](https://github.com/openimsdk/open-im-server/pull/3535) ### Bug Fixes -* fix: solve uncorrect notification when set group info #3172 -* fix: the sorting is wrong after canceling the administrator in group settings #3185 -* fix: solve uncorrect GroupMember enter group notification type. #3188 - -### Refactors -* refactor: change sendNotification to sendMessage to avoid ambiguity regarding message sending behavior. #3173 +* fix: fill in the most recent sendTime for a gap message to prevent th… [#3523](https://github.com/openimsdk/open-im-server/pull/3523) -**Full Changelog**: [v3.8.3-patch.2...v3.8.3-patch.3](https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.2...v3.8.3-patch.3) +**Full Changelog**: [v3.8.3-patch.8...v3.8.3-patch.9](https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.8...v3.8.3-patch.9) -## [v3.8.3-patch.2](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.2) (2025-02-28) +## [v3.8.3-patch.8](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.8) (2025-08-13) ### Bug Fixes -* fix: Offline push does not have a badge && Android offline push (#3146) [#3174](https://github.com/openimsdk/open-im-server/pull/3174) +* fix: fix incorrect kicked logic and PCAndOther Login policy In v3.8.3-patch [#3511](https://github.com/openimsdk/open-im-server/pull/3511) +* fix: solve batch incorrect error in Find DocIDs in v3.8.3-patch branch. [#3515](https://github.com/openimsdk/open-im-server/pull/3515) -**Full Changelog**: [v3.8.3-patch.1...v3.8.3-patch.2](https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.1...v3.8.3-patch.2) +**Full Changelog**: [v3.8.3-patch.7...v3.8.3-patch.8](https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.7...v3.8.3-patch.8) -## [v3.8.3-patch.1](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.1) (2025-02-25) +## [v3.8.3-patch.7](https://github.com/openimsdk/open-im-server/releases/tag/v3.8.3-patch.7) (2025-07-29) ### New Features -* feat: add backup volume && optimize log print [Created [#3121](https://github.com/openimsdk/open-im-server/pull/3121) +* feat: add filtering for invalid messages and invalid conversations to… [#3483](https://github.com/openimsdk/open-im-server/pull/3483) ### Bug Fixes -* fix: seq conversion failed without exiting [Created [#3120](https://github.com/openimsdk/open-im-server/pull/3120) -* fix: check error in BatchSetTokenMapByUidPid [Created [#3123](https://github.com/openimsdk/open-im-server/pull/3123) -* fix: DeleteDoc crash [Created [#3124](https://github.com/openimsdk/open-im-server/pull/3124) -* fix: the abnormal message has no sending time, causing the SDK to be abnormal [Created [#3126](https://github.com/openimsdk/open-im-server/pull/3126) -* fix: crash caused [#3127](https://github.com/openimsdk/open-im-server/pull/3127) -* fix: the user sets the conversation timer cleanup timestamp unit incorrectly [Created [#3128](https://github.com/openimsdk/open-im-server/pull/3128) -* fix: seq conversion not reading env in docker environment [Created [#3131](https://github.com/openimsdk/open-im-server/pull/3131) - -### Builds -* build: improve workflows contents. [Created [#3125](https://github.com/openimsdk/open-im-server/pull/3125) +* fix: correctly aggregate read seqs [#3482](https://github.com/openimsdk/open-im-server/pull/3482) +* fix: import friends send notification in v3.8.3-patch [#3488](https://github.com/openimsdk/open-im-server/pull/3488) +* fix: solve redis config db field in v3.8.3-patch [#3490](https://github.com/openimsdk/open-im-server/pull/3490) -**Full Changelog**: [v3.8.3-e-v1.1.5...v3.8.3-patch.1-e-v1.1.5](https://github.com/openimsdk/open-im-server-enterprise/compare/v3.8.3-e-v1.1.5...v3.8.3-patch.1-e-v1.1.5) \ No newline at end of file +**Full Changelog**: [v3.8.3-patch.6...v3.8.3-patch.7](https://github.com/openimsdk/open-im-server/compare/v3.8.3-patch.6...v3.8.3-patch.7) diff --git a/config/alertmanager.yml b/config/alertmanager.yml index 6c675ab6f..0f4d9875f 100644 --- a/config/alertmanager.yml +++ b/config/alertmanager.yml @@ -1,34 +1,36 @@ +# Global Alertmanager runtime and SMTP settings. global: - resolve_timeout: 5m - smtp_from: alert@openim.io - smtp_smarthost: smtp.163.com:465 - smtp_auth_username: alert@openim.io - smtp_auth_password: YOURAUTHPASSWORD - smtp_require_tls: false - smtp_hello: xxx + resolve_timeout: 5m # Wait time before an alert is considered resolved when no further updates are received. + smtp_from: alert@openim.io # Sender address displayed in alert emails. + smtp_smarthost: smtp.163.com:465 # SMTP relay endpoint in host:port format. + smtp_auth_username: alert@openim.io # SMTP authentication username (commonly the same as smtp_from). + smtp_auth_password: YOURAUTHPASSWORD # SMTP authorization token or app password. + smtp_require_tls: false # Set to true when your SMTP provider requires STARTTLS. + smtp_hello: xxx # HELO/EHLO identity presented to the SMTP server. templates: - - /etc/alertmanager/email.tmpl + - /etc/alertmanager/email.tmpl # Go template file used to render HTML email content. +# Root routing tree for all incoming alerts. route: - group_by: [ 'alertname' ] - group_wait: 5s - group_interval: 5s - repeat_interval: 5m - receiver: email + group_by: [ 'alertname' ] # Alerts sharing this label value are batched into one notification. + group_wait: 5s # Initial delay before sending the first notification for a new alert group. + group_interval: 5s # Minimum interval between notifications for the same alert group. + repeat_interval: 5m # Reminder interval while an alert group remains firing. + receiver: email # Default receiver when no child route matches. routes: - matchers: - - alertname = "XXX" - group_by: [ 'instance' ] + - alertname = "XXX" # Example matcher; replace with a real alert name or remove this route. + group_by: [ 'instance' ] # Override grouping for this specific route. group_wait: 5s group_interval: 5s repeat_interval: 5m receiver: email receivers: - - name: email + - name: email # Receiver name referenced by route.receiver. email_configs: - - to: 'alert@example.com' - html: '{{ template "email.to.html" . }}' - headers: { Subject: "[OPENIM-SERVER]Alarm" } - send_resolved: true + - to: 'alert@example.com' # Recipient mailbox for alert notifications. + html: '{{ template "email.to.html" . }}' # Rendered with the template declared in email.tmpl. + headers: { Subject: "[OPENIM-SERVER]Alarm" } # Custom email subject line. + send_resolved: true # Also send a notification when the alert recovers. diff --git a/config/email.tmpl b/config/email.tmpl index 824144e9d..ab9642e85 100644 --- a/config/email.tmpl +++ b/config/email.tmpl @@ -1,3 +1,6 @@ +{{/* OpenIM Alertmanager email template. +This template renders both firing and resolved alerts. +Each alert entry reads labels and annotations from Prometheus rule definitions. */}} {{ define "email.to.html" }} {{ if eq .Status "firing" }} {{ range .Alerts }} diff --git a/config/instance-down-rules.yml b/config/instance-down-rules.yml index bcac7ba60..60b26e33f 100644 --- a/config/instance-down-rules.yml +++ b/config/instance-down-rules.yml @@ -1,30 +1,31 @@ +# Default Prometheus alert groups for OpenIM. groups: - - name: instance_down + - name: instance_down # Fires when a monitored target remains unreachable. rules: - alert: InstanceDown - expr: up == 0 - for: 1m + expr: up == 0 # The built-in "up" metric is 0 when the latest scrape fails. + for: 1m # Trigger only if the condition remains true for more than 1 minute. labels: - severity: critical + severity: critical # Used by Alertmanager for routing and notification priority. annotations: summary: "Instance {{ $labels.instance }} down" - description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes." + description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minute." - - name: database_insert_failure_alerts + - name: database_insert_failure_alerts # Detects failures when persisting messages to Redis or MongoDB. rules: - alert: DatabaseInsertFailed - expr: (increase(msg_insert_redis_failed_total[5m]) > 0) or (increase(msg_insert_mongo_failed_total[5m]) > 0) - for: 1m + expr: (increase(msg_insert_redis_failed_total[5m]) > 0) or (increase(msg_insert_mongo_failed_total[5m]) > 0) # Any positive increase indicates write failures occurred in the last 5 minutes. + for: 1m # Avoid firing on very short spikes. labels: severity: critical annotations: summary: "Increase in MsgInsertRedisFailedCounter or MsgInsertMongoFailedCounter detected" - description: "Either MsgInsertRedisFailedCounter or MsgInsertMongoFailedCounter has increased in the last 5 minutes, indicating failures in message insert operations to Redis or MongoDB,maybe the redis or mongodb is crash." + description: "Either MsgInsertRedisFailedCounter or MsgInsertMongoFailedCounter increased in the last 5 minutes, indicating message insert failures to Redis or MongoDB and a possible backend outage." - - name: registrations_few + - name: registrations_few # Operational early-warning rule for unusually low login/registration activity. rules: - alert: RegistrationsFew - expr: increase(user_login_total[1h]) == 0 + expr: increase(user_login_total[1h]) == 0 # No successful login/registration events observed in 1 hour. for: 1m labels: severity: info @@ -32,10 +33,10 @@ groups: summary: "Too few registrations within the time frame" description: "The number of registrations in the last hour is 0. There might be some issues." - - name: messages_few + - name: messages_few # Operational early-warning rule for unusually low messaging activity. rules: - alert: MessagesFew - expr: (increase(single_chat_msg_process_success_total[1h])+increase(group_chat_msg_process_success_total[1h])) == 0 + expr: (increase(single_chat_msg_process_success_total[1h])+increase(group_chat_msg_process_success_total[1h])) == 0 # No successful single or group messages observed in 1 hour. for: 1m labels: severity: info diff --git a/config/openim-api.yml b/config/openim-api.yml index df0177d24..89be50123 100644 --- a/config/openim-api.yml +++ b/config/openim-api.yml @@ -8,7 +8,7 @@ api: prometheus: - # Whether to enable prometheus + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # autoSetPorts indicates whether to automatically set the ports autoSetPorts: true diff --git a/config/openim-msggateway.yml b/config/openim-msggateway.yml index 8ac07faae..7c2f17158 100644 --- a/config/openim-msggateway.yml +++ b/config/openim-msggateway.yml @@ -9,7 +9,7 @@ rpc: ports: prometheus: - # Enable or disable Prometheus monitoring + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # List of ports that Prometheus listens on; these must match the number of rpc.ports to ensure correct monitoring setup # It will only take effect when autoSetPorts is set to false. diff --git a/config/openim-msgtransfer.yml b/config/openim-msgtransfer.yml index c6ea06803..972a378b7 100644 --- a/config/openim-msgtransfer.yml +++ b/config/openim-msgtransfer.yml @@ -1,5 +1,5 @@ prometheus: - # Enable or disable Prometheus monitoring + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # autoSetPorts indicates whether to automatically set the ports autoSetPorts: true diff --git a/config/openim-push.yml b/config/openim-push.yml index 58784f13d..ab65a2eee 100644 --- a/config/openim-push.yml +++ b/config/openim-push.yml @@ -28,7 +28,7 @@ circuitBreaker: request: 500 # Request threshold; circuit breaker evaluation occurs when reached prometheus: - # Enable or disable Prometheus monitoring + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: false # List of ports that Prometheus listens on; these must match the number of rpc.ports to ensure correct monitoring setup # It will only take effect when autoSetPorts is set to false. diff --git a/config/openim-rpc-auth.yml b/config/openim-rpc-auth.yml index 09ceef0f4..e1c359120 100644 --- a/config/openim-rpc-auth.yml +++ b/config/openim-rpc-auth.yml @@ -11,7 +11,7 @@ rpc: ports: prometheus: - # Enable or disable Prometheus monitoring + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # List of ports that Prometheus listens on; these must match the number of rpc.ports to ensure correct monitoring setup # It will only take effect when autoSetPorts is set to false. diff --git a/config/openim-rpc-conversation.yml b/config/openim-rpc-conversation.yml index 1135ffe6e..f07710ba7 100644 --- a/config/openim-rpc-conversation.yml +++ b/config/openim-rpc-conversation.yml @@ -11,7 +11,7 @@ rpc: ports: prometheus: - # Enable or disable Prometheus monitoring + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # List of ports that Prometheus listens on; these must match the number of rpc.ports to ensure correct monitoring setup # It will only take effect when autoSetPorts is set to false. diff --git a/config/openim-rpc-friend.yml b/config/openim-rpc-friend.yml index 1135ffe6e..f07710ba7 100644 --- a/config/openim-rpc-friend.yml +++ b/config/openim-rpc-friend.yml @@ -11,7 +11,7 @@ rpc: ports: prometheus: - # Enable or disable Prometheus monitoring + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # List of ports that Prometheus listens on; these must match the number of rpc.ports to ensure correct monitoring setup # It will only take effect when autoSetPorts is set to false. diff --git a/config/openim-rpc-group.yml b/config/openim-rpc-group.yml index 154b149e1..20ac70af2 100644 --- a/config/openim-rpc-group.yml +++ b/config/openim-rpc-group.yml @@ -11,7 +11,7 @@ rpc: ports: prometheus: - # Enable or disable Prometheus monitoring + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # List of ports that Prometheus listens on; these must match the number of rpc.ports to ensure correct monitoring setup # It will only take effect when autoSetPorts is set to false. diff --git a/config/openim-rpc-msg.yml b/config/openim-rpc-msg.yml index e05eeb7e4..d3fadb941 100644 --- a/config/openim-rpc-msg.yml +++ b/config/openim-rpc-msg.yml @@ -11,7 +11,7 @@ rpc: ports: prometheus: - # Enable or disable Prometheus monitoring + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # List of ports that Prometheus listens on; these must match the number of rpc.ports to ensure correct monitoring setup # It will only take effect when autoSetPorts is set to false. diff --git a/config/openim-rpc-third.yml b/config/openim-rpc-third.yml index f6fbee695..29f05a027 100644 --- a/config/openim-rpc-third.yml +++ b/config/openim-rpc-third.yml @@ -11,7 +11,7 @@ rpc: ports: prometheus: - # Enable or disable Prometheus monitoring + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # List of ports that Prometheus listens on; these must match the number of rpc.ports to ensure correct monitoring setup # It will only take effect when autoSetPorts is set to false. diff --git a/config/openim-rpc-user.yml b/config/openim-rpc-user.yml index c46db7f37..9b16b85ec 100644 --- a/config/openim-rpc-user.yml +++ b/config/openim-rpc-user.yml @@ -11,7 +11,7 @@ rpc: ports: prometheus: - # Whether to enable prometheus + # Enable Prometheus metrics exposure for this service; set to true to allow scraping. enable: true # Prometheus listening ports, must be consistent with the number of rpc.ports # It will only take effect when autoSetPorts is set to false. diff --git a/config/prometheus.yml b/config/prometheus.yml index 0b13326d1..68a9e7c45 100644 --- a/config/prometheus.yml +++ b/config/prometheus.yml @@ -1,35 +1,34 @@ -# my global config +# Global Prometheus runtime settings. global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. - # scrape_timeout is set to the global default (10s). + # scrape_timeout defaults to 10s unless overridden in a specific scrape job. -# Alertmanager configuration +# Alertmanager endpoints that receive alert events from Prometheus. alerting: alertmanagers: - static_configs: - - targets: [127.0.0.1:19093] + - targets: [127.0.0.1:19093] # Alertmanager address in host:port format. -# Load rules once and periodically evaluate them according to the global evaluation_interval. +# Rule files loaded by Prometheus. rule_files: - - instance-down-rules.yml + - instance-down-rules.yml # Default OpenIM alert rules; add more files here if needed. # - first_rules.yml # - second_rules.yml -# A scrape configuration containing exactly one endpoint to scrape: -# Here it's Prometheus itself. +# Scrape jobs used to collect infrastructure and OpenIM service metrics. scrape_configs: - # The job name is added as a label "job=job_name" to any timeseries scraped from this config. - # Monitored information captured by prometheus - - # prometheus fetches application services + # The job_name value is attached as the "job" label in collected time series. - job_name: node_exporter static_configs: - - targets: [ 127.0.0.1:19100 ] + - targets: [ 127.0.0.1:19100 ] # node_exporter endpoint for host CPU, memory, disk, and network metrics. + + # OpenIM services are discovered dynamically from the admin API. + # For multi-host deployments, replace 127.0.0.1 with a reachable internal address. - job_name: openimserver-openim-api http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/api" + - url: "http://127.0.0.1:10002/prometheus_discovery/api" # Service discovery endpoint for OpenIM API instances. # static_configs: # - targets: [ 127.0.0.1:12002 ] # labels: @@ -37,7 +36,7 @@ scrape_configs: - job_name: openimserver-openim-msggateway http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/msg_gateway" + - url: "http://127.0.0.1:10002/prometheus_discovery/msg_gateway" # Service discovery endpoint for msggateway instances. # static_configs: # - targets: [ 127.0.0.1:12140 ] # # - targets: [ 127.0.0.1:12140, 127.0.0.1:12141, 127.0.0.1:12142, 127.0.0.1:12143, 127.0.0.1:12144, 127.0.0.1:12145, 127.0.0.1:12146, 127.0.0.1:12147, 127.0.0.1:12148, 127.0.0.1:12149, 127.0.0.1:12150, 127.0.0.1:12151, 127.0.0.1:12152, 127.0.0.1:12153, 127.0.0.1:12154, 127.0.0.1:12155 ] @@ -46,7 +45,7 @@ scrape_configs: - job_name: openimserver-openim-msgtransfer http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/msg_transfer" + - url: "http://127.0.0.1:10002/prometheus_discovery/msg_transfer" # Service discovery endpoint for msgtransfer instances. # static_configs: # - targets: [ 127.0.0.1:12020, 127.0.0.1:12021, 127.0.0.1:12022, 127.0.0.1:12023, 127.0.0.1:12024, 127.0.0.1:12025, 127.0.0.1:12026, 127.0.0.1:12027 ] # # - targets: [ 127.0.0.1:12020, 127.0.0.1:12021, 127.0.0.1:12022, 127.0.0.1:12023, 127.0.0.1:12024, 127.0.0.1:12025, 127.0.0.1:12026, 127.0.0.1:12027, 127.0.0.1:12028, 127.0.0.1:12029, 127.0.0.1:12030, 127.0.0.1:12031, 127.0.0.1:12032, 127.0.0.1:12033, 127.0.0.1:12034, 127.0.0.1:12035 ] @@ -55,7 +54,7 @@ scrape_configs: - job_name: openimserver-openim-push http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/push" + - url: "http://127.0.0.1:10002/prometheus_discovery/push" # Service discovery endpoint for push service instances. # static_configs: # - targets: [ 127.0.0.1:12170, 127.0.0.1:12171, 127.0.0.1:12172, 127.0.0.1:12173, 127.0.0.1:12174, 127.0.0.1:12175, 127.0.0.1:12176, 127.0.0.1:12177 ] ## - targets: [ 127.0.0.1:12170, 127.0.0.1:12171, 127.0.0.1:12172, 127.0.0.1:12173, 127.0.0.1:12174, 127.0.0.1:12175, 127.0.0.1:12176, 127.0.0.1:12177, 127.0.0.1:12178, 127.0.0.1:12179, 127.0.0.1:12180, 127.0.0.1:12182, 127.0.0.1:12183, 127.0.0.1:12184, 127.0.0.1:12185, 127.0.0.1:12186 ] @@ -64,7 +63,7 @@ scrape_configs: - job_name: openimserver-openim-rpc-auth http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/auth" + - url: "http://127.0.0.1:10002/prometheus_discovery/auth" # Service discovery endpoint for auth RPC instances. # static_configs: # - targets: [ 127.0.0.1:12200 ] # labels: @@ -72,7 +71,7 @@ scrape_configs: - job_name: openimserver-openim-rpc-conversation http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/conversation" + - url: "http://127.0.0.1:10002/prometheus_discovery/conversation" # Service discovery endpoint for conversation RPC instances. # static_configs: # - targets: [ 127.0.0.1:12220 ] # labels: @@ -80,7 +79,7 @@ scrape_configs: - job_name: openimserver-openim-rpc-friend http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/friend" + - url: "http://127.0.0.1:10002/prometheus_discovery/friend" # Service discovery endpoint for friend RPC instances. # static_configs: # - targets: [ 127.0.0.1:12240 ] # labels: @@ -88,7 +87,7 @@ scrape_configs: - job_name: openimserver-openim-rpc-group http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/group" + - url: "http://127.0.0.1:10002/prometheus_discovery/group" # Service discovery endpoint for group RPC instances. # static_configs: # - targets: [ 127.0.0.1:12260 ] # labels: @@ -96,7 +95,7 @@ scrape_configs: - job_name: openimserver-openim-rpc-msg http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/msg" + - url: "http://127.0.0.1:10002/prometheus_discovery/msg" # Service discovery endpoint for msg RPC instances. # static_configs: # - targets: [ 127.0.0.1:12280 ] # labels: @@ -104,7 +103,7 @@ scrape_configs: - job_name: openimserver-openim-rpc-third http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/third" + - url: "http://127.0.0.1:10002/prometheus_discovery/third" # Service discovery endpoint for third-party RPC instances. # static_configs: # - targets: [ 127.0.0.1:12300 ] # labels: @@ -112,8 +111,8 @@ scrape_configs: - job_name: openimserver-openim-rpc-user http_sd_configs: - - url: "http://127.0.0.1:10002/prometheus_discovery/user" + - url: "http://127.0.0.1:10002/prometheus_discovery/user" # Service discovery endpoint for user RPC instances. # static_configs: # - targets: [ 127.0.0.1:12320 ] # labels: -# namespace: default \ No newline at end of file +# namespace: default diff --git a/pkg/common/cmd/api.go b/pkg/common/cmd/api.go index 1356f90d6..8ffce5177 100644 --- a/pkg/common/cmd/api.go +++ b/pkg/common/cmd/api.go @@ -92,7 +92,9 @@ func (a *ApiCmd) runE() error { &a.apiConfig.Notification, a.apiConfig, []string{}, - []string{}, + []string{ + a.apiConfig.Discovery.RpcService.MessageGateway, + }, api.Start, ) } diff --git a/pkg/common/storage/cache/redis/online.go b/pkg/common/storage/cache/redis/online.go index c11473695..d09c44e9a 100644 --- a/pkg/common/storage/cache/redis/online.go +++ b/pkg/common/storage/cache/redis/online.go @@ -112,7 +112,7 @@ func (s *userOnline) SetUserOnline(ctx context.Context, userID string, online, o end ` now := time.Now() - argv := make([]any, 0, 2+len(online)+len(offline)) + argv := make([]any, 0, 4+len(online)+len(offline)) argv = append(argv, int32(s.expire/time.Second), now.Unix(), now.Add(s.expire).Unix(), int32(len(offline))) for _, platformID := range offline { argv = append(argv, platformID) diff --git a/pkg/rpccache/online.go b/pkg/rpccache/online.go index fb7f18393..fa6fc73d3 100644 --- a/pkg/rpccache/online.go +++ b/pkg/rpccache/online.go @@ -214,8 +214,6 @@ func (o *defaultOnlineCache) GetUserOnlinePlatform(ctx context.Context, userID s if err != nil { return nil, err } - tmp := make([]int32, len(platformIDs)) - copy(tmp, platformIDs) return platformIDs, nil } diff --git a/pkg/tools/batcher/batcher.go b/pkg/tools/batcher/batcher.go index 93a31ed8f..bbaa2ca93 100644 --- a/pkg/tools/batcher/batcher.go +++ b/pkg/tools/batcher/batcher.go @@ -151,12 +151,21 @@ func (b *Batcher[T]) Put(ctx context.Context, data *T) error { func (b *Batcher[T]) scheduler() { ticker := time.NewTicker(b.config.interval) + // Track whether b.data was closed by an external caller so the + // cleanup below does not close it a second time. The only routes + // out of this function that leave b.data open are the nil-message + // and ticker paths; the ok == false branch means someone already + // closed the channel, and calling close(b.data) again there would + // panic with "close of closed channel" (#3653). + externallyClosed := false defer func() { ticker.Stop() for _, ch := range b.chArrays { close(ch) } - close(b.data) + if !externallyClosed { + close(b.data) + } b.wait.Done() }() @@ -169,6 +178,7 @@ func (b *Batcher[T]) scheduler() { case data, ok := <-b.data: if !ok { // If the data channel is closed unexpectedly + externallyClosed = true return } if data == nil {