Skip to content

Commit 6a45cff

Browse files
committed
* MDF [mqtt_client/stat] change the way we caculate cached msg of sqlite
Signed-off-by: jaylin <[email protected]>
1 parent ecdffc5 commit 6a45cff

File tree

4 files changed

+29
-14
lines changed

4 files changed

+29
-14
lines changed

src/mqtt/protocol/mqtt/mqtt_client.c

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ struct mqtt_sock_s {
125125
nni_stat_item msg_send_drop;
126126
nni_stat_item msg_recv_drop;
127127
nni_stat_item msg_bytes_cached;
128+
nni_stat_item msg_sqlite_cached;
128129
#endif
129130
};
130131

@@ -206,17 +207,26 @@ mqtt_sock_init(void *arg, nni_sock *sock)
206207
nni_stat_init(&s->msg_recv_drop, &msg_recv_drop);
207208
static const nni_stat_info msg_bytes_cached = {
208209
.si_name = "mqtt_msg_bytes_cached",
209-
.si_desc = "cached msg payload size",
210+
.si_desc = "total payload size of cached msg in memory",
210211
.si_type = NNG_STAT_COUNTER,
211212
.si_unit = NNG_UNIT_BYTES,
212213
.si_atomic = true,
213214
};
214215
nni_stat_init(&s->msg_bytes_cached, &msg_bytes_cached);
216+
static const nni_stat_info msg_sqlite_cached = {
217+
.si_name = "mqtt_msg_sqlite_cached",
218+
.si_desc = "count all cached msg in sqlite",
219+
.si_type = NNG_STAT_COUNTER,
220+
.si_unit = NNG_UNIT_BYTES,
221+
.si_atomic = true,
222+
};
223+
nni_stat_init(&s->msg_sqlite_cached, &msg_sqlite_cached);
215224
nni_sock_add_stat(s->nsock, &s->mqtt_reconnect);
216225
nni_sock_add_stat(s->nsock, &s->msg_resend);
217226
nni_sock_add_stat(s->nsock, &s->msg_send_drop);
218227
nni_sock_add_stat(s->nsock, &s->msg_recv_drop);
219228
nni_sock_add_stat(s->nsock, &s->msg_bytes_cached);
229+
nni_sock_add_stat(s->nsock, &s->msg_sqlite_cached);
220230
#endif
221231
}
222232

@@ -322,9 +332,9 @@ mqtt_sock_set_cached_byte(void *arg, const void *buf, size_t sz, nni_type t)
322332
if ((rv = nni_copyin_int(&len, buf, sz,
323333
NANO_MAX_PACKET_SIZE_NEG, NANO_MAX_PACKET_SIZE, t)) == 0) {
324334
#ifdef NNG_ENABLE_STATS
325-
if (len > 0)
335+
if (len > 0) {
326336
nni_stat_inc(&s->msg_bytes_cached, len);
327-
else if (len < 0) {
337+
} else if (len < 0) {
328338
len = -len;
329339
nni_stat_dec(&s->msg_bytes_cached, len);
330340
}
@@ -581,7 +591,8 @@ mqtt_send_msg(nni_aio *aio, mqtt_ctx_t *arg, mqtt_sock_t *s)
581591
msg = sqlite_get_cache_msg(sqlite);
582592
#ifdef NNG_ENABLE_STATS
583593
nni_stat_inc(&s->msg_resend, 1);
584-
nni_stat_dec(&s->msg_bytes_cached, nng_msg_len(msg));
594+
nni_stat_set_value(&s->msg_sqlite_cached,
595+
sqlite_get_cache_msg_count(s->sqlite_opt));
585596
#endif
586597
}
587598
#endif
@@ -776,8 +787,9 @@ mqtt_pipe_close(void *arg)
776787
// flush to disk
777788
if (!nni_lmq_empty(&p->send_messages)) {
778789
log_info("cached msg into sqlite");
779-
sqlite_flush_lmq(
780-
mqtt_sock_get_sqlite_option(s), &p->send_messages);
790+
sqlite_flush_lmq(s->sqlite_opt, &p->send_messages);
791+
nni_stat_set_value(&s->msg_sqlite_cached,
792+
sqlite_get_cache_msg_count(s->sqlite_opt));
781793
}
782794
#endif
783795

@@ -924,9 +936,11 @@ mqtt_timer_cb(void *arg)
924936
if (NULL != (msg = sqlite_get_cache_msg(sqlite))) {
925937
p->busy = true;
926938
nni_aio_set_msg(&p->send_aio, msg);
939+
log_info("resend sqlite msg");
927940
#ifdef NNG_ENABLE_STATS
928941
nni_stat_inc(&s->msg_resend, 1);
929-
nni_stat_dec(&s->msg_bytes_cached, nng_msg_len(msg));
942+
nni_stat_set_value(&s->msg_sqlite_cached,
943+
sqlite_get_cache_msg_count(sqlite));
930944
#endif
931945
nni_pipe_send(p->pipe, &p->send_aio);
932946
nni_mtx_unlock(&s->mtx);
@@ -1531,11 +1545,12 @@ mqtt_ctx_send(void *arg, nni_aio *aio)
15311545
nni_lmq_put(&sqlite->offline_cache, msg);
15321546
if (nni_lmq_full(&sqlite->offline_cache)) {
15331547
sqlite_flush_offline_cache(sqlite);
1534-
}
1535-
nni_mtx_unlock(&s->mtx);
15361548
#ifdef NNG_ENABLE_STATS
1537-
nni_stat_inc(&s->msg_bytes_cached, nng_msg_len(msg));
1549+
nni_stat_set_value(&s->msg_sqlite_cached,
1550+
sqlite_get_cache_msg_count(sqlite));
15381551
#endif
1552+
}
1553+
nni_mtx_unlock(&s->mtx);
15391554
nni_aio_set_msg(aio, NULL);
15401555
nni_aio_finish_error(aio, NNG_ECLOSED);
15411556
return;

src/mqtt/protocol/mqtt/sqlite_handler.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ sqlite_flush_offline_cache(nni_mqtt_sqlite_option *sqlite)
4646
sqlite_flush_lmq(sqlite, &sqlite->offline_cache);
4747
}
4848

49-
inline uint64_t
49+
inline uint32_t
5050
sqlite_get_cache_msg_count(nni_mqtt_sqlite_option *sqlite)
5151
{
5252
return nni_mqtt_qos_db_get_client_offline_msg_count(
@@ -55,7 +55,7 @@ sqlite_get_cache_msg_count(nni_mqtt_sqlite_option *sqlite)
5555

5656
#else
5757

58-
inline uint64_t
58+
inline uint32_t
5959
sqlite_get_cache_msg_count(nni_mqtt_sqlite_option *sqlite)
6060
{
6161
return 0;

src/mqtt/protocol/mqtt/sqlite_handler.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include "nng/nng.h"
66
#include "supplemental/mqtt/mqtt_qos_db.h"
77

8-
extern uint64_t sqlite_get_cache_msg_count(nni_mqtt_sqlite_option *);
8+
extern uint32_t sqlite_get_cache_msg_count(nni_mqtt_sqlite_option *);
99
extern bool sqlite_is_enabled(nni_mqtt_sqlite_option *);
1010
extern nni_msg *sqlite_get_cache_msg(nni_mqtt_sqlite_option *);
1111
extern void sqlite_flush_lmq(nni_mqtt_sqlite_option *, nni_lmq *);

src/supplemental/mqtt/mqtt_qos_db.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1131,7 +1131,7 @@ int
11311131
nni_mqtt_qos_db_get_client_offline_msg_count(
11321132
sqlite3 *db, const char *config_name)
11331133
{
1134-
int count = 0;
1134+
uint32_t count = 0;
11351135
sqlite3_stmt *stmt;
11361136

11371137
char sql[] = "SELECT COUNT(*) FROM " table_client_offline_msg

0 commit comments

Comments
 (0)