Example #1
0
        public override bool Lock(string serviceKey, int expiryFromSeconds)
        {
            bool isLocked = false;

            try
            {
                string selectQuery = "SELECT CreationDate FROM LokiLockings WHERE ServiceKey=@ServiceKey";

                var isAnyLocked = Task.Run(async() => await MSSQLHelper.ExecuteScalarAsync(_connectionString, CommandType.Text, selectQuery, new SqlParameter("ServiceKey", serviceKey))).Result;

                if (isAnyLocked != null)
                {
                    DateTime creationDate = Convert.ToDateTime(isAnyLocked);

                    if (creationDate.AddSeconds(expiryFromSeconds) < DateTime.Now)
                    {
                        // TODO: Concurrent workerlarda sıkıntı yaratır. Düzeltmek lazım.
                        string updateQuery = "UPDATE LokiLockings SET CreationDate=@CreationDate WHERE ServiceKey=@ServiceKey";

                        int isUpdated = Task.Run(async() => await MSSQLHelper.ExecuteNonQueryAsync(_connectionString, CommandType.Text, updateQuery, new SqlParameter("CreationDate", DateTime.Now), new SqlParameter("ServiceKey", serviceKey))).Result;

                        if (isUpdated > 0)
                        {
                            isLocked = true;
                        }
                    }
                }
                else
                {
                    string insertQuery = "INSERT INTO LokiLockings (ServiceKey, CreationDate) VALUES(@ServiceKey, @CreationDate)";

                    int isInserted = Task.Run(async() => await MSSQLHelper.ExecuteNonQueryAsync(_connectionString, CommandType.Text, insertQuery, new SqlParameter("ServiceKey", serviceKey), new SqlParameter("CreationDate", DateTime.Now))).Result;

                    if (isInserted > 0)
                    {
                        isLocked = true;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.ErrorException($"There was an error while acquiring lock for service:{serviceKey}.", ex);
                isLocked = false;
            }

            return(isLocked);
        }
Example #2
0
        public override bool Lock(string serviceKey, int expiryFromSeconds)
        {
            bool isLocked = false;

            try
            {
                string selectQuery = "SELECT CreationDate FROM LokiLockings WHERE ServiceKey=@ServiceKey";

                var isAnyLocked = Task.Run(async() => await MSSQLHelper.ExecuteScalarAsync(_connectionString, CommandType.Text, selectQuery, new SqlParameter("ServiceKey", serviceKey))).Result;

                if (isAnyLocked != null)
                {
                    DateTime creationDate = Convert.ToDateTime(isAnyLocked);

                    if (creationDate.AddSeconds(expiryFromSeconds) < DateTime.Now)
                    {
                        string updateQuery = "UPDATE LokiLockings SET CreationDate=@CreationDate WHERE ServiceKey=@ServiceKey";

                        int isUpdated = Task.Run(async() => await MSSQLHelper.ExecuteNonQueryAsync(_connectionString, CommandType.Text, updateQuery, new SqlParameter("ServiceKey", serviceKey))).Result;

                        if (isUpdated > 0)
                        {
                            isLocked = true;
                        }
                    }
                }
                else
                {
                    string insertQuery = "INSERT INTO LokiLockings (ServiceKey, CreationDate) VALUES(@ServiceKey, @CreationDate)";

                    int isInserted = Task.Run(async() => await MSSQLHelper.ExecuteNonQueryAsync(_connectionString, CommandType.Text, insertQuery, new SqlParameter("ServiceKey", serviceKey), new SqlParameter("CreationDate", DateTime.Now))).Result;

                    if (isInserted > 0)
                    {
                        isLocked = true;
                    }
                }
            }
            catch (Exception ex)
            {
                isLocked = false;
            }

            return(isLocked);
        }
Example #3
0
        public override void Release(string serviceKey)
        {
            string deleteQuery = "DELETE FROM LokiLockings WHERE ServiceKey=@ServiceKey";

            Task.Run(async() => await MSSQLHelper.ExecuteNonQueryAsync(_connectionString, CommandType.Text, deleteQuery, new SqlParameter("ServiceKey", serviceKey)));
        }