v1.10.2
릴리스 날짜: 2026-05-31 - GitHub Release
주요 변경 사항
섹션 제목: “주요 변경 사항”새 기능
섹션 제목: “새 기능”MCP: tool handler용 선택적 HTTP 요청 메타데이터 전달 (#5550)
섹션 제목: “MCP: tool handler용 선택적 HTTP 요청 메타데이터 전달 (#5550)”MCP server에 WithRequestMetadataExtractor 옵션이 추가되었습니다. 이 옵션을 설정하면 HTTP 요청 메타데이터(header, query parameter, path variable)가 추출되어 각 handler의 context.Context에 주입됩니다. handler는 제공되는 context helper로 값을 읽을 수 있습니다.
server := mcp.NewMcpServer(conf, mcp.WithRequestMetadataExtractor(mcp.DefaultRequestMetadataExtractor))
server.AddTool(tool, func(ctx context.Context, req *mcp.ServerRequest) (*mcp.ToolResult, error) { tenantID, _ := mcp.HeaderFromContext(ctx, "X-Tenant-ID") userID, _ := mcp.QueryFromContext(ctx, "user_id") // ...})사용 가능한 helper는 RequestMetadataFromContext, HeaderFromContext, QueryFromContext, PathFromContext입니다. 기존 NewMcpServer(c) 호출에는 영향을 주지 않으므로 완전히 하위 호환됩니다.
버그 수정
섹션 제목: “버그 수정”discov: Go 1.26 etcd URI 호환성 (#5548)
섹션 제목: “discov: Go 1.26 etcd URI 호환성 (#5548)”Go 1.26은 RFC 3986 URI parsing을 엄격히 적용하여 URI authority component의 쉼표로 구분된 host를 거부합니다. 이전 BuildDiscovTarget은 etcd://host1:2379,host2:2379/key 형식의 URI를 생성했으며, 이로 인해 여러 endpoint를 사용하는 etcd 서비스 탐색 기반 gRPC service가 Go 1.26 이상에서 동작하지 않았습니다.
etcd target URL은 이제 host를 path에, etcd key를 query parameter에 넣습니다.
# 이전 형식(Go 1.26에서 동작하지 않음):etcd://host1:2379,host2:2379/my-service-key
# 변경 후(RFC 3986 준수, 모든 Go 버전에서 동작):etcd:///host1:2379,host2:2379?key=my-service-keydiscov: 중복 etcd PUT event의 무제한 메모리 증가 (#5580)
섹션 제목: “discov: 중복 etcd PUT event의 무제한 메모리 증가 (#5580)”장기간 실행되는 zRPC service에서 메모리가 계속 증가하던 두 가지 문제를 수정했습니다.
- 중복
OnAdd호출:handleWatchEvents는 lease refresh나 watch reconnect처럼 값이 바뀌지 않은 경우에도 모든 etcdPUTevent에서OnAdd를 호출했습니다. 이제 중복 PUT을 건너뛰고, 값이 변경되면 listener 상태를 일관되게 유지하도록OnDelete(old)다음에OnAdd(new)를 호출합니다. addKv의 무제한 slice 증가: key를 내부container.valuesslice에 무조건 추가하여 하나의 etcd key가 수천 개의 중복 항목을 쌓을 수 있었습니다.addKv는 이제 완전히 중복된 항목을 즉시 건너뛰고 key가 새 server address로 이동하면 오래된 항목을 정리합니다.
새 기여자
섹션 제목: “새 기여자”- @caltechustc 님이 #5596에서 첫 기여를 했습니다.
전체 변경 로그: https://github.com/zeromicro/go-zero/compare/v1.10.1…v1.10.2