mirror of
https://github.com/mempool/mempool.git
synced 2025-02-23 06:35:15 +01:00
fix monitoring git hash urls
This commit is contained in:
parent
90bb5304ef
commit
4fe246ecf1
1 changed files with 20 additions and 2 deletions
|
@ -20,6 +20,7 @@ interface FailoverHost {
|
|||
preferred?: boolean,
|
||||
checked: boolean,
|
||||
lastChecked?: number,
|
||||
publicDomain: string,
|
||||
hashes: {
|
||||
frontend?: string,
|
||||
backend?: string,
|
||||
|
@ -58,6 +59,7 @@ class FailoverRouter {
|
|||
rtts: [],
|
||||
rtt: Infinity,
|
||||
failures: 0,
|
||||
publicDomain: 'https://' + this.extractPublicDomain(domain),
|
||||
hashes: {
|
||||
lastUpdated: 0,
|
||||
},
|
||||
|
@ -71,6 +73,7 @@ class FailoverRouter {
|
|||
socket: !!config.ESPLORA.UNIX_SOCKET_PATH,
|
||||
preferred: true,
|
||||
checked: false,
|
||||
publicDomain: `http://${this.localHostname}`,
|
||||
hashes: {
|
||||
lastUpdated: 0,
|
||||
},
|
||||
|
@ -242,7 +245,7 @@ class FailoverRouter {
|
|||
// methods for retrieving git hashes by host
|
||||
private async $updateFrontendGitHash(host: FailoverHost): Promise<void> {
|
||||
try {
|
||||
const url = host.socket ? `http://${this.localHostname}/resources/config.js` : `${host.host.slice(0, -4)}/resources/config.js`;
|
||||
const url = `${host.publicDomain}/resources/config.js`;
|
||||
const response = await this.pollConnection.get<string>(url, { timeout: config.ESPLORA.FALLBACK_TIMEOUT });
|
||||
const match = response.data.match(/GIT_COMMIT_HASH\s*=\s*['"](.*?)['"]/);
|
||||
if (match && match[1]?.length) {
|
||||
|
@ -255,7 +258,7 @@ class FailoverRouter {
|
|||
|
||||
private async $updateBackendGitHash(host: FailoverHost): Promise<void> {
|
||||
try {
|
||||
const url = host.socket ? `http://${this.localHostname}/api/v1/backend-info` : `${host.host}/v1/backend-info`;
|
||||
const url = `${host.publicDomain}/api/v1/backend-info`;
|
||||
const response = await this.pollConnection.get<any>(url, { timeout: config.ESPLORA.FALLBACK_TIMEOUT });
|
||||
if (response.data?.gitCommit) {
|
||||
host.hashes.backend = response.data.gitCommit;
|
||||
|
@ -265,6 +268,21 @@ class FailoverRouter {
|
|||
}
|
||||
}
|
||||
|
||||
// returns the public mempool domain corresponding to an esplora server url
|
||||
// (a bit of a hack to avoid manually specifying frontend & backend URLs for each esplora server)
|
||||
private extractPublicDomain(url: string): string {
|
||||
// force the url to start with a valid protocol
|
||||
const urlWithProtocol = url.startsWith('http') ? url : `https://${url}`;
|
||||
// parse as URL and extract the hostname
|
||||
try {
|
||||
const parsed = new URL(urlWithProtocol);
|
||||
return parsed.hostname;
|
||||
} catch (e) {
|
||||
// fallback to the original url
|
||||
return url;
|
||||
}
|
||||
}
|
||||
|
||||
private async $query<T>(method: 'get'| 'post', path, data: any, responseType = 'json', host = this.activeHost, retry: boolean = true): Promise<T> {
|
||||
let axiosConfig;
|
||||
let url;
|
||||
|
|
Loading…
Add table
Reference in a new issue