mirror of
https://github.com/tiennm99/litellm.git
synced 2026-08-05 22:25:05 +00:00
address greptile review feedback + UI refinements for retry display
- Show "-" when retry info is absent (older logs) - Show green "None" tag when not retried (attempted_retries === 0) - Update max_retries after deployment/retry-policy overrides (greptile feedback) - Update tests to match new display behavior Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
de1517411f
commit
d6c562a35d
+4
-1
@@ -5130,7 +5130,7 @@ class Router:
|
||||
)
|
||||
## ADD RETRY TRACKING TO METADATA - used for spend logs retry tracking
|
||||
_metadata["attempted_retries"] = 0
|
||||
_metadata["max_retries"] = num_retries
|
||||
_metadata["max_retries"] = num_retries # Updated after overrides in exception handler
|
||||
try:
|
||||
self._handle_mock_testing_rate_limit_error(
|
||||
model_group=model_group, kwargs=kwargs
|
||||
@@ -5196,6 +5196,9 @@ class Router:
|
||||
regular_fallbacks=fallbacks,
|
||||
content_policy_fallbacks=content_policy_fallbacks,
|
||||
)
|
||||
# Update max_retries after overrides (deployment_num_retries / retry_policy)
|
||||
_metadata["max_retries"] = num_retries
|
||||
|
||||
## LOGGING
|
||||
if num_retries > 0:
|
||||
kwargs = self.log_retry(kwargs=kwargs, e=original_exception)
|
||||
|
||||
@@ -296,13 +296,13 @@ function MetricsSection({ logEntry, metadata }: { logEntry: LogEntry; metadata:
|
||||
</Descriptions.Item>
|
||||
)}
|
||||
|
||||
{metadata?.attempted_retries !== undefined && metadata?.attempted_retries !== null && (
|
||||
<Descriptions.Item label="Retries">
|
||||
{metadata.attempted_retries > 0
|
||||
<Descriptions.Item label="Retries">
|
||||
{metadata?.attempted_retries !== undefined && metadata?.attempted_retries !== null
|
||||
? metadata.attempted_retries > 0
|
||||
? <>{metadata.attempted_retries}{metadata.max_retries !== undefined && metadata.max_retries !== null ? ` / ${metadata.max_retries}` : ''}</>
|
||||
: "Not Retried"}
|
||||
</Descriptions.Item>
|
||||
)}
|
||||
: <Tag color="green">None</Tag>
|
||||
: "-"}
|
||||
</Descriptions.Item>
|
||||
|
||||
<Descriptions.Item label="Start Time">
|
||||
{moment(logEntry.startTime).format("YYYY-MM-DDTHH:mm:ss.SSS[Z]")}
|
||||
|
||||
@@ -145,7 +145,7 @@ describe("Request Viewer", () => {
|
||||
expect(screen.getByText("2 / 3")).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("should display 'Not Retried' when attempted_retries is 0", () => {
|
||||
it("should display green 'None' tag when attempted_retries is 0", () => {
|
||||
render(
|
||||
<RequestViewer
|
||||
row={createRow({
|
||||
@@ -163,13 +163,14 @@ describe("Request Viewer", () => {
|
||||
);
|
||||
|
||||
expect(screen.getByText("Retries:")).toBeInTheDocument();
|
||||
expect(screen.getByText("Not Retried")).toBeInTheDocument();
|
||||
expect(screen.getByText("None")).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("should not display Retries when attempted_retries is not present in metadata", () => {
|
||||
it("should display '-' for Retries when attempted_retries is not present in metadata", () => {
|
||||
render(<RequestViewer row={createRow()} />);
|
||||
|
||||
expect(screen.queryByText("Retries:")).not.toBeInTheDocument();
|
||||
expect(screen.getByText("Retries:")).toBeInTheDocument();
|
||||
expect(screen.getByText("-")).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import { truncateString } from "@/utils/textUtils";
|
||||
import { SettingOutlined, SyncOutlined } from "@ant-design/icons";
|
||||
import { Row } from "@tanstack/react-table";
|
||||
import { Switch, Tab, TabGroup, TabList, TabPanel, TabPanels } from "@tremor/react";
|
||||
import { Button, Tooltip } from "antd";
|
||||
import { Button, Tag, Tooltip } from "antd";
|
||||
import { internalUserRoles } from "../../utils/roles";
|
||||
import DeletedKeysPage from "../DeletedKeysPage/DeletedKeysPage";
|
||||
import DeletedTeamsPage from "../DeletedTeamsPage/DeletedTeamsPage";
|
||||
@@ -960,16 +960,16 @@ export function RequestViewer({ row, onOpenSettings }: { row: Row<LogEntry>; onO
|
||||
<span>{row.original.metadata.litellm_overhead_time_ms} ms</span>
|
||||
</div>
|
||||
)}
|
||||
{row.original.metadata?.attempted_retries !== undefined && row.original.metadata?.attempted_retries !== null && (
|
||||
<div className="flex">
|
||||
<span className="font-medium w-1/3">Retries:</span>
|
||||
<span>
|
||||
{row.original.metadata.attempted_retries > 0
|
||||
<div className="flex">
|
||||
<span className="font-medium w-1/3">Retries:</span>
|
||||
<span>
|
||||
{row.original.metadata?.attempted_retries !== undefined && row.original.metadata?.attempted_retries !== null
|
||||
? row.original.metadata.attempted_retries > 0
|
||||
? `${row.original.metadata.attempted_retries}${row.original.metadata.max_retries !== undefined && row.original.metadata.max_retries !== null ? ` / ${row.original.metadata.max_retries}` : ''}`
|
||||
: 'Not Retried'}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
: <Tag color="green">None</Tag>
|
||||
: '-'}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user