qishibo/AnotherRedisDesktopManager · error
e.message
Error message
e.message
What it means
Toast showing e.message when the sorted-set page fetch fails in KeyContentZset.vue:177. listScan() picks zrangeBuffer or zrevrangeBuffer based on sortType and issues [key, start, end, 'WITHSCORES']; any rejection stops loading, clears the spinner and disables pagination. Typical rejections: WRONGTYPE (key no longer a zset), dropped connection, READONLY from a replica, or OOM refusing reads during memory pressure.
Source
Thrown at src/components/contents/KeyContentZset.vue:177
this.scanStream = null;
this.oneTimeListLength = 0;
this.loadMoreDisable = false;
},
getListRange(resetTable) {
const start = this.pageSize * this.pageIndex;
const end = start + this.pageSize - 1;
const sortMethod = this.sortType === 'ASC' ? 'zrangeBuffer' : 'zrevrangeBuffer';
this.client[sortMethod]([this.redisKey, start, end, 'WITHSCORES']).then((reply) => {
const zsetData = this.solveList(reply);
this.zsetData = resetTable ? zsetData : this.zsetData.concat(zsetData);
(zsetData.length < this.pageSize) && (this.loadMoreDisable = true);
this.loadingIcon = '';
}).catch((e) => {
this.loadingIcon = '';
this.loadMoreDisable = true;
this.$message.error(e.message);
});
},
getListScan() {
if (!this.scanStream) {
this.initScanStream();
} else {
this.oneTimeListLength = 0;
this.scanStream.resume();
}
},
initScanStream() {
const scanOption = { match: this.getScanMatch(), count: this.pageSize };
scanOption.match != '*' && (scanOption.count = this.searchPageSize);
this.scanStream = this.client.zscanBufferStream(
this.redisKey,
scanOption,
);View on GitHub (pinned to c149855106)
Solutions
- Reload the key — WRONGTYPE means the member/score table no longer corresponds to a zset
- Reconnect on connection-error messages and press load-more again; ZRANGE is stateless
- Toggle sort order (ASC/DESC) after reconnect to force a fresh stream/scan reset
- Verify the endpoint is a master or allow reads on replicas when operating clusters
Example fix
// before
}).catch((e) => {
this.loadingIcon = '';
this.loadMoreDisable = true;
this.$message.error(e.message);
});
// after: keep 'load more' available for transient failures
}).catch((e) => {
this.loadingIcon = '';
this.loadMoreDisable = /WRONGTYPE|READONLY/.test(e.message);
this.$message.error(e.message);
}); Defensive patterns
Strategy: try-catch
Validate before calling
if (this.client.status !== 'ready') {
this.$message.error(`connection not ready (${this.client.status})`);
return;
} Try / catch
.catch((e) => {
this.loadingIcon = '';
this.loadMoreDisable = /WRONGTYPE|READONLY/.test(e.message);
this.$message.error(`ZRANGE: ${e.message}`);
}) Prevention
- Reload the key when the type badge changes — WRONGTYPE kills ZRANGE
- Reconnect and continue pagination; ZRANGE is stateless per page
- In clusters, read from masters or enable reads on replicas
When it happens
Trigger: ZRANGE ... WITHSCORES rejected when: the key was deleted and recreated as another type between page loads; the connection closes mid-pagination ('Connection is closed'); a cluster failover redirects to a replica that answers READONLY; the end index math (start + pageSize - 1) runs against a key that shrank, though Redis clamps indexes rather than erroring, so type/connection causes dominate.
Common situations: Paging large leaderboards while a job rebuilds the zset (DEL + ZADD in a loop); VPN/TCP resets during long browsing sessions; browsing replicas that are read-only for commands the client issues during topology churn.
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/3dd789a65d945650.
Report an issue: GitHub.