前几天,我们的jenkins作业中出现了一个flyway迁移失败。当我们查看数据库时,我们发现脚本已被应用,但在脚本的“schema_version”表中没有创建任何条目。我们知道这个脚本需要很长时间才能应用(修改一个包含大约70M行的表),我们使用了SQL语法,至少可以使更改不阻塞(mysql上的ALGORITHM=INPLACE)。然而,当脚本完成时,flyway返回jenkins失败,并且在这个长脚本之后没有运行任何脚本。
我们正在通过gradle插件(版本3.2.1)运行flyway,并使用ansible调用gradle任务。Jenkins叫ansible叫gradle叫flyway。不确定这是否是由于飞行时间超时或责任造成的。不过,我们不希望在生产中再次发生这种情况。
我们的解决方法是手动将条目放入schema_version,以便脚本不会重新运行,然后重新应用迁移,以便在脚本运行后运行。
我们查看了数据库,发现在同一时间出现了一个巧合的连接尖峰,所以它可能遇到了连接限制,但我认为如果它正在运行脚本,那么连接可能已经打开了。
jenkins的净化输出如下:
TASK: [flyway | run flywayMigrate] ********************************************
<db.server> REMOTE_MODULE command gradle -b /opt/product/rc/flyway-17.5.32.37534.d2bac4a/extracted/flyway.gradle flywayMigrate
failed: [db.server] => {"failed": true, "parsed": false}
invalid output was: SUDO-SUCCESS-plqsdlxwlfkdsujlxdafldpasvtllis
这很可能是由于Flyway用于元数据表的连接被您的基础结构(DB、代理等)的某个部分关闭,导致Flyway无法在长时间运行的迁移完成后将该行写入表。
接口说明 如果已建立了视点之间的关联,而由于某些原因,不想再进行视点之间动画飞行,Wish3DEarth团队新增了删除飞行路径的接口,开发者可以通过该接口,来解除视点之间的动画飞行。 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/flyline/1.0.0/del 是否需要登录 是 请求字段说明 参数 类型 请求类型 是
接口说明 如果用户想观察两个视角之间的变化(不需要手动拖动查看视角),已动画的形式查看视角变化,Wish3DEarth团队新增了添加飞行路径的接口,开发者可以通过该接口,来建立视角之间的关联,已动画的形式查看变化。 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/flyline/1.0.0/add 是否需要登录 是 请求字
接口说明 获取视角集合(飞行路径) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/viewpoint/1.0.0/getByFlyLine 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 flId string form 是 飞行路径ID 响应字段说明 参数 类型 说明 guid String 视点
接口说明 开发者可以通过该接口获取某个场景中的所有飞行路径来设置飞行的动画播放 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/flyline/1.0.0/getBySid 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 sId string form 是 场景ID 响应字段说明 参数 类型 说明 g
飞行路线 点击“飞行路线”按钮,打开飞行设置编辑面板,点击“添加飞行路线”,跳转你想飞行时的节点的视角,点击“添加当前位置为视角”,这是播放时间点击确定。
接口说明 如果已创建了飞行路径,而想修改飞行路径的相关信息,Wish3DEarth团队新增了修改飞行路线的接口,开发者可以通过该接口,来修改飞行路径的相关信息(名称、视点等)。 注意:vpIds如果不传,默认会将原有的视点置空 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/flyline/1.0.0/update 是否需