Mercurial > dovecot > core-2.2
annotate src/lib-storage/index/index-sort-private.h @ 21604:fb8ef6e2c2fe
lib-storage: Add mail_sort_max_read_count setting.
This controls how many slow mail accesses sorting can perform before it
fails:
a NO [LIMIT] Requested sort would have taken too long
The SORT reply is still returned, but it's likely not correct.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Fri, 17 Feb 2017 19:07:53 +0200 |
parents | a90f51ba2e9c |
children |
rev | line source |
---|---|
7564
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
1 #ifndef INDEX_SORT_PRIVATE_H |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 #define INDEX_SORT_PRIVATE_H |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "index-sort.h" |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 struct mail_search_sort_program { |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 struct mailbox_transaction_context *t; |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 enum mail_sort_type sort_program[MAX_SORT_PROGRAM_SIZE]; |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 struct mail *temp_mail; |
21604
fb8ef6e2c2fe
lib-storage: Add mail_sort_max_read_count setting.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21599
diff
changeset
|
10 unsigned int slow_mails_left; |
7564
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 void (*sort_list_add)(struct mail_search_sort_program *program, |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 struct mail *mail); |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 void (*sort_list_finish)(struct mail_search_sort_program *program); |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 void *context; |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 ARRAY_TYPE(uint32_t) seqs; |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 unsigned int iter_idx; |
21599
a90f51ba2e9c
lib-storage: Fix error handling when sorting mails.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
7859
diff
changeset
|
19 |
a90f51ba2e9c
lib-storage: Fix error handling when sorting mails.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
7859
diff
changeset
|
20 bool failed; |
7564
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 }; |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 |
21599
a90f51ba2e9c
lib-storage: Fix error handling when sorting mails.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
7859
diff
changeset
|
23 /* Returns 1 on success, 0 if mail is already expunged, -1 on other errors. */ |
21604
fb8ef6e2c2fe
lib-storage: Add mail_sort_max_read_count setting.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21599
diff
changeset
|
24 int index_sort_header_get(struct mail_search_sort_program *program, uint32_t seq, |
7564
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 enum mail_sort_type sort_type, string_t *dest); |
21599
a90f51ba2e9c
lib-storage: Fix error handling when sorting mails.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
7859
diff
changeset
|
26 int index_sort_node_cmp_type(struct mail_search_sort_program *program, |
7564
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 const enum mail_sort_type *sort_program, |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 uint32_t seq1, uint32_t seq2); |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 void index_sort_list_init_string(struct mail_search_sort_program *program); |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 void index_sort_list_add_string(struct mail_search_sort_program *program, |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 struct mail *mail); |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 void index_sort_list_finish_string(struct mail_search_sort_program *program); |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 |
4a9ce9df52c5
Message sort index handling rewrite to fix several race conditions when
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 #endif |