I'm not sure when does action.execute(...) throw a ProtocolException. I guess it should also be the case if it does not receive responses from the client.
I think it would be better to log.error("Protocol error - " + pe.getMessage())