fix: close stream adaptive gaps and switch notify to stario v0.1.1
- make stream fast path honor adaptive soft payload limits end-to-end - split oversized fast-stream payloads into sequential frames before batching - use adaptive soft cap when encoding stream batch payloads - move timeout-like error detection into production code for adaptive tx - tune notify FrameReader read size explicitly to avoid throughput regression - drop local stario replace and depend on released b612.me/stario v0.1.1
This commit is contained in:
+17
-6
@@ -33,6 +33,11 @@ func (s *ServerCommon) OpenStreamLogical(ctx context.Context, logical *LogicalCo
|
||||
if resp.DataID != 0 {
|
||||
req.DataID = resp.DataID
|
||||
}
|
||||
if resp.FastPathVersion != 0 {
|
||||
req.FastPathVersion = resp.FastPathVersion
|
||||
} else {
|
||||
req.FastPathVersion = streamFastPathVersionV1
|
||||
}
|
||||
req.Metadata = mergeStreamMetadata(req.Metadata, resp.Metadata)
|
||||
transport := logical.CurrentTransportConn()
|
||||
stream := newStreamHandle(logical.stopContextSnapshot(), runtime, scope, req, 0, logical, transport, resp.TransportGeneration, serverStreamCloseSender(s, logical, nil), serverStreamResetSender(s, logical, nil), serverStreamDataSender(s, transport), runtime.configSnapshot())
|
||||
@@ -73,6 +78,11 @@ func (s *ServerCommon) OpenStreamTransport(ctx context.Context, transport *Trans
|
||||
if resp.DataID != 0 {
|
||||
req.DataID = resp.DataID
|
||||
}
|
||||
if resp.FastPathVersion != 0 {
|
||||
req.FastPathVersion = resp.FastPathVersion
|
||||
} else {
|
||||
req.FastPathVersion = streamFastPathVersionV1
|
||||
}
|
||||
req.Metadata = mergeStreamMetadata(req.Metadata, resp.Metadata)
|
||||
stream := newStreamHandle(logical.stopContextSnapshot(), runtime, scope, req, 0, logical, transport, resp.TransportGeneration, serverStreamCloseSender(s, logical, transport), serverStreamResetSender(s, logical, transport), serverStreamDataSender(s, transport), runtime.configSnapshot())
|
||||
if err := runtime.register(scope, stream); err != nil {
|
||||
@@ -91,11 +101,12 @@ func serverStreamRequest(runtime *streamRuntime, opt StreamOpenOptions) StreamOp
|
||||
id = runtime.nextID()
|
||||
}
|
||||
return normalizeStreamOpenRequest(StreamOpenRequest{
|
||||
StreamID: id,
|
||||
Channel: opt.Channel,
|
||||
Metadata: cloneStreamMetadata(opt.Metadata),
|
||||
ReadTimeout: opt.ReadTimeout,
|
||||
WriteTimeout: opt.WriteTimeout,
|
||||
StreamID: id,
|
||||
FastPathVersion: streamFastPathVersionCurrent,
|
||||
Channel: opt.Channel,
|
||||
Metadata: cloneStreamMetadata(opt.Metadata),
|
||||
ReadTimeout: opt.ReadTimeout,
|
||||
WriteTimeout: opt.WriteTimeout,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -148,7 +159,7 @@ func serverStreamDataSender(s *ServerCommon, transport *TransportConn) streamDat
|
||||
}
|
||||
}
|
||||
if dataID := stream.dataIDSnapshot(); dataID != 0 {
|
||||
return s.sendFastStreamDataTransport(stream.LogicalConn(), transport, dataID, stream.nextOutboundDataSeq(), chunk)
|
||||
return s.sendFastStreamDataTransport(ctx, stream.LogicalConn(), transport, stream, chunk)
|
||||
}
|
||||
return s.sendEnvelopeTransport(transport, newStreamDataEnvelope(stream.ID(), chunk))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user