summaryrefslogtreecommitdiff
path: root/source4/dsdb/schema
diff options
context:
space:
mode:
authorMatthieu Patou <mat@matws.net>2012-05-09 22:08:55 -0700
committerMatthieu Patou <mat@matws.net>2012-06-22 23:16:04 -0700
commit1521bb95a7bb3df5cb3a128085a088cb09555f8b (patch)
treea2a28b508601ccf25078b215c519950a72319287 /source4/dsdb/schema
parentf8fd615c5950bab9a38cd31872ae447ffdc974f3 (diff)
downloadsamba-1521bb95a7bb3df5cb3a128085a088cb09555f8b.tar.gz
samba-1521bb95a7bb3df5cb3a128085a088cb09555f8b.tar.bz2
samba-1521bb95a7bb3df5cb3a128085a088cb09555f8b.zip
dsdb-schema: do not reload more often than schema_reload_interval
Samba 4 use to try to reload the schema every time dsdb_get_schema was called (which could be 20+ time per ldb request). Now we only reload at most every xx seconds (xx being the value of dsdb:"schema_reload_interval" or 120). The timestamp of the last reloaded schema is kept in the dsdb_schema object. There is also a timestamp in the ldb_context, that is used by the LDAP server to know if it has to reload the schema after handling the request. This is used to allow that the schema will be immediately reload after a schemaUpdateNow request has been issued, the reload can't occur in the handling of the LDAP request itself because we have a transaction autostarted.
Diffstat (limited to 'source4/dsdb/schema')
-rw-r--r--source4/dsdb/schema/schema.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h
index b1ae76882a..d3dd035e01 100644
--- a/source4/dsdb/schema/schema.h
+++ b/source4/dsdb/schema/schema.h
@@ -245,6 +245,7 @@ struct dsdb_schema {
struct ldb_module *loaded_from_module;
struct dsdb_schema *(*refresh_fn)(struct ldb_module *module, struct dsdb_schema *schema, bool is_global_schema);
bool refresh_in_progress;
+ time_t last_refresh;
/* an 'opaque' sequence number that the reload function may also wish to use */
uint64_t reload_seq_number;