Fix memcached client fetch for key not found

The memcached client wasn't correctly handling looking up a key that
didn't exist.  Now we only try to push the expiration forward if there
is actually a value in memcached.

Also while I'm in here, allow expiration to be left blank.
This commit is contained in:
John Crepezzi 2020-10-06 01:36:46 -04:00
parent ef0ca40533
commit 4cac6713ef

View file

@ -26,7 +26,7 @@ class MemcachedDocumentStore {
// Save file in a key // Save file in a key
set(key, data, callback, skipExpire) { set(key, data, callback, skipExpire) {
this.client.set(key, data, skipExpire ? 0 : this.expire, (error) => { this.client.set(key, data, skipExpire ? 0 : this.expire || 0, (error) => {
callback(!error); callback(!error);
}); });
} }
@ -34,10 +34,12 @@ class MemcachedDocumentStore {
// Get a file from a key // Get a file from a key
get(key, callback, skipExpire) { get(key, callback, skipExpire) {
this.client.get(key, (error, data) => { this.client.get(key, (error, data) => {
callback(error ? false : data); const value = error ? false : data;
callback(value);
// Update the key so that the expiration is pushed forward // Update the key so that the expiration is pushed forward
if (!skipExpire) { if (value && !skipExpire) {
this.set(key, data, (updateSucceeded) => { this.set(key, data, (updateSucceeded) => {
if (!updateSucceeded) { if (!updateSucceeded) {
winston.error('failed to update expiration on GET', {key}); winston.error('failed to update expiration on GET', {key});