/// <summary>
        /// Initializes the search user and topics
        /// </summary>
        /// <param name="searchInstanceType">type of search instance</param>
        /// <returns>empty</returns>
        private async Task Init(SearchInstanceType searchInstanceType)
        {
            // Guard that ensures Init is executed once only
            lock (this.locker)
            {
                if (this.initStarted == true)
                {
                    return;
                }

                this.initStarted = true;
            }

            // get the connection strings
            string searchServiceName = await this.connectionStringProvider.GetSearchServiceName(searchInstanceType);

            string searchServiceAdminKey = await this.connectionStringProvider.GetSearchServiceAdminKey(searchInstanceType);

            // instantiate the two search interfaces
            this.searchUsers  = new SearchUsers(this.log, searchServiceName, searchServiceAdminKey);
            this.searchTopics = new SearchTopics(this.log, searchServiceName, searchServiceAdminKey);

            // Init done
            this.initDone.Set();
        }
 /// <summary>
 /// Gets search admin key
 /// </summary>
 /// <param name="searchInstanceType">Search instance type</param>
 /// <returns>returns null</returns>
 public Task <string> GetSearchServiceAdminKey(SearchInstanceType searchInstanceType)
 {
     return(null);
 }
 /// <summary>
 /// Gets search admin key
 /// </summary>
 /// <param name="searchInstanceType">Search instance type</param>
 /// <returns>search instance admin key</returns>
 public async Task <string> GetSearchServiceAdminKey(SearchInstanceType searchInstanceType)
 {
     return(await this.settingsReader.ReadValueAsync("SearchServiceAdminKey"));
 }