Documentation build failing

Describe the Bug

The documentation build on readthedocs is failing
Expected Behavior

This build 10 months ago was succeeding: https://readthedocs.org/projects/xhtml2pdf/builds/18516001/
Actual Behavior

All builds since then are failing: https://readthedocs.org/projects/xhtml2pdf/builds/22084756/
Additional Information

Traceback
Running Sphinx v7.2.6
WARNING: Invalid configuration value found: 'language = None'. Update your configuration to a valid language code. Falling back to 'en' (English).
making output directory... done
WARNING: The pre-Sphinx 1.0 'intersphinx_mapping' format is deprecated and will be removed in Sphinx 8. Update to the current format as described in the documentation. Hint: "intersphinx_mapping = {'<name>': ('https://docs.python.org/', None)}".https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html#confval-intersphinx_mapping
loading intersphinx inventory from https://docs.python.org/objects.inv...
intersphinx inventory has moved: https://docs.python.org/objects.inv -> https://docs.python.org/3/objects.inv
building [mo]: targets for 0 po files that are out of date
writing output...
building [html]: targets for 12 source files that are out of date
updating environment: [new config] 12 added, 0 changed, 0 removed
reading sources... [  8%] encryption_and_signatures
reading sources... [ 17%] examples
reading sources... [ 25%] format_html
reading sources... [ 33%] graphics
reading sources... [ 42%] howto-running-tests
reading sources... [ 50%] https_options
reading sources... [ 58%] index
reading sources... [ 67%] installation
reading sources... [ 75%] reference
reading sources... [ 83%] release-notes
/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/checkouts/latest/docs/source/release-notes.rst:163: WARNING: Line block ends without a blank line.

Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 305, in next_line
  self.line = self.input_lines[self.line_offset]
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 1148, in __getitem__
  return self.data[i]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 233, in run
  self.next_line()
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 308, in next_line
  raise EOFError
EOFError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/cmd/build.py", line 298, in build_main
  app.build(args.force_all, args.filenames)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/application.py", line 355, in build
  self.builder.build_update()
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/builders/__init__.py", line 293, in build_update
  self.build(to_build,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/builders/__init__.py", line 313, in build
  updated_docnames = set(self.read())
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/builders/__init__.py", line 420, in read
  self._read_serial(docnames)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/builders/__init__.py", line 441, in _read_serial
  self.read_doc(docname)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/builders/__init__.py", line 498, in read_doc
  publisher.publish()
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/core.py", line 217, in publish
  self.document = self.reader.read(self.source, self.parser,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/io.py", line 105, in read
  self.parse()
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/readers/__init__.py", line 78, in parse
  self.parser.parse(self.input, document)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/parsers.py", line 81, in parse
  self.statemachine.run(inputlines, document, inliner=self.inliner)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 170, in run
  results = StateMachineWS.run(self, input_lines, input_offset,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 240, in run
  context, next_state, result = self.check_line(
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 452, in check_line
  return method(match, context, next_state)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 3018, in text
  self.section(title.lstrip(), source, style, lineno + 1, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 327, in section
  self.new_subsection(title, lineno, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 393, in new_subsection
  newabsoffset = self.nested_parse(
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 281, in nested_parse
  state_machine.run(block, input_offset, memo=self.memo,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 196, in run
  results = StateMachineWS.run(self, input_lines, input_offset)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 240, in run
  context, next_state, result = self.check_line(
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 452, in check_line
  return method(match, context, next_state)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 3018, in text
  self.section(title.lstrip(), source, style, lineno + 1, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 327, in section
  self.new_subsection(title, lineno, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 393, in new_subsection
  newabsoffset = self.nested_parse(
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 281, in nested_parse
  state_machine.run(block, input_offset, memo=self.memo,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 196, in run
  results = StateMachineWS.run(self, input_lines, input_offset)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 240, in run
  context, next_state, result = self.check_line(
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 452, in check_line
  return method(match, context, next_state)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 2779, in underline
  self.section(title, source, style, lineno - 1, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 327, in section
  self.new_subsection(title, lineno, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 393, in new_subsection
  newabsoffset = self.nested_parse(
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 281, in nested_parse
  state_machine.run(block, input_offset, memo=self.memo,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 196, in run
  results = StateMachineWS.run(self, input_lines, input_offset)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 240, in run
  context, next_state, result = self.check_line(
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 452, in check_line
  return method(match, context, next_state)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 1272, in bullet
  i, blank_finish = self.list_item(match.end())
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 1294, in list_item
  self.nested_parse(indented, input_offset=line_offset,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 281, in nested_parse
  state_machine.run(block, input_offset, memo=self.memo,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 196, in run
  results = StateMachineWS.run(self, input_lines, input_offset)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/statemachine.py", line 246, in run
  result = state.eof(context)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 2722, in eof
  self.blank(None, context, None)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 2713, in blank
  paragraph, literalnext = self.paragraph(
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 418, in paragraph
  textnodes, messages = self.inline_text(text, lineno)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 427, in inline_text
  nodes, messages = self.inliner.parse(text, lineno,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 649, in parse
  before, inlines, remaining, sysmessages = method(self, match,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 792, in interpreted_or_phrase_ref
  nodelist, messages = self.interpreted(rawsource, escaped, role,
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/docutils/parsers/rst/states.py", line 889, in interpreted
  nodes, messages2 = role_fn(role, rawsource, text, lineno, self)
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/ext/extlinks.py", line 108, in role
  title = caption % part
TypeError: not all arguments converted during string formatting

Exception occurred:
File "/home/docs/checkouts/readthedocs.org/user_builds/xhtml2pdf/envs/latest/lib/python3.9/site-packages/sphinx/ext/extlinks.py", line 108, in role
  title = caption % part
TypeError: not all arguments converted during string formatting
The full traceback has been saved in /tmp/sphinx-err-c4ua3qc8.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at <https://github.com/sphinx-doc/sphinx/issues>. Thanks!

System Information

OS version: ubuntu-20.04
Python version: 3.9
XHTML2PDF version: 0.2.8 and up

https://readthedocs.org/projects/xhtml2pdf/builds/18516001/ used Sphinx 5.3.0 and says in is logs:

WARNING: extlinks: Sphinx-6.0 will require a caption string to contain exactly one '%s' and all other '%' need to be escaped as '%%'.
WARNING: extlinks: Sphinx-6.0 will require a caption string to contain exactly one '%s' and all other '%' need to be escaped as '%%'.

The offending change is https://github.com/sphinx-doc/sphinx/commit/93cf1a57d916a1ff96c8e8a0356d0256e40489ac The meaning of the corresponding tuple element has been changed in https://github.com/sphinx-doc/sphinx/commit/fb39974486ab09320f0cf45f3c0ba0175f04d7d6 from "prefix" to "caption".


[BUG] Backward compatibility tests failing for security plugin

What is the bug?
Backward compatibility tests are failing for security plugin on the main branch which impacts the release quality and prevents us from catching any regressions / bugs that might creep.
How can one reproduce the bug?
Steps to reproduce the behavior:
Attaching recent PRs -

https://github.com/opensearch-project/security/pull/2802
https://github.com/opensearch-project/security/pull/2937

What is the expected behavior?
Backward Compatibility tests should be passing in GitHub actions.
What is your host/environment?
N/A
Do you have any screenshots?
If applicable, add screenshots to help explain your problem.
Do you have any additional context?
Tests seem to be failing due to a dependency conflict
* What went wrong:
Execution failed for task ':compileJava'.
> Could not resolve all dependencies for configuration ':compileClasspath'.
   > Conflict(s) found for the following module(s):
       - org.apache.httpcomponents:httpclient between versions 4.5.14 and 4.5.13
     Run with:
         --scan or
         :dependencyInsight --configuration compileClasspath --dependency org.apache.httpcomponents:httpclient
     to get more insight on how to solve the conflict.

Raised PR for the fix - https://github.com/opensearch-project/security/pull/2951

@parasjain1 I just opened a separate PR against the 2.x branch. I think the issue is that 2.x is explicitly referring to 4.5.13 and should instead take the version of httpclient from core's buildSrc/version.properties

@parasjain1 I just noticed that the head of 2.x had other compilation issues due to a backport of a refactor in core
I have raised a PR to both address the core refactor and the bwc issue: https://github.com/opensearch-project/security/pull/2953

This is now resolved. Closing this issue.

Thanks Craig.


Baseline - Refactor Azure check regions #380

Closes #380

krishna@turbotindias-MacBook-Pro azure_check_regions % terraform apply --var-file=demo.tfvars
var.turbot_profile
  Enter profile matching your turbot cli credentials.

  Enter a value: punisher

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # turbot_policy_setting.azure_approved_regions will be created
  + resource "turbot_policy_setting" "azure_approved_regions" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure#/policy/types/approvedRegionsDefault"
      + value                        = <<~EOT
            - "eastus"
            - "eastus2"

        EOT
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-aks-managed-cluster"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-aks#/policy/types/managedClusterApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-apimanagement-service"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-apimanagement#/policy/types/apiManagementServiceApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-application-gateway"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-applicationgateway#/policy/types/applicationGatewayApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-application-insights-insight"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-applicationinsights#/policy/types/applicationInsightApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-appservice-function-app"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-appservice#/policy/types/functionAppApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-appservice-plan"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-appservice#/policy/types/appServicePlanApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-compute-availability-set"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-compute#/policy/types/availabilitySetApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-compute-disk"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-compute#/policy/types/diskApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-compute-disk-encryption-set"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-compute#/policy/types/diskEncryptionSetApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-compute-image"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-compute#/policy/types/imageApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-compute-snapshot"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-compute#/policy/types/snapshotApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-compute-virtual-machine"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-compute#/policy/types/virtualMachineApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-cosmosdb-database"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-cosmosdb#/policy/types/databaseAccountApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-databricks-workspace"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-databricks#/policy/types/databricksWorkspaceApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-datafactory-factory"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-datafactory#/policy/types/factoryApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-firewall"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-firewall#/policy/types/firewallApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-keyvault-key"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-keyvault#/policy/types/keyApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-keyvault-secret"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-keyvault#/policy/types/secretApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-keyvault-vault"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-keyvault#/policy/types/vaultApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-loadbalancer"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-loadbalancer#/policy/types/loadBalancerApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-loganalytics-workspace"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-loganalytics#/policy/types/logAnalyticsWorkspaceApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-mysql-server"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-mysql#/policy/types/serverApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-network-application-security-group"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-network#/policy/types/applicationSecurityGroupApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-network-network-interface"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-network#/policy/types/networkInterfaceApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-network-network-security-groups"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-network#/policy/types/networkSecurityGroupApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-network-public-ip-address"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-network#/policy/types/publicIpAddressApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-network-route-table"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-network#/policy/types/routeTableApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-network-virtual-network"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-network#/policy/types/virtualNetworkApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-networkwatcher"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-networkwatcher#/policy/types/networkWatcherApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-postgresql-server"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-postgresql#/policy/types/serverApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-recoveryservice-vault"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-recoveryservice#/policy/types/vaultApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-searchmanagement-search-service"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-searchmanagement#/policy/types/searchServiceApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-sql-database"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-sql#/policy/types/databaseApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-sql-elastic-pool"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-sql#/policy/types/elasticPoolApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-sql-server"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-sql#/policy/types/serverApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-storage-storage-account"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-storage#/policy/types/storageAccountApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_policy_setting.set_resource_approved_regions_policies["azure-synapseanalytics-workspace"] will be created
  + resource "turbot_policy_setting" "set_resource_approved_regions_policies" {
      + id                           = (known after apply)
      + precedence                   = "REQUIRED"
      + resource                     = (known after apply)
      + resource_akas                = (known after apply)
      + type                         = "tmod:@turbot/azure-synapseanalytics#/policy/types/synapseWorkspaceApproved"
      + value                        = "Check: Approved"
      + value_key_fingerprint        = (known after apply)
      + value_source                 = (known after apply)
      + value_source_key_fingerprint = (known after apply)
      + value_source_used            = (known after apply)
    }

  # turbot_smart_folder.azure_regions will be created
  + resource "turbot_smart_folder" "azure_regions" {
      + description = "Defines sets of policies for the Azure check regions baseline"
      + id          = (known after apply)
      + parent      = "tmod:@turbot/turbot#/"
      + parent_akas = (known after apply)
      + title       = "Azure Check Regions Policies"
    }

Plan: 39 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

   Resources: 39 added, 0 changed, 0 destroyed.

Outputs:

resource_approved_regions = {
  "azure-aks-managed-cluster" = "Check: Approved"
  "azure-apimanagement-service" = "Check: Approved"
  "azure-application-gateway" = "Check: Approved"
  "azure-application-insights-insight" = "Check: Approved"
  "azure-appservice-function-app" = "Check: Approved"
  "azure-appservice-plan" = "Check: Approved"
  "azure-compute-availability-set" = "Check: Approved"
  "azure-compute-disk" = "Check: Approved"
  "azure-compute-disk-encryption-set" = "Check: Approved"
  "azure-compute-image" = "Check: Approved"
  "azure-compute-snapshot" = "Check: Approved"
  "azure-compute-virtual-machine" = "Check: Approved"
  "azure-cosmosdb-database" = "Check: Approved"
  "azure-databricks-workspace" = "Check: Approved"
  "azure-datafactory-factory" = "Check: Approved"
  "azure-firewall" = "Check: Approved"
  "azure-keyvault-key" = "Check: Approved"
  "azure-keyvault-secret" = "Check: Approved"
  "azure-keyvault-vault" = "Check: Approved"
  "azure-loadbalancer" = "Check: Approved"
  "azure-loganalytics-workspace" = "Check: Approved"
  "azure-mysql-server" = "Check: Approved"
  "azure-network-application-security-group" = "Check: Approved"
  "azure-network-network-interface" = "Check: Approved"
  "azure-network-network-security-groups" = "Check: Approved"
  "azure-network-public-ip-address" = "Check: Approved"
  "azure-network-route-table" = "Check: Approved"
  "azure-network-virtual-network" = "Check: Approved"
  "azure-networkwatcher" = "Check: Approved"
  "azure-postgresql-server" = "Check: Approved"
  "azure-recoveryservice-vault" = "Check: Approved"
  "azure-searchmanagement-search-service" = "Check: Approved"
  "azure-sql-database" = "Check: Approved"
  "azure-sql-elastic-pool" = "Check: Approved"
  "azure-sql-server" = "Check: Approved"
  "azure-storage-storage-account" = "Check: Approved"
  "azure-synapseanalytics-workspace" = "Check: Approved"
}
resource_approved_regions_region_list = [
  "eastus",
  "eastus2",
]
smart_folder_description = Defines sets of policies for the Azure check regions baseline
smart_folder_name = Azure Check Regions Policies
smart_folder_parent_resource = tmod:@turbot/turbot#/
turbot_profile = punisher


[Feature Request] Support for email reports

Recurring email reports with all the stats.
Like the one plausible has: https://plausible.io/docs/email-reports

I think this is an interesting idea, but how would umami handle the email server. I doubt @mikecao will want to setup a email server under the umami.is domain (would be cool though).
There could still be an option to use a custom email server, and use it to automatically send yourself an email.

I feel adding an option to use this with a custom email server maintained by the user will be the best way to go. May be to add some environment variables to store the username and password of the email server, and another variable to turn it on or off.
I don't think it will be logical to set up a central email server.

Proof of concept using GitHub actions: https://github.com/boly38/action-umami-report.
Discussed in #1256.

Duplicate of #920.


Find a way to capture and store tracks - RosBag

We need a way to store interesting tracks that are captured. There is currently no persistence logic or functionality in the application. RosBag appears to fit the purpose. https://docs.ros.org/en/foxy/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.html
This option looks good as well but I don't think its free: https://community.rti.com/static/documentation/connext-dds/6.0.0/doc/manuals/recording_service/introduction.html

I was just playing with rosbag. it's a bit of trouble to install.
Shall I try to include it in the simpletracker container ?


Tag suggestions

tag suggestions don't seem to be working on the sidebar when typing in for page info

Unable to duplicate

On the edit page (page details) page, it's no longer showing the suggested tags

Should be fixed with latest pull request. Can view on Builtwith.. Needs styling


0.59.1 breaks module

The newest update of PoGo (0.59.1) completely breaks the module. It no longer pops up when you encounter a wild Pokemon and doesn't say whether or not the catch is a success or not.

@iTzFeRReTTi As I stopped playing pokemon go I stopped the development of this module. The most up to date version is https://github.com/alucas/Snorlax . Saying this Snorlax also does not work with 0.59.1 (my guess is that the protos need to be updated. @alucas is already working on this https://github.com/alucas/POGOProtos/tree/v2.8.0) https://github.com/alucas/Snorlax/issues/54

Okay, thank you very much! :)


anchor integration

[Nik here] Purpose to enable Seeds light wallet to sign transactions on the DHO or any website that uses the Anchor protocol
Prior, we were able to sign QR codes in the ESR format
But Anchor is an open source protocol to implement a secure channel between a website an an app.
https://github.com/greymass/anchor
Basically, this pull request enables correct handling of identity request with callbacks, and in other PRs later we can implement long-living sessions and etc

Thank you for the video, but this PR has no issue attached to it and no explanations of whats the purpose of the PR.

@7flash I tested this on the hypha website and it doesn't work for login.
I don't know why it doesn't work
The anchor login seems to be ok (get a success) but there's a backend protocol where it sets up a secure channel between the phone and the website and that doesn't seem to work
I would be OK with setting up a whole different website integration -
Example - we could just sign a policy transaction that connects a session ID with an account, proving login
Then sign all transactions with QR Code / link when on mobile
That would be easy to do for ut
Or we implement the anchor protocol but if we do that then we also need to handle the secure channel and requests coming from the website through anchor to our wallet.
I don't see any code that would do that in this PR - and I also don't know how to do that. Socket connection? IDK.

@7flash I tested this on the hypha website and it doesn't work for login.
I don't know why it doesn't work
The anchor login seems to be ok (get a success) but there's a backend protocol where it sets up a secure channel between the phone and the website and that doesn't seem to work
I would be OK with setting up a whole different website integration -
Example - we could just sign a policy transaction that connects a session ID with an account, proving login
Then sign all transactions with QR Code / link when on mobile
That would be easy to do for ut
Or we implement the anchor protocol but if we do that then we also need to handle the secure channel and requests coming from the website through anchor to our wallet.
I don't see any code that would do that in this PR - and I also don't know how to do that. Socket connection? IDK.

Yes, websocket connection via anchor-link protocol, I think it's already implemented on website, and I can implement long sessions on the app too

Tried with DHO - working too, can you please merge @n13

@gguij004 can you merge please

@gguij004 can you merge please

I think you mean Gery @gguijarro-c-chwy
Needs to approve ;)

I see merge conflicts and lint issues.
This so also targeting master and i think we should target the current release build 1.4.4 i think?
We can take care adding this feature to the master v2 build once it passes by design and product manager that creates a story to track the work and acceptance criteria.
@JGDoh  @7flash  @7flash

IDK it makes sense to target 2.0, I want to accelerate this
Anchor login is a useful feature we definitely want it.
@7flash can you fix the lint and merge issues?
Acceptance criteris is a good point - I guess it needs to be able to log into the DHO and sign transactions there.
This will reduce all our risks as we can remove our private keys from the anchor app...

On Mar 29, 2021, at 22:11, Gerardo Guijarro @.***> wrote:
I see merge conflicts and lint issues.
This so also targeting master and i think we should target the current release build 1.4.4 i think?
We can take care adding this feature to the master v2 build once it passes by design and product manager that creates a story to track the work and acceptance criteria.
@JGDoh https://github.com/JGDoh @7flash https://github.com/7flash @7flash https://github.com/7flash
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/JoinSEEDS/seeds_light_wallet/pull/517#issuecomment-809408605, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAP7BHJFSUVWTGQBDCGUD3TGCC7TANCNFSM4X24WBUQ.

conflicts.
Please reopen when fixed

I see merge conflicts and lint issues.
This so also targeting master and i think we should target the current release build 1.4.4 i think?
We can take care adding this feature to the master v2 build once it passes by design and product manager that creates a story to track the work and acceptance criteria.
@JGDoh @7flash @7flash

We really need this - important to integrate with many of our projects, seeds swap etc.
I see no harm merging it and testing it.
Although lint needs to pass obviously @7flash

@gguijarro-c-chwy this one targets v2 / master, this is correct

Ticket is here https://github.com/JoinSEEDS/seeds_light_wallet/issues/675
@gguijarro-c-chwy

Conflicts

using anchor_v2 PR instead


add label selector on analyzer cmd

add label selector like kubectl get pod -l app=test
cmd document will be same as kubectl description
-L, --label-columns=[]:
	Accepts a comma separated list of labels that are going to be presented as columns. Names are case-sensitive.
	You can also use multiple flag options like -L label1 -L label2...

Can I get more insight on this issue, steps to solve it..
Love to contribute to the project

@SambariManikanta09 would you do this?


added 'csrf-field' optional attribute.

@eroluysal would you mind providing some context as to why you need this change?

@dgreif I guess "authenticity_token" is a specific for Rails framework. for example; I want to use auto-complete-element with Symfony framework and Symfony framework uses "_token" parameter name.


Signature verification broken

Hiya,
I think this implementation's signature verification is different from both
https://github.com/jedisct1/go-minisign and https://jedisct1.github.io/minisign/
The attached file has a valid signature (also attached) as produced by https://github.com/jedisct1/minisign/releases/download/0.9/minisign-win32.zip :
D:\sign>"C:\Users\RobertEmery\Documents\minisign.exe" -V -m robtest.ps1 -P "RWQ3ly9IPenQ6Wgt/VYzMCdGdVJPPoNSyT+rtTddvqBgANTYdboko0zu"
Signature and comment signature verified
Trusted comment: timestamp:1617721023   file:robtest.ps1

Yet when run through this reimplementation it shows as invalid:
D:\sign>C:\Users\RobertEmery\Downloads\minisign-main\minisign-main\minisign.exe -V -m robtest.ps1 -P "RWQ3ly9IPenQ6Wgt/VYzMCdGdVJPPoNSyT+rtTddvqBgANTYdboko0zu"
Error: signature verification failed

ExampleValidSignature.zip

@infraweavers Thanks for reporting this.
This issue is caused by carriage returns (\r) at the end of the untrusted and trusted comment. The current implementation does not trim any trailing \r characters when parsing the signature. This causes the comment signature
verification to fail since it tries to verify a comment (with a \r') that was signed without \r`.
This problem will occur in particularly on OS that end newlines with \r\n (i.e. windows).
PR #8 will fix this.

Good catch, and thanks for the quick fix!


Enhanced errors notifications

Motivation and context
Resolved #7365
Examples:

instead of

instead of

instead of

instead of

instead of

How has this been tested?

Checklist

[x] I submit my changes into the develop branch
[x] I have created a changelog fragment
[ ] I have updated the documentation accordingly
[ ] I have added tests to cover my changes
[x] I have linked related issues (see GitHub docs)
[ ] I have increased versions of npm packages if it is necessary
(cvat-canvas,
cvat-core,
cvat-data and
cvat-ui)

License

[x] I submit my code changes under the same MIT License that covers the project.
Feel free to contact the maintainers if that's a concern.

@bsekachev
If rest_framework.exceptions.ValidationError contains just a string:
raise ValidationError("just a string rest_framework.exceptions.ValidationError")
we get a 0 key in message, which is not good:


Kindly Requesting Access to Your Code for Learning Purposes

Hi~~
I hope this message finds you well. I came across your work while exploring the realm of sketch segment, and I was deeply impressed by your contributions and expertise. Your insights and solutions have sparked my curiosity, and I would love to delve deeper into how you've approached the challenges faced in your work. I noticed that the source code for your project isn't currently available on GitHub or any other public platform. I understand that sharing code can involve various considerations, and I fully respect your decision to keep it private if necessary. However, I would be extremely grateful if you could consider allowing me access to it for learning purposes.
Thank you for taking the time to read my request.

Hello! Thank you for your appreciation of our work, we have now released the code, come and give it a try!


Detect “Use-after-free” with address sanitizer

When built with conf.enable_debug and conf.defines << %w(MRB_GC_STRESS MRB_HEAP_PAGE_SIZE=169), the test in mruby-enumerator reports “Use-after-free”.
I went back through the commit log and found that the problem started with commit 5bd63d623. However, I didn't see any problem with the code written.
I don't know where the tail of the cause is, but I will try to find out more.
% cat test_config.rb
MRuby::Build.new do
  toolchain
  enable_test
  enable_debug
  defines << %w(MRB_HEAP_PAGE_SIZE=169)
  defines << %w(MRB_GC_STRESS)
  enable_sanitizer "address,undefined"
  gem core: "mruby-enumerator"
  # gembox "full-core"
end

% rake -mv MRUBY_CONFIG=test_config.rb test

...SNIP...

Enumerator.class : .
Enumerator.superclass : .
Enumerator.new : .

The sort_cmp() function calls mrb_cmp() or mrb_yield_argv(), but then it needs to call mrb_ary_modify(), RARRAY_LEN() or RARAY_PTR().
I don't know if this is the same cause of the problem I commented earlier, but the problem also occurs with those built with build_config/default.rb.

segmentation fault
% bin/mruby -e 'a = [1, 2, 3]; a.sort! { a[20] = 0 }'
zsh: segmentation fault (core dumped)  bin/mruby -e 'a = [1, 2, 3]; a.sort! { a[20] = 0 }'

Use-after-free
% valgrind -- bin/mruby -e 'a = [1, 2, 3, 4]; a.sort! { a.clear; GC.start; 0 }'
==12977== Memcheck, a memory error detector
==12977== Copyright (C) 2002-2024, and GNU GPL'd, by Julian Seward et al.
==12977== Using Valgrind-3.23.0 and LibVEX; rerun with -h for copyright info
==12977== Command: bin/mruby -e a\ =\ [1,\ 2,\ 3,\ 4];\ a.sort!\ {\ a.clear;\ GC.start;\ 0\ }
==12977==
==12977== Invalid read of size 8
==12977==    at 0x264DBD: sort_cmp (array.c:0)
==12977==    by 0x264DBD: heapify (array.c:1436)
==12977==    by 0x264A55: mrb_ary_sort_bang (array.c:1471)
==12977==    by 0x2959A6: mrb_vm_exec (vm.c:0)
==12977==    by 0x2B8B83: mrb_load_exec (parse.y:6919)
==12977==    by 0x25F4BD: main (mruby.c:358)
==12977==  Address 0x54dabd8 is 8 bytes inside a block of size 32 free'd
==12977==    at 0x484F2EC: free (vg_replace_malloc.c:993)
==12977==    by 0x282188: mrb_default_allocf (allocf.c:22)
==12977==    by 0x263461: mrb_ary_clear (array.c:1176)
==12977==    by 0x263461: mrb_ary_clear_m (array.c:1192)
==12977==    by 0x2959A6: mrb_vm_exec (vm.c:0)
==12977==    by 0x28DCED: mrb_run (vm.c:3126)
==12977==    by 0x28DCED: mrb_funcall_with_block (vm.c:749)
==12977==    by 0x28D684: mrb_funcall_argv (vm.c:760)
==12977==    by 0x28D684: mrb_funcall_id (vm.c:560)
==12977==    by 0x264DDD: sort_cmp (array.c:1421)
==12977==    by 0x264DDD: heapify (array.c:1436)
==12977==    by 0x264A55: mrb_ary_sort_bang (array.c:1471)
==12977==    by 0x2959A6: mrb_vm_exec (vm.c:0)
==12977==    by 0x2B8B83: mrb_load_exec (parse.y:6919)
==12977==    by 0x25F4BD: main (mruby.c:358)
==12977==  Block was alloc'd at
==12977==    at 0x4852321: realloc (vg_replace_malloc.c:1806)
==12977==    by 0x26E688: mrb_realloc_simple (gc.c:197)
==12977==    by 0x26E688: mrb_realloc (gc.c:211)
==12977==    by 0x26E688: mrb_malloc (gc.c:227)
==12977==    by 0x25F7EE: ary_new_capa (array.c:54)
==12977==    by 0x25F871: ary_new_from_values (array.c:99)
==12977==    by 0x25F871: mrb_ary_new_from_values (array.c:110)
==12977==    by 0x29C574: mrb_vm_exec (vm.c:2716)
==12977==    by 0x2B8B83: mrb_load_exec (parse.y:6919)
==12977==    by 0x25F4BD: main (mruby.c:358)
==12977==

...SNIP...

==12977==
==12977== HEAP SUMMARY:
==12977==     in use at exit: 0 bytes in 0 blocks
==12977==   total heap usage: 759 allocs, 759 frees, 203,934 bytes allocated
==12977==
==12977== All heap blocks were freed -- no leaks are possible
==12977==
==12977== For lists of detected and suppressed errors, rerun with: -s
==12977== ERROR SUMMARY: 22 errors from 12 contexts (suppressed: 0 from 0)

752ebe6 cheks if the array is modified in the block. I am not sure it resolves the original issue.

I think the problem with giving blocking arguments in the second comment has been resolved.
However, mrb_cmp() calls the obj.cmp method internally, so it looks like the same treatment is needed.
% valgrind -- bin/mruby -e 'e = Object.new; $ary = [e] * 4; class << e; def <=>(other) $ary.clear; 0; end; end; $ary.sort!'

...SNIP...

==22005== Invalid read of size 8
==22005==    at 0x244332: sort_cmp (array.c:1591)
==22005==    by 0x24422D: heapify (array.c:1613)
==22005==    by 0x243AC9: mrb_ary_sort_bang (array.c:1648)
==22005==    by 0x28C04D: mrb_vm_exec (vm.c:1934)
==22005==    by 0x28853E: mrb_vm_run (vm.c:1349)
==22005==    by 0x28731F: mrb_top_run (vm.c:3081)
==22005==    by 0x2A825C: mrb_load_exec (parse.y:6919)
==22005==    by 0x2A8794: mrb_load_nstring_cxt (parse.y:6991)
==22005==    by 0x2A8830: mrb_load_string_cxt (parse.y:7003)
==22005==    by 0x23BC2B: main (mruby.c:358)
==22005==  Address 0x54ce578 is 8 bytes inside a block of size 32 free'd
==22005==    at 0x484F2EC: free (vg_replace_malloc.c:993)
==22005==    by 0x2740FB: mrb_default_allocf (allocf.c:22)
==22005==    by 0x252CFB: mrb_free (gc.c:259)
==22005==    by 0x23F7CD: mrb_ary_clear (array.c:1263)
==22005==    by 0x2410DC: mrb_ary_clear_m (array.c:1279)

...SNIP...

For the first problem, the cause was clearly different.
After commit 22518b5b7, git cherry-pick 5bd63d623 did not reproduce the problem, but after commit 7edbff8c8 (#6253), it did.
% git checkout 22518b5b7 && git cherry-pick 5bd63d623 && ...
## => no problems

% git checkout 7edbff8c8 && git cherry-pick 5bd63d623 && ...
## => reproduced problems

Currently under investigation.

Ah, I understand now at last.
I need to call heap_p() before calling is_dead().
https://github.com/mruby/mruby/blob/58c70834d967b82456dad1b150dc71ceb231304f/src/gc.c#L791
I will check some more and send a pull-request.


Initial importing of SW for Desy TB

First pull request integrating code to convert raw Desy test beam data into ROOT files and perform some analysis.


[Feature Request] Reorder Toggles in the Admin Interface

I'd like to be able to reorder toggles in the admin interface.

Added in e4fceca87891e43b34d0c633db4b28c30b66c9b5

Thank you. Only had a chance to test it now. A lot more usable now that I don't have to delete and recreate toggles to reorder, or dig throug the config!


[VSCode] Update + insert Razor extension

Tracking issue for updating and inserting the Razor VS Code extension.

Done! v1.25.4 has been released.


libjaylink: 0.2.0 -> 0.3.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/libjaylink/versions.
meta.description for libjaylink is: "libjaylink is a shared library written in C to access SEGGER J-Link and compatible devices."
meta.homepage for libjaylink is: "https://gitlab.zapb.de/libjaylink/libjaylink"
meta.changelog for libjaylink is: ""
Updates performed

Version update

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.3.0 with grep in /nix/store/3dvb7wzdhdg9w2h2v8jagxd3zhz133vd-libjaylink-0.3.0
found 0.3.0 in filename of file in /nix/store/3dvb7wzdhdg9w2h2v8jagxd3zhz133vd-libjaylink-0.3.0

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
libjaylink

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/3dvb7wzdhdg9w2h2v8jagxd3zhz133vd-libjaylink-0.3.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A libjaylink https://github.com/r-ryantm/nixpkgs/archive/288c738756174bcbb2f2ea35d8b57456223d9d75.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/3dvb7wzdhdg9w2h2v8jagxd3zhz133vd-libjaylink-0.3.0
ls -la /nix/store/3dvb7wzdhdg9w2h2v8jagxd3zhz133vd-libjaylink-0.3.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

libjaylink

Maintainer pings
cc @felixsinger for testing.

@felixsinger : thanks for testing!


sh: Can't open /home/chronos/user/Downloads/crouton

sudo sh -e ~/Downloads/crouton -r saucy -t unity -e

I keep putting this in to download linux. I'm new to this and just trying to download a game on my chromebook os. I've been typing thing in numerous times correctly and searching for help re-downloading but nothing is working and I don't know what to do.

@milkythegoldfish,
The Ubuntu 'saucy' release has reached end-of-life and should be avoided.
You can see which releases are current, unsupported and to be avoided below:
crouton -r list
Recognized debian releases:
    potato! woody! sarge! etch! lenny! squeeze! wheezy jessie stretch buster sid
Recognized kali releases:
    moto! kali! sana! kali-rolling
Recognized ubuntu releases:
    warty! hoary! breezy! dapper! edgy! feisty! gutsy! hardy! intrepid! jaunty!
    karmic! lucid! maverick! natty! oneiric! precise! quantal! raring! saucy!
    trusty utopic! vivid! wily! xenial yakkety! zesty* artful* bionic*
Releases marked with ! are upstream end-of-life, and should be avoided.
Releases marked with * are unsupported, but may work with some effort.

The Ubuntu 'xenial' release is the current default and has Long Term Support (LTS) so it will be installed if you don't specify a release with the '-r' option. You might want to use the following to install an Ubuntu 'xenial' release, it will also name the chroot 'xenial' by default too:

sudo sh ~/Downloads/crouton -t unity

You can add encryption after it's installed and working correctly using:

sudo sh ~/Downloads/crouton -n xenial -e -u

Hope this helps,
-DennisLfromGA


Accessing clipboard when opening suggestions list

Users are prompt with clipboard access alert while they type:

Expected: only show this alert when copy or pasting.
Actual: alert is shown when typing
To repro, go to :
https://dataexplorer.azure.com/clusters/help/databases/Samples?query=H4sIAAAAAAAAA3POL8tMMbSMT8tJLOHlqlEoz0gtSlUISi3ILypxSSxJVbADACBs9toiAAAA
Login, if prompted, and TYPE (don't copy paste, type) ago(2 after | where ReportDate >.
After typing 2, the clipboard access alert is shown, or if using Chrome incognito, a clipboard icon is shown:

This might be a duplicate of https://github.com/microsoft/monaco-editor/issues/2298 but in my use case the problem is the access itself to the clipboard and not any failures happen afterwards.
investigation
The error is coming from the suggestModel.ts in the trigger method when existingItems is not empty which happens when user starts a new word while IntelliSense shows.
In code:
When user types something _onNewContext is triggered which runs this code:
if (ctx.leadingWord.word.length !== 0 && ctx.leadingWord.startColumn > this._context.leadingWord.startColumn) {
  // started a new word while IntelliSense shows -> retrigger

  // Select those providers have not contributed to this completion model and re-trigger completions for
  // them. Also adopt the existing items and merge them into the new completion model
  const inactiveProvider = new Set(CompletionProviderRegistry.all(this._editor.getModel()!));
  this._completionModel.allProvider.forEach(provider => inactiveProvider.delete(provider));
  const items = this._completionModel.adopt(new Set());
  this.trigger({ auto: this._context.auto, shy: false }, true, inactiveProvider, items);
  return;
}

if the "if statement" passes, then it calls method trigger with a non-empty list items. method trigger runs this code:
let clipboardText: string | undefined;
if (completions.needsClipboard || isNonEmptyArray(existingItems)) {
  clipboardText = await this._clipboardService.readText();
}

and since existingItems is not empty it will read from the clipboard.
questions

Why intellisence logic reads from the clipboard?
Is there a way to work around it?

monaco-editor version: 0.21.2
Browser: tested on chrome and edge, but probably will repro on other browsers.
OS: all
Playground code that reproduces the issue: see above

Very likely already fixed via https://github.com/microsoft/vscode/commit/96d61842bae1e5dd11f9ff6139fad9e3e5141401

Very likely already fixed via https://github.com/microsoft/vscode/commit/96d61842bae1e5dd11f9ff6139fad9e3e5141401

Closing as this is fixed in master.

Why intellisence logic reads from the clipboard?

Intellisense supports snippet insertions and snippets have the $CLIPBOARD variable. To support that variable we need to read the clipboard. We usually analyse completions for the usage of that variable and only read the clipboard when it is needed. However, when merging existing suggestions with new suggestions (which happens when a providers return an incomplete suggest result) we have "forgotten" what the original suggestions wanted and in that case we read the clipboard again. The change which is on master already does carry this knowledge around so that we don't read the clipboard unless needed.

Is there a way to work around it?

Not really, unless you can easily tweak your provider to not return incomplete completion lists.

Closing as this is fixed in master.

Why intellisence logic reads from the clipboard?

Intellisense supports snippet insertions and snippets have the $CLIPBOARD variable. To support that variable we need to read the clipboard. We usually analyse completions for the usage of that variable and only read the clipboard when it is needed. However, when merging existing suggestions with new suggestions (which happens when a providers return an incomplete suggest result) we have "forgotten" what the original suggestions wanted and in that case we read the clipboard again. The change which is on master already does carry this knowledge around so that we don't read the clipboard unless needed.

Is there a way to work around it?

Not really, unless you can easily tweak your provider to not return incomplete completion lists.


How debug unit and e2e tests?

I need to debug karma end e2e tests.
How it is possible?

I simply add task to package.json:
"watch:testd": "karma start --auto-watch --no-single-run --browsers=Chrome"
and commented Istanbul loader from webpack.test.config.js
Run watch:testd task and it opens a new chrome window with karma, here press debug button and another page will open. Open Developer Tools on that page, put breakpoint where you need it and press F5

Awesome :) - Thank you for advise.
It may be reasonable to include this task to the source code.
What do you think?
Do you know how debug e2e tests?

How can we debug e2e tests? It seems that browser.debugger() is not working and when I use browser.pause() I can use only c command to continue, no support for listing current lines of code? I know that certain things are not supported anymore with Angular2 apps (like model binding), but was unable to find is the same case for debugger?


Cant use Transition Group render prop api. Prop-types incorrect

I tried providing a function as children to Grow:
                <Grow in={showSaveUi}>
                  {(transitionState) => {
                    return (
                      <div>
                        div content...
                      </div>
                    );
                  }}
                </Grow>

but then I get:
Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

I believe its because of this line: https://github.com/mui-org/material-ui/blob/bb0891882fe62a092116aa96e738dce91b703cda/packages/material-ui/src/Grow/Grow.js#L123
The prop types say that you can provide a function as children: https://github.com/mui-org/material-ui/blob/next/packages/material-ui/src/Grow/Grow.js#L142
Should the render code be changed so that you can access the transition state by providing a function children prop or should the prop-types be changed?
If we cant make it possible to send in a function as children is there some other way to access the transition state? I wonder if just providing the transitionState value as a prop in the cloneElement execution would work? 🤔

[x] This is not a v0.x issue.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Tech
Version

Material-UI
v3.9.0

Here's a codesandbox: https://codesandbox.io/s/q315pvjw1j

The implementation and propType documentation indicates that only elements are allowed. I think this patch should be applied:
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
+ children: PropTypes.element,

With only that change you cant access the transition state 😢

With only that change you cant access the transition state

You can't access that right now either, right? What do you need it for?

To differentiate between when the items is still visible but exiting vs exited

To differentiate between when the items is still visible but exiting vs exited

Yes this would be possible with this change. My question was what problem are you trying to solve? By exposing this we would create a coupling with this specific implementation which would make it very hard to switch to a pure CSS solution for example.

@eps1lon I agree, I think that we should:

fix the prop-types
do not allow the usage of the animation state in the render method
@emattias Did you try to use the lifecycle callbacks?

By the lifecycle callbacks, do you mean onExited etc? If so, I know about them but they are much less convenient than just wrapping my jacket in a function. I think it's a bummer that these otherwise great transition helpers keep me from this render prop API.
If you can't allow for the render prop API couldn't you just send down the transitionState prop in the cloneelement execution?

If I cant get acccess to transition groups transition state I will have to replicate its logic. For example the logic to determine the initial state: https://github.com/reactjs/react-transition-group/blob/master/src/Transition.js#L125-L142 and probably more stuff.
What is the reason for not just sending down the state variable as a transitionState prop here: https://github.com/mui-org/material-ui/blob/next/packages/material-ui/src/Fade/Fade.js#L63

I originally thought this would create a to tight coupling:

By exposing this we would create a coupling with this specific implementation which would make it very hard to switch to a pure CSS solution for example.

But we already expose all the on$State props so this coupling is already there. The issue is that we can't "just" add the state as a prop to the element since that could be considered a breaking change if users spread the received props.
Although it takes some implementation effort you can listen to the on$State props and set the state accordingly. Has the benefit that you can decide to what states you want to listen and maybe bail out early.

Isnt that a bit speculative? The current implementation uses react-transition-group. My thinking is that we should take advantage of what it gives now.
Then if we switch to not using react-transition-group we can adjust when we know the needs/possibilities of that implemntation. Thats how I reason about this :)

@eps1lon What do you think of the following action plan?

We mimic the react-transition-group API: https://github.com/reactjs/react-transition-group/blob/master/src/Transition.js#L363.
We update the prop-types to take a required element or function.


C# Google.Cloud.Spanner.Data Driver - Query 50K records - throw NPE

Version:
Google.Cloud.Spanner.Data -Version 2.0.0-beta05.
Google.Cloud.Spanner.V1 -Version 2.0.0-beta05
Simple select query "select * from My50KRecordsTable" throw NPE.
Object reference not set to an instance of an object.
at Google.Cloud.Spanner.V1.ReliableStreamReader.MergeChunk(Value currentValue, Value nextValue)
at Google.Cloud.Spanner.V1.ReliableStreamReader.d__40.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Google.Cloud.Spanner.Data.SpannerDataReader.<>c__DisplayClass57_0.<b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Google.Cloud.Spanner.Data.ExecuteHelper.d__21.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()    at Google.Api.Gax.TaskExtensions.WaitWithUnwrappedExceptions(Task task)    at Google.Cloud.Spanner.Data.SpannerDataReader.Read()    at NG.EntityFramework.Spanner.Storage.Read.DbDataReaderDecorator.Read()    at Microsoft.EntityFrameworkCore.Storage.RelationalDataReader.Read()    at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.BufferlessMoveNext(DbContext _, Boolean buffer)
at Microsoft.EntityFrameworkCore.Storage.Internal.NoopExecutionStrategy.Execute[TState,TResult](TState state, Func3 operation, Func3 verifySucceeded)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.MoveNext()    at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.<_TrackEntities>d__172.MoveNext()
at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext()

Eek, that's annoying/worrying/irksome.
I'm on vacation now until January, but hopefully Amanda will be able to look into it. Could you tell us what the structure of your table is, just in terms of the schema? That couls easily affect things.

Something random for testing:
UniqueId | STRING(MAX) | Yes
CreationDate | TIMESTAMP | Yes
IsRandom | BOOL | Yes
RandomNumber | INT64 | Yes
I've just made few more attempts with 60K and it worked so this is not stable in terms for reproducing it.

I'll take a look at this this week. Will aim for today else on Friday.

@alyaros I haven't been able to reproduce this.
I've created a table with the same schema that you provided. I filled that table using the following code:
private static async Task FillTable()
{
    string connectionString = "data source=projects/<project_id>/instances/<instance_id>/databases/<database_id>";

    using (SpannerConnection connection = new SpannerConnection(connectionString))
    {
        await connection.OpenAsync();

        using (SpannerTransaction transaction = await connection.BeginTransactionAsync())
        {
            transaction.CommitTimeout = 0;
            string insert = "INSERT INTO <table_id> (UniqueID, CreationDate, IsRandom, RandomNumber) VALUES (@UniqueID, @CreationDate, @IsRandom, @RandomNumber)";
            using (var command = connection.CreateDmlCommand(insert))
            {
                command.Transaction = transaction;
                Random random = new Random();
                DateTime now = DateTime.UtcNow;

                for(int i = 0; i <= 2_000; i++)
                {
                    command.Parameters.Add("UniqueID", SpannerDbType.String, Guid.NewGuid().ToString());
                    command.Parameters.Add("CreationDate", SpannerDbType.Timestamp, now.AddDays(random.Next(-10_000, 0)));
                    command.Parameters.Add("IsRandom", SpannerDbType.Bool, random.Next(2) == 0 ? false : true);
                    command.Parameters.Add("RandomNumber", SpannerDbType.Int64, random.Next(int.MinValue, int.MaxValue));
                    if (random.Next(1000) == 0)
                    {
                        switch(random.Next(4))
                        {
                            case 0:
                                command.Parameters["CreationDate"].Value = null;
                                break;
                            case 1:
                                command.Parameters["IsRandom"].Value = null;
                                break;
                            case 2:
                                command.Parameters["RandomNumber"].Value = null;
                                break;
                            default:
                                break;
                        }
                    }
                    await command.ExecuteNonQueryAsync();
                    command.Parameters.Clear();
                }
                await transaction.CommitAsync();
            }
        }
    }
}

I ran the above code several times, querying the data in between, until I got to 50k rows. As you can see I've added some null values here and there in case that was the source of the problem. Also I manually added a couple other rows, one of them with all null values.
Then I've been running the following code for a few hours without it failing:
private static async Task RunQuery()
{
    string connectionString = "data source=projects/<project_id>/instances/<instance_id>/databases/<database_id>";

    do
    {
        using (SpannerConnection connection = new SpannerConnection(connectionString))
        {
            await connection.OpenAsync();

            SpannerCommand selectCmd = connection.CreateSelectCommand("SELECT * FROM <table_id>");
            using (SpannerDataReader reader = await selectCmd.ExecuteReaderAsync())
            {
                while (reader.Read())
                {
                    var id = reader["UniqueID"];
                    var date = reader["CreationDate"];
                    var isRandom = reader["IsRandom"];
                    var number = reader["RandomNumber"];
                }
            }
        }

        Thread.Sleep(10_000);
    }
    while (true);
}

So a few asks for you to see if we can reproduce this and attempt a fix:

Can you confirm that your data is not essentially different than ours? Are your strings a similar length to ours etc?
Can you run the method RunQuery against your 50K row table and see if it fails? Just change the connection string and the name of the table.
I've seen from the stack trace that there's some custom EntityFramework wrapper (NG.EntityFramework.Spanner.Storage.Read.DbDataReaderDecorator) on top of our SpannerDataReader, so, especially if RunQuery works on your table but your original code still doesn't could you provide us with a stripped down version of your code (as similar to RunQuery as possible) that does fails on your 50K table?

Thanks!

Hey,
The data is the same, nothing special in my case.
Although EF is involved and maybe has some contribution to the case - i.e in some strange way it generates it - I think it is less relevant. You can think of it as just another caller\user of your code - as bad as it can be :)
Anyway, Unfortunately, the issue isn't reproducible in my code as well - originally, I ran it for several times and got the 50K NPE and afterwards (also now) it worked without a problem - So i can now only offer the error itself.
Maybe it's worth reviewing it again and\or write it in a more defensive way so when it will get thrown again somewhere you'll have more details.
BTW, Thanks a lot for the quick response :)

As soon as I'll get back from holidays I'll take a closer look at the code to see if I can find where and why the exception might be thrown and then do something about it. I'll update here with whatever I find.

I'm having a look at this code now at the same time that I'm looking at #2779.
Just to confirm, your table doesn't have any non-scalar types in (structs or lists)?
Could you tell us the rough size of the strings in the table that you did see the problem in?
(It looks like MergeChunks may have some slightly questionable code that we should fix, but that's mostly related to structs and lists, not scalars.)

That's odd - that's exactly the type of ID I've created in #2779.
Just to check, do you have multiple threads using the same reader anywhere? That could potentially explain both the issues you're seeing.

Just as a heads-up, I've now managed to reproduce #2779 against @alyaros's database, but not this issue yet. I'm still looking though.

I think that it's worth trying running those queries in a small stress mode - just write several related queries over this table and run them in the same process one after another for some time. Eventually you'll get NPE. (From my experience this happened quite quickly - after few minutes of run)

That's good to know - thanks!

I still haven't seen the NRE, but I've seen an InvalidOperationException due to the response not including as many values as expected (i.e. not a multiple of the number of fields). If that happened in the context of a merge, that could easily provoke the NRE. So my working assumption is that that's the underlying cause, and I'll try to work out what's going on there. (It may be to do with our exception recovery, where we resume from a certain point and skip a number of values.)


fix: Dark mode according to device's setting initially

Related Issue
Closes #1358

Description

I just made a change in darkMode state, that if it couldn't find the darkMode in local storage then, check if the device's theme mode is dark if yes then make darkMode true else false
Checklist

[x] My code adheres to the established style guidelines of the project.
[x] I have included comments in areas that may be difficult to understand.
[x] My changes have not introduced any new warnings.
[x] I have conducted a self-review of my code.

@vatsalsinghkv there are many unnecessary indentations changes every them back to get the PR merged

@vatsalsinghkv there are many unnecessary indentations changes every them back to get the PR merged

It gets formatted according the prettier config defined in the project.


some questions about data processing

Hello, I would like to ask how did this 45 come about? As far as I know from the paper, a path should consist of at most 2 relationships and 3 nodes. The length of Relation is 17, the length of node is 4, then the length of path should be 172+43=46

in modeling_qat ,line 180,

For obqa and csqa, we use 18 number of relation types and 3 number of node types. So, the length of the path is 45.


connectAnonymously removed, now PatchFilterTest uses Jenkins env variables

looks great, let's keep the PR open!


High Contrast error/warnings/info colors

Was looking at deprecated settings #143897 and noticed that our HC themes don't consistently show error/warning/info colors and maybe we should figure out which one we want to show.
HC Dark

HC Light

Other HC Themes

It looks like we've set the error and warning base foreground tokens to be null in hc themes:
https://github.com/microsoft/vscode/blob/30e1c0cfdaa3d1b3e7d4a0141bb8b0d3bcb51887/src/vs/platform/theme/common/colorRegistry.ts#L271-L280
Any idea why that would be? In any case, it looks like the notifications specifically aren't picking up the overrides, hence the info icon rendering #3794FF and the other two seeming to default to some base foreground color higher up the hierarchy. Probably something like editor-foreground or whatever.

Disregard—saw that we have specific tokens for notifications.

Updated editorWarningForeground and editorErrorForeground to use actual values instead of null for both HC themes. Here's how it looks for the notifications icon that inherit that change:

@misolori I'm not sure how to view a deprecated settings but I'll check this in and can tune those up as well if needed.

The colours of the error and warning icons look different to me on the high contrast dark theme:

Will take a look

Light high contrast theme LGTM. For both themes, the error icon for the deprecated settings uses the same colour as the error icon for the notification.
One can get a deprecated setting to show up by adding a deprecationMessage to an existing setting in the extension's package.json file (assuming that extension provides settings), or by finding a setting with that field already included, and then modifying that setting in the settings.json file. After navigating back to the Settings UI and searching for the setting, it should show up with the deprecation error message.


[secded] add iterative algorithm for secded Hsiao matrix

This removes the random shuffling to find an ideal Hsiao matrix solution by chance in favor of an iterative algorithm.
See #20013

Thanks @micprog for the patch - it is indeed nicer to make this behavior deterministic.
One thing we need to discuss internally though is whether we can accept the patch at the current time, since it changes all ECC polynomials in the system.
From a correctness perspective, the new ECC polynomials seem to work according to FPV:
|       prim_secded_22_16_fpv       |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|       prim_secded_28_22_fpv       |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|       prim_secded_39_32_fpv       |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|       prim_secded_64_57_fpv       |     N/A     |      N/A      |    N/A    |     N/A     |
|       prim_secded_72_64_fpv       |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|   prim_secded_hamming_22_16_fpv   |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|   prim_secded_hamming_39_32_fpv   |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|   prim_secded_hamming_72_64_fpv   |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|     prim_secded_inv_22_16_fpv     |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|     prim_secded_inv_28_22_fpv     |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|     prim_secded_inv_39_32_fpv     |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
|     prim_secded_inv_64_57_fpv     |     N/A     |      N/A      |    N/A    |     N/A     |
|     prim_secded_inv_72_64_fpv     |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
| prim_secded_inv_hamming_22_16_fpv |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
| prim_secded_inv_hamming_39_32_fpv |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |
| prim_secded_inv_hamming_72_64_fpv |  100.00 %   |   100.00 %    | 100.00 %  |  100.00 %   |

So my guess is that some of the backdoor loading functions or image generation scripts still have to be aligned.
@vogelpi @GregAC @johannheyszl @rswarbrick WDYT regarding this change at this time?

Of course, do with this as you see fit. I made the modifications for a different project and thought it best to contribute back and have an additional set of eyes on the changes.

I've just looked at the Python code and I think I understand how it works. I'm feeling generally enthusiastic about making this change, and (therefore) keen on getting it in asap in order to maximise testing before any tapeout.
Looking at the code, I think the check with calc_fanin on line 590 should be giving us confidence that it has found a sensible solution, right?

Thanks for the PR @micprog !
I'll think we should discuss this internally first before taking a decision re accepting the change at this moment. My understanding is that the new / old polynomials don't differ in the probability for error detection (100% for 1, 2, 3 bit errors) but the pattern for undetected 4-bit errors etc. might change maybe?
I am inclined to keep the current polynomials for Earlgrey unless pentesting provides hard evidence to switch. We can still include this change to generate polynomials for bigger data widths, i.e., what we currently don't have in the repo and that are not part of Earlgrey.

Let's discuss this in the next silicon WG.

Let's discuss this in the next silicon WG.

Sounds good. @johannheyszl and I quickly discussed this morning: be both believe we shouldn't change the polynomials we're currently using due to the reasons stated above. Our recommendation is to implement a switch in the script and use the old algorithm for widths up to 64 (what we currently have) / or for the prims we currently have and the new one provided in this PR for wider prims added in the future. This way we don't introduce any new risks for Earl Grey.
Also, it would be good to validate the new algorithm with some kind of testvector. I don't know if that's feasible but it would ease the review process.
Please note that this is not yet a decision, but just @johannheyszl 's and my recommendation. The Silicon WG will discuss this and come back with an answer.