This is an automated email from the ASF dual-hosted git repository.
dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new d94c6a1218 [INLONG-12164][Release] Update changes log for the 2.4.0
version (#12171)
d94c6a1218 is described below
commit d94c6a121819c356309878a87aa68c6024d25484
Author: vernedeng <[email protected]>
AuthorDate: Mon Jul 20 11:43:12 2026 +0800
[INLONG-12164][Release] Update changes log for the 2.4.0 version (#12171)
---
CHANGES.md | 130 ++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 69 insertions(+), 61 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index a89c8c8bc1..d1697408d8 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -22,90 +22,98 @@
# of release header or remove the below marker. This file is generated.
# DO NOT REMOVE THIS MARKER; FOR INTERPOLATING CHANGES!-->
-# Release InLong 2.3.0 - Released (as of 2025-10-31)
+# Release InLong 2.4.0 - Released (as of 2026-07-20)
+
### Agent
|ISSUE|Summary|
|:--|:--|
-|[INLONG-11995](https://github.com/apache/inlong/issues/11995)|[Feature][Agent]
The Agent supports parallel creation of Sender connections to the DataProxy,
improving creation efficiency|
-|[INLONG-12003](https://github.com/apache/inlong/issues/12003)|[Feature][Agent]
Added the agent_ext.properties configuration file loading to prevent
personalized configurations from being lost when the agent.properties
configuration file is overwritten during upgrades|
+|[INLONG-11950](https://github.com/apache/inlong/issues/11950)|[Improve][Agent]
Missing case in switch statement|
+|[INLONG-12143](https://github.com/apache/inlong/issues/12143)|[Improve][Agent]
Fix Agent path traversal via unvalidated file source path|
+|[INLONG-12148](https://github.com/apache/inlong/issues/12148)|[Improve][Agent]
Replace /bin/sh -c with ProcessBuilder|
### Dashboard
|ISSUE|Summary|
|:--|:--|
-|[INLONG-11972](https://github.com/apache/inlong/issues/11972)|[Bug][Dashboard]
Occasional audit queries based on group queries have query conditions
including streamid|
-|[INLONG-11897](https://github.com/apache/inlong/issues/11897)|[Bug][Dashboard]
Click on the audit page to query multiple calls to the interface|
-|[INLONG-11894](https://github.com/apache/inlong/issues/11894)|[Feature][Dashboard]
Added group and stream switching on the audit page|
+|[INLONG-12044](https://github.com/apache/inlong/issues/12044)|[Bug][Dashboard]
Agent installation method is missing|
+|[INLONG-12052](https://github.com/apache/inlong/issues/12052)|[Improve][Dashboard]
Optimization of text display in long forms on resource details page|
### Manager
|ISSUE|Summary|
|:--|:--|
-|[INLONG-11997](https://github.com/apache/inlong/issues/11997)|[Feature][Manager]
Add comprehensive audit alert rule management API|
-|[INLONG-11984](https://github.com/apache/inlong/issues/11984)|[Bug][Manager]
Hive table creation statement error|
-|[INLONG-11969](https://github.com/apache/inlong/issues/11969)|[Bug][Manager]
org.apache.flink.client.program.ProgramInvocationException|
-|[INLONG-11891](https://github.com/apache/inlong/issues/11891)|[Improve][Manager]Support
querying topic audit information|
-|[INLONG-11881](https://github.com/apache/inlong/issues/11881)|[Feature][Manager]
Sink source field supports configuring the fuction function|
-|[INLONG-11879](https://github.com/apache/inlong/issues/11879)|[Improve][Manager]
Support parsing transform configuration as transform SQL|
-|[INLONG-11877](https://github.com/apache/inlong/issues/11877)|[Improve][Manager]
Support verifying transform SQL|
-|[INLONG-11875](https://github.com/apache/inlong/issues/11875)|[Bug][Manager]
InLong standalone mode deployment failed|
+|[INLONG-12071](https://github.com/apache/inlong/issues/12071)|[Bug][Manager]
Querying MQ messages returned incorrect results from the LIKE matching operator|
+|[INLONG-12073](https://github.com/apache/inlong/issues/12073)|[Bug][Manager]
No proper error handling when MQ message query thread pool is exhausted|
+|[INLONG-12075](https://github.com/apache/inlong/issues/12075)|[Improve][Manager]
Optimize delete permission for InlongGroup: allow admin or in-charge|
+|[INLONG-12079](https://github.com/apache/inlong/issues/12079)|[Improve][Manager]
The AuditAlertRuleRequest lacks validation for orderField and orderType|
+|[INLONG-12092](https://github.com/apache/inlong/issues/12092)|[Bug][Manager]
Non-template responsible persons can view template information|
+|[INLONG-12094](https://github.com/apache/inlong/issues/12094)|[Bug][Manager]
Ordinary users can create new packages|
+|[INLONG-12098](https://github.com/apache/inlong/issues/12098)|[Improve][Manager]
Improve audit query nodeType mapping completeness and avoid null audit IDs|
+|[INLONG-12100](https://github.com/apache/inlong/issues/12100)|[Improve][Manager]
Fix incorrect spelling: "seperated" → "separated" in multiple files|
+|[INLONG-12102](https://github.com/apache/inlong/issues/12102)|[Bug][Manager]
Incorrect logic in input validation|
+|[INLONG-12104](https://github.com/apache/inlong/issues/12104)|[Bug][Manager]
There is a problem with the deletion process of the data flow group|
+|[INLONG-12115](https://github.com/apache/inlong/issues/12115)|[Improve][Manager]
Set the default value of openapi.auth.enabled to true|
+|[INLONG-12129](https://github.com/apache/inlong/issues/12129)|[Improve][Manager]
Fix the security vulnerability in /api/node/testConnection|
+|[INLONG-12133](https://github.com/apache/inlong/issues/12133)|[Improve][Manager]
Fix the security vulnerability in /api/cluster/testConnection|
+|[INLONG-12135](https://github.com/apache/inlong/issues/12135)|[Improve][Manager]
Enhance the verification against SQL injection|
+|[INLONG-12144](https://github.com/apache/inlong/issues/12144)|[Improve][Manager]
Perform permission verification for the deletion operation of streamsource|
+|[INLONG-12149](https://github.com/apache/inlong/issues/12149)|[Improve][Manager]
Add command whitelist validation in Manager|
+|[INLONG-12153](https://github.com/apache/inlong/issues/12153)|[Improve][Manager]
Add parameter validation for node in clusterController|
+|[INLONG-12156](https://github.com/apache/inlong/issues/12156)|[Improve][Manager]
Add verification of operator permissions during the creation and modification
of tenant roles|
+|[INLONG-12160](https://github.com/apache/inlong/issues/12160)|[Improve][Manager]
Add permission verification when modifying the datanode|
### SDK
|ISSUE|Summary|
|:--|:--|
-|[INLONG-12019](https://github.com/apache/inlong/issues/12019)|[Feature][SDK]
Transformation supports a caching mechanism for processing identical function
parameters within the same SQL statement to reduce redundant computations|
-|[INLONG-12014](https://github.com/apache/inlong/issues/12014)|[Improve][SDK]
Add C++ Dataproxy SDK compile Dockerfile|
-|[INLONG-12012](https://github.com/apache/inlong/issues/12012)|[Improve][SDK]
Change the Python Dataproxy SDK user-defined installation path configuration
method|
-|[INLONG-12010](https://github.com/apache/inlong/issues/12010)|[Bug][SDK]
Python DataProxy SDK reported data is truncated|
-|[INLONG-11974](https://github.com/apache/inlong/issues/11974)|[Feature][Sort]
Upgrade pulsar sdk version to 4.0.3|
-|[INLONG-11976](https://github.com/apache/inlong/issues/11976)|[Improve][SDK]
DataProxy Go SDK support detailed error information in server responses|
-|[INLONG-11961](https://github.com/apache/inlong/issues/11961)|[Feature][SDK]
Transform supports array index access, the WHERE clause supports the LIKE
operator, and the str_to_json function converts KV-format data into JSON format|
-|[INLONG-11954](https://github.com/apache/inlong/issues/11954)|[Bug][SDK]
Potential data race in Golang SDK|
-|[INLONG-11952](https://github.com/apache/inlong/issues/11952)|[Feature][SDK]
Transform handles field-level exceptions by nullifying only the affected field
while preserving the entire record|
-|[INLONG-11926](https://github.com/apache/inlong/issues/11926)|[Feature][SDK]
If SortSDK fails to retrieve GroupId and StreamId from the InLongMsgV0
protocol, it defaults to obtaining them from the unified metadata.|
-|[INLONG-11907](https://github.com/apache/inlong/issues/11907)|[Feature][SDK]
Transform support IN operator|
-|[INLONG-11905](https://github.com/apache/inlong/issues/11905)|[Feature][SDK]
TransformSDK calls the org.reflections library APIs according to version
0.9.12, not version 0.10.2.|
-|[INLONG-11887](https://github.com/apache/inlong/issues/11887)|[Improve][SDK]
Enhance the .so file copy logic of the Python SDK installation script|
-|[INLONG-11873](https://github.com/apache/inlong/issues/11873)|[Feature][SDK]
Support parsing field values from extended parameters|
-|[INLONG-11871](https://github.com/apache/inlong/issues/11871)|[Bug] Go
programs importing the DataProxy SDK may crash with no way to handle the error|
-|[INLONG-11869](https://github.com/apache/inlong/issues/11869)|[Improve][SDK]Obtain
a valid ip during initialization|
-|[INLONG-11865](https://github.com/apache/inlong/issues/11865)|[Improve][SDK]Obtain
a valid local IP address|
-|[INLONG-11863](https://github.com/apache/inlong/issues/11863)|[Improve][SDK]
Enhance Event Attribute Validation and Decoding Logic in SDK|
-|[INLONG-11861](https://github.com/apache/inlong/issues/11861)|[Bug][CI]
Compile dataproxy-sdk fail when there is no .git dictionary in the base path|
+|[INLONG-12016](https://github.com/apache/inlong/issues/12016)|[Improve][SDK]
Add Python Dataproxy SDK compile Dockerfile|
+|[INLONG-12054](https://github.com/apache/inlong/issues/12054)|[Improve][SDK]
Optimize InLong Dataproxy Python SDK dependency version requirements|
+|[INLONG-12056](https://github.com/apache/inlong/issues/12056)|[Feature][SDK]
TransformSDK supports the "not in" operator|
+|[INLONG-12058](https://github.com/apache/inlong/issues/12058)|[Feature][SDK]
Support retry mechanism when "server error" occurs in dataproxy client|
+|[INLONG-12062](https://github.com/apache/inlong/issues/12062)|[Improve][SDK]
Upgrade gnet version in dataproxy go sdk|
+|[INLONG-12090](https://github.com/apache/inlong/issues/12090)|[Improve][SDK]
Build standard Python Dataproxy SDK wheels based on PEP-517|
+|[INLONG-12108](https://github.com/apache/inlong/issues/12108)|[Feature][SDK]
TransformSDK supports decoding and transformation of ProtoBuf description files
with multiple Proto files and multi-level NestedType|
+|[INLONG-12111](https://github.com/apache/inlong/issues/12111)|[Feature][SDK]
ProtoBuf decoding supports parsing map nodes|
+|[INLONG-12113](https://github.com/apache/inlong/issues/12113)|[Feature][SDK]
TransformSDK supports encoding of List, Struct, and Binary type fields for
RowData|
+|[INLONG-12117](https://github.com/apache/inlong/issues/12117)|[Feature][SDK]
Support concat_struct/extract_struct/extract_binary function|
+|[INLONG-12119](https://github.com/apache/inlong/issues/12119)|[Improve][SDK]
Add connection timeout and tolerate partial endpoint failures during client
initialization in DataProxy Go SDK|
+|[INLONG-12120](https://github.com/apache/inlong/issues/12120)|[Improve][SDK]
Optimize worker selection logic in DataProxy Go SDK|
+|[INLONG-12121](https://github.com/apache/inlong/issues/12121)|[Improve][SDK]
Log remote server address on send timeout and server errors in DataProxy Go SDK|
+|[INLONG-12125](https://github.com/apache/inlong/issues/12125)|[Feature][SDK]
Enhance Transform SDK protobuf processing and SQL alias parsing|
+|[INLONG-12141](https://github.com/apache/inlong/issues/12141)|[Bug][SDK]
PbSourceData returns protobuf default values instead of null for unset fields,
causing incorrect data written to Iceberg/Parquet sinks|
+|[INLONG-12158](https://github.com/apache/inlong/issues/12158)|[Feature][SDK]
Support SQL reserved keywords as source field names (backtick-quoted columns)|
### Sort
|ISSUE|Summary|
|:--|:--|
-|[INLONG-12021](https://github.com/apache/inlong/issues/12021)|[Improve][CVE]
Elasticsearch Uncontrolled Resource Consumption Vulnerability|
-|[INLONG-12007](https://github.com/apache/inlong/issues/12007)|[Feature][Sort]
SortPulsar supports topic concatenation|
-|[INLONG-11982](https://github.com/apache/inlong/issues/11982)|[Bug][Sort]
Null Point Exception when changelogAuditKey is not set|
-|[INLONG-11974](https://github.com/apache/inlong/issues/11974)|[Feature][Sort]
Upgrade pulsar sdk version to 4.0.3|
-|[INLONG-11966](https://github.com/apache/inlong/issues/11966)|[Feature][Sort]
The deserialization process supports returning the data byte size in one
rowdata|
-|[INLONG-11958](https://github.com/apache/inlong/issues/11958)|[Feature][Sort]
Allow SortCkafka to filter out data in TransformFunction|
-|[INLONG-11944](https://github.com/apache/inlong/issues/11944)|[Feature][Sort]
TransformFunction: parse_url supports parsing URL query strings|
-|[INLONG-11942](https://github.com/apache/inlong/issues/11942)|[Feature][Sort]
TransformFunction: url_decode supports specifying character sets|
-|[INLONG-11943](https://github.com/apache/inlong/issues/11943)|[Feature][Sort]
TransformFunction: url_encode supports specifying character sets|
-|[INLONG-11939](https://github.com/apache/inlong/issues/11939)|[Feature][Sort]
Support that TaskConfig merge issue preventing configuration changes from
taking effect|
-|[INLONG-11937](https://github.com/apache/inlong/issues/11937)|[Feature][Sort]
Allow SortHttp to filter out data in TransformFunction|
-|[INLONG-11931](https://github.com/apache/inlong/issues/11931)|[Feature][Sort]
Optimize Transform's CSV/KV parsing|
-|[INLONG-11926](https://github.com/apache/inlong/issues/11926)|[Feature][SDK]
If SortSDK fails to retrieve GroupId and StreamId from the InLongMsgV0
protocol, it defaults to obtaining them from the unified metadata.|
-|[INLONG-11911](https://github.com/apache/inlong/issues/11911)|[Feature][Sort]
SortStandalone supports routing PB-format data streams to Kafka and Pulsar|
-|[INLONG-11909](https://github.com/apache/inlong/issues/11909)|[Feature][Sort]
Optimize the generation of tube session key|
-|[INLONG-11902](https://github.com/apache/inlong/issues/11902)|[Feature][Sort]
Allow SortCls to filter out data in TransformFunction|
-|[INLONG-11892](https://github.com/apache/inlong/issues/11892)|[Feature][Sort]
SortStandalone support Negative Acknowledgment mechanism for delivery failures|
-|[INLONG-11888](https://github.com/apache/inlong/issues/11888)|[Feature][Sort]
Sort ElasticSearch supports format conversion and data filtering via Key/Value
data format|
-|[INLONG-11885](https://github.com/apache/inlong/issues/11885)|[Feature][Sort]
Unified Metadata supports delayed and phased decommissioning of metadata
configurations.|
-|[INLONG-11883](https://github.com/apache/inlong/issues/11883)|[Feature][Sort]
Sort CLS supports format conversion and data filtering via Transform Functions.|
+|[INLONG-12065](https://github.com/apache/inlong/issues/12065)|[Improve][Sort]
Sort Format supports outputting complete row information when field parsing
errors occur|
+|[INLONG-12139](https://github.com/apache/inlong/issues/12139)|[Bug][Sort]
SortConfigUtil.checkUpdate throws NPE when DataFlowConfig.version is null,
causing SortConfig reload to permanently stall|
### Audit
|ISSUE|Summary|
|:--|:--|
-|[INLONG-11999](https://github.com/apache/inlong/issues/11999)|[Feature][Audit]
Add alert evaluation and periodic audit check task|
-|[INLONG-11998](https://github.com/apache/inlong/issues/11998)|[Feature][Audit]
Implement APIs for Audit Tool to interact with Manager|
-|[INLONG-12000](https://github.com/apache/inlong/issues/12000)|[Feature][Audit]
Implement API for obtaining audit data in Audit Tool|
-|[INLONG-11998](https://github.com/apache/inlong/issues/11998)|[Feature][Audit]
Implement APIs for Audit Tool to interact with Manager|
-|[INLONG-11993](https://github.com/apache/inlong/issues/11993)|[Improve][Audit]
The audit service supports customizing the cache on and off|
-|[INLONG-11900](https://github.com/apache/inlong/issues/11900)|[Improve][Audit]
In the case of no data, the Audit OpenAPI defaults to 0|
+|[INLONG-12042](https://github.com/apache/inlong/issues/12042)|[Improve][Audit]
Change the name of the audit item BSS to BIFANG|
+|[INLONG-12046](https://github.com/apache/inlong/issues/12046)|[Bug][Audit]
SQL script initialization failed|
+|[INLONG-12060](https://github.com/apache/inlong/issues/12060)|[Improve][Audit]
Optimize audit route management|
+|[INLONG-12064](https://github.com/apache/inlong/issues/12064)|[Bug][Audit]
Static ScheduledExecutorService in PulsarSink causes ClassLoader leaks and
shared state corruption|
+|[INLONG-12067](https://github.com/apache/inlong/issues/12067)|[Improve][Audit]
Optimize the auditing data statistics by day|
+|[INLONG-12069](https://github.com/apache/inlong/issues/12069)|[Improve][Audit]
Fill with zero when there is no data for a given the API of day|
+|[INLONG-12088](https://github.com/apache/inlong/issues/12088)|[Improve][Audit]
Audit routing data source management supports domain names|
+|[INLONG-12096](https://github.com/apache/inlong/issues/12096)|[Improve][Audit]
Optimize function comments related to switching JDBC|
+|[INLONG-12137](https://github.com/apache/inlong/issues/12137)|[Bug][Audit]
Resolve thread-safety issues in the Audit SDK under high concurrency|
+
+### Common
+|ISSUE|Summary|
+|:--|:--|
+|[INLONG-12127](https://github.com/apache/inlong/issues/12127)|[Feature][Common]
Add Json config|
+|[INLONG-12131](https://github.com/apache/inlong/issues/12131)|[Improve][Common]
Fix the issue where jsonconfig cannot be serialized correctly|
+
+### CI
+|ISSUE|Summary|
+|:--|:--|
+|[INLONG-12077](https://github.com/apache/inlong/issues/12077)|[Bug][CI] All
unit tests execute failed|
+|[INLONG-12081](https://github.com/apache/inlong/issues/12081)|[Improve][CI]
Fix github action workflow policy violations|
+|[INLONG-12083](https://github.com/apache/inlong/issues/12083)|[Improve][CI]
Upgrade github actions version and specify permission of actions|
+|[INLONG-12086](https://github.com/apache/inlong/issues/12086)|[Feature][CI]
Upgrade parameters of first interaction|
-### TubeMQ
+### Docker
|ISSUE|Summary|
|:--|:--|
-|[INLONG-11948](https://github.com/apache/inlong/issues/11948)|[Bug][Docker]
TubeMQ image build failed|
+|[INLONG-12048](https://github.com/apache/inlong/issues/12048)|[Improve][Docker]
openjdk:8-jdk is not accessible|