Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ac9dca0

Browse files
committed
Fix xInfo ro RedisCluster
1 parent 4852a51 commit ac9dca0

5 files changed

Lines changed: 24 additions & 2 deletions

File tree

cluster_library.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2314,6 +2314,24 @@ cluster_xclaim_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster *c, void *ctx) {
23142314

23152315
}
23162316

2317+
/* XINFO */
2318+
PHP_REDIS_API void
2319+
cluster_xinfo_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster *c, void *ctx)
2320+
{
2321+
zval z_ret;
2322+
2323+
array_init(&z_ret);
2324+
if (redis_read_xinfo_response(c->cmd_sock, &z_ret, c->reply_len) != SUCCESS) {
2325+
zval_dtor(&z_ret);
2326+
CLUSTER_RETURN_FALSE(c);
2327+
}
2328+
2329+
if (CLUSTER_IS_ATOMIC(c)) {
2330+
RETURN_ZVAL(&z_ret, 0, 1);
2331+
}
2332+
add_next_index_zval(&c->multi_resp, &z_ret);
2333+
}
2334+
23172335
/* MULTI BULK response loop where we might pull the next one */
23182336
PHP_REDIS_API zval *cluster_zval_mbulk_resp(INTERNAL_FUNCTION_PARAMETERS,
23192337
redisCluster *c, int pull, mbulk_cb cb, zval *z_ret)

cluster_library.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,8 @@ PHP_REDIS_API void cluster_xrange_resp(INTERNAL_FUNCTION_PARAMETERS,
487487
redisCluster *c, void *ctx);
488488
PHP_REDIS_API void cluster_xclaim_resp(INTERNAL_FUNCTION_PARAMETERS,
489489
redisCluster *c, void *ctx);
490+
PHP_REDIS_API void cluster_xinfo_resp(INTERNAL_FUNCTION_PARAMETERS,
491+
redisCluster *c, void *ctx);
490492

491493
/* MULTI BULK processing callbacks */
492494
int mbulk_resp_loop(RedisSock *redis_sock, zval *z_result,

library.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1451,7 +1451,7 @@ redis_xclaim_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
14511451
return -1;
14521452
}
14531453

1454-
static int
1454+
PHP_REDIS_API int
14551455
redis_read_xinfo_response(RedisSock *redis_sock, zval *z_ret, int elements)
14561456
{
14571457
zval zv;

library.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ PHP_REDIS_API int
109109
redis_read_stream_messages_multi(RedisSock *redis_sock, int count, zval *z_ret TSRMLS_DC);
110110
PHP_REDIS_API int
111111
redis_read_xclaim_response(RedisSock *redis_sock, int count, zval *rv TSRMLS_DC);
112+
PHP_REDIS_API int
113+
redis_read_xinfo_response(RedisSock *redis_sock, zval *z_ret, int elements TSRMLS_DC);
112114

113115
/*
114116
* Variant Read methods, mostly to implement eval

redis_cluster.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3095,7 +3095,7 @@ PHP_METHOD(RedisCluster, xgroup) {
30953095

30963096
/* {{{ proto variant RedisCluster::xinfo(string op, [string arg1, string arg2]); */
30973097
PHP_METHOD(RedisCluster, xinfo) {
3098-
CLUSTER_PROCESS_CMD(xinfo, cluster_variant_resp, 0);
3098+
CLUSTER_PROCESS_CMD(xinfo, cluster_xinfo_resp, 0);
30993099
}
31003100

31013101
/* {{{ proto string RedisCluster::xlen(string key) }}} */

0 commit comments

Comments
 (0)