Blog

SPARQL Update and Locks

  • 28 October, 2021
  • By Dave Cassel

I just learned something the hard way, so I thought I’d share. The tl;dr is that sem.sparqlUpdate runs in a separate transaction by default, which means you need to be careful about document locks. (If your response is “well, duh”, then you may not need the rest of this post. If you’ve ever had a sem.sparqlUpdate request time out when it […]

Read More


Making Updates Safe for Parallel Processing

  • 28 May, 2021
  • By Dave Cassel

I’ve seen a couple cases recently where we were making modifications to a document in MarkLogic and the process was restricted to a single thread due to concerns about overwriting data. Let’s look at an example. function makeUpdates(someArgs) { let uri = ‘/some/content.json’; let docObj = cts.doc(uri).toObject(); docObj.meta.foo = updateFoo(docObj.meta.foo, someArgs); xdmp.documentInsert( uri, docObj, { […]

Read More


Peer Reviewing a NiFi Flow

  • 21 May, 2021
  • By Dave Cassel

We’re used to doing reviews for source code. NiFi flows look different, but when they are part of your application’s code, it’s useful to have a review prior to committing. Here’s what I look for when I’m reviewing a flow: Named processors. Wherever it would make things more clear, change the name of the processor […]

Read More


Setting an Attribute with a Dynamic Property Name

  • 28 April, 2021
  • By Dave Cassel

The NiFi EvaluateJsonPath processor lets you specify a JSON path, which will be applied to the content of a flow file. For most situations that works great, but what if you want to retrieve a value where the property you want to read depends on a flow file attribute? EvaluateJsonPath doesn’t support the expression language […]

Read More


cta-bg

Get In Touch

Wherever you are in your data management journey, we're here to help you take the next step. Whether you're just starting to identify challenges or are ready to implement a solution, our team is ready to assist.