Skip to content

Commit cd87a70

Browse files
FlorentinDDarthMax
andcommitted
Set mutateMillis
Co-authored-by: Max Kießling <max.kiessling@neo4j.com>
1 parent b92d881 commit cd87a70

File tree

8 files changed

+25
-18
lines changed

8 files changed

+25
-18
lines changed

graphdatascience/arrow_client/v2/api_types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ class JobStatus(ArrowBaseModel):
1212

1313

1414
class MutateResult(ArrowBaseModel):
15+
mutate_millis: int
1516
node_properties_written: int
1617
relationships_written: int

graphdatascience/arrow_client/v2/mutation_client.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import json
2+
import math
3+
import time
24

35
from graphdatascience.arrow_client.authenticated_flight_client import AuthenticatedArrowClient
46
from graphdatascience.arrow_client.v2.api_types import MutateResult
@@ -12,5 +14,7 @@ class MutationClient:
1214
def mutate_node_property(client: AuthenticatedArrowClient, job_id: str, mutate_property: str) -> MutateResult:
1315
mutate_config = {"jobId": job_id, "mutateProperty": mutate_property}
1416
encoded_config = json.dumps(mutate_config).encode("utf-8")
17+
start_time = time.time()
1518
mutate_arrow_res = client.do_action_with_retry(MutationClient.MUTATE_ENDPOINT, encoded_config)
16-
return MutateResult(**deserialize_single(mutate_arrow_res))
19+
mutate_millis = math.ceil((time.time() - start_time) * 1000)
20+
return MutateResult(mutateMillis=mutate_millis, **deserialize_single(mutate_arrow_res))

graphdatascience/procedure_surface/arrow/k1coloring_arrow_endpoints.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ def mutate(
4646
username=username,
4747
)
4848

49-
computation_result, node_properties_written = self._node_property_endpoints.run_job_and_mutate(
49+
computation_result, mutate_result = self._node_property_endpoints.run_job_and_mutate(
5050
"v2/community.k1coloring", G, config, mutate_property
5151
)
5252

53-
computation_result["nodeCount"] = node_properties_written
54-
computation_result["mutateMillis"] = 0
53+
computation_result["nodeCount"] = mutate_result.node_properties_written
54+
computation_result["mutateMillis"] = mutate_result.mutate_millis
5555

5656
return K1ColoringMutateResult(**computation_result)
5757

graphdatascience/procedure_surface/arrow/kcore_arrow_endpoints.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ def mutate(
3636
sudo=sudo,
3737
)
3838

39-
computation_result, node_properties_written = self._node_property_endpoints.run_job_and_mutate(
39+
computation_result, mutate_result = self._node_property_endpoints.run_job_and_mutate(
4040
"v2/community.kcore", G, config, mutate_property
4141
)
4242

43-
computation_result["nodePropertiesWritten"] = node_properties_written
44-
computation_result["mutateMillis"] = 0
43+
computation_result["nodePropertiesWritten"] = mutate_result.node_properties_written
44+
computation_result["mutateMillis"] = mutate_result.mutate_millis
4545

4646
return KCoreMutateResult(**computation_result)
4747

graphdatascience/procedure_surface/arrow/louvain_arrow_endpoints.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ def mutate(
5050
tolerance=tolerance,
5151
)
5252

53-
computation_result, node_properties_written = self._node_property_endpoints.run_job_and_mutate(
53+
computation_result, mutate_result = self._node_property_endpoints.run_job_and_mutate(
5454
"v2/community.louvain", G, config, mutate_property
5555
)
5656

57-
computation_result["nodePropertiesWritten"] = node_properties_written
58-
computation_result["mutateMillis"] = 0
57+
computation_result["nodePropertiesWritten"] = mutate_result.node_properties_written
58+
computation_result["mutateMillis"] = mutate_result.mutate_millis
5959

6060
return LouvainMutateResult(**computation_result)
6161

graphdatascience/procedure_surface/arrow/node_property_endpoints.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
from pandas import DataFrame
55

6+
from graphdatascience.arrow_client.v2.api_types import MutateResult
7+
68
from ...arrow_client.authenticated_flight_client import AuthenticatedArrowClient
79
from ...arrow_client.v2.data_mapper_utils import deserialize_single
810
from ...arrow_client.v2.job_client import JobClient
@@ -30,12 +32,12 @@ def run_job_and_get_summary(self, endpoint: str, G: Graph, config: Dict[str, Any
3032

3133
def run_job_and_mutate(
3234
self, endpoint: str, G: Graph, config: Dict[str, Any], mutate_property: str
33-
) -> tuple[Dict[str, Any], int]:
35+
) -> tuple[Dict[str, Any], MutateResult]:
3436
"""Run a job, mutate node properties, and return summary with mutation result."""
3537
job_id = JobClient.run_job_and_wait(self._arrow_client, endpoint, config)
3638
mutate_result = MutationClient.mutate_node_property(self._arrow_client, job_id, mutate_property)
3739
computation_result = JobClient.get_summary(self._arrow_client, job_id)
38-
return computation_result, mutate_result.node_properties_written
40+
return computation_result, mutate_result
3941

4042
def run_job_and_stream(self, endpoint: str, G: Graph, config: Dict[str, Any]) -> DataFrame:
4143
"""Run a job and return streamed results."""

graphdatascience/procedure_surface/arrow/scc_arrow_endpoints.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ def mutate(
3838
sudo=sudo,
3939
)
4040

41-
computation_result, node_properties_written = self._node_property_endpoints.run_job_and_mutate(
41+
computation_result, mutate_result = self._node_property_endpoints.run_job_and_mutate(
4242
"v2/community.scc", G, config, mutate_property
4343
)
4444

45-
computation_result["nodePropertiesWritten"] = node_properties_written
46-
computation_result["mutateMillis"] = 0
45+
computation_result["nodePropertiesWritten"] = mutate_result.node_properties_written
46+
computation_result["mutateMillis"] = mutate_result.mutate_millis
4747

4848
return SccMutateResult(**computation_result)
4949

graphdatascience/procedure_surface/arrow/wcc_arrow_endpoints.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ def mutate(
4444
threshold=threshold,
4545
)
4646

47-
computation_result, node_properties_written = self._node_property_endpoints.run_job_and_mutate(
47+
computation_result, mutate_result = self._node_property_endpoints.run_job_and_mutate(
4848
"v2/community.wcc", G, config, mutate_property
4949
)
5050

51-
computation_result["nodePropertiesWritten"] = node_properties_written
52-
computation_result["mutateMillis"] = 0
51+
computation_result["nodePropertiesWritten"] = mutate_result.node_properties_written
52+
computation_result["mutateMillis"] = mutate_result.mutate_millis
5353

5454
return WccMutateResult(**computation_result)
5555

0 commit comments

Comments
 (0)