技术文章 - CS363778

在 ThingWorx Platform 中执行自定义服务/订阅代码时重复出现“无法为 ThingworxPersistenceProvider 创建事务”

已修改: 13-Mar-2025   


注意:本文已使用机器翻译软件翻译,以方便非英语客户阅读。但翻译内容可能包含语法错误或不准确之处。请注意, PTC对本文所含信息的翻译准确性及使用后果不承担任何责任。请在 此处 查看本文的英文原始版本以便参考。有关机器翻译的更多详情,请单击 此处
感谢您告诉我们。我们将尽快审阅此译文。

适用于

  • ThingWorx Platform 8.5 to 9.3

说明

  • 特定的数据库事务失败并且不会继续
  • 当使用不存在的streamEntryId调用DeleteStreamEntry时,后续查询失败并出现错误无法为 ThingworxPersistenceProvider 创建事务
  • ThingWorx Platform 在一组服务或订阅执行之外按预期工作
  • 自定义代码在与数据库条目(例如流条目)交互之前不检查它们是否存在,这会导致在 ThingWorx Platform 中重用的数据库事务失败
  • 在某些情况下,ThingWorx Platform 无法正确处理事务失败,这可能导致损坏的事务被其他数据库操作重用
  • 在 ThingWorx Platform 中未正确处理因NullPointerException而失败的数据库事务
  • 失败的数据库事务留在 ThingWorx 事务工厂中,并由尝试与数据库交互的其他操作重用
  • 自定义代码的执行失败,无法为 ThingworxPersistenceProvider 创建事务
  • 与以前工作的数据库交互的自定义代码现在显示无法为 <Persistence Provider Name> 创建事务
  • 查看位于<ThingworxStorage> 日志中的 ThingWorx Platform 日志中记录的以下内容
    • 应用程序日志
      • [L: ERROR] [O: ctppPostgresModelExceptionTranslator] [I: ] [U: Administrator] [S: ] [P: ] [T: TWEventProcessor-7] [1,018] 数据存储未知错误:[访问模型提供程序时发生错误.]
    • ErrorLog.log (在 LoggingSubsystem 中启用了启用堆栈跟踪)
      • [L: ERROR] [O: EctppPostgresModelExceptionTranslator] [I: ] [U: Administrator] [S: ] [P: ] [T: TWEventProcessor-15] 无法为 ThingworxPersistenceProvider 创建事务
        [L: ERROR] [O: EcqlcLogger] [I: ] [U: Administrator] [S: ] [P: ] [T: TWEventProcessor-15] [1,018] 数据存储未知错误:[访问模型提供程序时发生错误.] java.lang.Exception:事务处于失败状态。
        在 com.thingworx.persistence.PersistenceProviderTransactionManager.getOrCreateTransaction(PersistenceProviderTransactionManager.java:55)
        ...
        包装者:java.lang.Exception:无法为 ThingworxPersistenceProvider 创建事务
        在 com.thingworx.persistence.PersistenceProviderTransactionManager.getOrCreateTransaction(PersistenceProviderTransactionManager.java:81)
        在 com.thingworx.persistence.PersistenceProviderTransactionManager.getModelProviderTransaction(PersistenceProviderTransactionManager.java:188)
        在 com.thingworx.persistence.TransactionFactory.getModelProviderTransaction(TransactionFactory.java:71)
        ...
        包装者:com.thingworx.common.exceptions.ModelAccessException:[1,018] 数据存储未知错误:[访问模型提供程序时发生错误。]
        在 com.thingworx.persistence.postgres.PostgresModelExceptionTranslator.rethrowTranslated(PostgresModelExceptionTranslator.java:31)
        在 com.thingworx.persistence.postgres.PostgresModelSearchProvider.searchModel(PostgresModelSearchProvider.java:255)
        在 com.thingworx.persistence.search.MultiSearchProvider.searchModel(MultiSearchProvider.java:81)
        ...
这是文章 363778 的 PDF 版本,可能已过期。最新版本 CS363778