Skip to content

Commit b76f9e7

Browse files
authored
Adjust runtime upgrade init (#4519)
1 parent 558636b commit b76f9e7

File tree

4 files changed

+14
-20
lines changed

4 files changed

+14
-20
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# CHANGELOG
22

3+
## master
4+
5+
Changes:
6+
7+
- Don't clear injected `PortableRegistry` types on runtime upgrade
8+
9+
310
## 7.6.1 Jan 30, 2022
411

512
Upgdare priority: Low. Recommended for users with long-running scripts and those chains based around the latest Substrate master versions.

packages/api/src/base/Init.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,7 @@ export abstract class Init<ApiType extends ApiTypes> extends Decorate<ApiType> {
284284
thisRegistry.metadata = metadata;
285285
thisRegistry.specVersion = version.specVersion;
286286

287-
// clear the registry types to ensure that we override correctly
288-
this._initRegistry(thisRegistry.registry.init(), this._runtimeChain as Text, version, metadata);
287+
this._initRegistry(this.registry, this._runtimeChain as Text, version, metadata);
289288
this._injectMetadata(thisRegistry, false);
290289

291290
return true;

packages/types/src/create/registry.ts

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ function injectEvents (registry: TypeRegistry, { lookup, pallets }: MetadataLate
8686

8787
lazyMethod(result, version >= 12 ? index.toNumber() : i, () =>
8888
lazyVariants(lookup, events.unwrap(), getVariantStringIdx, (variant: SiVariant): CodecClass<GenericEventData> => {
89-
const meta = (registry as Registry).createType<EventMetadataLatest>('EventMetadataLatest', objectSpread({}, variant, { args: getFieldArgs(lookup, variant.fields) }));
89+
const meta = registry.createType<EventMetadataLatest>('EventMetadataLatest', objectSpread({}, variant, { args: getFieldArgs(lookup, variant.fields) }));
9090

9191
return class extends GenericEventData {
9292
constructor (registry: Registry, value: Uint8Array) {
@@ -118,7 +118,7 @@ function injectExtrinsics (registry: TypeRegistry, { lookup, pallets }: Metadata
118118

119119
// extract additional properties from the metadata
120120
function extractProperties (registry: TypeRegistry, metadata: Metadata): ChainProperties | undefined {
121-
const original = (registry as Registry).getChainProperties();
121+
const original = registry.getChainProperties();
122122
const constants = decorateConstants(registry, metadata.asLatest, metadata.version);
123123
const ss58Format = constants.system && (constants.system.sS58Prefix || constants.system.ss58Prefix);
124124

@@ -170,20 +170,6 @@ export class TypeRegistry implements Registry {
170170
this.#knownDefaults = objectSpread({ Json, Metadata, PortableRegistry, Raw }, baseTypes);
171171
this.#knownDefinitions = definitions;
172172

173-
this.init();
174-
175-
if (createdAtHash) {
176-
this.createdAtHash = this.createType('Hash', createdAtHash);
177-
}
178-
}
179-
180-
public init (): this {
181-
// start clean
182-
this.#classes = new Map<string, CodecClass>();
183-
this.#definitions = new Map<string, string>();
184-
this.#unknownTypes = new Map<string, boolean>();
185-
this.#knownTypes = {};
186-
187173
// register know, first classes then on-demand-created definitions
188174
this.register(this.#knownDefaults);
189175

@@ -193,7 +179,9 @@ export class TypeRegistry implements Registry {
193179
this.register(allKnown[i].types as unknown as RegistryTypes);
194180
}
195181

196-
return this;
182+
if (createdAtHash) {
183+
this.createdAtHash = this.createType('Hash', createdAtHash);
184+
}
197185
}
198186

199187
public get chainDecimals (): number[] {

packages/types/src/types/augmentRegistry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ declare module '@polkadot/types-codec/types/registry' {
6161
// hasDef (name: string): boolean;
6262
// hasType (name: string): boolean;
6363
// hash (data: Uint8Array): IU8a;
64-
init (): Registry;
64+
6565
// register (type: CodecClass | RegistryTypes): void;
6666
// register (name: string, type: CodecClass): void;
6767
// register (arg1: string | CodecClass | RegistryTypes, arg2?: CodecClass): void;

0 commit comments

Comments
 (0)