Fix cluster nodes sorting error

- Handle timestamp strings in sorting function
- Parse ISO timestamp strings to numeric values for proper sorting
- Prevent TypeError when sorting by last_seen timestamp
parent 6f374101
...@@ -641,7 +641,19 @@ def api_cluster_nodes(): ...@@ -641,7 +641,19 @@ def api_cluster_nodes():
nodes.append(local_node) nodes.append(local_node)
# Sort: active first, then by last_seen desc # Sort: active first, then by last_seen desc
nodes.sort(key=lambda x: (not x['connected'], -x['last_seen'])) def sort_key(node):
connected = node['connected']
last_seen = node.get('last_seen', 0)
if isinstance(last_seen, str):
try:
# Parse timestamp string to float
import datetime
last_seen = datetime.datetime.fromisoformat(last_seen.replace('Z', '+00:00')).timestamp()
except:
last_seen = 0
return (not connected, -last_seen)
nodes.sort(key=sort_key)
# Cluster master stats # Cluster master stats
from .cluster_master import cluster_master from .cluster_master import cluster_master
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment