override def markExternalAsProcessing()

in backend/app/services/manifest/Neo4jManifest.scala [660:712]


  override def markExternalAsProcessing(params: ExtractionParams, blob: Blob, extractor: Extractor): Either[Failure, Unit] = transaction { tx =>
    logger.info(s"Marking ${blob.uri.value} / ${extractor.name} as complete")

    val maybeWorkspaceProperties = params.workspace.map { _ =>
      """
        |,
        |workspaceId: {workspaceId},
        |workspaceNodeId: {workspaceNodeId},
        |workspaceBlobUri: {workspaceBlobUri}
        |""".stripMargin
    }.getOrElse("")

    val result = tx.run(
      s"""
         |MATCH (b :Blob:Resource {uri: {uri}})<-[todo:TODO {
         |  ingestion: {ingestion},
         |  parentBlobs: {parentBlobs},
         |  languages: {languages}
         |  ${maybeWorkspaceProperties}
         |}]-(e: Extractor {name: {extractorName}})
         |
         |DELETE todo
         |
         |MERGE (b)<-[processing_externally:PROCESSING_EXTERNALLY {
         |  ingestion: {ingestion},
         |  parentBlobs: {parentBlobs},
         |  languages: {languages}
         |  ${maybeWorkspaceProperties}
         |}]-(e)
         |    ON CREATE SET processing_externally.attempts = 0,
         |                  processing_externally.cost = e.cost,
         |                  processing_externally.priority = e.priority
         |""".stripMargin,
      parameters(
        "uri", blob.uri.value,
        "extractorName", extractor.name,
        "ingestion", params.ingestion,
        "languages", params.languages.map(_.key).asJava,
        "parentBlobs", params.parentBlobs.map(_.value).asJava,
        "workspaceId", params.workspace.map(_.workspaceId).orNull,
        "workspaceNodeId", params.workspace.map(_.workspaceNodeId).orNull,
        "workspaceBlobUri", params.workspace.map(_.blobAddedToWorkspace).orNull
      )
    )

    val counters = result.summary().counters()

    if (counters.relationshipsCreated() != 1 || counters.relationshipsDeleted() != 1) {
      Left(IllegalStateFailure(s"Unexpected number of creates/deletes in markAsComplete. Created: ${counters.relationshipsCreated()}. Deleted: ${counters.relationshipsDeleted()}"))
    } else {
      Right(())
    }
  }