public void Init() { ESTraceLogger.Debug($"AWS_S3CacheProvider Init: Starting"); if (client == null) { lock (_lockconnections) { if (connections.ContainsKey(this.AWS_S3Servers.First())) { client = connections[this.AWS_S3Servers.First()]; } else { client = new AmazonS3Client( this.AccessKey, this.SecretKey, new AmazonS3Config() { AuthenticationRegion = Region, // Should match the `MINIO_REGION` environment variable. ServiceURL = AWS_S3Servers.First(), // replace http://localhost:9000 with URL of your MinIO server ForcePathStyle = true // MUST be true to work correctly with MinIO server } ); connections.Add(this.AWS_S3Servers.First(), client); var buckList = client.ListBucketsAsync().Result; if (buckList?.Buckets?.Any(m => m.BucketName == this.Bucket) == false) { ESTraceLogger.Debug($"AWS_S3CacheProvider Init: Bucket {this.AWS_S3Servers.First()} / {this.Bucket} doesn't exist. Creating new one"); try { var res = client.PutBucketAsync(this.Bucket).Result; } catch (Exception e) { ESTraceLogger.Fatal($"AWS_S3CacheProvider: Created db error {e.Message}", e); throw new ApplicationException($"Cannot created AWS_S3 {this.AWS_S3Servers.First()} / {this.Bucket}"); } } } ESTraceLogger.Debug($"AWS_S3CacheProvider Init: Bucket {this.AWS_S3Servers.First()} / {this.Bucket} is live."); cleaning.Elapsed += Cleaning_Elapsed; cleaning.Start(); } } }
public void Init() { ESTraceLogger.Debug($"ElasticCacheProvider Init: Starting"); if (client == null) { var pool = new Elasticsearch.Net.StaticConnectionPool( this.ElasticServers .Where(m => !string.IsNullOrWhiteSpace(m)) .Select(u => new Uri(u)) ); var settings = new ConnectionSettings(pool) .DefaultIndex(this.DBName) .DisableAutomaticProxyDetection(false) .RequestTimeout(TimeSpan.FromMilliseconds(60000)) .SniffLifeSpan(null) .OnRequestCompleted(call => { // log out the request and the request body, if one exists for the type of request if (call.RequestBodyInBytes != null) { ESTraceLogger.Debug($"{call.HttpMethod}\t{call.Uri}\t" + $"{Encoding.UTF8.GetString(call.RequestBodyInBytes)}"); } else { ESTraceLogger.Debug($"{call.HttpMethod}\t{call.Uri}\t"); } }) ; if (System.Diagnostics.Debugger.IsAttached || Devmasters.Config.GetWebConfigValue("ESDebugDataEnabled") == "true") { settings = settings.DisableDirectStreaming(); } client = new ElasticClient(settings); IndexSettings set = new IndexSettings(); set.NumberOfReplicas = this.NumberOfReplicas; set.NumberOfShards = this.NumberOfShards; IndexState idxSt = new IndexState(); idxSt.Settings = set; ESTraceLogger.Debug($"ElasticCacheProvider Init: Check Elastic DB {client.ConnectionSettings.DefaultIndex}"); var resExists = client.Indices.Exists(client.ConnectionSettings.DefaultIndex); //if (resExists.IsValid == false) //{ // ESTraceLogger.Fatal($"ElasticCacheProvider: Cannot check db existance {resExists.ServerError?.ToString()}", resExists.OriginalException); // throw new ApplicationException("Cannot check Elastic DB"); //} if (resExists.Exists == false) { ESTraceLogger.Debug($"ElasticCacheProvider Init: DB {client.ConnectionSettings.DefaultIndex} doesn't exist. Creating new one"); var res = client.Indices.Create(client.ConnectionSettings.DefaultIndex, i => i.InitializeUsing(idxSt) .Map <Bag <T> >(map => map.AutoMap().DateDetection(false)) ); if (res.IsValid == false) { ESTraceLogger.Fatal($"ElasticCacheProvider: Created db error {res.ServerError?.ToString()}", res.OriginalException); throw new ApplicationException("Cannot created Elastic DB"); } } ESTraceLogger.Debug($"ElasticCacheProvider Init: DB {client.ConnectionSettings.DefaultIndex} is live."); cleaning.Elapsed += Cleaning_Elapsed; cleaning.Start(); } }