[
https://issues.apache.org/jira/browse/AVRO-697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12933318#action_12933318
]
Patrick Linehan commented on AVRO-697:
--------------------------------------
Shoot. Just noticed that javac in Ant has the "-Werror" flag enabled, so I
won't be able to directly access the signal-related code in sun.misc. This is
actually a completely reasonable setting for javac, but makes this particular
bug a bit trickier.
The workaround I've used for this previously is to use basic reflection and an
InvocationHandler to bypass javac's static checks. If I coded this up, would
it get accepted?
> Install SIGPIPE handler in the Avro tools main method.
> ------------------------------------------------------
>
> Key: AVRO-697
> URL: https://issues.apache.org/jira/browse/AVRO-697
> Project: Avro
> Issue Type: Improvement
> Components: java
> Reporter: Patrick Linehan
>
> The following command should complete quickly, no matter how many records
> "myfile.avro" contains:
> java -jar avro-tools.jar tojson myfile.avro | head
> However, because the tool JAR's main method does not install a SIGPIPE
> handler, this command can be quite slow for large files.
> Suggested fix is to install a handler which calls "System.exit(128 +
> signal.getNumber())" in response to SIGPIPE. Typically the signal number
> ("getNumber") is 13, but no need to hard code it.
> Potential issues:
> * Tests which invoke Main.main() will necessarily force the signal handler to
> be installed. This may be undesirable, as the entire test JVM will be
> "infected" with the handler. Workarounds exist. Does not bother me,
> personally, however.
> * Installing signal handlers generates compile-time warnings, if I'm not
> mistaken. Workarounds exist. Does not bother me, personally, however.
> If this suggestion sounds reasonable, I'll post a patch.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.