Re: DB-Lib error message 20017, severity 9:Unexpected EOF from the server
Frediano Ziglio <[email protected]> Sat, 16 Dec 2017 17:18:25 +0000
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <CAHt6W4cFXTFzDfnoXK-avVzEsQwWg5vRzfwPivU=43SaR3OLqA@mail.gmail.com> |
2017-11-28 21:40 GMT+00:00 Wagner, Steve <[email protected]>: > We've been using pymssql and FreeTDS for over 2 years now without problems. We recently upgraded pymssql to 2.1.3 and also from Python 3.4 to 3.6. Since that upgrade we've been getting the following error intermittently (but frequently). > > (20017, b'DB-Lib error message 20017, severity 9:\nUnexpected EOF from the server (FBOps-Prod:1433)\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (FBOps-Prod:1433)\n') > This usually means server closed the connection. This can happen if there's a firewall between or if client send some garbage. > There is no apparent pattern to the failures that we have been able to discover. Well over 95% of the DB calls succeed. It can fail on any stored proc or sql query. > > The database calls apparently do not even get to the database because nothing shows up in any DB log or trace. > > I've scoured the web and come up empty. > > I've reinstalled pymssql and FreeTDS but it still fails. > > Failures occur when connected to a DB server that is remote to the app but when connected to localhost. > > I've checked max number of connections and it's 4096 which should be plenty as there are no more than 10 active users at a time. > > Below is an excerpt from the TDS log file (full log file at the end). > > > packet.c:639:Received packet > > ....... > > > dblib.c:6845:dbsqlsend(000000000775B3B0) > > > mem.c:648:tds_free_all_results() > > > util.c:165:Changed query state from IDLE to WRITING > > > util.c:165:Changed query state from WRITING to PENDING > > > packet.c:740:Sending packet > > > 0000 01 01 00 1c 00 00 01 00-42 00 45 00 47 00 49 00 |........ B.E.G.I.| > > > 0010 4e 00 20 00 54 00 52 00-41 00 4e 00 |N. .T.R. A.N.| > > > > > dblib.c:4625:dbsqlok(000000000775B3B0) > > > dblib.c:4654:dbsqlok() not done, calling tds_process_tokens() > > > token.c:550:tds_process_tokens(00000000075359E0, 000000000A58BBA8, 000000000A58BBA0, 0x6914) > > > util.c:165:Changed query state from PENDING to READING > > > packet.c:639:Received packet > > > 0000 04 01 00 11 00 4e 01 00-fd 00 00 d4 00 00 00 00 |.....N.. ........| > > > 0010 00 - |.| > > Here server replied correctly so accepted the query. > > > token.c:565:processing result tokens. marker is fd(DONE) > > > token.c:2081:tds_process_end: more_results = 0 > > > was_cancelled = 0 > > > error = 0 > > > done_count_valid = 0 > > > token.c:2098: rows_affected = 0 > > > token.c:2101:tds_process_end() state set to TDS_IDLE > > > util.c:165:Changed query state from READING to IDLE > > > util.c:83:logic error: cannot change query state from IDLE to PENDING > > > util.c:165:Changed query state from IDLE to IDLE > > > dblib.c:4687:dbsqlok() end status is SUCCEED > > > dblib.c:4698:dbsqlok() end status was success > > > dblib.c:1689:dbresults(000000000775B3B0) > > > dblib.c:1694:dbresults: dbresults_state is 5 (_DB_RES_SUCCEED) > > > dblib.c:1679:dbresults returning 1 (SUCCEED) > > > dblib.c:2772:dbcount(000000000775B3B0) > > > dblib.c:3203:dbcancel(000000000775B3B0) > > > query.c:2189:tds_send_cancel: not in_cancel and idle > > > dblib.c:1463:dbclose(000000000775B3B0) > Here client is closing the connection, in this case there's no "Unexpected EOF". > > dblib.c:243:dblib_del_connection(000007FEF8B0FA70, 00000000075359E0) > > > query.c:3772:tds_disconnect() > > > util.c:165:Changed query state from IDLE to DEAD > > > mem.c:648:tds_free_all_results() > > > dblib.c:290:dblib_release_tds_ctx(1) > > > dblib.c:5873:dbfreebuf(000000000775B3B0) > > > Steve > Looks like this log is correct and do not present the error you are reporting. Frediano