Skip to content

Commit 2af6d22

Browse files
committed
fix: remove apply on dataset parent connector on sub create
trx function save dataset modification, this case all modification of parent dataset to be persisted
1 parent ac835ad commit 2af6d22

File tree

2 files changed

+83
-1
lines changed

2 files changed

+83
-1
lines changed

dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,83 @@ class DatasetServiceIntegrationTest : CsmRedisTestBase() {
454454
assertEquals(
455455
2, countEntities(subDatasetWithQuery.twingraphId!!, "MATCH ()-[r]-() RETURN count(r)"))
456456
}
457+
@Test
458+
fun `should not change parent connector parameters on subdataset creation`() {
459+
logger.info("Create a Graph with a ZIP Entry")
460+
logger.info(
461+
"loading nodes: Double=2, Single=1, Users=9 & relationships: Double=2, Single=1, Follows=2")
462+
val file = this::class.java.getResource("/integrationTest.zip")?.file
463+
val resource = ByteArrayResource(File(file!!).readBytes())
464+
organizationSaved = organizationApiService.registerOrganization(organization)
465+
dataset = makeDatasetWithRole()
466+
datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
467+
datasetApiService.updateDataset(
468+
organizationSaved.id!!,
469+
datasetSaved.id!!,
470+
datasetSaved.copy(sourceType = DatasetSourceType.File))
471+
472+
val fileUploadValidation =
473+
datasetApiService.uploadTwingraph(organizationSaved.id!!, datasetSaved.id!!, resource)
474+
assertEquals(
475+
FileUploadValidation(
476+
mutableListOf(
477+
FileUploadMetadata("Double", 90),
478+
FileUploadMetadata("Single", 54),
479+
FileUploadMetadata("Users", 749),
480+
),
481+
mutableListOf(
482+
FileUploadMetadata("Double", 214),
483+
FileUploadMetadata("Follows", 47),
484+
FileUploadMetadata("SingleEdge", 59),
485+
)),
486+
fileUploadValidation)
487+
488+
// add timout for while loop
489+
val timeout = Instant.now()
490+
while (datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, datasetSaved.id!!) !=
491+
Dataset.IngestionStatus.SUCCESS.value) {
492+
if (Instant.now().minusSeconds(10).isAfter(timeout)) {
493+
throw Exception("Timeout while waiting for dataset twingraph to be ready")
494+
}
495+
Thread.sleep(500)
496+
}
497+
datasetSaved = datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!)
498+
do {
499+
Thread.sleep(50L)
500+
val datasetStatus =
501+
datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, datasetSaved.id!!)
502+
} while (datasetStatus == Dataset.IngestionStatus.PENDING.value)
503+
assertEquals(12, countEntities(datasetSaved.twingraphId!!, "MATCH (n) RETURN count(n)"))
504+
assertEquals(5, countEntities(datasetSaved.twingraphId!!, "MATCH ()-[r]-() RETURN count(r)"))
505+
assertEquals(
506+
datasetSaved.connector!!.parametersValues!!["TWIN_CACHE_NAME"], datasetSaved.twingraphId)
507+
508+
val subDatasetParams =
509+
SubDatasetGraphQuery(
510+
name = "subDataset",
511+
description = "subDataset description",
512+
)
513+
val subDataset =
514+
datasetApiService.createSubDataset(
515+
organizationSaved.id!!, datasetSaved.id!!, subDatasetParams)
516+
do {
517+
Thread.sleep(50L)
518+
val datasetStatus =
519+
datasetApiService.getDatasetTwingraphStatus(organizationSaved.id!!, subDataset.id!!)
520+
} while (datasetStatus == Dataset.IngestionStatus.PENDING.value)
521+
522+
// get parent after sub dataset creation
523+
datasetSaved = datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!)
524+
525+
assertEquals("subDataset", subDataset.name)
526+
assertEquals("subDataset description", subDataset.description)
527+
assertEquals(12, countEntities(subDataset.twingraphId!!, "MATCH (n) RETURN count(n)"))
528+
assertEquals(5, countEntities(subDataset.twingraphId!!, "MATCH ()-[r]-() RETURN count(r)"))
529+
assertEquals(
530+
datasetSaved.connector!!.parametersValues!!["TWIN_CACHE_NAME"], datasetSaved.twingraphId)
531+
assertEquals(
532+
subDataset.connector!!.parametersValues!!["TWIN_CACHE_NAME"], subDataset.twingraphId)
533+
}
457534

458535
fun countEntities(twingraphId: String, query: String): Int {
459536
val resultSet = redisGraph.query(twingraphId, query)

dataset/src/main/kotlin/com/cosmotech/dataset/service/DatasetServiceImpl.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,12 @@ class DatasetServiceImpl(
237237
ingestionStatus = Dataset.IngestionStatus.PENDING,
238238
twincacheStatus = Dataset.TwincacheStatus.EMPTY,
239239
connector =
240-
dataset.connector?.apply { parametersValues?.set(TWINCACHE_NAME, subTwingraphId) },
240+
dataset.connector?.copy(
241+
parametersValues =
242+
(dataset.connector
243+
?.parametersValues
244+
?.plus(mutableMapOf(TWINCACHE_NAME to subTwingraphId)))
245+
?.toMutableMap()),
241246
sourceType = DatasetSourceType.Twincache,
242247
tags = dataset.tags)
243248

0 commit comments

Comments
 (0)