snapshot of https://github.com/seaweedfs/seaweedfs.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
go: build dev binaries / cleanup (push) Successful in 4s
Codespell / Check for spelling errors (push) Failing after 3s
docker: build dev containers / build-rust-binaries (amd64, x86_64-unknown-linux-musl) (push) Failing after 3s
docker: build dev containers / build-dev-containers (push) Has been skipped
docker: build dev containers / build-rust-binaries (arm64, true, aarch64-unknown-linux-musl) (push) Failing after 3s
End to End / FUSE Mount (push) Failing after 2s
EC Integration Tests / EC Integration Tests (push) Failing after 30s
FUSE DLM Integration Tests / FUSE DLM Integration Tests (push) Failing after 3s
FUSE Volume Server Failover Tests / FUSE Volume Server Failover (push) Failing after 3s
FUSE Integration Tests / FUSE Integration Testing (push) Failing after 2s
FUSE P2P Peer Chunk Sharing Integration Tests / FUSE P2P Peer Chunk Sharing (push) Failing after 3s
go: build binary / Go Vet (push) Failing after 2s
go: build binary / Go Vet 32-bit (push) Failing after 3s
go: build binary / Build (push) Failing after 4s
go: build binary / Build cross-platform (freebsd/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (darwin/arm64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/arm64) (push) Failing after 3s
go: build binary / Test (push) Failing after 2s
go: build binary / Test 32-bit (push) Failing after 3s
helm: lint and test charts / lint-test (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (11) (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (17) (push) Failing after 3s
go: build dev binaries / build_dev_linux_windows (amd64, linux) (push) Failing after 2s
go: build dev binaries / build_dev_linux_windows (amd64, windows) (push) Failing after 3s
go: build dev binaries / build_dev_darwin (amd64, darwin) (push) Has been skipped
go: build dev binaries / build_dev_darwin (arm64, darwin) (push) Has been skipped
Java Client Unit Tests / Java Unit Tests (11) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (17) (push) Failing after 2s
Java Client Unit Tests / Java Unit Tests (21) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (8) (push) Failing after 3s
Kafka Quick Test (Load Test with Schema Registry) / Kafka Client Load Test (Quick) (push) Failing after 3s
Kafka Gateway Tests / Kafka Unit Tests (unit-tests-1) (push) Failing after 11s
Kafka Gateway Tests / Kafka Integration Tests (Critical) (integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka End-to-End Tests (with SMQ) (e2e-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Consumer Group Tests (Highly Isolated) (consumer-group-1) (push) Failing after 2s
Kafka Gateway Tests / Kafka Client Compatibility (with SMQ) (client-compat-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka SMQ Integration Tests (Full Stack) (smq-integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Protocol Tests (Isolated) (protocol-1) (push) Failing after 3s
KMS Tests / KMS Provider Integration Tests (push) Failing after 2s
KMS Tests / S3 KMS End-to-End Tests (push) Failing after 3s
Master Cold Start Tests / Master Cold Start Tests (push) Failing after 4s
Metadata Subscribe Integration Tests / Metadata Subscribe Integration Tests (push) Failing after 3s
Multi-Master Tests / Multi-Master Failover Tests (push) Failing after 3s
Performance / CPU and Heap Profile (push) Failing after 2s
Performance / S3 Read/Write Benchmark (rust volume) (push) Failing after 3s
pjdfstest POSIX Compliance / pjdfstest (push) Failing after 2s
Plugin Worker Integration Tests / Plugin Worker: erasure_coding (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: vacuum (push) Failing after 3s
Rust Volume Server Tests / Rust Integration Tests (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 1) (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 1) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 3) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Distributed Tests (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Performance Tests (push) Failing after 3s
Performance / Throughput Benchmark (go volume) (push) Failing after 3s
Performance / Throughput Benchmark (rust volume) (push) Failing after 2s
Performance / S3 Read/Write Benchmark (go volume) (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: volume_balance (push) Failing after 3s
PostgreSQL Gateway Tests / PostgreSQL Basic Tests (push) Failing after 3s
Rust Volume Server Tests / Rust Unit Tests (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 3) (push) Failing after 3s
Rust Plugin Worker Tests / Rust Plugin Worker Build and Unit Tests (push) Failing after 3s
rust: build dev volume server binaries / cleanup (push) Successful in 3s
S3 ETag and ACL Tests / S3 ETag + ACL Integration Tests (push) Failing after 3s
S3 IAM Integration Tests / IAM Unit Tests (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (advanced) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (basic) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (group) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (policy-enforcement) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (sts) (push) Failing after 4s
S3 Keycloak Integration Tests / S3 Keycloak Integration Tests (push) Failing after 3s
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.11) (push) Failing after 3s
S3 PyArrow Parquet Tests / Go Unit Tests (Implicit Directory) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.12) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-amd64, x86_64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-arm64, aarch64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-linux (linux-amd64, x86_64-unknown-linux-gnu) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.9) (push) Has been cancelled
S3 Proxy Signature Tests / S3 Proxy Signature Verification Tests (push) Has been cancelled
S3 SDK V2 Route Disambiguation Tests / S3 SDK V2 Routing Tests (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (quick) (push) Has been cancelled
S3 SSE Tests / S3 SSE Compatibility Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Metadata Persistence Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Copy Operations Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Multipart Upload Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Performance Test (push) Has been cancelled
S3 SSE Tests / S3 Volume Encryption Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (comprehensive) (push) Has been cancelled
Spark Integration Tests / Spark Integration Tests (push) Failing after 2s
Telemetry Integration Tests / telemetry-integration-test (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 1) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 1) (push) Failing after 3s
Ceph S3 tests / Basic S3 tests (KV store) (push) Has been cancelled
Ceph S3 tests / S3 Versioning & Object Lock tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Unit Tests (push) Failing after 3s
Ceph S3 tests / S3 CORS tests (push) Has been cancelled
Ceph S3 tests / SeaweedFS Custom S3 Copy tests (push) Has been cancelled
Ceph S3 tests / Basic S3 tests (SQL store) (push) Has been cancelled
test s3 over https using aws-cli / awscli-tests (push) Has been cancelled
TLS Rotation Integration Tests / TLS Rotation Integration Tests (push) Has been cancelled
Vacuum Integration Tests / Vacuum Integration Tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Variables Integration Tests (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (advanced-policy) (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (basic-policy) (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (contextual-policy) (push) Failing after 4s
S3 Policy Integration Tests / Trusted Proxy Detection Tests (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Shell Integration Tests (push) Failing after 3s
Samba on FUSE Integration / samba-integration (push) Failing after 2s
SFTP Integration Tests / SFTP Integration Testing (push) Failing after 3s
terraform: validate and test modules / fmt, validate, plan-level tests (push) Failing after 3s
terraform: validate and test modules / local cluster smoke test (real weed) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 3) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 2) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 2) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 3) (push) Failing after 5s
mount: windows conformance / WinFsp conformance (push) Has been cancelled
mount: windows / Mount on Windows (push) Has been cancelled
Some checks failed
go: build dev binaries / cleanup (push) Successful in 4s
Codespell / Check for spelling errors (push) Failing after 3s
docker: build dev containers / build-rust-binaries (amd64, x86_64-unknown-linux-musl) (push) Failing after 3s
docker: build dev containers / build-dev-containers (push) Has been skipped
docker: build dev containers / build-rust-binaries (arm64, true, aarch64-unknown-linux-musl) (push) Failing after 3s
End to End / FUSE Mount (push) Failing after 2s
EC Integration Tests / EC Integration Tests (push) Failing after 30s
FUSE DLM Integration Tests / FUSE DLM Integration Tests (push) Failing after 3s
FUSE Volume Server Failover Tests / FUSE Volume Server Failover (push) Failing after 3s
FUSE Integration Tests / FUSE Integration Testing (push) Failing after 2s
FUSE P2P Peer Chunk Sharing Integration Tests / FUSE P2P Peer Chunk Sharing (push) Failing after 3s
go: build binary / Go Vet (push) Failing after 2s
go: build binary / Go Vet 32-bit (push) Failing after 3s
go: build binary / Build (push) Failing after 4s
go: build binary / Build cross-platform (freebsd/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (darwin/arm64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/arm64) (push) Failing after 3s
go: build binary / Test (push) Failing after 2s
go: build binary / Test 32-bit (push) Failing after 3s
helm: lint and test charts / lint-test (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (11) (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (17) (push) Failing after 3s
go: build dev binaries / build_dev_linux_windows (amd64, linux) (push) Failing after 2s
go: build dev binaries / build_dev_linux_windows (amd64, windows) (push) Failing after 3s
go: build dev binaries / build_dev_darwin (amd64, darwin) (push) Has been skipped
go: build dev binaries / build_dev_darwin (arm64, darwin) (push) Has been skipped
Java Client Unit Tests / Java Unit Tests (11) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (17) (push) Failing after 2s
Java Client Unit Tests / Java Unit Tests (21) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (8) (push) Failing after 3s
Kafka Quick Test (Load Test with Schema Registry) / Kafka Client Load Test (Quick) (push) Failing after 3s
Kafka Gateway Tests / Kafka Unit Tests (unit-tests-1) (push) Failing after 11s
Kafka Gateway Tests / Kafka Integration Tests (Critical) (integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka End-to-End Tests (with SMQ) (e2e-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Consumer Group Tests (Highly Isolated) (consumer-group-1) (push) Failing after 2s
Kafka Gateway Tests / Kafka Client Compatibility (with SMQ) (client-compat-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka SMQ Integration Tests (Full Stack) (smq-integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Protocol Tests (Isolated) (protocol-1) (push) Failing after 3s
KMS Tests / KMS Provider Integration Tests (push) Failing after 2s
KMS Tests / S3 KMS End-to-End Tests (push) Failing after 3s
Master Cold Start Tests / Master Cold Start Tests (push) Failing after 4s
Metadata Subscribe Integration Tests / Metadata Subscribe Integration Tests (push) Failing after 3s
Multi-Master Tests / Multi-Master Failover Tests (push) Failing after 3s
Performance / CPU and Heap Profile (push) Failing after 2s
Performance / S3 Read/Write Benchmark (rust volume) (push) Failing after 3s
pjdfstest POSIX Compliance / pjdfstest (push) Failing after 2s
Plugin Worker Integration Tests / Plugin Worker: erasure_coding (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: vacuum (push) Failing after 3s
Rust Volume Server Tests / Rust Integration Tests (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 1) (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 1) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 3) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Distributed Tests (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Performance Tests (push) Failing after 3s
Performance / Throughput Benchmark (go volume) (push) Failing after 3s
Performance / Throughput Benchmark (rust volume) (push) Failing after 2s
Performance / S3 Read/Write Benchmark (go volume) (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: volume_balance (push) Failing after 3s
PostgreSQL Gateway Tests / PostgreSQL Basic Tests (push) Failing after 3s
Rust Volume Server Tests / Rust Unit Tests (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 3) (push) Failing after 3s
Rust Plugin Worker Tests / Rust Plugin Worker Build and Unit Tests (push) Failing after 3s
rust: build dev volume server binaries / cleanup (push) Successful in 3s
S3 ETag and ACL Tests / S3 ETag + ACL Integration Tests (push) Failing after 3s
S3 IAM Integration Tests / IAM Unit Tests (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (advanced) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (basic) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (group) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (policy-enforcement) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (sts) (push) Failing after 4s
S3 Keycloak Integration Tests / S3 Keycloak Integration Tests (push) Failing after 3s
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.11) (push) Failing after 3s
S3 PyArrow Parquet Tests / Go Unit Tests (Implicit Directory) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.12) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-amd64, x86_64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-arm64, aarch64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-linux (linux-amd64, x86_64-unknown-linux-gnu) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.9) (push) Has been cancelled
S3 Proxy Signature Tests / S3 Proxy Signature Verification Tests (push) Has been cancelled
S3 SDK V2 Route Disambiguation Tests / S3 SDK V2 Routing Tests (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (quick) (push) Has been cancelled
S3 SSE Tests / S3 SSE Compatibility Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Metadata Persistence Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Copy Operations Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Multipart Upload Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Performance Test (push) Has been cancelled
S3 SSE Tests / S3 Volume Encryption Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (comprehensive) (push) Has been cancelled
Spark Integration Tests / Spark Integration Tests (push) Failing after 2s
Telemetry Integration Tests / telemetry-integration-test (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 1) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 1) (push) Failing after 3s
Ceph S3 tests / Basic S3 tests (KV store) (push) Has been cancelled
Ceph S3 tests / S3 Versioning & Object Lock tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Unit Tests (push) Failing after 3s
Ceph S3 tests / S3 CORS tests (push) Has been cancelled
Ceph S3 tests / SeaweedFS Custom S3 Copy tests (push) Has been cancelled
Ceph S3 tests / Basic S3 tests (SQL store) (push) Has been cancelled
test s3 over https using aws-cli / awscli-tests (push) Has been cancelled
TLS Rotation Integration Tests / TLS Rotation Integration Tests (push) Has been cancelled
Vacuum Integration Tests / Vacuum Integration Tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Variables Integration Tests (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (advanced-policy) (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (basic-policy) (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (contextual-policy) (push) Failing after 4s
S3 Policy Integration Tests / Trusted Proxy Detection Tests (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Shell Integration Tests (push) Failing after 3s
Samba on FUSE Integration / samba-integration (push) Failing after 2s
SFTP Integration Tests / SFTP Integration Testing (push) Failing after 3s
terraform: validate and test modules / fmt, validate, plan-level tests (push) Failing after 3s
terraform: validate and test modules / local cluster smoke test (real weed) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 3) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 2) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 2) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 3) (push) Failing after 5s
mount: windows conformance / WinFsp conformance (push) Has been cancelled
mount: windows / Mount on Windows (push) Has been cancelled
This commit is contained in:
290
test/kafka/kafka-client-loadtest/tools/AdminClientDebugger.java
Normal file
290
test/kafka/kafka-client-loadtest/tools/AdminClientDebugger.java
Normal file
@@ -0,0 +1,290 @@
|
||||
import org.apache.kafka.clients.admin.AdminClient;
|
||||
import org.apache.kafka.clients.admin.AdminClientConfig;
|
||||
import org.apache.kafka.clients.admin.DescribeClusterResult;
|
||||
import org.apache.kafka.common.Node;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
public class AdminClientDebugger {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
String broker = args.length > 0 ? args[0] : "localhost:9093";
|
||||
|
||||
System.out.println("=".repeat(80));
|
||||
System.out.println("KAFKA ADMINCLIENT DEBUGGER");
|
||||
System.out.println("=".repeat(80));
|
||||
System.out.println("Target broker: " + broker);
|
||||
|
||||
// Test 1: Raw socket - capture exact bytes
|
||||
System.out.println("\n" + "=".repeat(80));
|
||||
System.out.println("TEST 1: Raw Socket - Capture ApiVersions Exchange");
|
||||
System.out.println("=".repeat(80));
|
||||
testRawSocket(broker);
|
||||
|
||||
// Test 2: AdminClient with detailed logging
|
||||
System.out.println("\n" + "=".repeat(80));
|
||||
System.out.println("TEST 2: AdminClient with Logging");
|
||||
System.out.println("=".repeat(80));
|
||||
testAdminClient(broker);
|
||||
}
|
||||
|
||||
private static void testRawSocket(String broker) {
|
||||
String[] parts = broker.split(":");
|
||||
String host = parts[0];
|
||||
int port = Integer.parseInt(parts[1]);
|
||||
|
||||
try (Socket socket = new Socket(host, port)) {
|
||||
socket.setSoTimeout(10000);
|
||||
|
||||
InputStream in = socket.getInputStream();
|
||||
OutputStream out = socket.getOutputStream();
|
||||
|
||||
System.out.println("Connected to " + broker);
|
||||
|
||||
// Build ApiVersions request (v4)
|
||||
// Format:
|
||||
// [Size][ApiKey=18][ApiVersion=4][CorrelationId=0][ClientId][TaggedFields]
|
||||
ByteArrayOutputStream requestBody = new ByteArrayOutputStream();
|
||||
|
||||
// ApiKey (2 bytes) = 18
|
||||
requestBody.write(0);
|
||||
requestBody.write(18);
|
||||
|
||||
// ApiVersion (2 bytes) = 4
|
||||
requestBody.write(0);
|
||||
requestBody.write(4);
|
||||
|
||||
// CorrelationId (4 bytes) = 0
|
||||
requestBody.write(new byte[] { 0, 0, 0, 0 });
|
||||
|
||||
// ClientId (compact string) = "debug-client"
|
||||
String clientId = "debug-client";
|
||||
writeCompactString(requestBody, clientId);
|
||||
|
||||
// Tagged fields (empty)
|
||||
requestBody.write(0x00);
|
||||
|
||||
byte[] request = requestBody.toByteArray();
|
||||
|
||||
// Write size
|
||||
ByteBuffer sizeBuffer = ByteBuffer.allocate(4);
|
||||
sizeBuffer.putInt(request.length);
|
||||
out.write(sizeBuffer.array());
|
||||
|
||||
// Write request
|
||||
out.write(request);
|
||||
out.flush();
|
||||
|
||||
System.out.println("\nSENT ApiVersions v4 Request:");
|
||||
System.out.println(" Size: " + request.length + " bytes");
|
||||
hexDump(" Request", request, Math.min(64, request.length));
|
||||
|
||||
// Read response size
|
||||
byte[] sizeBytes = new byte[4];
|
||||
int read = in.read(sizeBytes);
|
||||
if (read != 4) {
|
||||
System.out.println("Failed to read response size (got " + read + " bytes)");
|
||||
return;
|
||||
}
|
||||
|
||||
int responseSize = ByteBuffer.wrap(sizeBytes).getInt();
|
||||
System.out.println("\nRECEIVED Response:");
|
||||
System.out.println(" Size: " + responseSize + " bytes");
|
||||
|
||||
// Read response body
|
||||
byte[] responseBytes = new byte[responseSize];
|
||||
int totalRead = 0;
|
||||
while (totalRead < responseSize) {
|
||||
int n = in.read(responseBytes, totalRead, responseSize - totalRead);
|
||||
if (n == -1) {
|
||||
System.out.println("Unexpected EOF after " + totalRead + " bytes");
|
||||
return;
|
||||
}
|
||||
totalRead += n;
|
||||
}
|
||||
|
||||
System.out.println(" Read complete response: " + totalRead + " bytes");
|
||||
|
||||
// Decode response
|
||||
System.out.println("\nRESPONSE STRUCTURE:");
|
||||
decodeApiVersionsResponse(responseBytes);
|
||||
|
||||
// Try to read more (should timeout or get EOF)
|
||||
System.out.println("\n⏱️ Waiting for any additional data (10s timeout)...");
|
||||
socket.setSoTimeout(10000);
|
||||
try {
|
||||
int nextByte = in.read();
|
||||
if (nextByte == -1) {
|
||||
System.out.println(" Server closed connection (EOF)");
|
||||
} else {
|
||||
System.out.println(" Unexpected data: " + nextByte);
|
||||
}
|
||||
} catch (SocketTimeoutException e) {
|
||||
System.out.println(" Timeout - no additional data");
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
System.out.println("Error: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static void testAdminClient(String broker) {
|
||||
Properties props = new Properties();
|
||||
props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, broker);
|
||||
props.put(AdminClientConfig.CLIENT_ID_CONFIG, "admin-client-debugger");
|
||||
props.put(AdminClientConfig.REQUEST_TIMEOUT_MS_CONFIG, 10000);
|
||||
props.put(AdminClientConfig.DEFAULT_API_TIMEOUT_MS_CONFIG, 10000);
|
||||
|
||||
System.out.println("Creating AdminClient with config:");
|
||||
props.forEach((k, v) -> System.out.println(" " + k + " = " + v));
|
||||
|
||||
try (AdminClient adminClient = AdminClient.create(props)) {
|
||||
System.out.println("AdminClient created");
|
||||
|
||||
// Give the thread time to start
|
||||
Thread.sleep(1000);
|
||||
|
||||
System.out.println("\nCalling describeCluster()...");
|
||||
DescribeClusterResult result = adminClient.describeCluster();
|
||||
|
||||
System.out.println(" Waiting for nodes...");
|
||||
Collection<Node> nodes = result.nodes().get();
|
||||
|
||||
System.out.println("Cluster description retrieved:");
|
||||
System.out.println(" Nodes: " + nodes.size());
|
||||
for (Node node : nodes) {
|
||||
System.out.println(" - Node " + node.id() + ": " + node.host() + ":" + node.port());
|
||||
}
|
||||
|
||||
System.out.println("\n Cluster ID: " + result.clusterId().get());
|
||||
|
||||
Node controller = result.controller().get();
|
||||
if (controller != null) {
|
||||
System.out.println(" Controller: Node " + controller.id());
|
||||
}
|
||||
|
||||
} catch (ExecutionException e) {
|
||||
System.out.println("Execution error: " + e.getCause().getMessage());
|
||||
e.getCause().printStackTrace();
|
||||
} catch (Exception e) {
|
||||
System.out.println("Error: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static void decodeApiVersionsResponse(byte[] data) {
|
||||
int offset = 0;
|
||||
|
||||
try {
|
||||
// Correlation ID (4 bytes)
|
||||
int correlationId = ByteBuffer.wrap(data, offset, 4).getInt();
|
||||
System.out.println(" [Offset " + offset + "] Correlation ID: " + correlationId);
|
||||
offset += 4;
|
||||
|
||||
// Header tagged fields (varint - should be 0x00 for flexible v3+)
|
||||
int taggedFieldsLength = readUnsignedVarint(data, offset);
|
||||
System.out.println(" [Offset " + offset + "] Header Tagged Fields Length: " + taggedFieldsLength);
|
||||
offset += varintSize(data[offset]);
|
||||
|
||||
// Error code (2 bytes)
|
||||
short errorCode = ByteBuffer.wrap(data, offset, 2).getShort();
|
||||
System.out.println(" [Offset " + offset + "] Error Code: " + errorCode);
|
||||
offset += 2;
|
||||
|
||||
// API Keys array (compact array - varint length)
|
||||
int apiKeysLength = readUnsignedVarint(data, offset) - 1; // Compact array: length+1
|
||||
System.out.println(" [Offset " + offset + "] API Keys Count: " + apiKeysLength);
|
||||
offset += varintSize(data[offset]);
|
||||
|
||||
// Show first few API keys
|
||||
System.out.println(" First 5 API Keys:");
|
||||
for (int i = 0; i < Math.min(5, apiKeysLength); i++) {
|
||||
short apiKey = ByteBuffer.wrap(data, offset, 2).getShort();
|
||||
offset += 2;
|
||||
short minVersion = ByteBuffer.wrap(data, offset, 2).getShort();
|
||||
offset += 2;
|
||||
short maxVersion = ByteBuffer.wrap(data, offset, 2).getShort();
|
||||
offset += 2;
|
||||
// Per-element tagged fields
|
||||
int perElementTagged = readUnsignedVarint(data, offset);
|
||||
offset += varintSize(data[offset]);
|
||||
|
||||
System.out.println(" " + (i + 1) + ". API " + apiKey + ": v" + minVersion + "-v" + maxVersion);
|
||||
}
|
||||
|
||||
System.out.println(" ... (showing first 5 of " + apiKeysLength + " APIs)");
|
||||
System.out.println(" Response structure is valid!");
|
||||
|
||||
// Hex dump of first 64 bytes
|
||||
hexDump("\n First 64 bytes", data, Math.min(64, data.length));
|
||||
|
||||
} catch (Exception e) {
|
||||
System.out.println(" Failed to decode at offset " + offset + ": " + e.getMessage());
|
||||
hexDump(" Raw bytes", data, Math.min(128, data.length));
|
||||
}
|
||||
}
|
||||
|
||||
private static int readUnsignedVarint(byte[] data, int offset) {
|
||||
int value = 0;
|
||||
int shift = 0;
|
||||
while (true) {
|
||||
byte b = data[offset++];
|
||||
value |= (b & 0x7F) << shift;
|
||||
if ((b & 0x80) == 0)
|
||||
break;
|
||||
shift += 7;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
private static int varintSize(byte firstByte) {
|
||||
int size = 1;
|
||||
byte b = firstByte;
|
||||
while ((b & 0x80) != 0) {
|
||||
size++;
|
||||
b = (byte) (b << 1);
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
private static void writeCompactString(ByteArrayOutputStream out, String str) {
|
||||
byte[] bytes = str.getBytes();
|
||||
writeUnsignedVarint(out, bytes.length + 1); // Compact string: length+1
|
||||
out.write(bytes, 0, bytes.length);
|
||||
}
|
||||
|
||||
private static void writeUnsignedVarint(ByteArrayOutputStream out, int value) {
|
||||
while ((value & ~0x7F) != 0) {
|
||||
out.write((byte) ((value & 0x7F) | 0x80));
|
||||
value >>>= 7;
|
||||
}
|
||||
out.write((byte) value);
|
||||
}
|
||||
|
||||
private static void hexDump(String label, byte[] data, int length) {
|
||||
System.out.println(label + " (hex dump):");
|
||||
for (int i = 0; i < length; i += 16) {
|
||||
System.out.printf(" %04x ", i);
|
||||
for (int j = 0; j < 16; j++) {
|
||||
if (i + j < length) {
|
||||
System.out.printf("%02x ", data[i + j] & 0xFF);
|
||||
} else {
|
||||
System.out.print(" ");
|
||||
}
|
||||
if (j == 7)
|
||||
System.out.print(" ");
|
||||
}
|
||||
System.out.print(" |");
|
||||
for (int j = 0; j < 16 && i + j < length; j++) {
|
||||
byte b = data[i + j];
|
||||
System.out.print((b >= 32 && b < 127) ? (char) b : '.');
|
||||
}
|
||||
System.out.println("|");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user