Skip to content

Commit 2c1de00

Browse files
committed
refactor user public key handling in health.py due to production bug in largest_perp_positions endpoint:
``` "[TypeError("'solders.pubkey.Pubkey' object is not iterable"), TypeError('vars() argument must have __dict__ attribute')]" ``` - updated the handling of user public keys in multiple functions to ensure they are consistently converted to strings before being appended to position data.
1 parent a166fbf commit 2c1de00

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

backend/api/health.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ def get_largest_perp_positions(request: BackendRequest, market_index: int = None
163163
# Store position info with actual value
164164
all_positions.append((
165165
base_asset_value, # Actual value for sorting
166-
user.user_public_key,
166+
str(user.user_public_key),
167167
position.market_index,
168168
position.base_asset_amount / BASE_PRECISION, # Keep original sign for display
169169
))
@@ -239,7 +239,7 @@ def get_most_levered_perp_positions_above_1m(request: BackendRequest, market_ind
239239
if base_asset_value > 1_000_000:
240240
item = (
241241
to_financial(base_asset_value),
242-
user.user_public_key,
242+
str(user.user_public_key),
243243
position.market_index,
244244
position.base_asset_amount / BASE_PRECISION,
245245
leverage,
@@ -303,7 +303,7 @@ def get_largest_spot_borrows(request: BackendRequest, market_index: int = None):
303303
) * market_price_ui
304304
item = (
305305
to_financial(borrow_value),
306-
user.user_public_key,
306+
str(user.user_public_key),
307307
position.market_index,
308308
position.scaled_balance / SPOT_BALANCE_PRECISION,
309309
)
@@ -380,15 +380,15 @@ def get_most_levered_spot_borrows_above_1m(request: BackendRequest, market_index
380380

381381
error_positions.append({
382382
"market_index": position.market_index,
383-
"public_key": user.user_public_key,
383+
"public_key": str(user.user_public_key),
384384
"scaled_balance": scaled_balance,
385385
"error": position_error
386386
})
387387

388388
# Add this one with error
389389
item = (
390390
borrow_value, # Will be sorted last due to 0 value
391-
user.user_public_key,
391+
str(user.user_public_key),
392392
position.market_index,
393393
scaled_balance,
394394
leverage,
@@ -412,7 +412,7 @@ def get_most_levered_spot_borrows_above_1m(request: BackendRequest, market_index
412412
if borrow_value > 750_000:
413413
item = (
414414
to_financial(borrow_value),
415-
user.user_public_key,
415+
str(user.user_public_key),
416416
position.market_index,
417417
position.scaled_balance / SPOT_BALANCE_PRECISION,
418418
leverage,
@@ -429,7 +429,7 @@ def get_most_levered_spot_borrows_above_1m(request: BackendRequest, market_index
429429
# Add error position
430430
error_positions.append({
431431
"market_index": position.market_index,
432-
"public_key": user.user_public_key,
432+
"public_key": str(user.user_public_key),
433433
"scaled_balance": position.scaled_balance / SPOT_BALANCE_PRECISION,
434434
"error": position_error
435435
})
@@ -487,7 +487,7 @@ def get_largest_spot_borrow_per_market(request: BackendRequest):
487487
) * market_price_ui
488488
borrow_item = (
489489
to_financial(borrow_value),
490-
user.user_public_key,
490+
str(user.user_public_key),
491491
position.market_index,
492492
position.scaled_balance / SPOT_BALANCE_PRECISION,
493493
)

0 commit comments

Comments
 (0)