Java 调用链接代码失败:事务ID存在

Java 调用链接代码失败:事务ID存在,java,hyperledger-fabric,Java,Hyperledger Fabric,我有一个带有两个契约的链码,第二个契约调用第一个契约的事务,如下所示: class ContractA implements ContractInterface{ ..... @Transaction public boolean trans1(MyContext ctx, String data) { ... return result; } } class ContractB implements Contract

我有一个带有两个契约的链码,第二个契约调用第一个契约的事务,如下所示:

class ContractA implements ContractInterface{
     .....
     @Transaction
     public boolean trans1(MyContext ctx, String data) {
         ...
         return result;
     }
}

class ContractB implements ContractInterface{
     .....
     @Transaction
     public boolean trans2(MyContext ctx, String data) {
         ...
         Chaincode.Response response = ctx.getStub().invokeChaincode(chaincodeId,
                    new String[]{ContractA:trans1, "data"});
         ...
     }
}

在trans2执行期间,invokeChaincode失败,错误为:“INVOKE\u CHAINCODE failed:事务ID存在”。根据,调用invokeChaincode不会创建其他事务,因此,使用相同的事务ID创建调用是正确的

这是一个bug还是我在设计中做了一些不正确的事情

多谢各位,
Roxana执行
ctx.getStub().invokeChaincode(chaincodeId,新字符串[]{ContractA:trans1,“data”})
要求对等方对自身执行链码到链码的调用。不支持递归调用链码

这里的错误消息可能会得到改进,但本质上,资源是分配给链式代码调用的,链式代码调用与txid关联,然后在事务完成时清除链式代码调用。因为您的事务已经与链码交互,所以这些资源已经存在,并且尝试创建它们会导致返回的错误

如果希望在自己的链码中调用另一个函数,只需将其作为普通函数调用,而不是尝试通过链码存根调用它