2017-09-15 47 views
0

所以我試圖部署一個新的bna文件來測試。 更重要的是,我可以測試其餘的接口來創建參與者,並使用我寫的一些調用代碼來創建參與者 - 在這個關頭,javascript事務處理文件幾乎是空的。RangeError將bna文件部署到composer-rest-server

.cto文件有幾個不同的參與者類型和一堆資產類型,它們構成一個樹結構來表示數據。

試圖啓動本地休息服務器給我以下錯誤。

Discovering types from business network definition ... Discovered types from business network definition Generating schemas for all types in business network definition ... Exception: RangeError: Maximum call stack size exceeded RangeError: Maximum call stack size exceeded at LoopbackVisitor.visitClassDeclarationCommon (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:352:23) at LoopbackVisitor.visitAssetDeclaration (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:187:21) at LoopbackVisitor.visit (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:74:25) at AssetDeclaration.accept (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/classdeclaration.js:64:24) at LoopbackVisitor.visitField (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:494:18) at LoopbackVisitor.visit (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:86:25) at 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) at LoopbackVisitor.visitClassDeclarationCommon (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:370:42) at LoopbackVisitor.visitAssetDeclaration (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:187:21) at LoopbackVisitor.visit (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:74:25) at AssetDeclaration.accept (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/introspect/classdeclaration.js:64:24) at LoopbackVisitor.visitField (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:494:18) at LoopbackVisitor.visit (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-common/lib/codegen/fromcto/loopback/loopbackvisitor.js:86:25) at 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 
} 
+0

你能發佈你的.cto,.qry,.acl文件嗎? –

回答

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來解決這個問題。

+0

我已經使用了錯誤返回。這形成了一棵樹 - 沒有任何週期性的。這就是我首先發布的原因 - 請參閱關於遞歸的一行。 –

+0

我已經創建了一個拉取請求來解決這個問題。它應該包含在下週的0.13.1中。 –