I saw that and rolled my eyes. I'm very curious to learn how "they" determined that.
KoLmafia opens a network connection to KoL's server.
- If it times out (as birdy has been having a lot recently) - that is because the response did not arrive in time.
--- Is it because the server did not respond? The report you cited implies no - and, as I said, I am curious to understand how they determined that. Did they run KoLmafia and see a request time out and then look at the server logs, sort through tens of thousands of requests, and see the specific request and the specific response they sent?
--- Is it because there is an issue with KoL's ISP and sometimes requests end up getting dropped without returning a more informative connection error?
--- Is there a sporadic routing issue anywhere between the user's ISP and KoL's ISP with the same effect?
--- Even if the request is received and a response is generated, similar issues could result in the response being dropped and the connection timing out.
KoLmafia succeeds in opening the connection. It posts a request.
- It can get an IOException. This is on a successfully opened connection. So, this is returned by Java's HTTP/TCP code
--- (presumably because the OS failed to accept/transmit the request.)
--- This is a problem in Java or the OS.
KoLmafia succeeded in sending the request. It waits for the response.
- I believe we no longer timeout on this. It can take a LONG time to get the response
--- Perhaps the server is slow
--- Perhaps the network is laggy
----- Perhaps your computer has to retransmit multiple times before the server receives the request
----- Perhaps the server has to retransmit multiple times before your computer receives the response.
- Sometimes Java receives an IOException. Since we don't time out, there is no indication of what caused this.
--- Something, in Java, or in your OS, decides that the response will not be forthcoming, so it aborts.
Summarizing all of the above, ConnectionFailures and timeouts and IOExceptions can arise from the following places:
- Your local Java implementation failed to handle KoLmafia's networking calls successfully
- Your local OS failed to handle Java's networking calls successfully
- Your local ISP (or any router on the way) failed to route the network traffic to KoL's ISP
- KoL's ISP failed to deliver the network traffic - connection or data - to KoL's server
All of the above are what KoL means when they say "the issues are on Mafia's side".
Notice that literally none of them are in KoLmafia itself.
- KoL's ISP delivered the traffic to KoL and KoL responded as expected: it accepted the connection or it read the request and sent the response.
--- Note that this can require retransmission, and KoL's server will not give up until end-to-end acknowledgment is successful. I.e., until your computer acknowledges that it has received all the data and KoL's server receives that acknowledgement.
That is what KoL means when they say "not the server itself".
- KoL's ISP (or any router on the way) failed to route the responses to your local ISP.
- Your local ISP fails to deliver the response to your computer.
- Your computer receives the response and acknowledges it, it fails to deliver it to Java
- Java fails to deliver it to KoLmafia, returning instead a connection failure or an IOException (or a timeout, if we enabled that).
Summarizing all of that, when KoL says "not the server itself", they are saying this:
- Connection requests come in to KoL, and are accepted (perhaps after retransmission perhaps in both directions)
- Requests come in (perhaps with retransmission), are acknowledged (perhaps with retransmission).
- Responses are sent and delivered (perhaps with retransmission) and are acknowledged (perhaps with retransmission).
If all of the above are true, the issue is not in the server itself, as KoL claims. I assume they have verified this by looking at specific requests that failed in KoLmafia, finding transactions in the server logs, and seeing that the requests came in and responses were sent - and the response did not fail with a network failure. I assume that the networking code on KoL's server is robust and that code operating on the servers is not failing; they are presumably handling hundreds or thousands of transactions per second.
Given that, what can be causing the issues?
- Is it in KoLmafia's code? Nothing has changed in the network handling for years. I am recently interested in looking at the Relay code to see if I can improve response there, since we are adding an extra layer of network calls when we interpose between the browser and KoL, but the examples you (and others) are citing are directly between KoLmafia and KoL - scripts, automation, etc.
- Is it in Java? Seems unlikely, but I have to ask: have you updated Java recently?
- Is it in your OS? Possible. If you are getting IOExceptions, that is Java responding to unexpected behavior from the OS - which is most likely unexpected behavior in the network.
- Is it in the network between your computer and KoL's servers? I think this is the most likely explanation, since the recent issues happen to some people and not to others. For example, Ezandora's briefcase script has worked flawlessly for me always (except when I tried running it in Kingdom of Exploathing before I made KoLmafia visit the council and thereby enable place.php.)
Final final summary:
KoLmafia's viewpoint is that a "server side issue" is anywhere outside KoLmafia. To be more precise, we can include "your Java installation" and "your OS" as part of that. But, assuming we (KoLmafia/Java/OS) generate the correct network requests and transmit them to the network, failures are not our fault and there is nothing we can do about it.
KoL's viewpoint is similar: assuming they (OS/Apache/KoL) receive and transmit correct network requests, failures are not their fault. Aenimus's post notwithstanding, that does NOT mean that they are on "Mafia's side", unless he includes the entire Internet as being "Mafia's side".
If we are fair, KoLmafia is "your computer - KoLmafia/Java/OS" and KoL is "their computer - KoL/Apache/OS".
I have seen no evidence that the problems are in KoLmafia.
Aenimus claims that "The majority, if not all of the server issues people have experienced ... [are] not in the server itself".
Which means that the issues are in the network between KoLmafia and KoL:
- Your ISP
- the rest of the Internet
- KoL's ISP