diff options
| author | Pavel Filipenský <pfilipensky@samba.org> | 2025-07-09 22:38:02 +0200 |
|---|---|---|
| committer | Pavel Filipensky <pfilipensky@samba.org> | 2025-09-09 13:50:00 +0000 |
| commit | f636bd3ec08271e79feea6cdd48e48da2af5b1d8 (patch) | |
| tree | 9d94b46811c06efff366ebed7ecebab86aa35eda /source3/script/samba-log-parser | |
| parent | a6dcf78483d7ae492e695d30c5c783df8e7879d8 (diff) | |
| download | samba-f636bd3ec08271e79feea6cdd48e48da2af5b1d8.tar.gz samba-f636bd3ec08271e79feea6cdd48e48da2af5b1d8.tar.bz2 samba-f636bd3ec08271e79feea6cdd48e48da2af5b1d8.zip | |
s3:script: Avoid UnicodeDecodeError for samba-log-parser processing whole directory
When log directory contains zipped files like
old/log.rpcd_spoolss-20250831.gz we get error.
We want to ignore such files.
$ samba-log-parser --traceid 6 --merge-by-timestamp
Traceback (most recent call last):
File "/usr/bin/samba-log-parser", line 382, in <module>
main()
~~~~^^
File "/usr/bin/samba-log-parser", line 311, in main
process_file(
~~~~~~~~~~~~^
record_list,
^^^^^^^^^^^^
...<3 lines>...
options.traceid,
^^^^^^^^^^^^^^^^
)
^
File "/usr/bin/samba-log-parser", line 92, in process_file
data = infile.readlines()
File "<frozen codecs>", line 325, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
Signed-off-by: Pavel Filipenský <pfilipensky@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Autobuild-User(master): Pavel Filipensky <pfilipensky@samba.org>
Autobuild-Date(master): Tue Sep 9 13:50:00 UTC 2025 on atb-devel-224
Diffstat (limited to 'source3/script/samba-log-parser')
| -rwxr-xr-x | source3/script/samba-log-parser | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/source3/script/samba-log-parser b/source3/script/samba-log-parser index a07dfdb4a6c..bd8cf580e05 100755 --- a/source3/script/samba-log-parser +++ b/source3/script/samba-log-parser @@ -69,7 +69,12 @@ from collections import defaultdict def process_file_no_traceid(record_list, fname): with open(fname, "r") as infile: - data = infile.readlines() + try: + data = infile.readlines() + except UnicodeDecodeError: + print("This file is not Unicode encoded: ", fname, file=sys.stderr) + return + date = "" record_lines = [] @@ -89,7 +94,12 @@ def process_file_no_traceid(record_list, fname): def process_file(record_list, traceid_set, fname, opid, otraceid): with open(fname, "r") as infile: - data = infile.readlines() + try: + data = infile.readlines() + except UnicodeDecodeError: + print("This file is not Unicode encoded: ", fname, file=sys.stderr) + return + pid = None traceid = 0 traceid_prev = None |
