uint32_t length;
uint32_t idx_len;
long int bf_offset;
- uint64_t interval;
siridb_points_t * buffer;
char * name;
idx_t * idx;
uint64_t end_ts;
};
-
-
#endif /* SIRIDB_SERIES_H_ */
--- /dev/null
+#include <siri/db/series.h>
+#include <siri/db/shard.h>
+
+static inline size_t siridb_series_duration(siridb_series_t * series)
+{
+ return series->idx_len ? series->idx->shard->duration : 0;
+}
* Note that debian alpha packages should use versions like this:
* 2.0.34-0alpha0
*/
-#define SIRIDB_VERSION_PRE_RELEASE "-alpha-0"
+#define SIRIDB_VERSION_PRE_RELEASE "-alpha-1"
#ifndef NDEBUG
#define SIRIDB_VERSION_BUILD_RELEASE "+debug"
vshard.shard = (siridb_shard_t *) shards_list->data[i];
/* set start and end properties */
- duration = (vshard.shard->tp == SIRIDB_SHARD_TP_NUMBER) ?
- siridb->duration_num : siridb->duration_log;
+ duration = vshard.shard->duration;
vshard.start = vshard.shard->id - vshard.shard->id % duration;
vshard.end = vshard.start + duration;
vshard.shard = (siridb_shard_t *) shards_list->data[i];
/* set start and end properties */
- duration = (vshard.shard->tp == SIRIDB_SHARD_TP_NUMBER) ?
- siridb->duration_num : siridb->duration_log;
+ duration = vshard.shard->duration;
+
vshard.start = vshard.shard->id - vshard.shard->id % duration;
vshard.end = vshard.start + duration;
vshard.shard = (siridb_shard_t *) q_drop->shards_list->data[i];
/* set start and end properties */
- duration = (vshard.shard->tp == SIRIDB_SHARD_TP_NUMBER) ?
- siridb->duration_num : siridb->duration_log;
+ duration = vshard.shard->duration;
vshard.start = vshard.shard->id - vshard.shard->id % duration;
vshard.end = vshard.start + duration;
vshard.shard = (siridb_shard_t *) shards_list->data[i];
/* set start and end properties */
- duration = (vshard.shard->tp == SIRIDB_SHARD_TP_NUMBER) ?
- siridb->duration_num : siridb->duration_log;
+ duration = vshard.shard->duration;
+
vshard.start = vshard.shard->id - vshard.shard->id % duration;
vshard.end = vshard.start + duration;
{
idx_t *__restrict idx;
uint_fast32_t i, offset;
- uint64_t duration = (shard->tp == SIRIDB_SHARD_TP_NUMBER) ?
- siridb->duration_num : siridb->duration_log;
+ uint64_t start = shard->id - series->mask;
+ uint64_t end = start + shard->duration;
i = offset = 0;
{
series->idx = idx;
}
- uint64_t start = shard->id - series->mask;
- uint64_t end = start + duration;
if (series->start >= start && series->start < end)
{
SERIES_update_start(series);
series->idx_len = 0;
series->idx = NULL;
series->siridb = siridb;
- series->interval = 0;
/* get sum series name to calculate series mask (for sharding) */
for (n = 0; *name; name++)
else for (i = 0; i < vec->len; i++)
{
series = (siridb_series_t *) vec->data[i];
- if (shard->id % siridb->duration_num == series->mask)
+ if (shard->id % shard->duration == series->mask)
{
siridb_series_remove_shard(siridb, series, shard);
siridb_series_remove_shard(siridb, series, pop_shard);
else for (i = 0; i < vec->len; i++)
{
series = (siridb_series_t *) vec->data[i];
- if (shard->id % siridb->duration_num == series->mask)
+ if (shard->id % shard->duration == series->mask)
{
siridb_series_remove_shard(siridb, series, shard);
}
(uint64_t) *((uint64_t *) (pt + 12)) :
(uint64_t) *((uint32_t *) (pt + 8));
uint64_t start = shard->id - series->mask;
- uint64_t end = start + ((shard->tp == SIRIDB_SHARD_TP_NUMBER) ?
- siridb->duration_num : siridb->duration_log);
+ uint64_t end = start + shard->duration;
if (start_ts < start || end_ts >= end)
{
#include <logger/logger.h>
#include <siri/db/shard.h>
#include <siri/db/shards.h>
+#include <siri/db/series.inline.h>
#include <siri/db/misc.h>
#include <siri/siri.h>
#include <stdbool.h>
&shard_id,
&duration))
{
+ /* TODO: migration code, for backwards compatibility */
continue;
}
_Bool is_num = siridb_series_isnum(series);
siridb_shard_t * shard;
omap_t * shards;
+ uint64_t duration = siridb_series_duration(series);
uv_mutex_lock(&siridb->values_mutex);
- uint64_t duration = is_num ? siridb->duration_num : siridb->duration_log;
uint64_t expire_at = is_num ? siridb->exp_at_num : siridb->exp_at_log;
- uv_mutex_unlock(&siridb->values_mutex);
-
- if (series->interval == 0)
+ if (duration == 0)
{
- series->interval = siridb_points_get_interval(points);
+ uint64_t interval = siridb_points_get_interval(points);
- if (series->interval == 0)
- {
- /* fall-back to default interval */
- series->interval = siridb_shard_interval_from_duration(duration);
- }
+ duration = interval
+ ? siridb_shard_duration_from_interval(siridb, interval)
+ : is_num
+ ? siridb->duration_num
+ : siridb->duration_log;
}
- duration = siridb_shard_duration_from_interval(siridb, series->interval);
+ uv_mutex_unlock(&siridb->values_mutex);
uint64_t shard_start, shard_end, shard_id;
uint_fast32_t start, end, num_chunks, pstart, pend;
uint8_t c = siri.cfg->shard_compression;
size_t i;
uint64_t expi[2];
- uint64_t dura[2];
-
-
log_info("Start optimize task");
uv_mutex_lock(&siridb->values_mutex);
- dura[SIRIDB_SHARD_TP_NUMBER] = siridb->duration_num;
- dura[SIRIDB_SHARD_TP_LOG] = siridb->duration_log;
expi[SIRIDB_SHARD_TP_NUMBER] = siridb->exp_at_num;
expi[SIRIDB_SHARD_TP_LOG] = siridb->exp_at_log;
{
shard = (siridb_shard_t *) slshards->data[j];
- if ((shard->id - shard->id % dura[shard->tp]) + dura[shard->tp] <
- expi[shard->tp])
+ if ((shard->id - shard->id % shard->duration) + shard->duration < expi[shard->tp])
{
log_info(
"Shard id %" PRIu64 " (%" PRIu8 ") is expired "