qishibo/AnotherRedisDesktopManager · warning
this.$t('message.delete_failed')
Error message
this.$t('message.delete_failed') What it means
deleteLine() calls client.lrem(redisKey, 1, row.value); LREM removes up to count occurrences matching the value and returns the number removed. The UI treats a reply of 0 as delete_failed: the exact value row.value was not present in the list (anymore), so nothing was removed and the table row is intentionally kept.
Source
Thrown at src/components/contents/KeyContentList.vue:279
this.$t('message.confirm_to_delete_row_data'),
{ type: 'warning' },
).then(() => {
this.client.lrem(
this.redisKey,
1,
row.value,
).then((reply) => {
if (reply > 0) {
this.$message.success({
message: this.$t('message.delete_success'),
duration: 1000,
});
// this.initShow(); // do not reinit, #786
this.listData.splice(this.listData.indexOf(row), 1);
this.total--;
} else {
this.$message.error({
message: this.$t('message.delete_failed'),
duration: 1000,
});
}
}).catch((e) => { this.$message.error(e.message); });
}).catch(() => {});
},
},
mounted() {
this.initShow();
},
beforeDestroy() {
this.cancelScanning = true;
},
};
</script>
View on GitHub (pinned to c149855106)
Solutions
- Click reload on the key tab to resync the table; the row usually disappears on its own because it no longer exists server-side
- If the row still shows after reload, suspect encoding: view the value in hex/binary mode and delete by index instead (LSET key index '' + LREM, or a transaction using LINDEX to verify bytes)
- Coordinate with other clients/workers consuming the list so deletions don't race
- Confirm you are connected to the same DB/node the key lives in (replica read-only views can show stale rows)
Example fix
// before: error toast only; stale row stays in the table
} else {
this.$message.error({
message: this.$t('message.delete_failed'),
duration: 1000,
});
}
// after: a 0 reply means the value is already gone — resync and drop the stale row
} else {
this.$message.warning({
message: this.$t('message.delete_failed'),
duration: 1000,
});
this.listData.splice(this.listData.indexOf(row), 1);
this.total--;
} Defensive patterns
Strategy: fallback
Validate before calling
// verify the exact value still exists before asking LREM (Redis 6.2+)
const idx = await client.lpos(this.redisKey, row.value).catch(() => null);
if (idx === null) {
// already gone server-side: just drop the stale row locally
this.listData.splice(this.listData.indexOf(row), 1);
this.total--;
return;
} Type guard
null
Try / catch
// treat a 0 reply as resync, not as a hard error
client.lrem(this.redisKey, 1, row.value).then((reply) => {
if (reply > 0) {
this.listData.splice(this.listData.indexOf(row), 1);
this.total--;
} else {
this.$message.warning('Value not found — refreshing');
this.resetTable();
this.initShow();
}
}).catch((e) => this.$message.error(e.message)); Prevention
- Refresh the tab before deleting rows in keys that other clients/workers mutate
- When values are binary, verify bytes with LINDEX (hex view) rather than trusting the rendered text — LREM matches exact bytes
- A delete_failed followed by reload usually resolves itself: the value is typically already gone
- For queue keys, prefer deleting at a stable index via a verified MULTI/EXEC (LINDEX check + LSET/LREM) instead of by value
When it happens
Trigger: LREM key 1 <value> returning 0: another client already removed or altered that exact value between rendering the table and the user confirming deletion; the row's displayed value differs byte-wise from what is stored (binary/encoding mismatch, so LREM finds no match); key flushed/recreated with different items.
Common situations: List is a shared work queue being consumed by workers (LPOP/RPOPLPOP) while a user deletes rows in the GUI; two sessions viewing the same key with one stale; values containing non-UTF8 bytes displayed with replacement characters — the copy sent to LREM never matches; deleting right after another admin's cleanup.
Related errors
- ${this.$t('message.modify_failed')}, ${this.$t('message.valu
- this.$t('message.delete_failed')
- e.message
- this.$t('message.delete_failed')
- this.$t('message.modify_failed')
AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22).
Data as JSON: /api/errors/9042726fc9f13b28.
Report an issue: GitHub.