qishibo/AnotherRedisDesktopManager · error
e.message
Error message
e.message
What it means
Toast showing e.message when the paged XREVRANGE read fails in KeyContentStream.vue:272. listScan() drives pagination with xrevrangeBuffer([key, maxId, minId, 'COUNT', n]) and loops until pageSize rows accumulate (filtering client-side); any rejection in that loop stops loading and clears the spinner. Because the loop re-invokes listScan, one bad round-trip surfaces after several successful pages.
Source
Thrown at src/components/contents/KeyContentStream.vue:272
this.oneTimeListLength += lineData.length;
this.lineData = this.lineData.concat(lineData);
// enough rows, or Redis returned fewer than requested (no more data)
if (this.oneTimeListLength >= this.pageSize || reply.length < pageSize) {
this.loadingIcon = '';
this.oneTimeListLength = 0;
return;
}
if (this.cancelScanning) {
return;
}
// continue scanning until to pagesize
this.listScan();
}).catch((e) => {
this.loadingIcon = '';
this.$message.error(e.message);
});
},
initTotal() {
this.client.xlen(this.redisKey).then((reply) => {
this.total = reply;
});
},
formatIdTime(id) {
try {
const ts = Number(String(id).split('-')[0]);
if (!ts) {
return id;
}
return new Date(ts).toLocaleString();
} catch (e) {
return id;
}
},View on GitHub (pinned to c149855106)
Solutions
- Reconnect and press load-more — XREVRANGE is stateless, pagination restarts cleanly
- Validate custom min/max ID fields use '<ms>-<seq>' or '-'/'+' before scanning
- Reload the key if the type badge changed; WRONGTYPE means it is no longer a stream
- For huge streams, raise page size or narrow the ID window to reduce round-trips
Example fix
// before
}).catch((e) => {
this.loadingIcon = '';
this.$message.error(e.message);
});
// after: keep pagination alive for transient link errors
}).catch((e) => {
this.loadingIcon = '';
this.loadMoreDisable = /WRONGTYPE|Invalid stream ID/i.test(e.message);
this.$message.error(e.message);
}); Defensive patterns
Strategy: try-catch
Validate before calling
// validate custom stream ID boundaries before scanning
const idOk = (v) => v === '' || v === '-' || v === '+' || /^\d+-\d+$/.test(v);
if (!idOk(this.minId || '') || !idOk(this.maxId || '')) {
this.$message.error('stream id must be ms-seq, -, + or empty');
return;
} Try / catch
.catch((e) => {
this.loadingIcon = '';
this.loadMoreDisable = /WRONGTYPE|Invalid stream ID/i.test(e.message);
this.$message.error(e.message);
}) Prevention
- Format stream IDs strictly as <ms>-<seq> with non-negative integers
- Reload the key if producers replace the stream while you page it
- Reconnect and continue — XREVRANGE pagination is restartable
When it happens
Trigger: XREVRANGE rejected when: the connection drops mid-pagination ('Connection is closed'); the key stops being a stream (WRONGTYPE) after being recreated; a manually typed minId/maxId in the toolbar is not a valid stream ID ("ERR Invalid stream ID"); replica READONLY during cluster failover.
Common situations: Paging a long stream over an unstable tunnel; a consumer compacting (XTRIM/XSETID) or deleting the stream while browsed; entering custom ID boundaries in the stream toolbar filter.
Related errors
- e.message
- Sentinel & Cluster cannot be checked together!
- message || this.$t('message.test_connection_failed')
- this.$t('message.test_connection_timeout')
- this.$t('message.key_type_not_support')
AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22).
Data as JSON: /api/errors/f9b46b7b52ba0504.
Report an issue: GitHub.