{"push_id":651503485,"size":34,"distinct_size":5,"ref":"refs/heads/http2-stream-as-channel","head":"39c8327b90c0b4f88806d12371cb7ebd19aa1871","before":"964bba11ed610564bbd6ed3d15c48f816dc33272","commits":[{"sha":"aa9d73c6b256db00c28585457b2e5d5393c84cdd","author":{"email":"4271ddcb605987a5ffe2034bfb913089c41dd787@google.com","name":"Eric Anderson"},"message":"Fix SslContextBuilder swapping client and server\n\nThe 'forClient' boolean was swapped to 'forServer' in code review of #3531.\nNot all locations were updated.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/aa9d73c6b256db00c28585457b2e5d5393c84cdd"},{"sha":"477571f7e523c74f174229bda7ca135314bd6d88","author":{"email":"a8c456a6b54fc41d6e961143bac21b6e0910a8a8@apple.com","name":"Scott Mitchell"},"message":"HTTP/2 Flow Controller interface updates\n\nMotivation:\nFlow control is a required part of the HTTP/2 specification but it is currently structured more like an optional item. It must be accessed through the property map which is time consuming and does not represent its required nature. This access pattern does not give any insight into flow control outside of the codec (or flow controller implementation).\n\nModifications:\n1. Create a read only public interface for LocalFlowState and RemoteFlowState.\n2. Add a LocalFlowState localFlowState(); and RemoteFlowState remoteFlowState(); to Http2Stream.\n\nResult:\nFlow control is not part of the Http2Stream interface. This clarifies its responsibility and logical relationship to other interfaces. The flow controller no longer must be acquired though a map lookup.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/477571f7e523c74f174229bda7ca135314bd6d88"},{"sha":"4b13a7c729f66884507c824104a29299e7a4cb95","author":{"email":"c8eac17f7f2759ca4823a048de0f51222946918c@gmail.com","name":"Alwayswithme"},"message":"fix the discardedBytes counting on LineBasedFrameDecoder\n\nMotivation:\n\nThe LineBasedFrameDecoder discardedBytes counting different compare to\nDelimiterBasedFrameDecoder.\n\nModifications:\n\nAdd plus sign\n\nResult:\n\nDiscardedBytes counting correctly","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/4b13a7c729f66884507c824104a29299e7a4cb95"},{"sha":"ed99766c26cf08e3faecf3a80906f5f6d9d49def","author":{"email":"d18be4bb8acd85bed49c989e8f4b08b1455d65d1@google.com","name":"nmittler"},"message":"Always consume bytes for closed HTTP/2 streams.\n\nMotivation:\n\nThe current local flow controller does not guarantee that unconsumed bytes for a closed stream will be restored to the connection window.  This may lead to degradation of the connection window over time.\n\nModifications:\n\nModified DefaultHttp2LocalFlowController to guarantee that any unconsumed bytes are returned to the connection window as soon as the stream is closed. We also immediately consume any bytes when receiving DATA for a closed stream.\n\nResult:\n\nFixes #3668","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/ed99766c26cf08e3faecf3a80906f5f6d9d49def"},{"sha":"ec6cd54f850638510e1fab7e15155b59afd6adf5","author":{"email":"d18be4bb8acd85bed49c989e8f4b08b1455d65d1@google.com","name":"nmittler"},"message":"Ignore frames for streams that may have previously existed.\n\nMotivation:\n\nThe recent PR that discarded the Http2StreamRemovalPolicy causes connection errors when receiving a frame for a stream that no longer exists. We should ignore these frames if we think there's a chance that the stream has existed previously\n\nModifications:\n\nModified the Http2Connection interface to provide a `streamMayHaveExisted` method. Also removed the requireStream() method to identify all of the places in the code that need to be updated.\n\nModified the encoder and decoder to properly handle cases where a stream may have existed but no longer does.\n\nResult:\n\nFixes #3643","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/ec6cd54f850638510e1fab7e15155b59afd6adf5"},{"sha":"a4e9ba5472567de078270be940c2f062e7a5c692","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"[#3652] Improve performance of StringUtil.simpleClassName()\n\nMotivation:\n\nstatic Package getPackage(Class<?> c) uses synchronized block internally.\nThanks to @jingene for the hint and initial report of the issue.\n\nModifications:\n\n-Use simple lastIndexOf(...) and substring for a faster implementation\n\nResult:\n\nNo more lock condition.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/a4e9ba5472567de078270be940c2f062e7a5c692"},{"sha":"9d661802904aa33a78778e3669ce8cda47dc9b3b","author":{"email":"a8c456a6b54fc41d6e961143bac21b6e0910a8a8@apple.com","name":"Scott Mitchell"},"message":"HTTP/2 Flow Controller required memory reduction\n\nMotivation:\nCurrently we allocate the full amount of state for each stream as soon as the stream is created, and keep that state until the stream is GC. The full set of state is only needed when the stream can support flow controlled frames. There is an opportunity to reduce the required amount of memory, and make memory eligible for GC sooner by only allocating what is necessary for flow control stream state.\n\nModifications:\n\nIntroduce objects which require 'less' state for local/remote flow control stream state.\nUse these new objects when streams have been created but will not transition out of idle AND when streams are no longer eligible for flow controlled frame transfer but still must persist in the priority tree.\nResult:\nMemory allocations are reduced to what is actually needed, and memory is made eligible for GC potentially sooner.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/9d661802904aa33a78778e3669ce8cda47dc9b3b"},{"sha":"69558999eb0af94ff587d27797901b5f4126ab79","author":{"email":"a8c456a6b54fc41d6e961143bac21b6e0910a8a8@apple.com","name":"Scott Mitchell"},"message":"Compile error introduced in ee9233d\n\nMotivation:\nCommit ee9233d introduced a compile error in microbench.\n\nModifications:\nFix compile error.\n\nResult:\nCode now builds.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/69558999eb0af94ff587d27797901b5f4126ab79"},{"sha":"c98195714d393a71acd315d989887c97c217d389","author":{"email":"d18be4bb8acd85bed49c989e8f4b08b1455d65d1@google.com","name":"nmittler"},"message":"Optimizing user-defined stream properties.\n\nMotivation:\n\nStreams currently maintain a hash map of user-defined properties, which has been shown to add significant memory overhead as well as being a performance bottleneck for lookup of frequently used properties.\n\nModifications:\n\nModifying the connection/stream to use an array as the storage of user-defined properties, indexed by the class that identifies the index into the array where the property is stored.\n\nResult:\n\nStream processing performance should be improved.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/c98195714d393a71acd315d989887c97c217d389"},{"sha":"f1e122a0c1158b379fc040ef013fe31e707628ac","author":{"email":"a8c456a6b54fc41d6e961143bac21b6e0910a8a8@apple.com","name":"Scott Mitchell"},"message":"ByteString arrayOffset method\n\nMotivation:\nThe ByteString class currently assumes the underlying array will be a complete representation of data. This is limiting as it does not allow a subsection of another array to be used. The forces copy operations to take place to compensate for the lack of API support.\n\nModifications:\n- add arrayOffset method to ByteString\n- modify all ByteString and AsciiString methods that loop over or index into the underlying array to use this offset\n- update all code that uses ByteString.array to ensure it accounts for the offset\n- add unit tests to test the implementation respects the offset\n\nResult:\nByteString and AsciiString can represent a sub region of a byte[].","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/f1e122a0c1158b379fc040ef013fe31e707628ac"},{"sha":"4baea3ea7a04bb0390055b57fe6ca82c58580c1d","author":{"email":"a8c456a6b54fc41d6e961143bac21b6e0910a8a8@apple.com","name":"Scott Mitchell"},"message":"ByteString arrayOffset master branch cleanup\n\nMotivation:\nCommit f1e122a introduced the arrayOffset method into the ByteString class. That means anywhere that used the array() method must also use the arrayOffset() method.\n\nModifications:\n- Find all uses of ByteString.array() and ensure they are taking into account ByteString.arrayOffset().\n\nResult:\nThe correct data from ByteString.array() will be used.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/4baea3ea7a04bb0390055b57fe6ca82c58580c1d"},{"sha":"18ace807b89e58b0c10f1c42385163e895e2df57","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"[#3680] Enabled SecurityManager results in ClassNotFoundError during io.netty.util.NetUtil initialization\n\nMotivation:\n\nWhen a SecurityManager is in place that preven reading the somaxconn file trying to bootstrap a channel later will result in a ClassNotFoundError.\n\nModifications:\n\n- Reading the file in a privileged block.\n\nResult:\n\nNo more ClassNotFoundError when a SecurityManager is in place.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/18ace807b89e58b0c10f1c42385163e895e2df57"},{"sha":"14e1d0f9f76f0d1eb0bff366e16f42752d2699f5","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"[#3662] Fail the connect future on close\n\nMotivation:\n\nBecause of a bug we missed to fail the connect future when doClose() is called. This can lead to a future which is never notified and so may lead to deadlocks in user-programs.\n\nModifications:\n\nCorrectly fail the connect future when doClose() is called and the connection was not established yet.\n\nResult:\n\nConnect future is always notified.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/14e1d0f9f76f0d1eb0bff366e16f42752d2699f5"},{"sha":"e3980a6487ccc96413899670b0d324f371260f84","author":{"email":"489479d8c84bc695c05fd2e995cb24864edad7e2@google.com","name":"Jakob Buchgraber"},"message":"Http2ConnectionHandler should propagate channelActive and channelInactive events.\n\nMotivation:\n\nThe Http2ConnectionHandler incorrectly doesn't propagate channelActive and channelInactive events and thus breaks the pipeline\nfor other ChannelHandler.\n\nModification:\n\n- Add calls to super.channelActive() and super.channelInactive().\n- Remove unused methods.\n\nResult:\n\n- Http2ConnectionHandler can be used with other ChannelHandlers.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/e3980a6487ccc96413899670b0d324f371260f84"},{"sha":"5a9da7c5baec2536d1e3b234849aff464f8f7123","author":{"email":"37d88ce3070b006a51f97799d0d06301c931c8ae@samsung.com","name":"JongYoon Lim"},"message":"Remove duplicate code in ConstantPool class\n\nMotivation:\n\nCurrently, valueOf() and newInstance() use almost same code to create new constant.\nFor maintainability, it's better to share duplicate code among them.\n\nMotification:\n\nAdded new private functions.\n- checkNotNullAndNotEmpty() is for checking whether the name of a constant is null and empty.\n- newConstant0() is for creating a new constant.\n\nResult:\n\n- Compact source code\n- Improvement of maintainability","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/5a9da7c5baec2536d1e3b234849aff464f8f7123"},{"sha":"4c70a99e5a5761d0574f4308be4b6dc371f747df","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"Remove memory copy when extract frame in LengthFieldBasedFrameDecoder\n\nMotivation:\n\nWe are currently doing a memory cop to extract the frame in LengthFieldBasedFrameDecoder which can be eliminated.\n\nModifications:\n\nUse buffer.slice(...).retain() to eliminate the memory copy.\n\nResult:\n\nBetter performance.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/4c70a99e5a5761d0574f4308be4b6dc371f747df"},{"sha":"ba0f920feea02fb13dcb27070ce3018abc505a2f","author":{"email":"a8c456a6b54fc41d6e961143bac21b6e0910a8a8@apple.com","name":"Scott Mitchell"},"message":"HTTP/2 Sending a GO_AWAY with an error code should close conneciton\n\nMotivation:\nThe specification requires that sending a GO_AWAY frame with an error code results in closing the TCP connection https://tools.ietf.org/html/draft-ietf-httpbis-http2-17#section-5.4.1.\n\nModifications:\n- Close the connection after succesfully sending a GO_AWAY.\n\nResult:\nFixes https://github.com/netty/netty/issues/3653","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/ba0f920feea02fb13dcb27070ce3018abc505a2f"},{"sha":"694eab76eb8c0ee365a3c016680c10bfb8df761e","author":{"email":"a8c456a6b54fc41d6e961143bac21b6e0910a8a8@apple.com","name":"Scott Mitchell"},"message":"HTTP/2 Warnings Cleanup\n\nMotiviation:\nThere are a few spots in the HTTP/2 codec where warnings were generated and can be avoided.\n\nModifications:\nClean up the cause of the warnings.\n\nResult:\nLess warnings.","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/694eab76eb8c0ee365a3c016680c10bfb8df761e"},{"sha":"1190a36cb5c9d5958b4fa1f59b398939b1e14b74","author":{"email":"4271ddcb605987a5ffe2034bfb913089c41dd787@google.com","name":"Eric Anderson"},"message":"Remove Http2ServerUpgradeCodec hack\n\nNow it simply supports both Http2MultiplexCodec and\nHttp2ConnectionHandler","distinct":true,"url":"https://api.github.com/repos/ejona86/netty/commits/1190a36cb5c9d5958b4fa1f59b398939b1e14b74"},{"sha":"ca250c8a4b1308fb8ff5263ee03cd1bde761861d","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"Add support for splice(...)\n\nMotivation:\n\nLinux supports splice(...) to transfer data from one filedescriptor to another without\npass data through the user-space. This allows to write high-performant proxy code or to stream\nstuff from the socket directly the the filesystem.\n\nModification:\n\nAdd AbstractEpollStreamChannel.spliceTo(...) method to support splice(...) system call\n\nResult:\n\nSplice is now supported when using the native linux transport.\n\nConflicts:\n\n\ttransport-native-epoll/src/main/java/io/netty/channel/epoll/AbstractEpollStreamChannel.java","distinct":false,"url":"https://api.github.com/repos/ejona86/netty/commits/ca250c8a4b1308fb8ff5263ee03cd1bde761861d"}]}