Jens-G opened a new pull request, #3872:
URL: https://github.com/apache/thrift/pull/3872

   JIRA: [THRIFT-6280](https://issues.apache.org/jira/browse/THRIFT-6280)
   Client: go
   
   `THeaderTransportFactory` in `lib/go/thrift/header_transport.go` did not 
pass its `TConfiguration` on the way the framed transport factory does:
   - `SetTConfiguration` propagated `f.cfg`, the configuration the factory held 
before, instead of `cfg`, the one it was given. The wrapped factory therefore 
always lagged one update behind.
   - `NewTHeaderTransportFactoryConf` did not propagate the configuration to 
the wrapped factory at all.
   
   ### Change
   
   - `NewTHeaderTransportFactoryConf` and `SetTConfiguration` both propagate 
the given configuration to the wrapped factory, as 
`NewTFramedTransportFactoryConf` and 
`tFramedTransportFactory.SetTConfiguration` do.
   - `GetTransport` also passes the configuration to the transport it is handed 
before the wrapped factory builds on it, as the framed factory does. The 
transport the wrapped factory returns already received it through 
`NewTHeaderTransportConf`.
   - The deprecated `NewTHeaderTransportFactory` uses a configuration marked 
`noPropagation`, so it still passes nothing on.
   
   ### Tests
   
   New cases in `header_transport_test.go`, using a recording factory and 
transport:
   - `TestTHeaderTransportFactoryConfPropagation` checks the configuration:
     - after construction, on the wrapped factory;
     - after `GetTransport`, on the transport handed in, on the wrapped 
transport and on the header transport;
     - after `PropagateTConfiguration(factory, updated)`, on the wrapped 
factory and on the next transport.
   - `TestTHeaderTransportFactoryWithoutConf` checks that the deprecated 
constructor passes nothing on.
   
   Results:
   - **Unmodified library:** three assertions fail. Nothing reached the wrapped 
factory at construction or the transport handed in, and the wrapped factory 
held the old configuration after the update.
   - **Mutations:** removing each of the three changes in turn fails one 
assertion.
   - **Checks:** `go vet -stdmethods=false` and `go test -race ./thrift` pass 
with Go 1.26 and 1.27, and `GOARCH=386` vet and tests pass as well.
   
   The test helpers have names of their own, so this PR does not collide with 
the ones #3861 adds to the same package.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
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