|
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.CreateTableFromLakeRequest; |
|
79 | 85 | import org.apache.fluss.rpc.messages.DropDatabaseRequest; |
80 | 86 | import org.apache.fluss.rpc.messages.DropTableRequest; |
81 | 87 | import org.apache.fluss.rpc.messages.GetClusterHealthRequest; |
| 88 | +import org.apache.fluss.rpc.messages.GetCompactionRequest; |
82 | 89 | import org.apache.fluss.rpc.messages.GetDatabaseInfoRequest; |
83 | 90 | import org.apache.fluss.rpc.messages.GetKvSnapshotMetadataRequest; |
84 | 91 | import org.apache.fluss.rpc.messages.GetLakeSnapshotRequest; |
|
89 | 96 | import org.apache.fluss.rpc.messages.GetTableStatsRequest; |
90 | 97 | import org.apache.fluss.rpc.messages.GetTableStatsResponse; |
91 | 98 | import org.apache.fluss.rpc.messages.ListAclsRequest; |
| 99 | +import org.apache.fluss.rpc.messages.ListCompactionsRequest; |
92 | 100 | import org.apache.fluss.rpc.messages.ListDatabasesRequest; |
93 | 101 | import org.apache.fluss.rpc.messages.ListDatabasesResponse; |
94 | 102 | import org.apache.fluss.rpc.messages.ListKvSnapshotsRequest; |
|
114 | 122 | import org.apache.fluss.rpc.messages.TableExistsRequest; |
115 | 123 | import org.apache.fluss.rpc.messages.TableExistsResponse; |
116 | 124 | import org.apache.fluss.rpc.protocol.ApiError; |
| 125 | +import org.apache.fluss.rpc.util.CommonRpcMessageUtils; |
117 | 126 | import org.apache.fluss.security.acl.AclBinding; |
118 | 127 | import org.apache.fluss.security.acl.AclBindingFilter; |
119 | 128 | import org.apache.fluss.utils.ExceptionUtils; |
|
133 | 142 | import java.util.concurrent.ConcurrentHashMap; |
134 | 143 | import java.util.concurrent.ExecutorService; |
135 | 144 | import java.util.concurrent.Executors; |
| 145 | +import java.util.stream.Collectors; |
136 | 146 |
|
137 | 147 | import static org.apache.fluss.client.utils.ClientRpcMessageUtils.makeAlterDatabaseRequest; |
138 | 148 | import static org.apache.fluss.client.utils.ClientRpcMessageUtils.makeAlterTableRequest; |
@@ -1205,4 +1215,100 @@ private static void validateRackRequest(List<String> racks, ServerTag serverTag) |
1205 | 1215 | "rack element must not be null, empty, or whitespace-only"); |
1206 | 1216 | } |
1207 | 1217 | } |
| 1218 | + |
| 1219 | + @Override |
| 1220 | + public CompletableFuture<String> compact(CompactionType type) { |
| 1221 | + CompactRequest request = new CompactRequest(); |
| 1222 | + request.setType(checkNotNull(type, "type").name()); |
| 1223 | + return gateway.compact(request).thenApply(CompactResponse::getOperationId); |
| 1224 | + } |
| 1225 | + |
| 1226 | + @Override |
| 1227 | + public CompletableFuture<String> compact(String databaseName, CompactionType type) { |
| 1228 | + CompactRequest request = new CompactRequest(); |
| 1229 | + request.setType(checkNotNull(type, "type").name()); |
| 1230 | + request.setDatabaseName(checkNotNull(databaseName, "databaseName")); |
| 1231 | + return gateway.compact(request).thenApply(CompactResponse::getOperationId); |
| 1232 | + } |
| 1233 | + |
| 1234 | + @Override |
| 1235 | + public CompletableFuture<String> compact(TablePath tablePath, CompactionType type) { |
| 1236 | + CompactRequest request = new CompactRequest(); |
| 1237 | + request.setType(checkNotNull(type, "type").name()); |
| 1238 | + request.setDatabaseName(tablePath.getDatabaseName()).setTableName(tablePath.getTableName()); |
| 1239 | + return gateway.compact(request).thenApply(CompactResponse::getOperationId); |
| 1240 | + } |
| 1241 | + |
| 1242 | + @Override |
| 1243 | + public CompletableFuture<String> compact( |
| 1244 | + TablePath tablePath, String partitionName, CompactionType type) { |
| 1245 | + CompactRequest request = new CompactRequest(); |
| 1246 | + request.setType(checkNotNull(type, "type").name()); |
| 1247 | + request.setDatabaseName(tablePath.getDatabaseName()).setTableName(tablePath.getTableName()); |
| 1248 | + request.setPartitionName(checkNotNull(partitionName, "partitionName")); |
| 1249 | + return gateway.compact(request).thenApply(CompactResponse::getOperationId); |
| 1250 | + } |
| 1251 | + |
| 1252 | + @Override |
| 1253 | + public CompletableFuture<List<CompactionInfo>> listCompactions() { |
| 1254 | + ListCompactionsRequest request = new ListCompactionsRequest(); |
| 1255 | + return gateway.listCompactions(request) |
| 1256 | + .thenApply( |
| 1257 | + response -> |
| 1258 | + response.getCompactionsList().stream() |
| 1259 | + .map(CommonRpcMessageUtils::toCompactionInfo) |
| 1260 | + .collect(Collectors.toList())); |
| 1261 | + } |
| 1262 | + |
| 1263 | + @Override |
| 1264 | + public CompletableFuture<List<CompactionInfo>> listCompactions(String databaseName) { |
| 1265 | + ListCompactionsRequest request = new ListCompactionsRequest(); |
| 1266 | + request.setDatabaseName(checkNotNull(databaseName, "databaseName")); |
| 1267 | + return gateway.listCompactions(request) |
| 1268 | + .thenApply( |
| 1269 | + response -> |
| 1270 | + response.getCompactionsList().stream() |
| 1271 | + .map(CommonRpcMessageUtils::toCompactionInfo) |
| 1272 | + .collect(Collectors.toList())); |
| 1273 | + } |
| 1274 | + |
| 1275 | + @Override |
| 1276 | + public CompletableFuture<List<CompactionInfo>> listCompactions(TablePath tablePath) { |
| 1277 | + ListCompactionsRequest request = new ListCompactionsRequest(); |
| 1278 | + request.setDatabaseName(tablePath.getDatabaseName()).setTableName(tablePath.getTableName()); |
| 1279 | + return gateway.listCompactions(request) |
| 1280 | + .thenApply( |
| 1281 | + response -> |
| 1282 | + response.getCompactionsList().stream() |
| 1283 | + .map(CommonRpcMessageUtils::toCompactionInfo) |
| 1284 | + .collect(Collectors.toList())); |
| 1285 | + } |
| 1286 | + |
| 1287 | + @Override |
| 1288 | + public CompletableFuture<List<CompactionInfo>> listCompactions( |
| 1289 | + TablePath tablePath, String partitionName) { |
| 1290 | + ListCompactionsRequest request = new ListCompactionsRequest(); |
| 1291 | + request.setDatabaseName(tablePath.getDatabaseName()).setTableName(tablePath.getTableName()); |
| 1292 | + request.setPartitionName(checkNotNull(partitionName, "partitionName")); |
| 1293 | + return gateway.listCompactions(request) |
| 1294 | + .thenApply( |
| 1295 | + response -> |
| 1296 | + response.getCompactionsList().stream() |
| 1297 | + .map(CommonRpcMessageUtils::toCompactionInfo) |
| 1298 | + .collect(Collectors.toList())); |
| 1299 | + } |
| 1300 | + |
| 1301 | + @Override |
| 1302 | + public CompletableFuture<CompactionProgress> getCompaction(String operationId) { |
| 1303 | + return gateway.getCompaction(new GetCompactionRequest().setOperationId(operationId)) |
| 1304 | + .thenApply( |
| 1305 | + response -> |
| 1306 | + CommonRpcMessageUtils.toCompactionProgress(response.getProgress())); |
| 1307 | + } |
| 1308 | + |
| 1309 | + @Override |
| 1310 | + public CompletableFuture<Void> cancelCompaction(String operationId) { |
| 1311 | + return gateway.cancelCompaction(new CancelCompactionRequest().setOperationId(operationId)) |
| 1312 | + .thenApply(response -> null); |
| 1313 | + } |
1208 | 1314 | } |
0 commit comments