annotate src/lib-dict/dict-fail.c @ 22325:e01bc3015b2f

lib-index: Check .log.2 rotation only when syncing Instead of also whenever appending transactions to .log file. This shouldn't change the behavior much, and it's needed for the following change to work correctly.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 11 Jul 2017 15:33:56 +0300
parents 3daf1ea24cf1
children cb108f786fb4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21797
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
1 /* Copyright (c) 2017 Dovecot authors, see the included COPYING file */
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
2
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
3 #include "lib.h"
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
4 #include "dict.h"
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
5 #include "dict-private.h"
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
6
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
7 struct dict_iterate_context dict_iter_unsupported =
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
8 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
9 .dict = &dict_driver_fail,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
10 };
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
11
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
12 struct dict_transaction_context dict_transaction_unsupported =
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
13 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
14 .dict = &dict_driver_fail,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
15 };
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
16
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
17 static int dict_fail_init(struct dict *dict_driver ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
18 const char *uri ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
19 const struct dict_settings *set ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
20 struct dict **dict_r ATTR_UNUSED, const char **error_r)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
21 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
22 *error_r = "Unsupported operation (dict does not support this feature)";
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
23 return -1;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
24 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
25
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
26 static void dict_fail_deinit(struct dict *dict ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
27 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
28 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
29
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
30 static int dict_fail_wait(struct dict *dict ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
31 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
32 return -1;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
33 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
34
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
35 static int dict_fail_lookup(struct dict *dict ATTR_UNUSED, pool_t pool ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
36 const char *key ATTR_UNUSED, const char **value_r ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
37 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
38 return -1;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
39 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
40
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
41 static struct dict_iterate_context *
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
42 dict_fail_iterate_init(struct dict *dict ATTR_UNUSED, const char *const *paths ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
43 enum dict_iterate_flags flags ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
44 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
45 return &dict_iter_unsupported;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
46 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
47
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
48 static bool dict_fail_iterate(struct dict_iterate_context *ctx ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
49 const char **key_r ATTR_UNUSED, const char **value_r ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
50 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
51 return FALSE;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
52 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
53
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
54 static int dict_fail_iterate_deinit(struct dict_iterate_context *ctx ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
55 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
56 return -1;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
57 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
58
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
59 static struct dict_transaction_context *dict_fail_transaction_init(struct dict *dict ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
60 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
61 return &dict_transaction_unsupported;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
62 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
63
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
64 static int dict_fail_transaction_commit(struct dict_transaction_context *ctx ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
65 bool async ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
66 dict_transaction_commit_callback_t *callback,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
67 void *context)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
68 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
69 if (callback != NULL)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
70 callback(DICT_COMMIT_RET_FAILED, context);
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
71 return -1;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
72 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
73
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
74 static void dict_fail_transaction_rollback(struct dict_transaction_context *ctx ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
75 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
76 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
77
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
78 static void dict_fail_set(struct dict_transaction_context *ctx ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
79 const char *key ATTR_UNUSED, const char *value ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
80 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
81 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
82
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
83 static void dict_fail_unset(struct dict_transaction_context *ctx ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
84 const char *key ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
85 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
86 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
87
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
88 static void dict_fail_atomic_inc(struct dict_transaction_context *ctx ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
89 const char *key ATTR_UNUSED, long long diff ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
90 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
91 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
92
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
93 static bool dict_fail_switch_ioloop(struct dict *dict ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
94 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
95 return TRUE;
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
96 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
97
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
98 static void dict_fail_set_timestamp(struct dict_transaction_context *ctx ATTR_UNUSED,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
99 const struct timespec *ts ATTR_UNUSED)
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
100 {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
101 }
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
102
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
103 struct dict dict_driver_fail = {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
104 .name = "fail",
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
105 .v = {
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
106 .init = dict_fail_init,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
107 .deinit = dict_fail_deinit,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
108 .wait = dict_fail_wait,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
109 .lookup = dict_fail_lookup,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
110 .iterate_init = dict_fail_iterate_init,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
111 .iterate = dict_fail_iterate,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
112 .iterate_deinit = dict_fail_iterate_deinit,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
113 .transaction_init = dict_fail_transaction_init,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
114 .transaction_commit = dict_fail_transaction_commit,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
115 .transaction_rollback = dict_fail_transaction_rollback,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
116 .set = dict_fail_set,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
117 .unset = dict_fail_unset,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
118 .atomic_inc = dict_fail_atomic_inc,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
119 .lookup_async = NULL,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
120 .switch_ioloop = dict_fail_switch_ioloop,
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
121 .set_timestamp = dict_fail_set_timestamp
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
122 },
3daf1ea24cf1 lib-dict: Add dict-fail driver
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
123 };