zaproxy / zaproxy

The ZAP by Checkmarx Core project
https://www.zaproxy.org
Apache License 2.0
12.56k stars 2.25k forks source link

WebSocket Exceptions #5059

Open kingthorin opened 5 years ago

kingthorin commented 5 years ago

While investigating https://github.com/zaproxy/zaproxy/issues/4980 I ended up leaving ZAP running for a prolonged period (hours) with a broswer (Firefox 62.0.3) pointed at ZAP and sitting on a JuiceShop page (which meant that there was on-going websocket traffic). The following exceptions were noted when saving the session file (the initial API exception can be ignored, I didn't try to retrieve something that didn't exist):

Log excerpt during save (363 lines) > 61136820 [ZAP-ProxyThread-692] WARN org.zaproxy.zap.extension.api.API - Bad request to API endpoint [/JSON/core/view/alert/] from [127.0.0.1]: > Does Not Exist (does_not_exist) > at org.zaproxy.zap.extension.alert.AlertAPI.handleApiView(AlertAPI.java:115) > at org.zaproxy.zap.extension.api.CoreAPI.handleApiView(CoreAPI.java:946) > at org.zaproxy.zap.extension.api.API.handleApiRequest(API.java:465) > at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(ProxyThread.java:456) > at org.parosproxy.paros.core.proxy.ProxyThread.run(ProxyThread.java:318) > at java.lang.Thread.run(Thread.java:748) > 61145598 [ZAP-ProxyThread-696] WARN org.parosproxy.paros.core.proxy.ProxyThread - Failed to write/forward the HTTP response to the client: java.net.SocketException: Software caused connection abort: socket write error > 61145781 [ZAP-ProxyThread-697] WARN org.parosproxy.paros.core.proxy.ProxyThread - Failed to write/forward the HTTP response to the client: java.net.SocketException: Software caused connection abort: socket write error > 61989075 [AWT-EventQueue-0] INFO org.parosproxy.paros.control.Control - Save Session > 61989122 [AWT-EventQueue-0] INFO org.parosproxy.paros.control.MenuFileControl - save as session file > 61989341 [Thread-337] INFO hsqldb.db..ENGINE - dataFileCache commit start > 61990636 [ZAP-ProxyThread-709] ERROR org.parosproxy.paros.model.SiteMap - java.sql.SQLNonTransientConnectionException: connection exception: closed > org.parosproxy.paros.db.DatabaseException: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.parosproxy.paros.db.paros.ParosTableHistory.read(ParosTableHistory.java:264) > at org.parosproxy.paros.model.HistoryReference.getHttpMessage(HistoryReference.java:448) > at org.parosproxy.paros.model.SiteMap.pollPath(SiteMap.java:174) > at org.parosproxy.paros.extension.history.ProxyListenerLog.onHttpRequestSend(ProxyListenerLog.java:89) > at org.parosproxy.paros.core.proxy.ProxyThread.notifyListenerRequestSend(ProxyThread.java:679) > at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(ProxyThread.java:499) > at org.parosproxy.paros.core.proxy.ProxyThread.run(ProxyThread.java:304) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.execute(Unknown Source) > at org.parosproxy.paros.db.paros.ParosTableHistory.read(ParosTableHistory.java:256) > ... 7 more > Caused by: org.hsqldb.HsqlException: connection exception: closed > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.Session.execute(Unknown Source) > ... 10 more > 61990777 [ZAP-ProxyThread-709] WARN org.parosproxy.paros.extension.history.ProxyListenerLog - java.sql.SQLNonTransientConnectionException: connection exception: closed > org.parosproxy.paros.db.DatabaseException: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.parosproxy.paros.db.paros.ParosTableHistory.write(ParosTableHistory.java:297) > at org.parosproxy.paros.model.HistoryReference.(HistoryReference.java:360) > at org.parosproxy.paros.extension.history.ProxyListenerLog.createHistoryReference(ProxyListenerLog.java:161) > at org.parosproxy.paros.extension.history.ProxyListenerLog.onHttpResponseReceive(ProxyListenerLog.java:122) > at org.parosproxy.paros.core.proxy.ProxyThread.notifyListenerResponseReceive(ProxyThread.java:701) > at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(ProxyThread.java:522) > at org.parosproxy.paros.core.proxy.ProxyThread.run(ProxyThread.java:304) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) > at org.parosproxy.paros.db.paros.ParosTableHistory.write(ParosTableHistory.java:350) > at org.parosproxy.paros.db.paros.ParosTableHistory.write(ParosTableHistory.java:295) > ... 7 more > Caused by: org.hsqldb.HsqlException: connection exception: closed > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.Session.execute(Unknown Source) > ... 11 more > 61990793 [ZAP-ProxyThread-709] ERROR org.parosproxy.paros.model.SiteMap - java.sql.SQLNonTransientConnectionException: connection exception: closed > org.parosproxy.paros.db.DatabaseException: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.parosproxy.paros.db.paros.ParosTableHistory.read(ParosTableHistory.java:264) > at org.parosproxy.paros.model.HistoryReference.getHttpMessage(HistoryReference.java:448) > at org.parosproxy.paros.model.SiteMap.pollPath(SiteMap.java:174) > at org.parosproxy.paros.extension.history.ProxyListenerLog.onHttpRequestSend(ProxyListenerLog.java:89) > at org.parosproxy.paros.core.proxy.ProxyThread.notifyListenerRequestSend(ProxyThread.java:679) > at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(ProxyThread.java:499) > at org.parosproxy.paros.core.proxy.ProxyThread.run(ProxyThread.java:304) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.execute(Unknown Source) > at org.parosproxy.paros.db.paros.ParosTableHistory.read(ParosTableHistory.java:256) > ... 7 more > Caused by: org.hsqldb.HsqlException: connection exception: closed > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.Session.execute(Unknown Source) > ... 10 more > 61990809 [ZAP-ProxyThread-710] ERROR org.parosproxy.paros.model.SiteMap - java.sql.SQLNonTransientConnectionException: connection exception: closed > org.parosproxy.paros.db.DatabaseException: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.parosproxy.paros.db.paros.ParosTableHistory.read(ParosTableHistory.java:264) > at org.parosproxy.paros.model.HistoryReference.getHttpMessage(HistoryReference.java:448) > at org.parosproxy.paros.model.SiteMap.pollPath(SiteMap.java:174) > at org.parosproxy.paros.extension.history.ProxyListenerLog.onHttpRequestSend(ProxyListenerLog.java:89) > at org.parosproxy.paros.core.proxy.ProxyThread.notifyListenerRequestSend(ProxyThread.java:679) > at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(ProxyThread.java:499) > at org.parosproxy.paros.core.proxy.ProxyThread.run(ProxyThread.java:304) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.execute(Unknown Source) > at org.parosproxy.paros.db.paros.ParosTableHistory.read(ParosTableHistory.java:256) > ... 7 more > Caused by: org.hsqldb.HsqlException: connection exception: closed > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.Session.execute(Unknown Source) > ... 10 more > 61990934 [Thread-337] INFO hsqldb.db..ENGINE - dataFileCache commit end > 61991028 [ZAP-ProxyThread-710] WARN org.parosproxy.paros.extension.history.ProxyListenerLog - java.sql.SQLNonTransientConnectionException: connection exception: closed > org.parosproxy.paros.db.DatabaseException: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.parosproxy.paros.db.paros.ParosTableHistory.write(ParosTableHistory.java:297) > at org.parosproxy.paros.model.HistoryReference.(HistoryReference.java:360) > at org.parosproxy.paros.extension.history.ProxyListenerLog.createHistoryReference(ProxyListenerLog.java:161) > at org.parosproxy.paros.extension.history.ProxyListenerLog.onHttpResponseReceive(ProxyListenerLog.java:122) > at org.parosproxy.paros.core.proxy.ProxyThread.notifyListenerResponseReceive(ProxyThread.java:701) > at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(ProxyThread.java:522) > at org.parosproxy.paros.core.proxy.ProxyThread.run(ProxyThread.java:304) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) > at org.parosproxy.paros.db.paros.ParosTableHistory.write(ParosTableHistory.java:350) > at org.parosproxy.paros.db.paros.ParosTableHistory.write(ParosTableHistory.java:295) > ... 7 more > Caused by: org.hsqldb.HsqlException: connection exception: closed > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.Session.execute(Unknown Source) > ... 11 more > 61991074 [Thread-337] INFO hsqldb.db..ENGINE - Database closed > 61992121 [ZAP-ProxyThread-710] WARN org.zaproxy.zap.extension.websocket.db.WebSocketStorage - Could not update state of WebSocket channel to 'OPEN'! > 61992223 [ZAP-WS-Listener (local) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - > java.lang.NullPointerException > at org.zaproxy.zap.extension.websocket.db.WebSocketStorage.onMessageFrame(WebSocketStorage.java:59) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 61992223 [ZAP-WS-Listener (local) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - Invalid range > java.lang.IndexOutOfBoundsException: Invalid range > at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:864) > at org.jdesktop.swingx.sort.DefaultSortController.rowsInserted(DefaultSortController.java:404) > at javax.swing.JTable.notifySorter(JTable.java:4276) > at javax.swing.JTable.sortedTableChanged(JTable.java:4124) > at javax.swing.JTable.tableChanged(JTable.java:4401) > at org.jdesktop.swingx.JXTable.tableChanged(JXTable.java:1561) > at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296) > at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:231) > at org.zaproxy.zap.extension.websocket.ui.WebSocketMessagesViewModel.fireMessageArrived(WebSocketMessagesViewModel.java:383) > at org.zaproxy.zap.extension.websocket.ui.WebSocketPanel.onMessageFrame(WebSocketPanel.java:456) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 61992254 [ZAP-WS-Listener (remote) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - > java.lang.NullPointerException > at org.zaproxy.zap.extension.websocket.db.WebSocketStorage.onMessageFrame(WebSocketStorage.java:59) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 61992254 [ZAP-WS-Listener (remote) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - Invalid range > java.lang.IndexOutOfBoundsException: Invalid range > at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:864) > at org.jdesktop.swingx.sort.DefaultSortController.rowsInserted(DefaultSortController.java:404) > at javax.swing.JTable.notifySorter(JTable.java:4276) > at javax.swing.JTable.sortedTableChanged(JTable.java:4124) > at javax.swing.JTable.tableChanged(JTable.java:4401) > at org.jdesktop.swingx.JXTable.tableChanged(JXTable.java:1561) > at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296) > at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:231) > at org.zaproxy.zap.extension.websocket.ui.WebSocketMessagesViewModel.fireMessageArrived(WebSocketMessagesViewModel.java:383) > at org.zaproxy.zap.extension.websocket.ui.WebSocketPanel.onMessageFrame(WebSocketPanel.java:456) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 61992347 [ZAP-ProxyThread-709] WARN org.parosproxy.paros.extension.history.ProxyListenerLog - java.sql.SQLNonTransientConnectionException: connection exception: closed > org.parosproxy.paros.db.DatabaseException: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.parosproxy.paros.db.paros.ParosTableHistory.write(ParosTableHistory.java:297) > at org.parosproxy.paros.model.HistoryReference.(HistoryReference.java:360) > at org.parosproxy.paros.extension.history.ProxyListenerLog.createHistoryReference(ProxyListenerLog.java:161) > at org.parosproxy.paros.extension.history.ProxyListenerLog.onHttpResponseReceive(ProxyListenerLog.java:122) > at org.parosproxy.paros.core.proxy.ProxyThread.notifyListenerResponseReceive(ProxyThread.java:701) > at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(ProxyThread.java:522) > at org.parosproxy.paros.core.proxy.ProxyThread.run(ProxyThread.java:304) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLNonTransientConnectionException: connection exception: closed > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) > at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) > at org.parosproxy.paros.db.paros.ParosTableHistory.write(ParosTableHistory.java:350) > at org.parosproxy.paros.db.paros.ParosTableHistory.write(ParosTableHistory.java:295) > ... 7 more > Caused by: org.hsqldb.HsqlException: connection exception: closed > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.error.Error.error(Unknown Source) > at org.hsqldb.Session.execute(Unknown Source) > ... 11 more > 61992363 [ZAP-WS-Listener (local) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - > java.lang.NullPointerException > at org.zaproxy.zap.extension.websocket.db.WebSocketStorage.onMessageFrame(WebSocketStorage.java:59) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 61992363 [ZAP-WS-Listener (local) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - Invalid range > java.lang.IndexOutOfBoundsException: Invalid range > at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:864) > at org.jdesktop.swingx.sort.DefaultSortController.rowsInserted(DefaultSortController.java:404) > at javax.swing.JTable.notifySorter(JTable.java:4276) > at javax.swing.JTable.sortedTableChanged(JTable.java:4124) > at javax.swing.JTable.tableChanged(JTable.java:4401) > at org.jdesktop.swingx.JXTable.tableChanged(JXTable.java:1561) > at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296) > at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:231) > at org.zaproxy.zap.extension.websocket.ui.WebSocketMessagesViewModel.fireMessageArrived(WebSocketMessagesViewModel.java:383) > at org.zaproxy.zap.extension.websocket.ui.WebSocketPanel.onMessageFrame(WebSocketPanel.java:456) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 61999242 [Thread-337] INFO hsqldb.db..ENGINE - open start - state not modified > 61999289 [Thread-337] INFO hsqldb.db..ENGINE - dataFileCache open start > 61999289 [Thread-337] INFO hsqldb.db..ENGINE - dataFileCache open end > 62015795 [ZAP-WS-Listener (local) 'juiceshopcad.herokuapp.com:443 (#31)'] ERROR org.zaproxy.zap.extension.websocket.db.WebSocketStorage - java.sql.SQLException: channel not inserted: 31 > org.parosproxy.paros.db.DatabaseException: java.sql.SQLException: channel not inserted: 31 > at org.zaproxy.zap.extension.websocket.db.TableWebSocket.insertMessage(TableWebSocket.java:768) > at org.zaproxy.zap.extension.websocket.db.WebSocketStorage.onMessageFrame(WebSocketStorage.java:59) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLException: channel not inserted: 31 > at org.zaproxy.zap.extension.websocket.db.TableWebSocket.insertMessage(TableWebSocket.java:727) > ... 7 more > 62015796 [ZAP-WS-Listener (local) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - Invalid range > java.lang.IndexOutOfBoundsException: Invalid range > at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:864) > at org.jdesktop.swingx.sort.DefaultSortController.rowsInserted(DefaultSortController.java:404) > at javax.swing.JTable.notifySorter(JTable.java:4276) > at javax.swing.JTable.sortedTableChanged(JTable.java:4124) > at javax.swing.JTable.tableChanged(JTable.java:4401) > at org.jdesktop.swingx.JXTable.tableChanged(JXTable.java:1561) > at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296) > at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:231) > at org.zaproxy.zap.extension.websocket.ui.WebSocketMessagesViewModel.fireMessageArrived(WebSocketMessagesViewModel.java:383) > at org.zaproxy.zap.extension.websocket.ui.WebSocketPanel.onMessageFrame(WebSocketPanel.java:456) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 62015843 [ZAP-WS-Listener (remote) 'juiceshopcad.herokuapp.com:443 (#31)'] ERROR org.zaproxy.zap.extension.websocket.db.WebSocketStorage - java.sql.SQLException: channel not inserted: 31 > org.parosproxy.paros.db.DatabaseException: java.sql.SQLException: channel not inserted: 31 > at org.zaproxy.zap.extension.websocket.db.TableWebSocket.insertMessage(TableWebSocket.java:768) > at org.zaproxy.zap.extension.websocket.db.WebSocketStorage.onMessageFrame(WebSocketStorage.java:59) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLException: channel not inserted: 31 > at org.zaproxy.zap.extension.websocket.db.TableWebSocket.insertMessage(TableWebSocket.java:727) > ... 7 more > 62015843 [ZAP-WS-Listener (remote) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - Invalid range > java.lang.IndexOutOfBoundsException: Invalid range > at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:864) > at org.jdesktop.swingx.sort.DefaultSortController.rowsInserted(DefaultSortController.java:404) > at javax.swing.JTable.notifySorter(JTable.java:4276) > at javax.swing.JTable.sortedTableChanged(JTable.java:4124) > at javax.swing.JTable.tableChanged(JTable.java:4401) > at org.jdesktop.swingx.JXTable.tableChanged(JXTable.java:1561) > at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296) > at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:231) > at org.zaproxy.zap.extension.websocket.ui.WebSocketMessagesViewModel.fireMessageArrived(WebSocketMessagesViewModel.java:383) > at org.zaproxy.zap.extension.websocket.ui.WebSocketPanel.onMessageFrame(WebSocketPanel.java:456) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 62040880 [ZAP-WS-Listener (local) 'juiceshopcad.herokuapp.com:443 (#31)'] ERROR org.zaproxy.zap.extension.websocket.db.WebSocketStorage - java.sql.SQLException: channel not inserted: 31 > org.parosproxy.paros.db.DatabaseException: java.sql.SQLException: channel not inserted: 31 > at org.zaproxy.zap.extension.websocket.db.TableWebSocket.insertMessage(TableWebSocket.java:768) > at org.zaproxy.zap.extension.websocket.db.WebSocketStorage.onMessageFrame(WebSocketStorage.java:59) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLException: channel not inserted: 31 > at org.zaproxy.zap.extension.websocket.db.TableWebSocket.insertMessage(TableWebSocket.java:727) > ... 7 more > 62040880 [ZAP-WS-Listener (local) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - Invalid range > java.lang.IndexOutOfBoundsException: Invalid range > at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:864) > at org.jdesktop.swingx.sort.DefaultSortController.rowsInserted(DefaultSortController.java:404) > at javax.swing.JTable.notifySorter(JTable.java:4276) > at javax.swing.JTable.sortedTableChanged(JTable.java:4124) > at javax.swing.JTable.tableChanged(JTable.java:4401) > at org.jdesktop.swingx.JXTable.tableChanged(JXTable.java:1561) > at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296) > at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:231) > at org.zaproxy.zap.extension.websocket.ui.WebSocketMessagesViewModel.fireMessageArrived(WebSocketMessagesViewModel.java:383) > at org.zaproxy.zap.extension.websocket.ui.WebSocketPanel.onMessageFrame(WebSocketPanel.java:456) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 62040912 [ZAP-WS-Listener (remote) 'juiceshopcad.herokuapp.com:443 (#31)'] ERROR org.zaproxy.zap.extension.websocket.db.WebSocketStorage - java.sql.SQLException: channel not inserted: 31 > org.parosproxy.paros.db.DatabaseException: java.sql.SQLException: channel not inserted: 31 > at org.zaproxy.zap.extension.websocket.db.TableWebSocket.insertMessage(TableWebSocket.java:768) > at org.zaproxy.zap.extension.websocket.db.WebSocketStorage.onMessageFrame(WebSocketStorage.java:59) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.sql.SQLException: channel not inserted: 31 > at org.zaproxy.zap.extension.websocket.db.TableWebSocket.insertMessage(TableWebSocket.java:727) > ... 7 more > 62040928 [ZAP-WS-Listener (remote) 'juiceshopcad.herokuapp.com:443 (#31)'] WARN org.zaproxy.zap.extension.websocket.WebSocketProxy - Invalid range > java.lang.IndexOutOfBoundsException: Invalid range > at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:864) > at org.jdesktop.swingx.sort.DefaultSortController.rowsInserted(DefaultSortController.java:404) > at javax.swing.JTable.notifySorter(JTable.java:4276) > at javax.swing.JTable.sortedTableChanged(JTable.java:4124) > at javax.swing.JTable.tableChanged(JTable.java:4401) > at org.jdesktop.swingx.JXTable.tableChanged(JXTable.java:1561) > at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296) > at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:231) > at org.zaproxy.zap.extension.websocket.ui.WebSocketMessagesViewModel.fireMessageArrived(WebSocketMessagesViewModel.java:383) > at org.zaproxy.zap.extension.websocket.ui.WebSocketPanel.onMessageFrame(WebSocketPanel.java:456) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.notifyMessageObservers(WebSocketProxy.java:718) > at org.zaproxy.zap.extension.websocket.WebSocketProxy.processRead(WebSocketProxy.java:590) > at org.zaproxy.zap.extension.websocket.WebSocketListener.run(WebSocketListener.java:89) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > 62047636 [Thread-342] INFO hsqldb.db..ENGINE - dataFileCache commit start > 62050273 [Thread-342] INFO hsqldb.db..ENGINE - dataFileCache commit end > 62050384 [Thread-342] INFO hsqldb.db..ENGINE - Database closed > 62050524 [Thread-342] INFO org.parosproxy.paros.control.Control - OWASP ZAP Dev Build terminated.


Initially I received similar exceptions the first time I re-opened the session, however after that they did not re-occur (on open).

thc202 commented 5 years ago

Note that some of the exceptions already have its own issue, e.g.: #4044. Others are expected (for the current behaviour) and are not exclusive to WebSockets, messages being proxied through ZAP would fail to be persisted while the session is being persisted for the first time (similar to #3711).

kingthorin commented 5 years ago

Should I close this one then? I think the majority are covered in 4044.

thc202 commented 5 years ago

I'd leave it open, the session handling needs to be improved (i.e. fix the NullPointerExceptions).