Skip to content

JRuby raises SystemCallError instead of Errno::EMSGSIZE #4606

@dwbutler

Description

@dwbutler

Environment

jruby -v
jruby 9.0.5.0 (2.2.3) 2016-01-26 7bee00d Java HotSpot(TM) 64-Bit Server VM 25.74-b02 on 1.8.0_74-b02 +jit [darwin-x86_64]

uname -a
Darwin Davids-MacBook-Pro-6.local 16.4.0 Darwin Kernel Version 16.4.0: Thu Dec 22 22:53:21 PST 2016; root:xnu-3789.41.3~3/RELEASE_X86_64 x86_64

Summary

JRuby raises SystemCallError instead of Errno:: EMSGSIZE when writing too large of a message to a UDP socket. See dwbutler/logstash-logger#128.

Setup

$ nc -l 5228

Ruby script (run from irb):

require 'socket'
socket = UDPSocket.new
socket.connect('127.0.0.1', 5228)
socket.write "1"*100_000

Expected Behavior

MRI 2.4.1:

Errno::EMSGSIZE: Message too long
	from (irb):4:in `write'

Actual Behavior

JRuby 9.0.5.0:

SystemCallError: Unknown error - No message available
	from org/jruby/RubyIO.java:1437:in `write'
	from org/jruby/RubyIO.java:1408:in `write'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions