Skip to content

Commit

Permalink
Merge branch 'deploy/hammer' into hammer/use-labels
Browse files Browse the repository at this point in the history
Signed-off-by: Aaron Chong <aaronchongth@gmail.com>
  • Loading branch information
aaronchongth committed May 6, 2024
2 parents 6e3c930 + 1f14af3 commit 3f9a874
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 14 deletions.
2 changes: 1 addition & 1 deletion packages/api-client/lib/version.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ import { version as rmfModelVer } from 'rmf-models';

export const version = {
rmfModels: rmfModelVer,
rmfServer: '4c9eb01b568dd3b5e98d46fd3571d2e5b173179e',
rmfServer: '6e3c9301f2d3c5f44ae8f08aad9d00d8ba60749d',
openapiGenerator: '6.2.1',
};
16 changes: 15 additions & 1 deletion packages/api-server/api_server/repositories/tasks.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import asyncio
import sys
from datetime import datetime
from typing import Dict, List, Optional, Sequence, Tuple, cast
Expand Down Expand Up @@ -37,6 +38,7 @@ def __init__(
):
self.user = user
self.logger = logger
self.save_task_state_mutex = asyncio.Lock()

async def save_task_request(
self, task_state: TaskState, task_request: TaskRequest
Expand Down Expand Up @@ -101,7 +103,19 @@ async def save_task_state(self, task_state: TaskState) -> None:
task_state.unix_millis_warn_time / 1000
)

await ttm.TaskState.update_or_create(task_state_dict, id_=task_state.booking.id)
# FIXME: If the task dispatcher is also provided websocket access to
# the API server, when a new task is dispatched via the API server,
# there may be a race condition where both the ROS 2 task response and
# task dispatcher websocket update may attempt to create a new task
# state model with the same task ID. This have unfortunately not been
# reproducible locally, only in the production environment, which uses
# Postgres instead of sqlite. This may be fixed upstream in DB or ORM,
# this mutex can be removed once these libraries have been updated and
# tested to be fixed.
async with self.save_task_state_mutex:
await ttm.TaskState.update_or_create(
task_state_dict, id_=task_state.booking.id
)

async def query_task_states(
self, query: QuerySet[DbTaskState], pagination: Optional[Pagination] = None
Expand Down
10 changes: 2 additions & 8 deletions packages/api-server/api_server/routes/delivery_alerts.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
import logging

from fastapi import Depends
from rx import operators as rxops

from api_server.authenticator import user_dep
from api_server.fast_io import FastIORouter, SubscriptionRequest
from api_server.gateway import rmf_gateway
from api_server.logging import get_logger
from api_server.models import User
from api_server.logging import LoggerAdapter, get_logger
from api_server.models.delivery_alerts import (
DeliveryAlert,
action_to_msg,
Expand All @@ -32,8 +28,7 @@ async def respond_to_delivery_alert(
task_id: str,
action: DeliveryAlert.Action,
message: str,
user: User = Depends(user_dep),
logger: logging.Logger = Depends(get_logger),
logger: LoggerAdapter = Depends(get_logger),
):
delivery_alert = DeliveryAlert(
id=delivery_alert_id,
Expand All @@ -43,7 +38,6 @@ async def respond_to_delivery_alert(
task_id=task_id,
message=message,
)
logger.info(f"Delivery alert responded by {user.username}")
logger.info(delivery_alert)
rmf_gateway().respond_to_delivery_alert(
alert_id=delivery_alert.id,
Expand Down
8 changes: 4 additions & 4 deletions packages/api-server/api_server/routes/internal.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,12 @@ async def process_msg(
logger: LoggerAdapter,
) -> None:
if "type" not in msg:
logger.warn(msg)
logger.warn("Ignoring message, 'type' must include in msg field")
logger.warning(msg)
logger.warning("Ignoring message, 'type' must include in msg field")
return
payload_type: str = msg["type"]
if not isinstance(payload_type, str):
logger.warn("error processing message, 'type' must be a string")
logger.warning("error processing message, 'type' must be a string")
return
logger.debug(msg)

Expand Down Expand Up @@ -152,4 +152,4 @@ async def rmf_gateway(
await process_msg(msg, fleet_repo, task_repo, alert_repo, logger)
except (WebSocketDisconnect, ConnectionClosed):
connection_manager.disconnect(websocket)
logger.warn("Client websocket disconnected")
logger.warning("Client websocket disconnected")
13 changes: 13 additions & 0 deletions packages/dashboard/src/components/delivery-alert-store.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,19 @@ const DeliveryWarningDialog = React.memo((props: DeliveryWarningDialogProps) =>
>
Cancelled
</Button>
) : deliveryAlert.message && deliveryAlert.message.includes(' latch ') ? (
<Button
size="small"
variant="contained"
disabled
autoFocus
sx={{
fontSize: isScreenHeightLessThan800 ? '0.8rem' : '1rem',
padding: isScreenHeightLessThan800 ? '4px 8px' : '6px 12px',
}}
>
Cancel
</Button>
) : newTaskState ? (
<Tooltip title="Cancels the current delivery task.">
<TaskCancelButton
Expand Down

0 comments on commit 3f9a874

Please sign in to comment.