RangeError将bna文件部署到composer-rest-server

时间:2017-09-15 14:17:31

标签: hyperledger-composer

所以我试图部署一个新的bna文件进行测试。 更重要的是,我可以测试其余的界面来创建参与者,我创建的调用代码比其他任何东西都要多 - javascript事务处理文件在这个时刻几乎是空的。

.cto文件有几种不同的参与者类型和一堆资产类型,它们形成一种树结构来表示数据。

尝试启动本地休息服务器会出现以下错误。

  

从业务网络定义中发现类型...已发现   来自业务网络定义的类型为所有人生成模式   业务网络定义中的类型...异常:RangeError:   超出最大调用堆栈大小RangeError:最大调用堆栈大小   突破       在LoopbackVisitor.visitClassDeclarationCommon(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:352:23)       在LoopbackVisitor.visitAssetDeclaration(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:187:21)       在LoopbackVisitor.visit(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:74:25)       在AssetDeclaration.accept(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/classdeclaration.js:64:24)       在LoopbackVisitor.visitField(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:494:18)       在LoopbackVisitor.visit(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:86:25)       在Field.accept(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/property.js:48:24)       at classDeclaration.getProperties.forEach(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:373:66)       at Array.forEach(native)       在LoopbackVisitor.visitClassDeclarationCommon(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:370:42)       在LoopbackVisitor.visitAssetDeclaration(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:187:21)       在LoopbackVisitor.visit(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:74:25)       在AssetDeclaration.accept(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/classdeclaration.js:64:24)       在LoopbackVisitor.visitField(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:494:18)       在LoopbackVisitor.visit(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:86:25)       在Field.accept(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/property.js:48:24)       at classDeclaration.getProperties.forEach(/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:373:66)

谷歌的一个小小的质量时间给了我一个事实,它是一个内存不足的错误,可能是由于过度递归造成的,但之后我就陷入了困境。

同样的网络在游乐场fwiw工作得很好。

编辑: 没有.qry文件。这是基本的。 我试图看看我是否可以在REST电话中添加Par1和Par2样本。

ACL文件是基本网络样本的标准允许所有操作。

我已经擦除了.cto文件以部分模糊了源代码,但它似乎仍然重复以下内容:

/**
 * Sample business network definition.
 */
namespace xx.yy.zz

asset SomeTransmission identified by orderNumber {
  o String orderNumber  //Some order number
  --> Par2 aa
  --> Par1 bb
  o SomeTransmission[] messages
}

participant Par1 identified by code {
  o String mmm
  o String name
  o String prefix
  o String code
  o Boolean bool1
  o Boolean bool2
  o Boolean bool3
}

participant SomeSss identified by sss {
  o String sss
  o String mmm
  --> Par1 bb
  --> Par1 rep2
}

participant Par2 identified by id {
  o String id
  o String name
  o String address
}

transaction UpdateOrderTransaction {
  o String orderId
  --> Par2 aa
  --> Par1 bb
  o SomeTransmission transmission
}

event UpdateOrderEvent {
  --> SomeTransmission transmission
}

asset Some identified by uuid {
  o String uuid  //Unique identifier
}

asset AgencyOrder extends Some { 
    o AXZHDR agyhdr 
    o AXZDS1 agyds1
    o AXZDS2 agyds2
    o AXZDS3 agyds3
    o AXZDS4 agyds4
    o AXZSTD[] agystds
    o AXZCOM[] agycoms
    o AXZHIA[] agyhias
    o BxblineTransmission[] bxblines
    o AXZTLR agytlr
}

asset SomeRecord identified by uuid {
  o String uuid       
  o String id         
  o Long orderNumber  //Some order number
}

asset SomeModifier extends SomeRecord { 
    o Par2 tpar2
    o Par1 tpar1       
    o String dt       
    o String sss    
    o String cn         
    o String rts        
}

asset SomePreviousSssModifier extends SomeModifier {
  o String previousSssCallLetters 
}

asset SomeMultiple extends SomeRecord {
  o String continuation 
}

asset SomeComment extends SomeMultiple {
  o String comment 
}


asset AXZHDR extends SomePreviousSssModifier { 
    o String version         //Some version number
    o String routingCode
    o String mdaCode
    o String clientCode
  o String prxOneCode
  o String prxTwoCode
  o String estimateNumber
  o String startDate
  o String endDate
  o String cashOrTrade
  o String scheduleType
  o String scheduleStartDate
    o Long billWeekStartDay
    o String originalOrderNumber
    o Long revisionNumber
}

asset AXZDS1 extends SomeRecord {
    o String axyName
    o String axyAddress
}

asset AXZDS2 extends SomeRecord {
    o String clientName
    o String estimateDescription
  o String targetDmxx
  o String[] extraDmxxs
}

asset AXZDS3 extends SomeRecord {
    o String prxOneName
    o String prxTwoName
}

asset AXZDS4 extends SomeRecord {
    o String bxberCode
    o String bxberName
  o Long bxberTelephone
  o String bxberExtension
}

asset AXZSTD extends SomeComment {
}

asset AXZCOM extends SomeComment {
}

asset AXZHIA extends SomeMultiple {
  o String[] dates
}

asset AXZTLR extends SomeRecord {
    o Long numberOfRecords
    o Long totalOrderedSpx
    o Long totalOrderedDollars
}

//Bxb record details
asset BxblineTransmission identified by uuid{
  o String uuid
  o BXBHDR bxbhdr
    o BXBDEM bxbdem
    o BXBORB[] bxborbs
    o BXBCOM[] bxbcoms
    o BXBDTL[] bxbdtls
}

asset SomeBxbRecord extends SomeRecord {
    o Long sequenceNumber
    o String sbx
    o Long sbxStartDay
    o Long startTime
    o Long endTime
    o Long totalspxyLength
    o String lengthInUnits
    o Long cost
    o String costQualifier
    o Long prxOneTimeShare
    o String pppName
    o String scheduleType  
}

asset BXBHDR extends SomeBxbRecord {
  o Long makegoodForBxbline
}

asset BXBDEM extends SomeRecord {
  o Long[] demos
}

asset BXBORB extends SomeMultiple {
  o String sbx
    o Long sbxStartDay
    o Long startTime
    o Long endTime
    o String pppName  
}

asset BXBCOM extends SomeComment {
}

asset BXBDTL extends SomeMultiple {
  o Long cost
    o String startDate
    o Long numberOfWeeks
    o Long spxPerWeek
}

1 个答案:

答案 0 :(得分:0)

问题是:

asset SomeTransmission identified by orderNumber {
  o String orderNumber  //Some order number
  --> Par2 aa
  --> Par1 bb
  o SomeTransmission[] messages
}

SomeTransmission[] messages导致代码递归,试图在SomeTransmission类已经处于内省过程中时对其进行内省。

想要拥有包含自己资产类型数组的资产似乎并不常见。你想要实现什么,也许还有另一种建模方法?

我已创建问题https://github.com/hyperledger/composer/issues/2193来解决此问题。