Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

scalecodec reports ValueError: Index '109' not present in Enum type mapping #1

Open
armchairancap opened this issue Jun 4, 2024 · 1 comment

Comments

@armchairancap
Copy link
Owner

I spotted the following error in payctl. It's related to scalecodec:

Signing account info: {'nonce': 417, 'consumers': 0, 'providers': 1, 'sufficients': 0, 'data': {'free': xxxxxx, 'reserved': 0, 'misc_frozen': 0, 'fee_frozen': 0}}
Expected tx fee 0.020000000  xx
Submitting batch extrinsic to claim 3 rewards (in 1 eras)
Traceback (most recent call last):
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 1232, in process
    enum_type_mapping = self.type_mapping[self.index]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/bin/payctl", line 8, in <module>
    sys.exit(main())
  File "/home/user/.local/lib/python3.9/site-packages/payctl/payctl.py", line 236, in main
    cmd_pay(args, config)
  File "/home/user/.local/lib/python3.9/site-packages/payctl/payctl.py", line 185, in cmd_pay
    fees = extrinsic_receipt.total_fee_amount
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3376, in total_fee_amount
    self.process_events()
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3161, in process_events
    if self.triggered_events:
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3149, in triggered_events
    if self.extrinsic_idx is None:
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3118, in extrinsic_idx
    self.retrieve_extrinsic()
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3092, in retrieve_extrinsic
    block = self.substrate.get_block(block_hash=self.block_hash)
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 2465, in get_block
    return self.__get_block_handler(
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 2424, in __get_block_handler
    return decode_block(response['result']['block'], block_data_hash=block_hash)
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 2317, in decode_block
    extrinsic_decoder.decode()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 874, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 2886, in process
    self.value_object.update(self.process_type(extrinsic_version, metadata=self.metadata).value_object)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 979, in process_type
    obj.decode(check_remaining=False)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 874, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 572, in process
    field_obj = self.process_type(data_type, metadata=self.metadata)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 979, in process_type
    obj.decode(check_remaining=False)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 874, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 1536, in process
    call_obj = self.process_type(call_type_string, metadata=self.metadata)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 979, in process_type
    obj.decode(check_remaining=False)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 874, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 1536, in process
    call_obj = self.process_type(call_type_string, metadata=self.metadata)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 979, in process_type
    obj.decode(check_remaining=False)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 874, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 1245, in process
    raise ValueError("Index '{}' not present in Enum type mapping".format(self.index))
ValueError: Index '109' not present in Enum type mapping

Payout was successful, but I upgraded scalecodec to see if that prevents errors in the future.

  • scalecodec-1.2.9 (from scalecodec-1.2.7)
  • substrate-interface-1.7.4 (before substrate-interface-1.7.4, also upgraded just in case)

Even if this does help, I won't know for a while: I checked logs from last 2 weeks and none had any errors or warnings.

I guess it's not a problem in this script so i created this issue in the xxchain repo.

@armchairancap
Copy link
Owner Author

Similar or same issue with newer versions of substrate-interface and scalecodec:

  • scalecodec-1.2.9
  • substrate-interface-1.7.8
Traceback (most recent call last):
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 1232, in process
    enum_type_mapping = self.type_mapping[self.index]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/bin/payctl", line 8, in <module>
    sys.exit(main())
  File "/home/user/.local/lib/python3.9/site-packages/payctl/payctl.py", line 236, in main
    cmd_pay(args, config)
  File "/home/user/.local/lib/python3.9/site-packages/payctl/payctl.py", line 185, in cmd_pay
    fees = extrinsic_receipt.total_fee_amount
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3390, in total_fee_amount
    self.process_events()
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3175, in process_events
    if self.triggered_events:
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3163, in triggered_events
    if self.extrinsic_idx is None:
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3132, in extrinsic_idx
    self.retrieve_extrinsic()
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 3106, in retrieve_extrinsic
    block = self.substrate.get_block(block_hash=self.block_hash)
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 2479, in get_block
    return self.__get_block_handler(
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 2438, in __get_block_handler
    return decode_block(response['result']['block'], block_data_hash=block_hash)
  File "/home/user/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 2330, in decode_block
    extrinsic_decoder.decode(check_remaining=self.config.get('strict_scale_decode'))
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 878, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 2887, in process
    self.value_object.update(self.process_type(extrinsic_version, metadata=self.metadata).value_object)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 983, in process_type
    obj.decode(check_remaining=False)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 878, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 572, in process
    field_obj = self.process_type(data_type, metadata=self.metadata)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 983, in process_type
    obj.decode(check_remaining=False)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 878, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 1536, in process
    call_obj = self.process_type(call_type_string, metadata=self.metadata)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 983, in process_type
    obj.decode(check_remaining=False)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 878, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 1536, in process
    call_obj = self.process_type(call_type_string, metadata=self.metadata)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 983, in process_type
    obj.decode(check_remaining=False)
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/base.py", line 878, in decode
    self.value_serialized = self.process()
  File "/home/user/.local/lib/python3.9/site-packages/scalecodec/types.py", line 1245, in process
    raise ValueError("Index '{}' not present in Enum type mapping".format(self.index))
ValueError: Index '21' not present in Enum type mapping

After this I upgraded related packages to:

  • scalecodec-1.2.11
  • substrate-interface-1.7.10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant