使用git作为存储时,无法通过http调用删除Nifi注册表中的流

时间:2019-02-18 10:06:31

标签: apache-nifi apache-nifi-registry

使用DELETE /buckets/{bucketId}/flows/{flowId}时,

它不能删除版本0的流。

例如,无法通过上述http调用删除以下流程。

{
    "bucketIdentifier": "6a0f624c-3163-496e-bb60-9ca4fe287654",
    "bucketName": "flow_bucket",
    "createdTimestamp": 1550243254914,
    "description": "A Versioned Flow from pyApi",
    "identifier": "d3738331-78b3-4dda-ab6b-a2975db762ff",
    "link": {
        "href": "buckets/6a0f624c-3163-496e-bb60-9ca4fe287654/flows/d3738331-78b3-4dda-ab6b-a2975db762ff",
        "params": {
            "rel": "self"
        }
    },
    "modifiedTimestamp": 1550243254914,
    "name": "test flow by pyApi",
    "permissions": {
        "canDelete": true,
        "canRead": true,
        "canWrite": true
    },
    "type": "Flow",
    "versionCount": 0
}

还有其他方法可以删除此类流程吗? 该流是由创建的 nipyapi.versioning.save_flow_ver()被赋予了不同的flow_name。 尽管无法通过409失败,但仍会在Nifi注册表中创建流。 存储是git(专门用于gitlab)

2 个答案:

答案 0 :(得分:2)

似乎不太可能。.NiFi注册中心中的流程始于版本1。如果是这样,那就是一个错误。不过,您应该可以直接从文件系统中将其删除。默认情况下,流保存在{NIFI_INSTALLATION_FOLDER}/flow_storage/{BUCKET_ID}/下。只需删除名称为该流ID的目录即可。这应该可以解决。

编辑:

忘记提及您还需要编辑默认放置在{NIFI_INSTALLATION_FOLDER}/database中的数据库文件(H2)

答案 1 :(得分:2)

我同意Ben的说法,很可能是您遇到了错误而不是预期的行为。除了建议手动编辑H2元数据数据库外,您还可以尝试添加流快照版本(版本化流可以是任何东西),以获取为此流保存的版本1,然后删除整个流。那就是:

POST /buckets/6a0f624c-3163-496e-bb60-9ca4fe287654/flows/d3738331-78b3-4dda-ab6b-a2975db762ff/versions/
DELETE /buckets/6a0f624c-3163-496e-bb60-9ca4fe287654/flows/d3738331-78b3-4dda-ab6b-a2975db762ff

我将打开一个Apache Jira问题来跟踪修复此错误。