|
28 | 28 | import org.apache.fluss.client.utils.ClientUtils; |
29 | 29 | import org.apache.fluss.cluster.Cluster; |
30 | 30 | import org.apache.fluss.cluster.ServerNode; |
| 31 | +import org.apache.fluss.cluster.compaction.CompactionInfo; |
| 32 | +import org.apache.fluss.cluster.compaction.CompactionProgress; |
| 33 | +import org.apache.fluss.cluster.compaction.CompactionType; |
31 | 34 | import org.apache.fluss.cluster.rebalance.GoalType; |
32 | 35 | import org.apache.fluss.cluster.rebalance.RebalanceProgress; |
33 | 36 | import org.apache.fluss.cluster.rebalance.ServerTag; |
|
64 | 67 | import org.apache.fluss.rpc.messages.AlterClusterConfigsRequest; |
65 | 68 | import org.apache.fluss.rpc.messages.AlterDatabaseRequest; |
66 | 69 | import org.apache.fluss.rpc.messages.AlterTableRequest; |
| 70 | +import org.apache.fluss.rpc.messages.CancelCompactionRequest; |
67 | 71 | import org.apache.fluss.rpc.messages.CancelRebalanceRequest; |
| 72 | +import org.apache.fluss.rpc.messages.CompactRequest; |
| 73 | +import org.apache.fluss.rpc.messages.CompactResponse; |
68 | 74 | import org.apache.fluss.rpc.messages.CreateAclsRequest; |
69 | 75 | import org.apache.fluss.rpc.messages.CreateDatabaseRequest; |
70 | 76 | import org.apache.fluss.rpc.messages.CreateTableRequest; |
|
77 | 83 | import org.apache.fluss.rpc.messages.DropDatabaseRequest; |
78 | 84 | import org.apache.fluss.rpc.messages.DropTableRequest; |
79 | 85 | import org.apache.fluss.rpc.messages.GetClusterHealthRequest; |
| 86 | +import org.apache.fluss.rpc.messages.GetCompactionRequest; |
80 | 87 | import org.apache.fluss.rpc.messages.GetDatabaseInfoRequest; |
81 | 88 | import org.apache.fluss.rpc.messages.GetKvSnapshotMetadataRequest; |
82 | 89 | import org.apache.fluss.rpc.messages.GetLakeSnapshotRequest; |
|
87 | 94 | import org.apache.fluss.rpc.messages.GetTableStatsRequest; |
88 | 95 | import org.apache.fluss.rpc.messages.GetTableStatsResponse; |
89 | 96 | import org.apache.fluss.rpc.messages.ListAclsRequest; |
| 97 | +import org.apache.fluss.rpc.messages.ListCompactionsRequest; |
90 | 98 | import org.apache.fluss.rpc.messages.ListDatabasesRequest; |
91 | 99 | import org.apache.fluss.rpc.messages.ListDatabasesResponse; |
92 | 100 | import org.apache.fluss.rpc.messages.ListKvSnapshotsRequest; |
|
110 | 118 | import org.apache.fluss.rpc.messages.TableExistsRequest; |
111 | 119 | import org.apache.fluss.rpc.messages.TableExistsResponse; |
112 | 120 | import org.apache.fluss.rpc.protocol.ApiError; |
| 121 | +import org.apache.fluss.rpc.util.CommonRpcMessageUtils; |
113 | 122 | import org.apache.fluss.security.acl.AclBinding; |
114 | 123 | import org.apache.fluss.security.acl.AclBindingFilter; |
115 | 124 | import org.apache.fluss.utils.ExceptionUtils; |
|
129 | 138 | import java.util.concurrent.ConcurrentHashMap; |
130 | 139 | import java.util.concurrent.ExecutorService; |
131 | 140 | import java.util.concurrent.Executors; |
| 141 | +import java.util.stream.Collectors; |
132 | 142 |
|
133 | 143 | import static org.apache.fluss.client.utils.ClientRpcMessageUtils.makeAlterDatabaseRequest; |
134 | 144 | import static org.apache.fluss.client.utils.ClientRpcMessageUtils.makeAlterTableRequest; |
@@ -1142,4 +1152,100 @@ private static void validateRackRequest(List<String> racks, ServerTag serverTag) |
1142 | 1152 | "rack element must not be null, empty, or whitespace-only"); |
1143 | 1153 | } |
1144 | 1154 | } |
| 1155 | + |
| 1156 | + @Override |
| 1157 | + public CompletableFuture<String> compact(CompactionType type) { |
| 1158 | + CompactRequest request = new CompactRequest(); |
| 1159 | + request.setType(checkNotNull(type, "type").name()); |
| 1160 | + return gateway.compact(request).thenApply(CompactResponse::getOperationId); |
| 1161 | + } |
| 1162 | + |
| 1163 | + @Override |
| 1164 | + public CompletableFuture<String> compact(String databaseName, CompactionType type) { |
| 1165 | + CompactRequest request = new CompactRequest(); |
| 1166 | + request.setType(checkNotNull(type, "type").name()); |
| 1167 | + request.setDatabaseName(checkNotNull(databaseName, "databaseName")); |
| 1168 | + return gateway.compact(request).thenApply(CompactResponse::getOperationId); |
| 1169 | + } |
| 1170 | + |
| 1171 | + @Override |
| 1172 | + public CompletableFuture<String> compact(TablePath tablePath, CompactionType type) { |
| 1173 | + CompactRequest request = new CompactRequest(); |
| 1174 | + request.setType(checkNotNull(type, "type").name()); |
| 1175 | + request.setDatabaseName(tablePath.getDatabaseName()).setTableName(tablePath.getTableName()); |
| 1176 | + return gateway.compact(request).thenApply(CompactResponse::getOperationId); |
| 1177 | + } |
| 1178 | + |
| 1179 | + @Override |
| 1180 | + public CompletableFuture<String> compact( |
| 1181 | + TablePath tablePath, String partitionName, CompactionType type) { |
| 1182 | + CompactRequest request = new CompactRequest(); |
| 1183 | + request.setType(checkNotNull(type, "type").name()); |
| 1184 | + request.setDatabaseName(tablePath.getDatabaseName()).setTableName(tablePath.getTableName()); |
| 1185 | + request.setPartitionName(checkNotNull(partitionName, "partitionName")); |
| 1186 | + return gateway.compact(request).thenApply(CompactResponse::getOperationId); |
| 1187 | + } |
| 1188 | + |
| 1189 | + @Override |
| 1190 | + public CompletableFuture<List<CompactionInfo>> listCompactions() { |
| 1191 | + ListCompactionsRequest request = new ListCompactionsRequest(); |
| 1192 | + return gateway.listCompactions(request) |
| 1193 | + .thenApply( |
| 1194 | + response -> |
| 1195 | + response.getCompactionsList().stream() |
| 1196 | + .map(CommonRpcMessageUtils::toCompactionInfo) |
| 1197 | + .collect(Collectors.toList())); |
| 1198 | + } |
| 1199 | + |
| 1200 | + @Override |
| 1201 | + public CompletableFuture<List<CompactionInfo>> listCompactions(String databaseName) { |
| 1202 | + ListCompactionsRequest request = new ListCompactionsRequest(); |
| 1203 | + request.setDatabaseName(checkNotNull(databaseName, "databaseName")); |
| 1204 | + return gateway.listCompactions(request) |
| 1205 | + .thenApply( |
| 1206 | + response -> |
| 1207 | + response.getCompactionsList().stream() |
| 1208 | + .map(CommonRpcMessageUtils::toCompactionInfo) |
| 1209 | + .collect(Collectors.toList())); |
| 1210 | + } |
| 1211 | + |
| 1212 | + @Override |
| 1213 | + public CompletableFuture<List<CompactionInfo>> listCompactions(TablePath tablePath) { |
| 1214 | + ListCompactionsRequest request = new ListCompactionsRequest(); |
| 1215 | + request.setDatabaseName(tablePath.getDatabaseName()).setTableName(tablePath.getTableName()); |
| 1216 | + return gateway.listCompactions(request) |
| 1217 | + .thenApply( |
| 1218 | + response -> |
| 1219 | + response.getCompactionsList().stream() |
| 1220 | + .map(CommonRpcMessageUtils::toCompactionInfo) |
| 1221 | + .collect(Collectors.toList())); |
| 1222 | + } |
| 1223 | + |
| 1224 | + @Override |
| 1225 | + public CompletableFuture<List<CompactionInfo>> listCompactions( |
| 1226 | + TablePath tablePath, String partitionName) { |
| 1227 | + ListCompactionsRequest request = new ListCompactionsRequest(); |
| 1228 | + request.setDatabaseName(tablePath.getDatabaseName()).setTableName(tablePath.getTableName()); |
| 1229 | + request.setPartitionName(checkNotNull(partitionName, "partitionName")); |
| 1230 | + return gateway.listCompactions(request) |
| 1231 | + .thenApply( |
| 1232 | + response -> |
| 1233 | + response.getCompactionsList().stream() |
| 1234 | + .map(CommonRpcMessageUtils::toCompactionInfo) |
| 1235 | + .collect(Collectors.toList())); |
| 1236 | + } |
| 1237 | + |
| 1238 | + @Override |
| 1239 | + public CompletableFuture<CompactionProgress> getCompaction(String operationId) { |
| 1240 | + return gateway.getCompaction(new GetCompactionRequest().setOperationId(operationId)) |
| 1241 | + .thenApply( |
| 1242 | + response -> |
| 1243 | + CommonRpcMessageUtils.toCompactionProgress(response.getProgress())); |
| 1244 | + } |
| 1245 | + |
| 1246 | + @Override |
| 1247 | + public CompletableFuture<Void> cancelCompaction(String operationId) { |
| 1248 | + return gateway.cancelCompaction(new CancelCompactionRequest().setOperationId(operationId)) |
| 1249 | + .thenApply(response -> null); |
| 1250 | + } |
1145 | 1251 | } |
0 commit comments