AnzhiZhang commented on issue #3555:
URL: https://github.com/apache/texera/issues/3555#issuecomment-3181804917

   There is one additional issue related to that. When the attribute name is 
not set, the workflow fails to run, but no error is returned.
   
   <img width="1065" height="1045" alt="Image" 
src="https://github.com/user-attachments/assets/b95ddb80-4fca-44f4-acdb-beee8a4cb929";
 />
   
   Should we fix this together with this issue, or refer it to a new issue?
   
   The error message is:
   
   ```
   2025-08-12 17:39:52.177 | ERROR    | threading:run:953 - An error has been 
caught in function 'run', process 'MainProcess' (70036), thread 
'port_storage_writer_thread_PortIdentity(id=0, internal=False)' (13577547776):
   Traceback (most recent call last):
   
     File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 973, 
in _bootstrap
       self._bootstrap_inner()
       │    └ <function Thread._bootstrap_inner at 0x1057c6a70>
       └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), 
started daemon 13577547776)>
     File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 1016, 
in _bootstrap_inner
       self.run()
       │    └ <function Thread.run at 0x1057c67a0>
       └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), 
started daemon 13577547776)>
   > File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 953, 
in run
       self._target(*self._args, **self._kwargs)
       │    │        │    │        │    └ {}
       │    │        │    │        └ 
<Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started 
daemon 13577547776)>
       │    │        │    └ ()
       │    │        └ <Thread(port_storage_writer_thread_PortIdentity(id=0, 
internal=False), started daemon 13577547776)>
       │    └ <bound method StoppableQueueBlockingRunnable.run of 
<core.storage.runnables.port_storage_writer.PortStorageWriter object at 0...
       └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), 
started daemon 13577547776)>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py",
 line 70, in run
       self.post_stop()
       │    └ <function PortStorageWriter.post_stop at 0x32105d900>
       └ <core.storage.runnables.port_storage_writer.PortStorageWriter object 
at 0x32801f5b0>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/runnables/port_storage_writer.py",
 line 51, in post_stop
       self.buffered_item_writer.close()
       │    │                    └ <function IcebergTableWriter.close at 
0x320c28940>
       │    └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter 
object at 0x32801f7c0>
       └ <core.storage.runnables.port_storage_writer.PortStorageWriter object 
at 0x32801f5b0>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 123, in close
       self._flush_buffer()
       │    └ <function IcebergTableWriter._flush_buffer at 0x320c288b0>
       └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object 
at 0x32801f7c0>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 117, in _flush_buffer
       append_to_table_with_retry(df)
       │                          └ pyarrow.Table
       │                            : int32
       │                            ----
       │                            : [[1,2,3]]
       └ <function 
IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry at 
0x328048ca0>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 115, in append_to_table_with_retry
       append_with_retry()
       └ <function 
IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry
 at 0x3282f1000>
   
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 336, in wrapped_f
       return copy(f, *args, **kw)
              │    │   │       └ {}
              │    │   └ ()
              │    └ <function 
IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry
 at 0x324dd8550>
              └ <Retrying object at 0x3282b5b40 
(stop=<tenacity.stop.stop_after_attempt object at 0x3282b5150>, 
wait=<tenacity.wait.wait_rand...
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 475, in __call__
       do = self.iter(retry_state=retry_state)
            │    │                └ <RetryCallState 13439549104: attempt #10; 
slept for 0.21; last result: failed (AssertionError Can not validate empty avro 
name)>
            │    └ <function BaseRetrying.iter at 0x320c0a710>
            └ <Retrying object at 0x3282b5b40 
(stop=<tenacity.stop.stop_after_attempt object at 0x3282b5150>, 
wait=<tenacity.wait.wait_rand...
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 376, in iter
       result = action(retry_state)
                │      └ <RetryCallState 13439549104: attempt #10; slept for 
0.21; last result: failed (AssertionError Can not validate empty avro name)>
                └ <function 
BaseRetrying._post_stop_check_actions.<locals>.exc_check at 0x32828bf40>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 418, in exc_check
       raise retry_exc.reraise()
             │         └ <function RetryError.reraise at 0x320c09d80>
             └ RetryError(<Future at 0x3295e25f0 state=finished raised 
AssertionError>)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 185, in reraise
       raise self.last_attempt.result()
             │    │            └ <function Future.result at 0x10599f490>
             │    └ <Future at 0x3295e25f0 state=finished raised AssertionError>
             └ RetryError(<Future at 0x3295e25f0 state=finished raised 
AssertionError>)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
451, in result
       return self.__get_result()
              └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
403, in __get_result
       raise self._exception
             └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 478, in __call__
       result = fn(*args, **kwargs)
                │   │       └ {}
                │   └ ()
                └ <function 
IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry
 at 0x324dd8550>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 113, in append_with_retry
       self.table.append(pa_df)
       │    │     │      └ pyarrow.Table
       │    │     │        : int32
       │    │     │        ----
       │    │     │        : [[1,2,3]]
       │    │     └ <function Table.append at 0x1761b6830>
       │    └ 
wid_9_eid_45_globalportid_(logicalOpId=PythonUDFSourceV2-operator-109a11ab-df23-4648-9760-e3db9211283e,layerName=main,portId=...
       └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object 
at 0x32801f7c0>
   
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py",
 line 984, in append
       tx.append(df=df, snapshot_properties=snapshot_properties)
       │  │         │                       └ {}
       │  │         └ pyarrow.Table
       │  │           : int32
       │  │           ----
       │  │           : [[1,2,3]]
       │  └ <function Transaction.append at 0x1761b4d30>
       └ <pyiceberg.table.Transaction object at 0x32801e650>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py",
 line 417, in append
       for data_file in data_files:
                        └ <generator object _dataframe_to_data_files at 
0x3282706d0>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py",
 line 2627, in _dataframe_to_data_files
       yield from write_file(
                  └ <function write_file at 0x320bcd630>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
621, in result_iterator
       yield _result_or_cancel(fs.pop())
             │                 │  └ <method 'pop' of 'list' objects>
             │                 └ []
             └ <function _result_or_cancel at 0x10599ee60>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
319, in _result_or_cancel
       return fut.result(timeout)
                         └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
458, in result
       return self.__get_result()
              └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
403, in __get_result
       raise self._exception
             └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/thread.py", line 
58, in run
       result = self.fn(*self.args, **self.kwargs)
                │        │            └ None
                │        └ None
                └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py",
 line 2428, in write_parquet
       if (sanitized_schema := sanitize_column_names(table_schema)) != 
table_schema:
                               │                     │                 └ 
Schema(NestedField(field_id=1, name='', field_type=IntegerType(), 
required=False), schema_id=0, identifier_field_ids=[])
                               │                     └ 
Schema(NestedField(field_id=1, name='', field_type=IntegerType(), 
required=False), schema_id=0, identifier_field_ids=[])
                               └ <function sanitize_column_names at 0x169d80a60>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1355, in sanitize_column_names
       result = visit(schema.as_struct(), _SanitizeColumnsVisitor())
                │     │      │            └ <class 
'pyiceberg.schema._SanitizeColumnsVisitor'>
                │     │      └ <function Schema.as_struct at 0x169d164d0>
                │     └ Schema(NestedField(field_id=1, name='', 
field_type=IntegerType(), required=False), schema_id=0, identifier_field_ids=[])
                └ <function visit at 0x169bdb880>
     File "/opt/anaconda3/envs/texera/lib/python3.10/functools.py", line 889, 
in wrapper
       return dispatch(args[0].__class__)(*args, **kw)
              │        │                   │       └ {}
              │        │                   └ 
(StructType(fields=(NestedField(field_id=1, name='', field_type=IntegerType(), 
required=False),)), <pyiceberg.schema._Sanitiz...
              │        └ (StructType(fields=(NestedField(field_id=1, name='', 
field_type=IntegerType(), required=False),)), <pyiceberg.schema._Sanitiz...
              └ <function singledispatch.<locals>.dispatch at 0x169bd96c0>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 835, in _
       results.append(visitor.field(field, result))
       │       │      │       │     │      └ IntegerType()
       │       │      │       │     └ NestedField(field_id=1, name='', 
field_type=IntegerType(), required=False)
       │       │      │       └ <function _SanitizeColumnsVisitor.field at 
0x169d80c10>
       │       │      └ <pyiceberg.schema._SanitizeColumnsVisitor object at 
0x3295e1c00>
       │       └ <method 'append' of 'list' objects>
       └ []
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1370, in field
       name=make_compatible_name(field.name),
            │                    │     └ ''
            │                    └ NestedField(field_id=1, name='', 
field_type=IntegerType(), required=False)
            └ <function make_compatible_name at 0x169d803a0>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1305, in make_compatible_name
       if not _valid_avro_name(name):
              │                └ ''
              └ <function _valid_avro_name at 0x169d808b0>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1312, in _valid_avro_name
       assert length > 0, ValueError("Can not validate empty avro name")
              └ 0
   
   AssertionError: Can not validate empty avro name
   Exception in thread port_storage_writer_thread_PortIdentity(id=0, 
internal=False):
   Traceback (most recent call last):
     File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 1016, 
in _bootstrap_inner
       self.run()
     File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 953, 
in run
       self._target(*self._args, **self._kwargs)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/loguru/_logger.py", 
line 1251, in catch_wrapper
       return function(*args, **kwargs)
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py",
 line 70, in run
       self.post_stop()
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/runnables/port_storage_writer.py",
 line 51, in post_stop
       self.buffered_item_writer.close()
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 123, in close
       self._flush_buffer()
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 117, in _flush_buffer
       append_to_table_with_retry(df)
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 115, in append_to_table_with_retry
       append_with_retry()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 336, in wrapped_f
       return copy(f, *args, **kw)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 475, in __call__
       do = self.iter(retry_state=retry_state)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 376, in iter
       result = action(retry_state)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 418, in exc_check
       raise retry_exc.reraise()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 185, in reraise
       raise self.last_attempt.result()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
451, in result
       return self.__get_result()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
403, in __get_result
       raise self._exception
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 478, in __call__
       result = fn(*args, **kwargs)
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 113, in append_with_retry
       self.table.append(pa_df)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py",
 line 984, in append
       tx.append(df=df, snapshot_properties=snapshot_properties)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py",
 line 417, in append
       for data_file in data_files:
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py",
 line 2627, in _dataframe_to_data_files
       yield from write_file(
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
621, in result_iterator
       yield _result_or_cancel(fs.pop())
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
319, in _result_or_cancel
       return fut.result(timeout)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
458, in result
       return self.__get_result()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
403, in __get_result
       raise self._exception
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/thread.py", line 
58, in run
       result = self.fn(*self.args, **self.kwargs)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py",
 line 2428, in write_parquet
       if (sanitized_schema := sanitize_column_names(table_schema)) != 
table_schema:
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1355, in sanitize_column_names
       result = visit(schema.as_struct(), _SanitizeColumnsVisitor())
     File "/opt/anaconda3/envs/texera/lib/python3.10/functools.py", line 889, 
in wrapper
       return dispatch(args[0].__class__)(*args, **kw)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 835, in _
       results.append(visitor.field(field, result))
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1370, in field
       name=make_compatible_name(field.name),
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1305, in make_compatible_name
       if not _valid_avro_name(name):
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1312, in _valid_avro_name
       assert length > 0, ValueError("Can not validate empty avro name")
   AssertionError: Can not validate empty avro name
   2025-08-12 17:39:52.199 | INFO     | 
core.runnables.main_loop:_process_ecm:298 - receive channel ECM from 
ChannelIdentity(from_worker_id=ActorVirtualIdentity(name='Worker:WF9-PythonUDFSourceV2-operator-109a11ab-df23-4648-9760-e3db9211283e-main-0'),
 
to_worker_id=ActorVirtualIdentity(name='Worker:WF9-Sort-operator-dee3ef66-be79-42c0-b06d-dc48ad732ab6-main-0'),
 is_control=False), id = EmbeddedControlMessageIdentity(id='EndChannel'), cmd = 
ControlInvocation(method_name='EndChannel', 
command=ControlRequest(empty_request=EmptyRequest()), command_id=-1)
   2025-08-12 17:39:52.199 | INFO     | 
core.runnables.main_loop:_process_ecm:307 - process channel ECM from 
ChannelIdentity(from_worker_id=ActorVirtualIdentity(name='Worker:WF9-PythonUDFSourceV2-operator-109a11ab-df23-4648-9760-e3db9211283e-main-0'),
 
to_worker_id=ActorVirtualIdentity(name='Worker:WF9-Sort-operator-dee3ef66-be79-42c0-b06d-dc48ad732ab6-main-0'),
 is_control=False), id = EmbeddedControlMessageIdentity(id='EndChannel'), cmd = 
ControlInvocation(method_name='EndChannel', 
command=ControlRequest(empty_request=EmptyRequest()), command_id=-1)
   2025-08-12 17:39:52.404 | ERROR    | threading:run:953 - An error has been 
caught in function 'run', process 'MainProcess' (70037), thread 
'port_storage_writer_thread_PortIdentity(id=0, internal=False)' (13539864576):
   Traceback (most recent call last):
   
     File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 973, 
in _bootstrap
       self._bootstrap_inner()
       │    └ <function Thread._bootstrap_inner at 0x102c92950>
       └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), 
started daemon 13539864576)>
     File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 1016, 
in _bootstrap_inner
       self.run()
       │    └ <function Thread.run at 0x102c92680>
       └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), 
started daemon 13539864576)>
   > File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 953, 
in run
       self._target(*self._args, **self._kwargs)
       │    │        │    │        │    └ {}
       │    │        │    │        └ 
<Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), started 
daemon 13539864576)>
       │    │        │    └ ()
       │    │        └ <Thread(port_storage_writer_thread_PortIdentity(id=0, 
internal=False), started daemon 13539864576)>
       │    └ <bound method StoppableQueueBlockingRunnable.run of 
<core.storage.runnables.port_storage_writer.PortStorageWriter object at 0...
       └ <Thread(port_storage_writer_thread_PortIdentity(id=0, internal=False), 
started daemon 13539864576)>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py",
 line 70, in run
       self.post_stop()
       │    └ <function PortStorageWriter.post_stop at 0x16e3cd7e0>
       └ <core.storage.runnables.port_storage_writer.PortStorageWriter object 
at 0x16f28fee0>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/runnables/port_storage_writer.py",
 line 51, in post_stop
       self.buffered_item_writer.close()
       │    │                    └ <function IcebergTableWriter.close at 
0x16c7b0820>
       │    └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter 
object at 0x16f28f310>
       └ <core.storage.runnables.port_storage_writer.PortStorageWriter object 
at 0x16f28fee0>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 123, in close
       self._flush_buffer()
       │    └ <function IcebergTableWriter._flush_buffer at 0x16c7b0790>
       └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object 
at 0x16f28f310>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 117, in _flush_buffer
       append_to_table_with_retry(df)
       │                          └ pyarrow.Table
       │                            : int32
       │                            ----
       │                            : [[3,2,1]]
       └ <function 
IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry at 
0x16f69fd90>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 115, in append_to_table_with_retry
       append_with_retry()
       └ <function 
IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry
 at 0x16f6f8b80>
   
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 336, in wrapped_f
       return copy(f, *args, **kw)
              │    │   │       └ {}
              │    │   └ ()
              │    └ <function 
IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry
 at 0x16f6f9000>
              └ <Retrying object at 0x16f84a020 
(stop=<tenacity.stop.stop_after_attempt object at 0x16f849b70>, 
wait=<tenacity.wait.wait_rand...
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 475, in __call__
       do = self.iter(retry_state=retry_state)
            │    │                └ <RetryCallState 6165930064: attempt #10; 
slept for 0.1; last result: failed (AssertionError Can not validate empty avro 
name)>
            │    └ <function BaseRetrying.iter at 0x16c7965f0>
            └ <Retrying object at 0x16f84a020 
(stop=<tenacity.stop.stop_after_attempt object at 0x16f849b70>, 
wait=<tenacity.wait.wait_rand...
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 376, in iter
       result = action(retry_state)
                │      └ <RetryCallState 6165930064: attempt #10; slept for 
0.1; last result: failed (AssertionError Can not validate empty avro name)>
                └ <function 
BaseRetrying._post_stop_check_actions.<locals>.exc_check at 0x16f6f8e50>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 418, in exc_check
       raise retry_exc.reraise()
             │         └ <function RetryError.reraise at 0x16c795c60>
             └ RetryError(<Future at 0x16fa4ff10 state=finished raised 
AssertionError>)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 185, in reraise
       raise self.last_attempt.result()
             │    │            └ <function Future.result at 0x102e37370>
             │    └ <Future at 0x16fa4ff10 state=finished raised AssertionError>
             └ RetryError(<Future at 0x16fa4ff10 state=finished raised 
AssertionError>)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
451, in result
       return self.__get_result()
              └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
403, in __get_result
       raise self._exception
             └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 478, in __call__
       result = fn(*args, **kwargs)
                │   │       └ {}
                │   └ ()
                └ <function 
IcebergTableWriter._flush_buffer.<locals>.append_to_table_with_retry.<locals>.append_with_retry
 at 0x16f6f9000>
   
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 113, in append_with_retry
       self.table.append(pa_df)
       │    │     │      └ pyarrow.Table
       │    │     │        : int32
       │    │     │        ----
       │    │     │        : [[3,2,1]]
       │    │     └ <function Table.append at 0x16a8ba710>
       │    └ 
wid_9_eid_45_globalportid_(logicalOpId=Sort-operator-dee3ef66-be79-42c0-b06d-dc48ad732ab6,layerName=main,portId=0,isInternal=...
       └ <core.storage.iceberg.iceberg_table_writer.IcebergTableWriter object 
at 0x16f28f310>
   
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py",
 line 984, in append
       tx.append(df=df, snapshot_properties=snapshot_properties)
       │  │         │                       └ {}
       │  │         └ pyarrow.Table
       │  │           : int32
       │  │           ----
       │  │           : [[3,2,1]]
       │  └ <function Transaction.append at 0x16a8b8c10>
       └ <pyiceberg.table.Transaction object at 0x16f848460>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py",
 line 417, in append
       for data_file in data_files:
                        └ <generator object _dataframe_to_data_files at 
0x16f6747b0>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py",
 line 2627, in _dataframe_to_data_files
       yield from write_file(
                  └ <function write_file at 0x16c755510>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
621, in result_iterator
       yield _result_or_cancel(fs.pop())
             │                 │  └ <method 'pop' of 'list' objects>
             │                 └ []
             └ <function _result_or_cancel at 0x102e36d40>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
319, in _result_or_cancel
       return fut.result(timeout)
                         └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
458, in result
       return self.__get_result()
              └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
403, in __get_result
       raise self._exception
             └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/thread.py", line 
58, in run
       result = self.fn(*self.args, **self.kwargs)
                │        │            └ None
                │        └ None
                └ None
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py",
 line 2428, in write_parquet
       if (sanitized_schema := sanitize_column_names(table_schema)) != 
table_schema:
                               │                     │                 └ 
Schema(NestedField(field_id=1, name='', field_type=IntegerType(), 
required=False), schema_id=0, identifier_field_ids=[])
                               │                     └ 
Schema(NestedField(field_id=1, name='', field_type=IntegerType(), 
required=False), schema_id=0, identifier_field_ids=[])
                               └ <function sanitize_column_names at 0x147404940>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1355, in sanitize_column_names
       result = visit(schema.as_struct(), _SanitizeColumnsVisitor())
                │     │      │            └ <class 
'pyiceberg.schema._SanitizeColumnsVisitor'>
                │     │      └ <function Schema.as_struct at 0x14739a3b0>
                │     └ Schema(NestedField(field_id=1, name='', 
field_type=IntegerType(), required=False), schema_id=0, identifier_field_ids=[])
                └ <function visit at 0x14725f760>
     File "/opt/anaconda3/envs/texera/lib/python3.10/functools.py", line 889, 
in wrapper
       return dispatch(args[0].__class__)(*args, **kw)
              │        │                   │       └ {}
              │        │                   └ 
(StructType(fields=(NestedField(field_id=1, name='', field_type=IntegerType(), 
required=False),)), <pyiceberg.schema._Sanitiz...
              │        └ (StructType(fields=(NestedField(field_id=1, name='', 
field_type=IntegerType(), required=False),)), <pyiceberg.schema._Sanitiz...
              └ <function singledispatch.<locals>.dispatch at 0x14725d5a0>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 835, in _
       results.append(visitor.field(field, result))
       │       │      │       │     │      └ IntegerType()
       │       │      │       │     └ NestedField(field_id=1, name='', 
field_type=IntegerType(), required=False)
       │       │      │       └ <function _SanitizeColumnsVisitor.field at 
0x147404af0>
       │       │      └ <pyiceberg.schema._SanitizeColumnsVisitor object at 
0x16fa4f220>
       │       └ <method 'append' of 'list' objects>
       └ []
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1370, in field
       name=make_compatible_name(field.name),
            │                    │     └ ''
            │                    └ NestedField(field_id=1, name='', 
field_type=IntegerType(), required=False)
            └ <function make_compatible_name at 0x147404280>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1305, in make_compatible_name
       if not _valid_avro_name(name):
              │                └ ''
              └ <function _valid_avro_name at 0x147404790>
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1312, in _valid_avro_name
       assert length > 0, ValueError("Can not validate empty avro name")
              └ 0
   
   AssertionError: Can not validate empty avro name
   Exception in thread port_storage_writer_thread_PortIdentity(id=0, 
internal=False):
   Traceback (most recent call last):
     File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 1016, 
in _bootstrap_inner
       self.run()
     File "/opt/anaconda3/envs/texera/lib/python3.10/threading.py", line 953, 
in run
       self._target(*self._args, **self._kwargs)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/loguru/_logger.py", 
line 1251, in catch_wrapper
       return function(*args, **kwargs)
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py",
 line 70, in run
       self.post_stop()
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/runnables/port_storage_writer.py",
 line 51, in post_stop
       self.buffered_item_writer.close()
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 123, in close
       self._flush_buffer()
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 117, in _flush_buffer
       append_to_table_with_retry(df)
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 115, in append_to_table_with_retry
       append_with_retry()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 336, in wrapped_f
       return copy(f, *args, **kw)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 475, in __call__
       do = self.iter(retry_state=retry_state)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 376, in iter
       result = action(retry_state)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 418, in exc_check
       raise retry_exc.reraise()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 185, in reraise
       raise self.last_attempt.result()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
451, in result
       return self.__get_result()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
403, in __get_result
       raise self._exception
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/tenacity/__init__.py", 
line 478, in __call__
       result = fn(*args, **kwargs)
     File 
"/Users/andy/Documents/Projects/texera/core/amber/src/main/python/core/storage/iceberg/iceberg_table_writer.py",
 line 113, in append_with_retry
       self.table.append(pa_df)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py",
 line 984, in append
       tx.append(df=df, snapshot_properties=snapshot_properties)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/table/__init__.py",
 line 417, in append
       for data_file in data_files:
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py",
 line 2627, in _dataframe_to_data_files
       yield from write_file(
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
621, in result_iterator
       yield _result_or_cancel(fs.pop())
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
319, in _result_or_cancel
       return fut.result(timeout)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
458, in result
       return self.__get_result()
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/_base.py", line 
403, in __get_result
       raise self._exception
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/concurrent/futures/thread.py", line 
58, in run
       result = self.fn(*self.args, **self.kwargs)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/io/pyarrow.py",
 line 2428, in write_parquet
       if (sanitized_schema := sanitize_column_names(table_schema)) != 
table_schema:
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1355, in sanitize_column_names
       result = visit(schema.as_struct(), _SanitizeColumnsVisitor())
     File "/opt/anaconda3/envs/texera/lib/python3.10/functools.py", line 889, 
in wrapper
       return dispatch(args[0].__class__)(*args, **kw)
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 835, in _
       results.append(visitor.field(field, result))
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1370, in field
       name=make_compatible_name(field.name),
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1305, in make_compatible_name
       if not _valid_avro_name(name):
     File 
"/opt/anaconda3/envs/texera/lib/python3.10/site-packages/pyiceberg/schema.py", 
line 1312, in _valid_avro_name
       assert length > 0, ValueError("Can not validate empty avro name")
   AssertionError: Can not validate empty avro name
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to