loon-hejw opened a new pull request, #252:
URL: https://github.com/apache/skywalking-go/pull/252

   ## Why
   
   Go 1.25 and Go 1.26 can build the agent at `754482220284`, but the existing
   plugin runner and gRPC instrumentation leave several compatibility gaps:
   
   - Docker Compose releases newer than v2 are rejected by the scenario runner.
   - `go mod tidy` can rewrite a generated scenario module to `go 1.25.0` or
     `go 1.26.0` while the generated workspace remains on `go 1.25` or `go 
1.26`.
   - gRPC v1.81.1 introduces the split genproto RPC module and passes
     `*transport.ServerStream` to server internals. The current plugin asserts
     `*transport.Stream`, causing an intercepted panic and fragmented server
     traces. Unary `SendResponse` spans are also skipped for the new stream 
type.
   
   ## What changed
   
   - Add Go 1.25/1.26 Gin and gRPC plugin matrices.
   - Accept numeric Docker Compose major versions >= 2.
   - Refresh the generated `go.work` after `go mod tidy`.
   - Move the root monolithic genproto dependency to the first post-split 
version.
   - Match gRPC server streams through their stable `Method` and `Context`
     contract instead of a concrete internal type.
   - Add focused runner and gRPC interceptor regression tests.
   
   ## Validation
   
   - `go test -race ./plugins/grpc/... ./test/plugins/runner-helper/... 
./tools/go-agent/instrument/...`
   - `go test ./...`
   - Go 1.25.6 and Go 1.26.5 Agent builds for `linux/arm64`
   - Official plugin scenarios:
     - Gin v1.10.1: Go 1.25 and Go 1.26
     - native HTTP: Go 1.25 and Go 1.26
     - gRPC v1.81.1: Go 1.25 and Go 1.26, including unary and all streaming 
modes
     - Toolkit Trace/Log/Metric activation: Go 1.25 and Go 1.26
     - cross-goroutine context: Go 1.25 and Go 1.26
   
   The baseline gRPC reproduction logs:
   
   ```text
   interface conversion: interface {} is *transport.ServerStream,
   not *transport.Stream
   ```
   
   The process survives because the agent recovers the interceptor panic, but 
the
   server streaming trace is split into orphan segments. Both patched Go 
versions
   pass the strict scenario validator without the panic.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to