{"push_id":2037839855,"size":100,"distinct_size":100,"ref":"refs/heads/1.5","head":"c551f04840c9f5c082f97009822c84adf3dea92f","before":"3795190c7b0fc4030e82b91b3ead7ceb9776ede9","commits":[{"sha":"b867423af4913740b9516d34bd231bc3c475a453","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Simplified collectors\n\nCollectors are basically response handlers that are queued at the same\ntime as outbound message in a separate queue. Later, when response\narrives next collector is popped from the queue to handle it.\nCollector interface was quite wide and allowed processing parts of the\nSUCCESS message metadata.\n\nThis commit turns `Collector` into `ResponseHandler` and makes it only\nexpose three methods to handle SUCCESS, FAILURE and RECORD messages.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/b867423af4913740b9516d34bd231bc3c475a453"},{"sha":"932f4e2dcae58be617a97d0ff142cf4f6c860fc3","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Initial attempt to use Netty in connection layer\n\nAdded runtime dependency on netty-all. Introduced a dedicated package\nfor the experimental classes. New `NettyConnection` is able to\nasynchronously send and receive all types of Bolt messages. All\nclasses are completely disconnected from the rest of the codebase.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/932f4e2dcae58be617a97d0ff142cf4f6c860fc3"},{"sha":"7c69ace84aaf880eddbf2209ca5dc247c3c7a73f","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Simple async connection with RUN, PULL_ALL and flush\n\nAdded separate netty based async connection. Made netty channel\nconnector return initialized (after INIT) connection futures.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/7c69ace84aaf880eddbf2209ca5dc247c3c7a73f"},{"sha":"88c79eacc1eacca25775a5a80659c56c7b23fbbe","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Measure average query time, print less to sout","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/88c79eacc1eacca25775a5a80659c56c7b23fbbe"},{"sha":"3e6c981761a7ab760364ff1edae653c374cb4d17","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"SSL support in netty-based connection\n\nMade it possible to pass `SecurityPlan` down to the Netty channel\nbootstrap and add an SSL handler, if needed. This allows running\nencrypted connection from driver to server.\n\nAlso fixed compilation problems related to `Collector` to\n`ResponseHandler` refactoring.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/3e6c981761a7ab760364ff1edae653c374cb4d17"},{"sha":"5930d9389684c04c10ece50b7b84a76d9cbc1053","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Added rudimentary `Session#runAsync()`\n\nIt uses the existing simple async netty-based connection. Introduced a\nsimple async result cursor that only allows iteration over result\nrecords. Also added a listenable future interface and implementation\nwhich is an extension of default java future but allows listener\nregistration. Such future is needed because default java future only\ngives ability to block for the result.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/5930d9389684c04c10ece50b7b84a76d9cbc1053"},{"sha":"1783b574e70f8a414ab59dbf539be0fef1e87b5e","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Initial work on netty channel pooling\n\nIntroduced an async connection pool that keeps pools of netty channels\nby server address. It uses existing netty `FixedChannelPool`\ninternally. Also made `DirectConnectionProvider` use this pool and\nacquire async connections from it.\n\nNew pool tries to expose API similar to exsiting `ConnectionPool`\ninterface except acquisition of connection returns an async connection\nwhich is backed by a `Future<Channel>`.\n\nActive connection tracking does not work because of\n`ChannelInitializer` conflict in the channel pool.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/1783b574e70f8a414ab59dbf539be0fef1e87b5e"},{"sha":"e06f4e10a3be4a33e50e56fa5e8202a06dc79bc3","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Fixed tracking of active connection counts\n\nConnection pool needs to track and expose active network connection\ncount for least-connected load balancing. Tracking and counts were\npreviously broken because of how `ChannelInitializer`s are handled\nby the netty channel pool. Pool installs it's own channel initializer\nwhich got overridden by our own initializer (which adds SSL and some\nchannel attributes). This prevented active channel tracking from\nnoticing a channel creation event and corresponding counter was\nnever decremented.\n\nThis commit makes our channel initializer aware of active connections\ntracker which it notifies after new channel is initialized.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/e06f4e10a3be4a33e50e56fa5e8202a06dc79bc3"},{"sha":"0848bae5bfae48e8c279847fca297130d7d424a8","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Small cleanup of channel future listeners\n\nExtracted all listeners to separate top level classes and removed\nunused methods from `AsyncConnection`.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/0848bae5bfae48e8c279847fca297130d7d424a8"},{"sha":"515ace6987c9965db38be52f3761d29d456803b1","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Send RESET before releasing channel to the pool\n\nTo make sure database cleans up all resources and moves state machine\nto the READY state.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/515ace6987c9965db38be52f3761d29d456803b1"},{"sha":"2fbb56df3b505d6dd0e37ab844d4acb7c6279d2b","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Added async methods to StatementRunner\n\nFixed error handling and added couple more tests\nfor `Session#runAsync()`.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/2fbb56df3b505d6dd0e37ab844d4acb7c6279d2b"},{"sha":"38382eb8b80b14e91e0933e38a4060698b3f6a04","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Fix synchronization when handling records\n\nFor each netty-based connection success, failure and record messages\nare fetched from the network by an event loop thread. They are then\nhanded over to an application/user thread. This commit adds a separate\nrecords handler and makes it synchronized to avoid any visibility\nissues. Also added a simple TCP level back pressure with netty's\nauto-read. When too many records are buffered event loop will not\nread more from the network.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/38382eb8b80b14e91e0933e38a4060698b3f6a04"},{"sha":"6b57d2f5766a37dd48471e8ae75855242a626e47","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Respond to FAILURE with ACK_FAILURE\n\nBolt protocol requires clients to acknowledge failures by sending an\nACK_FAILURE message. Server will respond with IGNORED to every\nsubsequent request before failure is acknowledge. This commit makes\nasync connection eagerly send an ACK_FAILURE after receiving a FAILURE\nmessage. It also improves fatal error handling. All queued response\nhandlers will be failed on fatal error. It's needed because fatal\nerrors are not recoverable and result in channel being closed.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/6b57d2f5766a37dd48471e8ae75855242a626e47"},{"sha":"2867d4a9744633d7d25e27487967e21437ff0c90","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Initial support of async transactions\n\nThis commit makes session able to start transactions asynchronously.\nIt is then possible to run async queries and async commit/rollback\nthose transactions. Async transactions currently do not track their\nstate and simply send issued commands to the server.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/2867d4a9744633d7d25e27487967e21437ff0c90"},{"sha":"c48c68a2c9a8a6d1067371c1e45af929a5b7c32d","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Further improve async transactions support\n\nFixed issues with connection release when async transactions are\ncommitter/rolled back. Fused async transaction functionality into\n`ExplicitTransaction`. Added `Session#closeAsync()`. Moved ACK_FAILURE\nhandling to the place where preceding FAILURE message is received,\nack was previously executed too late after user code.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/c48c68a2c9a8a6d1067371c1e45af929a5b7c32d"},{"sha":"74a7c9013993d456daf792360bc9bea8ecfcc5e4","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Improved ListenableFuture\n\nIt is renamed to `Task` and has a dedicated listener class that\nallows users to consume both result and failure.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/74a7c9013993d456daf792360bc9bea8ecfcc5e4"},{"sha":"f1d872fefa37096aaa253df3addccb046183d783","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Attempt to use futures bottom-up\n\nThis commit makes `Session#runAsync()` implementation use futures\nall the way up. Previously it tried to use `NettyConnection` with\nfuture inside. This was problematic because operations in the\ncorresponding event loop were not properly ordered.\n\nIt also simplifies connection release in result handler. Later now\ndirectly releases connections without additional\nabstraction `ResultResourcesHandler`.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/f1d872fefa37096aaa253df3addccb046183d783"},{"sha":"26f5191a22bb62dd3db8bebc2ed3d46acabf493e","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Small cleanup of InternalStatementResultCursor\n\nMade it take RUN and PULL_ALL handlers as constructor arguments.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/26f5191a22bb62dd3db8bebc2ed3d46acabf493e"},{"sha":"9aeaca2e76aee50aa48ab0bd85dbc178f7a715e2","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Async transactions support based on futures\n\nReimplemented async transactions based on future chaining. This solves\nissues with message queueing. All messages are queued and executed by\nevent loop which guarantees ordering.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/9aeaca2e76aee50aa48ab0bd85dbc178f7a715e2"},{"sha":"7c34fad3163d7e6052fdde3515e48baf2220b68b","author":{"name":"lutovich","email":"902da180848a9fc183506f34dba0b08068d20446@neotechnology.com"},"message":"Removed couple fixed TODOs\n\nThey were boltkit related and fixed by this commit\nhttps://github.com/neo4j-contrib/boltkit/commit/730c6b2c7ec4bc183512111ea7b8ac7663aa363a.","distinct":true,"url":"https://api.github.com/repos/ali-ince/neo4j-java-driver/commits/7c34fad3163d7e6052fdde3515e48baf2220b68b"}]}
{"actor":{"display_login":"ali-ince"}}