add debug logging to extractProviderUrls and pollMetrics

This commit is contained in:
Troed Sångberg
2026-06-16 13:36:59 +02:00
parent c298b5a434
commit 4931fcf424
+17 -2
View File
@@ -123,23 +123,32 @@ function stripBaseUrlPath(baseURL: string): string {
}
function extractProviderUrls(config: unknown): string[] {
if (!config || typeof config !== "object") return []
if (!config || typeof config !== "object") { debug("extractProviderUrls: config is null/undefined or not object"); return [] }
const obj = config as Record<string, unknown>
const provider = obj.provider
if (!provider || typeof provider !== "object") return []
if (!provider || typeof provider !== "object") { debug("extractProviderUrls: no provider in config"); return [] }
const urls: string[] = []
let total = 0
let matched = 0
for (const [key, val] of Object.entries(provider as Record<string, unknown>)) {
total++
if (val && typeof val === "object") {
const opts = (val as Record<string, unknown>).options
if (opts && typeof opts === "object") {
const baseURL = (opts as Record<string, unknown>).baseURL || (opts as Record<string, unknown>).base_url
debug(`extractProviderUrls: provider="${key}" baseURL=${baseURL}`)
if (typeof baseURL === "string" && key.toLowerCase().includes("llama") && !key.toLowerCase().includes("ollama")) {
urls.push(stripBaseUrlPath(baseURL))
matched++
debug(`extractProviderUrls: MATCH provider="${key}" -> ${urls[urls.length-1]}`)
} else {
debug(`extractProviderUrls: SKIP provider="${key}" (llama=${key.toLowerCase().includes("llama")} ollama=${key.toLowerCase().includes("ollama")})`)
}
}
}
}
debug(`extractProviderUrls: total=${total} matched=${matched} urls=${JSON.stringify(urls)}`)
return urls
}
@@ -304,9 +313,13 @@ const tui: TuiPlugin = async (api) => {
const prevProcessingSlotIds = new Set(Object.keys(tracker.prevNdBySlot).map(Number))
const currProcessingSlotIds = new Set<number>()
debug(`pollMetrics: urls=${JSON.stringify(llamaServerUrls)} model=${model}`)
for (const baseUrl of llamaServerUrls) {
debug(`pollMetrics: polling ${baseUrl}`)
const slots = await fetchSlots(baseUrl, model)
debug(`pollMetrics: ${baseUrl} response=${JSON.stringify(slots)?.slice(0, 500)}`)
const slotList = Array.isArray(slots) ? slots : slots ? Object.values(slots) : []
debug(`pollMetrics: ${baseUrl} slotList.length=${slotList.length}`)
if (slotList.length === 0) {
tracker.failure = "n/a"
bump()
@@ -509,11 +522,13 @@ const tui: TuiPlugin = async (api) => {
try {
const configUrls = await loadConfigUrls(api)
debug(`init: configUrls=${JSON.stringify(configUrls)} fallback=${JSON.stringify(["http://localhost:8080"])}`)
llamaServerUrls = configUrls.length > 0 ? configUrls : ["http://localhost:8080"]
} catch (e) {
console.error("[oc-ls-stats] loadConfigUrls error:", e)
llamaServerUrls = ["http://localhost:8080"]
}
debug(`init: final llamaServerUrls=${JSON.stringify(llamaServerUrls)}`)
api.slots.register({
slots: {