qq77yes opened a new issue, #10870:
URL: https://github.com/apache/seatunnel/issues/10870

   ### Search before asking
   
   - [x] I had searched in the 
[issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22)
 and found no similar issues.
   
   
   ### What happened
   
   在v2.3.13中,通过seatunnel 往Milvus中导入数据一直报错。
   
   数据embedding的执行结果是符合预期的,但是从debug日志中看,获取不到 context 无法初始化sink 进而初始化一个错误的milvus 表
   
   ```
   2026-05-11 18:03:56,970 DEBUG [o.a.s.a.t.f.FactoryUtil       ] [main] - 
java.lang.NullPointerException: Cannot invoke 
"org.apache.seatunnel.api.table.factory.TableSinkFactoryContext.getOptions()" 
because "context" is null
           at 
org.apache.seatunnel.connectors.seatunnel.milvus.sink.MilvusSinkFactory.createSink(MilvusSinkFactory.java:56)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.lambda$createAndPrepareSink$1(FactoryUtil.java:213)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.isFallback(FactoryUtil.java:458)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSink(FactoryUtil.java:209)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.createSinkAction(MultipleTableJobConfigParser.java:690)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parseSink(MultipleTableJobConfigParser.java:613)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parse(MultipleTableJobConfigParser.java:260)
           at 
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.getLogicalDag(ClientJobExecutionEnvironment.java:122)
           at 
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.execute(ClientJobExecutionEnvironment.java:190)
           at 
org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:204)
           at org.apache.seatunnel.core.starter.SeaTunnel.run(SeaTunnel.java:40)
           at 
org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient.main(SeaTunnelClient.java:40)
   
   2026-05-11 18:03:56,977 INFO  [o.a.s.a.t.f.FactoryUtil       ] [main] - 
Create sink 'Milvus' with upstream input catalog-table[database: null, schema: 
null, table: raw_data]
   2026-05-11 18:03:56,979 INFO  [p.MultipleTableJobConfigParser] [main] - 
Unsupported multi table sink api, rollback to sink template
   ```
   执行中的上下文也发生错乱
   `2026-05-11 18:03:57,526 INFO  [a.s.a.s.SaveModeExecuteWrapper] 
[seatunnel-coordinator-service-2] - Executing save mode for table: 
data_goverment_test.raw_data, with SchemaSaveMode: ERROR_WHEN_SCHEMA_NOT_EXIST, 
DataSaveMode: APPEND_DATA using Catalog: S3File
   2026-05-11 18:03:57,530 DEBUG [g.n.s.i.g.n.NettyClientHandler] 
[grpc-nio-worker-ELG-1-4] - [id: 0xe12e4b58, L:/172.20.3.24:51994 - 
R:/10.0.10.49:19530] OUTBOUND HEADERS: streamId=5 
headers=GrpcHttp2OutboundHeaders[:authority: 10.0.10.49:19530, :path: 
/milvus.proto.milvus.MilvusService/HasCollection, :method: POST, :scheme: http, 
content-type: application/grpc, te: trailers, user-agent: 
grpc-java-netty/1.59.1, authorization: cm9vdDpNaWx2dXM=, dbname: default, 
grpc-accept-encoding: gzip] streamDependency=0 weight=16 exclusive=false 
padding=0 endStream=false`
   
   
   进而报错
   `The sink table not exist`
   
   ### SeaTunnel Version
   
   2.3.13
   
   ### SeaTunnel Config
   
   ```conf
   env {
     job.mode = "BATCH"
     parallelism = 1
     job.name = "complex_json_from_minio_to_es"
   }
   
   # 第一步:从MinIO读取整个JSON文件作为单行文本数据
   source {
     # 使用S3File连接器连接MinIO
     S3File {
       bucket = "s3a://qq-test"
       path = "/user_json/3ebe910703c14983bb44.json"
       access_key = ""
       secret_key = "x"
       fs.s3a.endpoint = "http://10.0.10.103:9000";
       charset = "UTF-8"
       fs.s3a.aws.credentials.provider = 
"org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider"
       file_format_type = "json"
       
       plugin_output = "raw_data" 
       # 定义复杂的嵌套 Schema
       # SeaTunnel 会根据这个 Schema 解析 JSON 内容
       schema = {
         fields {
           profile = string
           experience = string
           achievements = string
           relationships = string
           mediaAndNews = string
           uniq_id = string
         }
       }
     }
   }
   
   transform {
   Sql {
       plugin_input = ["raw_data"]
       query = """
         select 
           uniq_id,
           CAST(profile AS String) as PROFILE_STR
         from raw_data
       """
       plugin_output = "stringified_data"
     }
   
   Embedding {
       plugin_input = ["stringified_data"]
        model_provider = OPENAI
       model = bge-m3
       api_key = ''
       secret_key = ''
       api_path = "http://10.0.10.49:10003/v1/embeddings";
       vectorization_fields {
         profile_vector = PROFILE_STR
       }
       plugin_output = "embedded_table"
       result_table_name = "embedded_table"
     }
   }
   sink {
     Milvus {
       url = "http://10.0.10.49:19530";
       token = "root:Milvus" # 如果没设密码,默认通常是 root:Milvus 或为空
       batch_size = 1000
       plugin_input = "embedded_table"
       source_table_name = "embedded_table"
       database = "data_goverment_test"
       collection_name = "user_data"
       schema_save_mode = "ERROR_WHEN_SCHEMA_NOT_EXIST"
       collection_description  = {
         uniq_id = "uniq_id"
         PROFILE_STR = "profile_data" # 建议在 Milvus 中设为 VARCHAR 或 JSON 类型
         profile_vector = "profile_vector" # 必须yy是 FloatVector 类型
       } 
     }
   }
   ```
   
   ### Running Command
   
   ```shell
   seatunnel --config xxx.conf -m local
   ```
   
   ### Error Exception
   
   ```log
   2026-05-11 18:03:56,962 INFO  [.s.p.d.AbstractPluginDiscovery] [main] - find 
connector jar and dependency for PluginIdentifier{engineType='seatunnel', 
pluginType='sink', pluginName='Milvus'}: 
[file:/E:/software/apache-seatunnel-2.3.13-bin.tar/apache-seatunnel-2.3.13-bin/apache-seatunnel-2.3.13/connectors/connector-milvus-2.3.13.jar]
   2026-05-11 18:03:56,970 DEBUG [o.a.s.a.t.f.FactoryUtil       ] [main] - 
java.lang.NullPointerException: Cannot invoke 
"org.apache.seatunnel.api.table.factory.TableSinkFactoryContext.getOptions()" 
because "context" is null
           at 
org.apache.seatunnel.connectors.seatunnel.milvus.sink.MilvusSinkFactory.createSink(MilvusSinkFactory.java:56)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.lambda$createAndPrepareSink$1(FactoryUtil.java:213)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.isFallback(FactoryUtil.java:458)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSink(FactoryUtil.java:209)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.createSinkAction(MultipleTableJobConfigParser.java:690)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parseSink(MultipleTableJobConfigParser.java:613)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parse(MultipleTableJobConfigParser.java:260)
           at 
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.getLogicalDag(ClientJobExecutionEnvironment.java:122)
           at 
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.execute(ClientJobExecutionEnvironment.java:190)
           at 
org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:204)
           at org.apache.seatunnel.core.starter.SeaTunnel.run(SeaTunnel.java:40)
           at 
org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient.main(SeaTunnelClient.java:40)
   
   2026-05-11 18:03:56,977 INFO  [o.a.s.a.t.f.FactoryUtil       ] [main] - 
Create sink 'Milvus' with upstream input catalog-table[database: null, schema: 
null, table: raw_data]
   2026-05-11 18:03:56,979 INFO  [p.MultipleTableJobConfigParser] [main] - 
Unsupported multi table sink api, rollback to sink template
   
   ...
   
   
   2026-05-11 18:03:57,516 DEBUG [g.n.s.i.g.n.NettyClientHandler] 
[grpc-nio-worker-ELG-1-4] - [id: 0xe12e4b58, L:/172.20.3.24:51994 - 
R:/10.0.10.49:19530] INBOUND DATA: streamId=3 padding=0 endStream=false 
length=113 
bytes=000000006c0a00125e0a0776322e342e3131121c547565205365702031302030303a31333a33352055544320323032341a07633136363235332220676f207665...
   2026-05-11 18:03:57,516 DEBUG [g.n.s.i.g.n.NettyClientHandler] 
[grpc-nio-worker-ELG-1-4] - [id: 0xe12e4b58, L:/172.20.3.24:51994 - 
R:/10.0.10.49:19530] OUTBOUND PING: ack=false bytes=1234
   2026-05-11 18:03:57,518 DEBUG [g.n.s.i.g.n.NettyClientHandler] 
[grpc-nio-worker-ELG-1-4] - [id: 0xe12e4b58, L:/172.20.3.24:51994 - 
R:/10.0.10.49:19530] INBOUND HEADERS: streamId=3 
headers=GrpcHttp2ResponseHeaders[grpc-status: 0, grpc-message: ] padding=0 
endStream=true
   2026-05-11 18:03:57,525 DEBUG [g.n.s.i.g.n.NettyClientHandler] 
[grpc-nio-worker-ELG-1-4] - [id: 0xe12e4b58, L:/172.20.3.24:51994 - 
R:/10.0.10.49:19530] INBOUND PING: ack=true bytes=1234
   2026-05-11 18:03:57,526 INFO  [a.s.a.s.SaveModeExecuteWrapper] 
[seatunnel-coordinator-service-2] - Executing save mode for table: 
data_goverment_test.raw_data, with SchemaSaveMode: ERROR_WHEN_SCHEMA_NOT_EXIST, 
DataSaveMode: APPEND_DATA using Catalog: S3File
   
   
   ...
   
   
   
   2026-05-11 18:03:57,544 ERROR [o.a.s.e.s.CoordinatorService  ] 
[seatunnel-coordinator-service-2] - [localhost]:5801 [seatunnel-405222] [5.1] 
submit job 1106159750325731329 error 
org.apache.seatunnel.common.exception.SeaTunnelRuntimeException: 
ErrorCode:[API-09], ErrorDescription:[Handle save mode failed]
           at 
org.apache.seatunnel.engine.server.master.JobMaster.handleSaveMode(JobMaster.java:576)
           at 
org.apache.seatunnel.engine.server.master.JobMaster.lambda$init$1(JobMaster.java:267)
           at 
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
           at 
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
           at 
java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
           at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
           at 
java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
           at 
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
           at 
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
           at 
java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
           at 
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
           at 
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
           at 
java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
           at 
org.apache.seatunnel.engine.server.master.JobMaster.init(JobMaster.java:261)
           at 
org.apache.seatunnel.engine.server.CoordinatorService.lambda$submitJob$6(CoordinatorService.java:663)
           at 
org.apache.seatunnel.api.tracing.MDCRunnable.run(MDCRunnable.java:43)
           at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
           at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
           at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
           at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
           at java.base/java.lang.Thread.run(Thread.java:832)
   Caused by: org.apache.seatunnel.common.exception.SeaTunnelRuntimeException: 
ErrorCode:[API-11], ErrorDescription:[The sink table not exist] - The sink 
table not exist
           at 
org.apache.seatunnel.api.sink.DefaultSaveModeHandler.errorWhenSchemaNotExist(DefaultSaveModeHandler.java:145)
           at 
org.apache.seatunnel.api.sink.DefaultSaveModeHandler.handleSchemaSaveMode(DefaultSaveModeHandler.java:91)
           at 
org.apache.seatunnel.api.sink.SaveModeHandler.handleSaveMode(SaveModeHandler.java:42)
           at 
org.apache.seatunnel.api.sink.SaveModeExecuteWrapper.execute(SaveModeExecuteWrapper.java:36)
           at 
org.apache.seatunnel.engine.server.master.JobMaster.handleSaveMode(JobMaster.java:571)
           ... 20 more
   ```
   
   ### Zeta or Flink or Spark Version
   
   zeta
   
   ### Java or Scala Version
   
   _No response_
   
   ### Screenshots
   
   _No response_
   
   ### Are you willing to submit PR?
   
   - [ ] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [x] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
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