mirror of
https://github.com/clearml/clearml-server
synced 2025-06-12 01:00:04 +00:00
Add events.clear_scroll endpoint to clear event search scrolls
This commit is contained in:
parent
abd65e103e
commit
d146127c18
@ -137,3 +137,7 @@ class TaskPlotsRequest(Base):
|
|||||||
scroll_id: str = StringField()
|
scroll_id: str = StringField()
|
||||||
no_scroll: bool = BoolField(default=False)
|
no_scroll: bool = BoolField(default=False)
|
||||||
metrics: Sequence[MetricVariants] = ListField(items_types=MetricVariants)
|
metrics: Sequence[MetricVariants] = ListField(items_types=MetricVariants)
|
||||||
|
|
||||||
|
|
||||||
|
class ClearScrollRequest(Base):
|
||||||
|
scroll_id: str = StringField()
|
||||||
|
@ -8,7 +8,7 @@ from datetime import datetime
|
|||||||
from operator import attrgetter
|
from operator import attrgetter
|
||||||
from typing import Sequence, Set, Tuple, Optional, List, Mapping, Union
|
from typing import Sequence, Set, Tuple, Optional, List, Mapping, Union
|
||||||
|
|
||||||
from elasticsearch import helpers
|
import elasticsearch
|
||||||
from elasticsearch.helpers import BulkIndexError
|
from elasticsearch.helpers import BulkIndexError
|
||||||
from mongoengine import Q
|
from mongoengine import Q
|
||||||
from nested_dict import nested_dict
|
from nested_dict import nested_dict
|
||||||
@ -48,6 +48,9 @@ MAX_LONG = 2 ** 63 - 1
|
|||||||
MIN_LONG = -(2 ** 63)
|
MIN_LONG = -(2 ** 63)
|
||||||
|
|
||||||
|
|
||||||
|
log = config.logger(__file__)
|
||||||
|
|
||||||
|
|
||||||
class PlotFields:
|
class PlotFields:
|
||||||
valid_plot = "valid_plot"
|
valid_plot = "valid_plot"
|
||||||
plot_len = "plot_len"
|
plot_len = "plot_len"
|
||||||
@ -219,7 +222,7 @@ class EventBLL(object):
|
|||||||
with TimingContext("es", "events_add_batch"):
|
with TimingContext("es", "events_add_batch"):
|
||||||
# TODO: replace it with helpers.parallel_bulk in the future once the parallel pool leak is fixed
|
# TODO: replace it with helpers.parallel_bulk in the future once the parallel pool leak is fixed
|
||||||
with closing(
|
with closing(
|
||||||
helpers.streaming_bulk(
|
elasticsearch.helpers.streaming_bulk(
|
||||||
self.es,
|
self.es,
|
||||||
actions,
|
actions,
|
||||||
chunk_size=chunk_size,
|
chunk_size=chunk_size,
|
||||||
@ -1005,3 +1008,16 @@ class EventBLL(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
return es_res.get("deleted", 0)
|
return es_res.get("deleted", 0)
|
||||||
|
|
||||||
|
def clear_scroll(self, scroll_id: str):
|
||||||
|
if scroll_id == self.empty_scroll:
|
||||||
|
return
|
||||||
|
# noinspection PyBroadException
|
||||||
|
try:
|
||||||
|
self.es.clear_scroll(scroll_id=scroll_id)
|
||||||
|
except elasticsearch.exceptions.NotFoundError:
|
||||||
|
pass
|
||||||
|
except elasticsearch.exceptions.RequestError:
|
||||||
|
pass
|
||||||
|
except Exception as ex:
|
||||||
|
log.exception("Failed clearing scroll %s", scroll_id)
|
||||||
|
@ -1304,3 +1304,24 @@ scalar_metrics_iter_raw {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
clear_scroll {
|
||||||
|
"2.18" {
|
||||||
|
description: "Clear an open Scroll ID"
|
||||||
|
request {
|
||||||
|
type: object
|
||||||
|
required: [
|
||||||
|
scroll_id
|
||||||
|
]
|
||||||
|
properties {
|
||||||
|
scroll_id {
|
||||||
|
description: "Scroll ID as returned by previous events service calls"
|
||||||
|
type: string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response {
|
||||||
|
type: object
|
||||||
|
additionalProperties: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -25,6 +25,7 @@ from apiserver.apimodels.events import (
|
|||||||
TaskPlotsRequest,
|
TaskPlotsRequest,
|
||||||
TaskEventsRequest,
|
TaskEventsRequest,
|
||||||
ScalarMetricsIterRawRequest,
|
ScalarMetricsIterRawRequest,
|
||||||
|
ClearScrollRequest,
|
||||||
)
|
)
|
||||||
from apiserver.bll.event import EventBLL
|
from apiserver.bll.event import EventBLL
|
||||||
from apiserver.bll.event.event_common import EventType, MetricVariants
|
from apiserver.bll.event.event_common import EventType, MetricVariants
|
||||||
@ -936,3 +937,9 @@ def scalar_metrics_iter_raw(
|
|||||||
scroll_id=scroll.get_scroll_id(),
|
scroll_id=scroll.get_scroll_id(),
|
||||||
variants=variants,
|
variants=variants,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@endpoint("events.clear_scroll", min_version="2.18")
|
||||||
|
def clear_scroll(_, __, request: ClearScrollRequest):
|
||||||
|
if request.scroll_id:
|
||||||
|
event_bll.clear_scroll(request.scroll_id)
|
||||||
|
Loading…
Reference in New Issue
Block a user