Skip to content

Commit

Permalink
better error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
Razzmatazzz committed Aug 8, 2024
1 parent 2126f24 commit aa257df
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 21 deletions.
14 changes: 11 additions & 3 deletions http/env-binding.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,16 @@ async function getDataPrimary(kvName, format) {
if (response.status === 404) {
return null;
}
if (response.status === 400) {
return Promise.reject(new Error('Invalid CLOUDFLARE_TOKEN'));
}
if (response.status !== 200) {
return Promise.reject(new Error(`${response.statusText} ${response.status}`));
}
if (format === 'json') {
return response.json();
}
return response.text();

return response.text();
}

async function getDataWorker(kvName, format) {
Expand All @@ -48,14 +53,17 @@ async function getDataWorker(kvName, format) {
return new Promise((resolve, reject) => {
const messageId = uuidv4();
emitter.once(messageId, (message) => {
if (message.error) {
return reject(new Error(message.error));
}
resolve(message.data);
});
process.send({action: 'getKv', kvName, id: messageId});
});
}

const DATA_CACHE = {
get: async (kvName, format) => {
get: (kvName, format) => {
if (cluster.isPrimary) {
return getDataPrimary(kvName, format);
}
Expand Down
43 changes: 26 additions & 17 deletions http/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,35 @@ if (cluster.isPrimary && workerCount > 0) {
cluster.workers[id].on('message', async (message) => {
//console.log(`message from worker ${id}:`, message);
if (message.action === 'getKv') {
let data;
if (kvStore[message.kvName]) {
data = kvStore[message.kvName];
} else if (kvLoading[message.kvName]) {
data = await kvLoading[message.kvName];
} else {
kvLoading[message.kvName] = env.DATA_CACHE.get(message.kvName, 'json');
data = await kvLoading[message.kvName];
let refreshTime = 1000 * 60 * 30;
if (data?.expiration && new Date(data.expiration) > new Date()) {
refreshTime = new Date(data.expiration) - new Date();
if (refreshTime < 1000 * 60) {
refreshTime = 60000;
const response = {
action: 'kvData',
kvName: message.kvName,
id: message.id,
};
try {
if (kvStore[message.kvName]) {
response.data = JSON.stringify(kvStore[message.kvName]);
} else if (kvLoading[message.kvName]) {
response.data = JSON.stringify(await kvLoading[message.kvName]);
} else {
kvLoading[message.kvName] = env.DATA_CACHE.get(message.kvName, 'json');
const data = await kvLoading[message.kvName];
let refreshTime = 1000 * 60 * 30;
if (data?.expiration && new Date(data.expiration) > new Date()) {
refreshTime = new Date(data.expiration) - new Date();
if (refreshTime < 1000 * 60) {
refreshTime = 60000;
}
}
response.data = JSON.stringify(data);
setTimeout(() => {
delete kvStore[message.kvName];
}, refreshTime);
}
setTimeout(() => {
delete kvStore[message.kvName];
}, refreshTime);
} catch (error) {
response.error = error.message;
}
cluster.workers[id].send({action: 'kvData', kvName: message.kvName, data: JSON.stringify(data), id: message.id});
cluster.workers[id].send(response);
}
});
}
Expand Down
9 changes: 8 additions & 1 deletion wrangler.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,20 @@ kv_namespaces = [
{ binding = "DATA_CACHE", id = "2e6feba88a9e4097b6d2209191ed4ae5", preview_id = "17fd725f04984e408d4a70b37c817171" },
]
vars = { ENVIRONMENT = "production" }

routes = [
{ pattern = "api.tarkov.dev/*", zone_name = "tarkov.dev" },
{ pattern = "streamer.tarkov.dev/*", zone_name = "tarkov.dev" }
]

[env.development]
kv_namespaces = [
{ binding = "DATA_CACHE", id = "17fd725f04984e408d4a70b37c817171", preview_id = "17fd725f04984e408d4a70b37c817171" },
]
vars = { ENVIRONMENT = "development", SKIP_CACHE = "false" }
routes = [
{ pattern = "dev-api.tarkov.dev/*", zone_name = "tarkov.dev" },
{ pattern = "dev-streamer.tarkov.dev/*", zone_name = "tarkov.dev" }
]

# [secrets]
# CACHE_BASIC_AUTH
Expand Down

0 comments on commit aa257df

Please sign in to comment.