Skip to content

Commit

Permalink
DB: warn and truncate on overly-long task event messages.
Browse files Browse the repository at this point in the history
Signed-off-by: Nashwan Azhari <[email protected]>
  • Loading branch information
aznashwan committed Mar 16, 2024
1 parent 1b4a541 commit dface4f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
18 changes: 17 additions & 1 deletion coriolis/db/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -869,10 +869,18 @@ def _get_progress_update(context, task_id, index):
def add_task_progress_update(
context, task_id, message, initial_step=0, total_steps=0):
task_progress_update = models.TaskProgressUpdate()
task_progress_update.id = str(uuid.uuid4())
task_event_id = str(uuid.uuid4())
task_progress_update.id = task_event_id
task_progress_update.task_id = task_id
task_progress_update.current_step = initial_step
task_progress_update.total_steps = total_steps
max_msg_len = models.MAX_EVENT_MESSAGE_LENGHT
if len(message) > max_msg_len:
LOG.warn(
f"Progress message for task '{task_id}' with ID '{task_event_id}'"
f"is too long. Truncating before insertion. "
f"Original message was: '{message}'")
message = f"{message[:max_msg_len-len('...')]}..."
task_progress_update.message = message

task_progress_update.index = 0
Expand All @@ -899,6 +907,14 @@ def update_task_progress_update(
if new_total_steps is not None:
task_progress_update.total_steps = new_total_steps
if new_message is not None:
max_msg_len = models.MAX_EVENT_MESSAGE_LENGHT
if len(new_message) > max_msg_len:
task_event_id = task_progress_update.id
LOG.warn(
f"Progress message for task '{task_id}' with ID '{task_event_id}'"
f"is too long. Truncating before insertion. "
f"Original message was: '{new_message}'")
new_message = f"{new_message[:max_msg_len-len('...')]}..."
task_progress_update.message = new_message


Expand Down
5 changes: 4 additions & 1 deletion coriolis/db/sqlalchemy/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,12 @@

BASE = declarative.declarative_base()

MAX_EVENT_MESSAGE_LENGHT = 1024


class TaskEvent(BASE, models.TimestampMixin, models.SoftDeleteMixin,
models.ModelBase):

__tablename__ = 'task_event'

id = sqlalchemy.Column(sqlalchemy.String(36),
Expand All @@ -27,7 +30,7 @@ class TaskEvent(BASE, models.TimestampMixin, models.SoftDeleteMixin,
nullable=False)
level = sqlalchemy.Column(sqlalchemy.String(20), nullable=False)
index = sqlalchemy.Column(sqlalchemy.Integer, nullable=False)
message = sqlalchemy.Column(sqlalchemy.String(1024), nullable=False)
message = sqlalchemy.Column(sqlalchemy.String(MAX_EVENT_MESSAGE_LENGHT), nullable=False)

def to_dict(self):
result = {
Expand Down

0 comments on commit dface4f

Please sign in to comment.