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

Apache nifi 使用git作为存储时,无法通过http调用删除Nifi注册表中的流,apache-nifi,apache-nifi-registry,Apache Nifi,Apache Nifi Registry,使用DELETE/bucket/{bucketId}/flows/{flowId}时 它无法删除版本为0的流 例如,类似以下流的内容无法通过上述http调用删除 { "bucketIdentifier": "6a0f624c-3163-496e-bb60-9ca4fe287654", "bucketName": "flow_bucket", "createdTimestamp": 1550243254914, "description": "A Versioned

使用DELETE/bucket/{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指定不同的流名称。 虽然409失败,但它仍然在Nifi注册表中创建一个流。
存储是GitLab特有的

似乎不太可能。。NiFi注册表中的流从版本1开始。如果是这样,那就是一个bug。不过,您应该能够直接从文件系统中删除它。默认情况下,流保存在{NIFI_INSTALLATION_FOLDER}/flow_storage/{BUCKET_ID}/下。只需删除名为此流id的目录。这将修复它

编辑:


忘记提到您还需要编辑默认放置在{NIFI_INSTALLATION_FOLDER}/database

中的db文件h2似乎不太可能。。NiFi注册表中的流从版本1开始。如果是这样,那就是一个bug。不过,您应该能够直接从文件系统中删除它。默认情况下,流保存在{NIFI_INSTALLATION_FOLDER}/flow_storage/{BUCKET_ID}/下。只需删除名为此流id的目录。这将修复它

编辑:


忘了提到您还需要编辑默认放置在{NIFI_INSTALLATION_FOLDER}/database中的db fileH2

我同意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问题来跟踪修复此错误。

我同意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问题来跟踪修复此错误。

我使用gitlab作为存储。将在中更新它description@AkiraSendoh应该是一样的。。只要从您的存储中删除它,无论它是本地的还是git的,然后也从您的数据库中删除它。git中不存在该流id。下次我将尝试在文件系统中查找它,我使用gitlab作为存储。将在中更新它description@AkiraSendoh应该是一样的。。只要从您的存储中删除它,无论它是本地的还是git的,然后也从您的数据库中删除它。git中不存在该流id。下一次我将尝试在文件系统中找到它,当使用git作为存储库对一个已经使用不同流名称进行版本控制的流进行版本控制时,会发生这种情况,这对复制非常有用。这样的调用可能应该被视为一个事务,这样它就不能部分成功。您可以观看这个Jira来跟踪修复:酷,我认为它部分解决了,因为接收409不应该在注册表中创建条目?这基本上意味着流程组不应该拥有另一个具有不同版本流名称的版本流,因为它已经有了一个版本流,或者?当使用git作为StorageThreak对一个已经具有不同版本流名称的流进行版本化时,会发生这种情况,这对复制非常有用。这样的调用可能应该被视为一个事务,这样它就不能部分成功。您可以观看这个Jira来跟踪修复:酷,我认为它部分解决了,因为接收409不应该在注册表中创建条目?这基本上意味着流程组不应该有另一个具有不同版本流名称的版本流,因为它已经有一个版本流,或者?