[ https://issues.apache.org/jira/browse/THRIFT-5093?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christopher Friedt updated THRIFT-5093: --------------------------------------- Summary: TMemoryBuffer: add test cases to clarify behaviour of MemoryPolicy (was: TMemoryBuffer: add test cases to clarify beha) > TMemoryBuffer: add test cases to clarify behaviour of MemoryPolicy > ------------------------------------------------------------------ > > Key: THRIFT-5093 > URL: https://issues.apache.org/jira/browse/THRIFT-5093 > Project: Thrift > Issue Type: Improvement > Components: C++ - Library > Affects Versions: 0.17.0 > Reporter: Christopher Friedt > Priority: Minor > Time Spent: 7h 50m > Remaining Estimate: 0h > > The TMemoryBuffer policy is "OBSERVER" by default in a constructor where an > external pointer to memory, and the size of that memory, are passed in. That > scenario is for externally managed buffers. > As an observer of a buffer, Thrift should only be able to read. However, > previously, `buf.available_read()` would return 0 (and subsequently, > `buf.read()` would fail). > I've added a test as a separate commit, so it's easy to observe the failure > and fix. The current behaviour produces the following failure. > {noformat} > TMemoryBufferTest.cpp(141): error: in "TMemoryBufferTest/test_observer": > check N == buf.available_read() has failed [1024 != 0] > {noformat} > With this change, Thrift applications that use Memory as a transport are able > to read `OBSERVER` buffers as well (as one would expect) and the error above > is mitigated. -- This message was sent by Atlassian Jira (v8.20.1#820001)