sqlite_aclk_chart.h 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_SQLITE_ACLK_CHART_H
  3. #define NETDATA_SQLITE_ACLK_CHART_H
  4. typedef enum payload_type {
  5. ACLK_PAYLOAD_CHART,
  6. ACLK_PAYLOAD_DIMENSION,
  7. ACLK_PAYLOAD_DIMENSION_ROTATED
  8. } ACLK_PAYLOAD_TYPE;
  9. extern sqlite3 *db_meta;
  10. #ifndef RRDSET_MINIMUM_DIM_LIVE_MULTIPLIER
  11. #define RRDSET_MINIMUM_DIM_LIVE_MULTIPLIER (3)
  12. #endif
  13. #ifndef RRDSET_MINIMUM_DIM_OFFLINE_MULTIPLIER
  14. #define RRDSET_MINIMUM_DIM_OFFLINE_MULTIPLIER (30)
  15. #endif
  16. #ifndef ACLK_MAX_DIMENSION_CLEANUP
  17. #define ACLK_MAX_DIMENSION_CLEANUP (500)
  18. #endif
  19. struct aclk_chart_dimension_data {
  20. uuid_t uuid;
  21. char *payload;
  22. size_t payload_size;
  23. uint8_t check_payload;
  24. };
  25. struct aclk_chart_sync_stats {
  26. int updates;
  27. uint64_t batch_id;
  28. uint64_t min_seqid;
  29. uint64_t max_seqid;
  30. uint64_t min_seqid_pend;
  31. uint64_t max_seqid_pend;
  32. uint64_t min_seqid_sent;
  33. uint64_t max_seqid_sent;
  34. uint64_t min_seqid_ack;
  35. uint64_t max_seqid_ack;
  36. time_t max_date_created;
  37. time_t max_date_submitted;
  38. time_t max_date_ack;
  39. };
  40. extern int queue_chart_to_aclk(RRDSET *st);
  41. extern void queue_dimension_to_aclk(RRDDIM *rd, time_t last_updated);
  42. extern void sql_create_aclk_table(RRDHOST *host, uuid_t *host_uuid, uuid_t *node_id);
  43. int aclk_add_chart_event(struct aclk_database_worker_config *wc, struct aclk_database_cmd cmd);
  44. int aclk_add_dimension_event(struct aclk_database_worker_config *wc, struct aclk_database_cmd cmd);
  45. int aclk_send_chart_config(struct aclk_database_worker_config *wc, struct aclk_database_cmd cmd);
  46. void aclk_ack_chart_sequence_id(char *node_id, uint64_t last_sequence_id);
  47. void aclk_get_chart_config(char **hash_id_list);
  48. void aclk_send_chart_event(struct aclk_database_worker_config *wc, struct aclk_database_cmd cmd);
  49. void aclk_start_streaming(char *node_id, uint64_t seq_id, time_t created_at, uint64_t batch_id);
  50. void sql_chart_deduplicate(struct aclk_database_worker_config *wc, struct aclk_database_cmd cmd);
  51. void sql_check_rotation_state(struct aclk_database_worker_config *wc, struct aclk_database_cmd cmd);
  52. void sql_get_last_chart_sequence(struct aclk_database_worker_config *wc);
  53. void aclk_receive_chart_reset(struct aclk_database_worker_config *wc, struct aclk_database_cmd cmd);
  54. void aclk_receive_chart_ack(struct aclk_database_worker_config *wc, struct aclk_database_cmd cmd);
  55. void aclk_process_dimension_deletion(struct aclk_database_worker_config *wc, struct aclk_database_cmd cmd);
  56. uint32_t sql_get_pending_count(struct aclk_database_worker_config *wc);
  57. void aclk_send_dimension_update(RRDDIM *rd);
  58. struct aclk_chart_sync_stats *aclk_get_chart_sync_stats(RRDHOST *host);
  59. void sql_check_chart_liveness(RRDSET *st);
  60. void aclk_update_retention(struct aclk_database_worker_config *wc);
  61. #endif //NETDATA_SQLITE_ACLK_CHART_H