Esempio n. 1
0
        private void ValidateTempFile(string filePath, string intendedPurpose)
        {
            FileInfo info = new FileInfo(filePath);

            if (info.Length == 0)
            {
                throw new RetryableException("Temp file for '" + intendedPurpose + "' was written with 0 bytes");
            }
            else
            {
                using (Stream fs = info.OpenRead())
                {
                    byte[] buffer = new byte[10];

                    // This will always read at least one non-zero byte
                    int bytesRead = fs.Read(buffer, 0, buffer.Length);
                    if (buffer.All(b => b == 0))
                    {
                        RetryableException ex = new RetryableException(
                            "Temp file for '" + intendedPurpose + "' was written with " + bytesRead + " null bytes");

                        EventMetadata eventInfo = new EventMetadata();
                        eventInfo.Add("ErrorMessage", "Validation of temporary downloaded file failed");
                        eventInfo.Add("file", filePath);
                        eventInfo.Add("intendedPurpose", intendedPurpose);
                        eventInfo.Add("Exception", ex.ToString());
                        this.Tracer.RelatedEvent(EventLevel.Warning, "Warning", eventInfo);

                        throw ex;
                    }
                }
            }
        }
Esempio n. 2
0
        private void ValidateTempFile(string tempFilePath, string finalFilePath)
        {
            using (Stream fs = this.fileSystem.OpenFileStream(tempFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, callFlushFileBuffers: false))
            {
                if (fs.Length == 0)
                {
                    throw new RetryableException($"Temp file '{tempFilePath}' for '{finalFilePath}' was written with 0 bytes");
                }
                else
                {
                    byte[] buffer = new byte[10];

                    // Temp files should always have at least one non-zero byte
                    int bytesRead = fs.Read(buffer, 0, buffer.Length);
                    if (buffer.All(b => b == 0))
                    {
                        RetryableException ex = new RetryableException(
                            $"Temp file '{tempFilePath}' for '{finalFilePath}' was written with {bytesRead} null bytes");

                        EventMetadata eventInfo = CreateEventMetadata(ex);
                        eventInfo.Add("file", tempFilePath);
                        eventInfo.Add("finalFilePath", finalFilePath);
                        this.Tracer.RelatedWarning(eventInfo, $"{nameof(this.ValidateTempFile)}: Temp file invalid");

                        throw ex;
                    }
                }
            }
        }
Esempio n. 3
0
        private void ValidateTempFile(string filePath, string intendedPurpose)
        {
            using (Stream fs = this.fileSystem.OpenFileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.None))
            {
                if (fs.Length == 0)
                {
                    throw new RetryableException("Temp file for '" + intendedPurpose + "' was written with 0 bytes");
                }
                else
                {
                    byte[] buffer = new byte[10];

                    // Temp files should always have at least one non-zero byte
                    int bytesRead = fs.Read(buffer, 0, buffer.Length);
                    if (buffer.All(b => b == 0))
                    {
                        RetryableException ex = new RetryableException(
                            "Temp file for '" + intendedPurpose + "' was written with " + bytesRead + " null bytes");

                        EventMetadata eventInfo = new EventMetadata();
                        eventInfo.Add("file", filePath);
                        eventInfo.Add("intendedPurpose", intendedPurpose);
                        eventInfo.Add("Exception", ex.ToString());
                        this.Tracer.RelatedWarning(eventInfo, "Validation of temporary downloaded file failed");

                        throw ex;
                    }
                }
            }
        }