Skip to content

Commit 71c9b0d

Browse files
committed
fix(llmobs): use mutation response dataset versions
1 parent b30f9d7 commit 71c9b0d

2 files changed

Lines changed: 28 additions & 17 deletions

File tree

packages/dd-trace/src/llmobs/experiments/dataset.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -449,19 +449,9 @@ class Dataset {
449449

450450
#updateVersionFromMutationResult (result) {
451451
const pushedVersion = versionFromMutationResult(result)
452-
if (pushedVersion !== null) {
453-
this.#version = pushedVersion
454-
this.#latestVersion = pushedVersion
455-
return
456-
}
457-
458-
const latestVersion = Number(this.#latestVersion)
459-
if (Number.isFinite(latestVersion)) {
460-
this.#version = latestVersion + 1
461-
this.#latestVersion = this.#version
462-
} else {
463-
this.#version = null
464-
}
452+
if (pushedVersion === null) return
453+
this.#version = pushedVersion
454+
this.#latestVersion = pushedVersion
465455
}
466456

467457
#addRecord (record) {

packages/dd-trace/test/llmobs/experiments/experiment.spec.js

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ describe('LLMObs Experiments — dataset + experiment run', () => {
116116
)
117117
})
118118

119-
it('advances appended dataset versions from the current latest version', async () => {
119+
it('uses the dataset version from the mutation response', async () => {
120120
const { client: c } = clientWithMockBackend()
121121
const dataset = Dataset.fromExisting(c, 'demo', '', 'ds', 'proj', [], 2, 5).addRecord('a')
122122

@@ -126,6 +126,27 @@ describe('LLMObs Experiments — dataset + experiment run', () => {
126126
assert.equal(dataset.latestVersion(), 3)
127127
})
128128

129+
it('uses each mutation response version across consecutive pushes', async () => {
130+
const { client: c } = clientWithMockBackend()
131+
const versions = [7, 11, 19]
132+
c.batchUpdateDatasetRecords = async () => ({ records: [], version: versions.shift() })
133+
const dataset = Dataset.fromExisting(c, 'demo', '', 'ds', 'proj', [], 2, 5).addRecord('before')
134+
135+
await dataset.push()
136+
assert.equal(dataset.version(), 7)
137+
assert.equal(dataset.latestVersion(), 7)
138+
139+
dataset.update(0, { input: 'after' })
140+
await dataset.push()
141+
assert.equal(dataset.version(), 11)
142+
assert.equal(dataset.latestVersion(), 11)
143+
144+
dataset.delete(0)
145+
await dataset.push()
146+
assert.equal(dataset.version(), 19)
147+
assert.equal(dataset.latestVersion(), 19)
148+
})
149+
129150
it('updates records added after a push and preserves concurrent edits', async () => {
130151
const { client: c, requests } = clientWithMockBackend()
131152
const dataset = new Dataset(c, 'demo').addRecord('before')
@@ -221,15 +242,15 @@ describe('LLMObs Experiments — dataset + experiment run', () => {
221242
assert.deepEqual(requests.at(-1).attributes.delete_records, [insertRequest.attributes.insert_records[0].id])
222243
})
223244

224-
it('handles mutation responses without a version', async () => {
245+
it('keeps the current version when a mutation response omits a version', async () => {
225246
const { client: c } = clientWithMockBackend()
226247
c.batchUpdateDatasetRecords = async () => ({ records: [] })
227248
const dataset = Dataset.fromExisting(c, 'demo', '', 'ds', 'proj', [], null, 5).addRecord('input')
228249

229250
await dataset.push()
230251

231-
assert.equal(dataset.version(), 6)
232-
assert.equal(dataset.latestVersion(), 6)
252+
assert.equal(dataset.version(), null)
253+
assert.equal(dataset.latestVersion(), 5)
233254

234255
const unknownVersionDataset = Dataset.fromExisting(c, 'unknown', '', 'unknown-ds', 'proj', [], null, 'unknown')
235256
.addRecord('input')

0 commit comments

Comments
 (0)