Skip to content

Commit 10d7323

Browse files
mergify[bot]sevev
andauthored
[BugFix] Revert PR StarRocks#59009 (backport StarRocks#59815) (StarRocks#59827)
Signed-off-by: sevev <[email protected]> Co-authored-by: zhangqiang <[email protected]>
1 parent bcc26d0 commit 10d7323

File tree

8 files changed

+19
-326
lines changed

8 files changed

+19
-326
lines changed

be/src/common/config.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,6 +1689,4 @@ CONF_mInt64(split_exchanger_buffer_chunk_num, "1000");
16891689

16901690
// when to split hashmap/hashset into two level hashmap/hashset, negative number means use default value
16911691
CONF_mInt64(two_level_memory_threshold, "-1");
1692-
1693-
CONF_mInt32(max_update_tablet_version_internal_ms, "5000");
16941692
} // namespace starrocks::config

be/src/storage/publish_version_manager.cpp

Lines changed: 13 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,12 @@
1515
#include "publish_version_manager.h"
1616

1717
#include "agent/finish_task.h"
18-
#include "agent/master_info.h"
1918
#include "agent/task_signatures_manager.h"
2019
#include "common/config.h"
21-
#include "runtime/client_cache.h"
2220
#include "storage/storage_engine.h"
2321
#include "storage/tablet.h"
2422
#include "storage/tablet_manager.h"
2523
#include "util/cpu_info.h"
26-
#include "util/thrift_rpc_helper.h"
2724

2825
namespace starrocks {
2926
const int MIN_FINISH_PUBLISH_WORKER_COUNT = 8;
@@ -85,8 +82,8 @@ bool PublishVersionManager::_all_task_applied(const TFinishTaskRequest& finish_t
8582
return all_task_applied;
8683
}
8784

88-
size_t PublishVersionManager::_left_task_applied(const TFinishTaskRequest& finish_task_request) {
89-
size_t unapplied_tablet_num = 0;
85+
bool PublishVersionManager::_left_task_applied(const TFinishTaskRequest& finish_task_request) {
86+
bool applied = true;
9087
int64_t signature = finish_task_request.signature;
9188
std::set<std::pair<int64_t, int64_t>> unapplied_tablet;
9289
auto iter = _unapplied_tablet_by_txn.find(signature);
@@ -103,19 +100,19 @@ size_t PublishVersionManager::_left_task_applied(const TFinishTaskRequest& finis
103100
continue;
104101
}
105102
if (tablet->max_readable_version() < request_version) {
106-
unapplied_tablet_num++;
103+
applied = false;
107104
unapplied_tablet.insert(std::make_pair(tablet_id, request_version));
108105
}
109106
VLOG(2) << "tablet: " << tablet->tablet_id() << " max_readable_version is "
110107
<< tablet->max_readable_version() << ", request_version is " << request_version;
111108
}
112109
}
113-
if (unapplied_tablet_num > 0) {
110+
if (!applied) {
114111
iter->second.swap(unapplied_tablet);
115112
} else {
116113
_unapplied_tablet_by_txn.erase(signature);
117114
}
118-
return unapplied_tablet_num;
115+
return applied;
119116
}
120117

121118
void PublishVersionManager::wait_publish_task_apply_finish(std::vector<TFinishTaskRequest> finish_task_requests) {
@@ -124,17 +121,14 @@ void PublishVersionManager::wait_publish_task_apply_finish(std::vector<TFinishTa
124121
if (_all_task_applied(finish_task_requests[i])) {
125122
_finish_task_requests[finish_task_requests[i].signature] = std::move(finish_task_requests[i]);
126123
} else {
127-
FinishTaskInfo info;
128-
info.last_report_time = MonotonicMillis();
129-
info.not_report_tablet_num = finish_task_requests[i].tablet_publish_versions.size();
130-
info.request = std::move(finish_task_requests[i]);
131-
_waitting_finish_task_requests[finish_task_requests[i].signature] = std::move(info);
124+
_waitting_finish_task_requests[finish_task_requests[i].signature] = std::move(finish_task_requests[i]);
132125
}
133126
}
134127
DCHECK(has_pending_task());
135128
}
136129

137-
void PublishVersionManager::update_tablet_version(std::vector<TTabletVersionPair>& tablet_versions) {
130+
void PublishVersionManager::update_tablet_version(TFinishTaskRequest& finish_task_request) {
131+
auto& tablet_versions = finish_task_request.tablet_versions;
138132
for (int32_t i = 0; i < tablet_versions.size(); i++) {
139133
int64_t tablet_id = tablet_versions[i].tablet_id;
140134
TabletSharedPtr tablet = StorageEngine::instance()->tablet_manager()->get_tablet(tablet_id);
@@ -154,7 +148,7 @@ void PublishVersionManager::finish_publish_version_task() {
154148
// submit finish task
155149
st = _finish_publish_version_thread_pool->submit_func(
156150
[this, finish_request = std::move(finish_task_request)]() mutable {
157-
update_tablet_version(finish_request.tablet_versions);
151+
update_tablet_version(finish_request);
158152
#ifndef BE_TEST
159153
finish_task(finish_request);
160154
#endif
@@ -166,12 +160,11 @@ void PublishVersionManager::finish_publish_version_task() {
166160
}
167161

168162
std::vector<int64_t> clear_txn;
169-
for (auto& [signature, finish_task_info] : _waitting_finish_task_requests) {
170-
size_t unapplied_tablet_num = _left_task_applied(finish_task_info.request);
171-
if (unapplied_tablet_num == 0) {
163+
for (auto& [signature, finish_task_request] : _waitting_finish_task_requests) {
164+
if (_left_task_applied(finish_task_request)) {
172165
st = _finish_publish_version_thread_pool->submit_func(
173-
[this, finish_request = std::move(finish_task_info.request)]() mutable {
174-
update_tablet_version(finish_request.tablet_versions);
166+
[this, finish_request = std::move(finish_task_request)]() mutable {
167+
update_tablet_version(finish_request);
175168
#ifndef BE_TEST
176169
finish_task(finish_request);
177170
#endif
@@ -180,41 +173,6 @@ void PublishVersionManager::finish_publish_version_task() {
180173
if (st.ok()) {
181174
erase_waitting_finish_task_signature.emplace_back(signature);
182175
}
183-
} else {
184-
size_t not_report_tablet_num = finish_task_info.not_report_tablet_num;
185-
if (unapplied_tablet_num < not_report_tablet_num &&
186-
MonotonicMillis() - finish_task_info.last_report_time >
187-
config::max_update_tablet_version_internal_ms) {
188-
VLOG(2) << "unapplied_tablet_num: " << unapplied_tablet_num
189-
<< ", not_report_tablet_num: " << not_report_tablet_num
190-
<< ", report_internal_ms: " << MonotonicMillis() - finish_task_info.last_report_time
191-
<< ", allow_internla_ms: " << config::max_update_tablet_version_internal_ms;
192-
193-
finish_task_info.not_report_tablet_num = unapplied_tablet_num;
194-
finish_task_info.last_report_time = MonotonicMillis();
195-
TUpdateTabletVersionRequest update_request;
196-
update_request.__set_backend(finish_task_info.request.backend);
197-
update_request.__set_signature(signature);
198-
update_request.__set_tablet_versions(finish_task_info.request.tablet_versions);
199-
st = _finish_publish_version_thread_pool->submit_func(
200-
[this, request = std::move(update_request)]() mutable {
201-
update_tablet_version(request.tablet_versions);
202-
TNetworkAddress master_addr = get_master_address();
203-
TUpdateTabletVersionResult result;
204-
auto st = ThriftRpcHelper::rpc<FrontendServiceClient>(
205-
master_addr.hostname, master_addr.port,
206-
[&request, &result](FrontendServiceConnection& client) {
207-
client->updateTabletVersion(result, request);
208-
});
209-
if (!st.ok()) {
210-
LOG(WARNING) << "updateTabletVersion failed: " << st
211-
<< ", signature: " << request.signature;
212-
}
213-
});
214-
if (!st.ok()) {
215-
LOG(WARNING) << "submit report tablet version task failed";
216-
}
217-
}
218176
}
219177
}
220178
for (auto& signature : erase_finish_task_signature) {

be/src/storage/publish_version_manager.h

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,33 +27,27 @@ namespace starrocks {
2727

2828
using FinishTaskRequestPtr = std::shared_ptr<TFinishTaskRequest>;
2929

30-
struct FinishTaskInfo {
31-
TFinishTaskRequest request;
32-
int64_t last_report_time;
33-
size_t not_report_tablet_num;
34-
};
35-
3630
class PublishVersionManager {
3731
public:
3832
Status init();
3933
~PublishVersionManager();
4034
void wait_publish_task_apply_finish(std::vector<TFinishTaskRequest> finish_task_requests);
4135
bool has_pending_task() { return !_finish_task_requests.empty() || !_waitting_finish_task_requests.empty(); }
4236
void finish_publish_version_task();
43-
void update_tablet_version(std::vector<TTabletVersionPair>& tablet_versions);
37+
void update_tablet_version(TFinishTaskRequest& finish_task_request);
4438

4539
size_t finish_task_requests_size() { return _finish_task_requests.size(); }
4640
size_t waitting_finish_task_requests_size() { return _waitting_finish_task_requests.size(); }
4741

4842
private:
4943
bool _all_task_applied(const TFinishTaskRequest& finish_task_request);
50-
size_t _left_task_applied(const TFinishTaskRequest& finish_task_request);
44+
bool _left_task_applied(const TFinishTaskRequest& finish_task_request);
5145

5246
private:
5347
mutable std::mutex _lock;
5448

5549
std::map<int64_t, TFinishTaskRequest> _finish_task_requests;
56-
std::map<int64_t, FinishTaskInfo> _waitting_finish_task_requests;
50+
std::map<int64_t, TFinishTaskRequest> _waitting_finish_task_requests;
5751
std::map<int64_t, std::set<std::pair<int64_t, int64_t>>> _unapplied_tablet_by_txn;
5852
std::unique_ptr<ThreadPool> _finish_publish_version_thread_pool;
5953
};

be/test/storage/publish_version_manager_test.cpp

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -237,34 +237,16 @@ TEST_F(PublishVersionManagerTest, test_publish_task) {
237237
_tablet->updates()->stop_apply(true);
238238
auto rs1 = create_rowset(_tablet, keys);
239239
ASSERT_TRUE(_tablet->rowset_commit(3, rs1).ok());
240-
241-
auto tablet1 = create_tablet(rand(), rand());
242-
{
243-
auto rs0 = create_rowset(tablet1, keys);
244-
ASSERT_TRUE(tablet1->rowset_commit(2, rs0).ok());
245-
auto rs1 = create_rowset(tablet1, keys);
246-
ASSERT_TRUE(tablet1->rowset_commit(3, rs1).ok());
247-
}
248-
249240
std::vector<TFinishTaskRequest> finish_task_requests;
250241
auto& finish_task_request = finish_task_requests.emplace_back();
251242
finish_task_request.signature = 2222;
252243
auto& tablet_publish_versions = finish_task_request.tablet_publish_versions;
253-
{
254-
auto& pair1 = tablet_publish_versions.emplace_back();
255-
pair1.__set_tablet_id(_tablet->tablet_id());
256-
pair1.__set_version(3);
257-
258-
auto& pair2 = tablet_publish_versions.emplace_back();
259-
pair2.__set_tablet_id(tablet1->tablet_id());
260-
pair2.__set_version(3);
261-
}
262-
263-
config::max_update_tablet_version_internal_ms = 1000;
244+
auto& pair = tablet_publish_versions.emplace_back();
245+
pair.__set_tablet_id(_tablet->tablet_id());
246+
pair.__set_version(3);
264247
_publish_version_manager->wait_publish_task_apply_finish(std::move(finish_task_requests));
265248
_finish_publish_version_cv.notify_one();
266249

267-
std::this_thread::sleep_for(std::chrono::seconds(2));
268250
ASSERT_EQ(0, _publish_version_manager->finish_task_requests_size());
269251
ASSERT_EQ(1, _publish_version_manager->waitting_finish_task_requests_size());
270252
_tablet->updates()->stop_apply(false);

fe/fe-core/src/main/java/com/starrocks/leader/LeaderImpl.java

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,7 @@
147147
import com.starrocks.thrift.TTableReplicationResponse;
148148
import com.starrocks.thrift.TTabletInfo;
149149
import com.starrocks.thrift.TTabletMeta;
150-
import com.starrocks.thrift.TTabletVersionPair;
151150
import com.starrocks.thrift.TTaskType;
152-
import com.starrocks.thrift.TUpdateTabletVersionRequest;
153-
import com.starrocks.thrift.TUpdateTabletVersionResult;
154151
import com.starrocks.transaction.GlobalTransactionMgr;
155152
import com.starrocks.transaction.PartitionCommitInfo;
156153
import com.starrocks.transaction.TabletCommitInfo;
@@ -1441,95 +1438,4 @@ public TTableReplicationResponse startTableReplication(TTableReplicationRequest
14411438
return response;
14421439
}
14431440
}
1444-
1445-
public TUpdateTabletVersionResult updateTabletVersion(TUpdateTabletVersionRequest request) {
1446-
TUpdateTabletVersionResult result = new TUpdateTabletVersionResult();
1447-
TStatus tStatus = new TStatus(TStatusCode.OK);
1448-
result.setStatus(tStatus);
1449-
if (!GlobalStateMgr.getCurrentState().isLeader()) {
1450-
LOG.warn("current node is not leader, update tablet version failed, signature: {}",
1451-
request.getSignature());
1452-
tStatus.setStatus_code(TStatusCode.CANCELLED);
1453-
tStatus.setError_msgs(Lists.newArrayList("current fe is not leader"));
1454-
result.setStatus(tStatus);
1455-
return result;
1456-
}
1457-
1458-
TBackend tBackend = request.getBackend();
1459-
String host = tBackend.getHost();
1460-
int bePort = tBackend.getBe_port();
1461-
long backendId;
1462-
ComputeNode cn = GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().getBackendWithBePort(host, bePort);
1463-
1464-
if (cn == null) {
1465-
if (RunMode.isSharedDataMode()) {
1466-
cn = GlobalStateMgr.getCurrentState().getNodeMgr().getClusterInfo().getComputeNodeWithBePort(host, bePort);
1467-
}
1468-
if (cn == null) {
1469-
tStatus.setStatus_code(TStatusCode.CANCELLED);
1470-
tStatus.setError_msgs(Lists.newArrayList("backend not exist."));
1471-
LOG.warn("backend does not found. host: {}, be port: {}.", host, bePort);
1472-
result.setStatus(tStatus);
1473-
return result;
1474-
}
1475-
}
1476-
1477-
backendId = cn.getId();
1478-
TabletInvertedIndex tablets = GlobalStateMgr.getCurrentState().getTabletInvertedIndex();
1479-
List<TTabletVersionPair> tabletVersions = request.getTablet_versions();
1480-
List<Long> tabletIds = tabletVersions.stream().map(tv -> tv.tablet_id).collect(Collectors.toList());
1481-
List<Replica> replicas = tablets.getReplicasOnBackendByTabletIds(tabletIds, backendId);
1482-
if (replicas == null) {
1483-
LOG.warn("backend not found or no replicas on backend, backendid={}", backendId);
1484-
tStatus.setStatus_code(TStatusCode.CANCELLED);
1485-
tStatus.setError_msgs(Lists.newArrayList("no replicas on backend"));
1486-
result.setStatus(tStatus);
1487-
return result;
1488-
}
1489-
1490-
List<TabletMeta> tabletMetaList = tablets.getTabletMetaList(tabletIds);
1491-
Long dbId = null;
1492-
Long tableId = null;
1493-
if (tabletMetaList.isEmpty()) {
1494-
tStatus.setStatus_code(TStatusCode.CANCELLED);
1495-
tStatus.setError_msgs(Lists.newArrayList("no tabletMeta found"));
1496-
result.setStatus(tStatus);
1497-
return result;
1498-
}
1499-
for (TabletMeta tabletMeta : tabletMetaList) {
1500-
if (tabletMeta == null || tabletMeta == TabletInvertedIndex.NOT_EXIST_TABLET_META) {
1501-
continue;
1502-
}
1503-
if (dbId == null) {
1504-
dbId = tabletMeta.getDbId();
1505-
}
1506-
if (tableId == null) {
1507-
tableId = tabletMeta.getTableId();
1508-
}
1509-
if (dbId != tabletMeta.getDbId() || tableId != tabletMeta.getTableId()) {
1510-
LOG.warn("Tablets in UpdateTabletVersionRequest from different databases or table");
1511-
tStatus.setStatus_code(TStatusCode.CANCELLED);
1512-
tStatus.setError_msgs(Lists.newArrayList("tablets in request from different db or table"));
1513-
result.setStatus(tStatus);
1514-
return result;
1515-
}
1516-
}
1517-
1518-
Locker locker = new Locker();
1519-
locker.lockTableWithIntensiveDbLock(dbId, tableId, LockType.WRITE);
1520-
try {
1521-
for (int i = 0; i < tabletVersions.size(); i++) {
1522-
TTabletVersionPair tabletVersion = tabletVersions.get(i);
1523-
Replica replica = replicas.get(i);
1524-
if (replica == null) {
1525-
continue;
1526-
}
1527-
replica.updateVersion(tabletVersion.version);
1528-
}
1529-
} finally {
1530-
locker.unLockTableWithIntensiveDbLock(dbId, tableId, LockType.WRITE);
1531-
}
1532-
return result;
1533-
}
1534-
15351441
}

fe/fe-core/src/main/java/com/starrocks/service/FrontendServiceImpl.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,6 @@
352352
import com.starrocks.thrift.TUpdateExportTaskStatusRequest;
353353
import com.starrocks.thrift.TUpdateResourceUsageRequest;
354354
import com.starrocks.thrift.TUpdateResourceUsageResponse;
355-
import com.starrocks.thrift.TUpdateTabletVersionRequest;
356-
import com.starrocks.thrift.TUpdateTabletVersionResult;
357355
import com.starrocks.thrift.TUserPrivDesc;
358356
import com.starrocks.thrift.TVerboseVariableRecord;
359357
import com.starrocks.thrift.TWarehouseInfo;
@@ -3156,11 +3154,6 @@ public TListConnectionResponse listConnections(TListConnectionRequest request) {
31563154
return response;
31573155
}
31583156

3159-
@Override
3160-
public TUpdateTabletVersionResult updateTabletVersion(TUpdateTabletVersionRequest request) {
3161-
return leaderImpl.updateTabletVersion(request);
3162-
}
3163-
31643157
@NotNull
31653158
private static TConnectionInfo getTConnectionInfo(List<String> row) {
31663159
TConnectionInfo tConnectionInfo = new TConnectionInfo();

0 commit comments

Comments
 (0)