Skip to content

fix for failed to enlarge network buffer error #389

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 1 commit into from
Jul 14, 2017

Conversation

ali-ince
Copy link
Contributor

changed TLSSocketChannel#wrap to agressively do channelWrite upon BUFFER_OVERFLOW. Previously it was failing fast when nothing gets written to the underlying channel which can actually happen on the socket level.

@zhenlineo zhenlineo changed the base branch from 1.1 to 1.4 July 13, 2017 08:46
@zhenlineo
Copy link
Contributor

@ali-ince I retarget this at 1.4 now based on the discussion we had this morning.

Copy link
Contributor

@lutovich lutovich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ali-ince change looks good. One small question.

"new size is however less than the old size, or because the application " +
"buffer size %s is so big that the application data still cannot fit into the " +
"new network buffer.", curNetSize, netSize, buffer.capacity() ) );
while ( cipherOut.hasRemaining() ) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to limit write attempts here? Could execution get stuck here when unable to write?

Copy link
Contributor Author

@ali-ince ali-ince Jul 13, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I also thought on adding a limit but;

If we end up in a position where we could not write anything on a socket, it most probably points a resource starvation on the computer either cpu or network buffers related. In either case the problem lies somewhere else and if we throw some exception here - where theoretically it is not an error - we would break the runtime and eventually become a point of failure.

We also loop on the same condition at line on the same method, so I thought this would also not be a problem.

Does it make sense?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found this argument is fair.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense, and if socket is completely broken exception will be thrown by #channelWrite () method.

@ali-ince ali-ince merged commit 8935542 into neo4j:1.4 Jul 14, 2017
@ali-ince ali-ince deleted the 1.1-tlschannel-enlarge-buffer-fix branch November 27, 2017 10:51
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants