如何排除常见的复制问题?

Maayan领导
2023-01-22还剩11分08秒

主题:

排除复制问题

描述:

Artifactory支持两种类型的复制:Push和Pull。推复制用于同步本地存储库,可以由事件触发,也可以通过配置cron表达式触发。Pull复制由远程存储库调用,并根据定义的计划定期同步存储库。此解决方案旨在解决复制期间可能出现的一些常见问题。

常见错误:

1.源Artifactory
在套接字上读取意外的EOF
java.io.EOFException:在套接字上读取意外的EOF
org.apache.coyote.http11.Http11InputBuffer.fill (Http11InputBuffer.java: 734)
org.apache.coyote.http11.Http11InputBuffer.access 300美元(Http11InputBuffer.java: 40)
org.apache.coyote.http11.Http11InputBuffer SocketInputBuffer.doRead美元(Http11InputBuffer.java: 1084)
org.apache.coyote.http11.filters.IdentityInputFilter.doRead (IdentityInputFilter.java: 140)
org.apache.coyote.http11.Http11InputBuffer.doRead (Http11InputBuffer.java: 263)
org.apache.coyote.Request.doRead (Request.java: 581)
org.apache.catalina.connector.InputBuffer.realReadBytes (InputBuffer.java: 326)
org.apache.catalina.connector.InputBuffer.checkByteBufferEof (InputBuffer.java: 642)
org.apache.catalina.connector.InputBuffer.read (InputBuffer.java: 349)
org.apache.catalina.connector.CoyoteInputStream.read (CoyoteInputStream.java: 183)
......

可能的解决方法:
在目标器上增加文件上传最大大小(MB)。

2.源Artifactory

[http-nio-8081- exec1] [ERROR] -无法检索列表
org.apache.catalina.connector.ClientAbortException: java.net.SocketTimeoutException
org.apache.catalina.connector.OutputBuffer.doFlush (OutputBuffer.java: 321)
org.apache.catalina.connector.OutputBuffer.flush (OutputBuffer.java: 284)
org.apache.catalina.connector.CoyoteOutputStream.flush (CoyoteOutputStream.java: 118)
org.springframework.session.web.http.OnCommittedResponseWrapper SaveContextServletOutputStream.flush美元(OnCommittedResponseWrapper.java: 458)
org.codehaus.jackson.impl.Utf8Generator.flush (Utf8Generator.java: 1091)
org.codehaus.jackson.map.ObjectMapper.writeValue (ObjectMapper.java: 1615)
org.codehaus.jackson.impl.JsonGeneratorBase.writeObject (JsonGeneratorBase.java: 314)
org.artifactory.addon.artifact.LocalRepoFileListTreeStreamer.streamLocalFileListRecursively (LocalRepoFileListTreeStreamer.java: 156)

可能的决议,与已知问题有关的

通过在$TOMCAT_HOME/conf/server.xml文件中的连接器中指定以下属性禁用/增加Tomcat超时:

<连接器端口="8081" sendReasonPhrase="true" connectionTimeout="-1"/>

其他可能的解决方案:本地文件列表(与内部问题相关- RTFACT-19064):

在Artifactory 6.10.1版本中包含了一个新的flag/system属性:
artifactory.replication.push.fullTree。saveLocally=true/false(默认值:false)
(我们可以忽略标志本身的“push”命名,因为它也适用于“pull”)

启用后,Artifactory将把FileList保存到Artifactory临时工作目录下的文件系统中——在一个名为FullTree的文件中——[digits]。json(默认位于:$ARTIFACTORY_HOME/data/tmp/work)。
复制完成后,该文件将被删除。

如果不设置这个标志,默认的行为是在传输文件列表时进行复制。

请注意,这可能会占用相当大的存储空间(基于所存储的复制、工件和文件夹的数量)。
如果使用这个标志,建议分离不同的复制计时,以避免同时运行它们(一般情况下,总是建议分离不同的复制计时)。

3.源Artifactory

执行文件夹复制时发生错误:无法检索远程文件列表的回购" at ": HTTP/1.1 403禁止

可能的解决方法:

我们可能会跑这个REST API调用,复制将在幕后执行,并为复制配置用户。例如:
$ curl -u: http://artifactory_url/api/storage/libs-release-local/org/acme?list&deep=1&listFolders=1&mdTimestamps=1

如果上面的结果也是403响应,我们应该检查给予复制用户的权限。
如果上面的结果是200响应,这意味着为复制身份验证配置了不同的用户,我们应该检查request.log(例如:目标request.log),看看哪个用户出现在相关的日志条目中。例如:

时间戳| | 3 |请求Source_IP|用户| |放/ PathToFileHTTP / 1.1 | |403| 44717

来自源实例的artifact .log的相关日志条目示例:

时间戳[replication-consumer] [ERROR] (o.a.a.c.b icstatusholder:211) -部署项目'RepoKey:PathToFIle on Url:http://artifactory_url/RepoKey '时出错:禁止[403]

我们应该确保到达目标的用户有足够的权限来运行复制,并且它不是“匿名”(在启用匿名访问的情况下)。

关于复制问题的一般信息:

a .一般来说,为了解决复制问题,我们可以在源和目标Artifactory实例中添加以下记录器(到logback.xml文件中,位于:$ARTIFACTORY_HOME/etc/下):

<记录器name = " org.artifactory.addon.replication.core " >
<级别值= "跟踪" / >
< / logger >

上述操作将增加与复制过程相关的日志的详细信息。

b .为了尝试防止复制过程中的超时问题,我们可以禁用代理中的任何超时配置,同时为复制设置一个专用端口和条目。