我突然在从 Oracle do Neo4j 迁移的 ETL 管道中遇到奇怪的错误。
ETL 实现为 3 个图像的 docker-compose:
- Pentaho PDI
- 源 Oracle 映像
- 目标 Neo4j 图像
PDI 中的主要管道从 Oracle 加载数据,将它们转换为 CSV 并存储到 Neo4j 中,这些文件在其中进一步处理。从某个时刻开始,包含 CSV 文件的 zip 的 sftp 传输失败并出现以下错误:
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - Started FTP job to ${remote_server}
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : Error getting files from FTP : There was a problem while connecting to neo4j:22
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : java.io.IOException: There was a problem while connecting to neo4j:22
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at com.trilead.ssh2.Connection.connect(Connection.java:791)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at com.trilead.ssh2.Connection.connect(Connection.java:563)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.entries.ftpdelete.JobEntryFTPDelete.SSHConnect(JobEntryFTPDelete.java:966)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.entries.ftpdelete.JobEntryFTPDelete.execute(JobEntryFTPDelete.java:746)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.Job.execute(Job.java:686)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.Job.execute(Job.java:827)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.Job.execute(Job.java:827)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.Job.execute(Job.java:827)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.Job.execute(Job.java:827)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.Job.execute(Job.java:827)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.Job.execute(Job.java:827)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.Job.execute(Job.java:827)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.Job.execute(Job.java:565)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at org.pentaho.di.job.entries.job.JobEntryJobRunner.run(JobEntryJobRunner.java:69)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at java.lang.Thread.run(Thread.java:748)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - Caused by: java.io.IOException: Key exchange was not finished, connection is closed.
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at com.trilead.ssh2.transport.KexManager.getOrWaitForConnectionInfo(KexManager.java:92)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at com.trilead.ssh2.transport.TransportManager.getConnectionInfo(TransportManager.java:230)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at com.trilead.ssh2.Connection.connect(Connection.java:743)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - ... 14 more
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - Caused by: java.io.IOException: Cannot negotiate, proposals do not match.
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at com.trilead.ssh2.transport.KexManager.handleMessage(KexManager.java:413)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at com.trilead.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:754)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - at com.trilead.ssh2.transport.TransportManager$1.run(TransportManager.java:469)
2021/08/30 12:21:51 - Cleanup remote deko-etl-import.zip - ... 1 more
该错误很难用谷歌搜索 - 有几个类似的问题(1、2、3、4、5)但它很难解释突然故障的原因。
我觉得这与 ssh 密钥交换有关,但我对 ssh 的了解不够深入,无法理解发生了什么。