Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-64413

ircbot-plugin does not log server errors, and defaults to a name that may be too long

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: In Progress (View Workflow)
    • Priority: Minor
    • Resolution: Unresolved
    • Component/s: ircbot-plugin
    • Labels:
      None
    • Environment:
      ircbot-plugin 2.36 (prototype snapshot)
      ngircd-22-2.1 (old RPM on old system)
    • Similar Issues:

      Description

      While testing recent fixes for the plugin, one of my installations refused to connect to the IRC server:

      2020-12-10 09:38:45.316+0000 [id=45]    INFO    h.p.ircbot.v2.IRCConnection#connect: Connecting to 10.1.2.3:6667 as jenkins-bot using charset UTF-8
      2020-12-10 09:38:45.326+0000 [id=1003]  INFO    org.pircbotx.PircBotX#connect: Connected to server.
      2020-12-10 09:38:45.327+0000 [id=1003]  INFO    org.pircbotx.output.OutputRaw#rawLineNow: NICK jenkins-bot
      2020-12-10 09:38:45.328+0000 [id=1003]  INFO    org.pircbotx.output.OutputRaw#rawLineNow: USER jenkins-bot 8 * :PircBotX 2.0.1, a fork of PircBot, the Java IRC bot - pircbotx.googlecode.com
      2020-12-10 09:38:45.330+0000 [id=1003]  SEVERE  org.pircbotx.PircBotX#startLineProcessing: Exception encountered when reading next line from server
      java.net.SocketException: Connection reset
              at java.net.SocketInputStream.read(SocketInputStream.java:210)
              at java.net.SocketInputStream.read(SocketInputStream.java:141)
              at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
              at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
              at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
              at java.io.InputStreamReader.read(InputStreamReader.java:184)
              at java.io.BufferedReader.fill(BufferedReader.java:161)
              at java.io.BufferedReader.readLine(BufferedReader.java:324)
              at java.io.BufferedReader.readLine(BufferedReader.java:389)
              at org.pircbotx.PircBotX.startLineProcessing(PircBotX.java:250)
              at org.pircbotx.PircBotX.connect(PircBotX.java:236)
              at org.pircbotx.PircBotX.startBot(PircBotX.java:151)
              at hudson.plugins.ircbot.v2.IRCConnection$2.run(IRCConnection.java:221)
      2020-12-10 09:38:45.330+0000 [id=1003]  INFO    org.pircbotx.dcc.DccHandler#close: Terminating all transfers waiting to be accepted
      2020-12-10 09:40:45.117+0000 [id=45]    WARNING h.p.ircbot.v2.IRCConnection#connect: Time out waiting for connecting to irc
      2020-12-10 09:40:45.117+0000 [id=45]    WARNING h.p.im.IMConnectionProvider#create: Could not create IM connection
      hudson.plugins.im.IMException: Connection failed
              at hudson.plugins.ircbot.v2.IRCConnectionProvider.createConnection(IRCConnectionProvider.java:42)
              at hudson.plugins.im.IMConnectionProvider.create(IMConnectionProvider.java:60)
              at hudson.plugins.im.IMConnectionProvider.access$500(IMConnectionProvider.java:17)
              at hudson.plugins.im.IMConnectionProvider$ConnectorRunnable.run(IMConnectionProvider.java:167)
              at java.lang.Thread.run(Thread.java:748)
      2020-12-10 09:40:45.207+0000 [id=45]    INFO    h.p.i.IMConnectionProvider$ConnectorRunnable#run: Reconnect failed. Next connection attempt in 16 minutes
      

      I assumed it was because of VPNs and firewalls enroute so did not drill into it so much, but now re-created the situation from the LAN with the server:

      $ telnet 10.1.2.3 6667
      Trying 10.1.2.3...
      Connected to 10.1.2.3.
      Escape character is '^]'.
      NICK jenkins-bot
      :ngircd.localdomain 432 * jenkins-bot :Nickname too long, max. 9 characters
      USER jenkins-bot
      Connection to 10.1.2.3 closed by foreign host.
      

      Oops, so the name is too long... Would have been nice to see that hint in the stacktrace of the aborted connection attempt!

      The server's config file /etc/ngircd.conf has something to say on this:

              # Maximum length of an user nickname (Default: 9, as in RFC 2812).
              ;MaxNickLength = 9
      

      So there are things to amend in the plugin:
      1) Constrain the default nickname for new installations to 9 chars

      • mention the standard limit in the help message for the nickname field;
      • (optional) pop up a warning for names that are longer
      • do not forbid the longer names in code - e.g. freenode allows them

      2) If there are some bytes read from the server connection if we get a "java.net.SocketException: Connection reset" at org.pircbotx.PircBotX.startLineProcessing(PircBotX.java:250) at org.pircbotx.PircBotX.connect(PircBotX.java:236) - flush them into the log with the stack trace, they might help deployers fix their issue

      3) (would be nice) Expose somehow (in global config page?) the current connection status, whether the bot is logged into a server at all and into the channels in particular; and if there was such a connection reset with an error message.

        Attachments

          Activity

          Hide
          jimklimov Jim Klimov added a comment -

          As a side note, seems the corporate sniffing firewall on my laptop still precludes IRC from connecting; with shorter names it just aborts connections on client side, and they time out on the server side some 15-20 seconds later.

          Same telnet-typed experiments from the server itself get the IRC server banner.

          Show
          jimklimov Jim Klimov added a comment - As a side note, seems the corporate sniffing firewall on my laptop still precludes IRC from connecting; with shorter names it just aborts connections on client side, and they time out on the server side some 15-20 seconds later. Same telnet-typed experiments from the server itself get the IRC server banner.
          Hide
          jimklimov Jim Klimov added a comment -

          Easy cosmetical parts addressed in https://github.com/jenkinsci/ircbot-plugin/pull/35

          Show
          jimklimov Jim Klimov added a comment - Easy cosmetical parts addressed in https://github.com/jenkinsci/ircbot-plugin/pull/35

            People

            Assignee:
            jimklimov Jim Klimov
            Reporter:
            jimklimov Jim Klimov
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated: