hive as a persisted operations/documents store

Having GraphQL Hive act as a persistent operation store would be great.
Critical user flow

publish app deployement (app name + app version + set of persisted documents) via Hive CLI
use Hive CLI to mark an app deployment as active (as soon as it is active, the persisted documents should be available via CDN)
The Hive SDK should with a single option opt-into using the persisted document store from Hive CDN, no additional configuration needed

@graphql-hive/envelope
@graphql-hive/yoga
@graphql-hive/apollo
Apollo Router

user configures urql, apollo and relay use persisted documents with Hive, through our guidance documentation (we also reference to frameworks/libraries for further information)

https://commerce.nearform.com/open-source/urql/docs/advanced/persistence-and-uploads/

once an app deployment is no longer used → retire app via CLI or Hive App UI (persisted documents are no longer available via persisted documents CDN)

Technical Challenges

How do we “store”/insert all the operations?

We don’t want to send one POST request to API that includes 1000 GraphQL documents 🤔
We should only POST batches

~API: We need an async task runner for writing operations from “storage” to “CDN” and also cleaning them up if app deployment got retired (we cannot send 1000 requests to S3 from within a single HTTP call, can't we? :))~ - We decided that it makes most sense to immediately write to S3 in the incoming request; we can check whether deployment is active via another S3 key lookup
How do we extract operations with Hive? Do we rely on people providing a JSON file?

In codegen-client preset we provide it (https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#persisted-documents)
graphql.tada does the same (https://gql-tada.0no.co/guides/persisted-documents)
Should we still provide a "generic" way of generating the json file by extracting operations from code files? In that case people would have problems with matching their app documents to the persisted document hashes anyways...

Nice to have (stretch goals; follow up tasks)

Use persisted documents store for web app
Use persisted documents store for Hive CLI
HTTP persisted operations store specification (for the ecosystem ™; not just us)
Opt-into breaking changes based on active app deployment (usage) instead of operation usage (if one operation of app deployment is used → all schema coordinates within app deployments being removed is a breaking change, as the app is still active)
Because we now know which clients and client version operations are executed we can notice when incoming operations from usage no longer reference the operations in a persisted operations set and thus notify hive users when a specific version of their product is not being used anymore/low in usage

-->
Allow users to decide whether to do breaking change detection based on app deployments or usage data.
Delete persisted operation deployment flow

Drop the persisted operation deployment via UI or CLI
Schedule Async Task for actually deleting the persisted operation documents from S3
(optional) Releasec for conditional breaking changes

We must figure out how to incorporate the persisted operation schema coordinates within the hive check/breaking change detection flow (usage data). As long as a persisted operation deployment is active, the field is in usage, even if there is no data in the retention period. After a persisted operation deployment has been deleted/marked as retired/inactive, the deployment schema coordinates removal is no longer blocked by the deployment.
Based on the usage data, we can notify users when a client version seems unused (e.g. old mobile client).
Documentation

We should mainly advertise this as a security and "performance" improvement feature
Don't execute arbitrary queries
Reduce client -> origin upstream traffic (heavy graphql documents being sent over the wire!!!)

Details
Some ideas on how to store stuff...
S3 Key Structure
Here we write the graphql documents as long as the deployment is active - we need to ensure that it is removed from S3 if the deployment gets inactive. Thus a transactional background job seems inevitable.
persisted/{orgId}/{project}/{target}/{client}/{clientVersion}/{operationHash}

SQL
CREATE TABLE "persisted_document_deployments" (
  "target_id" uuid NOT NULL,
  "client_name" text NOT NULL,
  "client_version" text NOT NULL,
  "is_active" boolean -- if it is active you should not be able to add new operations to it
);

CREATE TABLE "persisted_documents" (
  "id" uuid,
  "persisted_document_deployment_id" uuid REFERENCES "persisted_document_deployment"("id")
  "hash" text NOT NULL,
  "operation_document" text,
  "document_s3_location" text NOT NULL, -- we should store a reference (in case we at some point have to change the key structure/pattern
  "schema_coordinates" text[], -- see notes
  "created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW() -- this column is most likely unnecessary
);

-- Everything here is not necessarily required for the initial version - but could help for breaking change detection...

CREATE INDEX "persisted_documents_pagination" on "persisted_documents" USING GIN ("schema_coordinates");

-- get list of all operations that are related to a set of schema coordinates
SELECT
  "persisted_documents"."hash",
FROM
  "persisted_documents"
  INNER JOIN
    "persisted_document_deployments"
      ON "persisted_document_deployments"."id" = "persisted_documents"."persisted_document_deployment_id"
WHERE
  "persisted_document_deployments"."is_active" = TRUE
  AND "persisted_documents"."schema_coordinates" && '{A.foo,B.ff}'

When a deployment has been created and "frozen", we could generate the schema coordinate ---> hash mapping, for quick lookups of which a schema coordinate impacts operations. 🤔
Alternatively, we can execute the SQL live for each active deployment.
Unsure whether we should store all the schema coordinates used within a document alongside the document. 🤔
PROs:

When we introduce usage reporting by only sending the hash of the operation (instead of all the schema coordinates), we don't need to process the whole document with a graphql visitor to write data to clickhouse
Could be indexed for a lookup table to find which app deployments are affected by a breaking change...
Cons:
We store a lot more of data
Inserts might become slower

Links:

https://the-guild.dev/graphql/yoga-server/docs/features/persisted-operations
https://engineering.zalando.com/posts/2022/02/graphql-persisted-queries-and-schema-stability.html
https://chillicream.com/docs/hotchocolate/performance/persisted-queries
https://guild-oss.slack.com/archives/C01E8ATBQGN/p1690226623145209

It could also show a complexity score next to each document.

Could also reject documents with complexity higher than X

S3 could be used as a schema registry

Yes and Hive should control it all

a few analytic stuff we can do here as well.
e.g. display how many bytes saved from client <-> server requests by using persisted operations over time

Plus some part of data processing (related to the usage reporting pipeline) might be done ahead of time

https://the-guild.dev/graphql/hive/product-updates/2024-07-30-persisted-documents-app-deployments-preview


Add basic vscode web extension

Basically just register the extension providing the extension configuration(tm grammar and other language config like quote style, matching tokens, etc.)
progress for #4095

:x: There is undocummented changes. Run chronus add to add a changeset or click here.
The following packages have changes but are not documented.

:x:typespec-vscode

Show changes

You can try these changes here

🛝 Playground
🌐 Website
📚 Next docs


Did you take down ftp site with netcdf test files?

When I look here, I don't see any data:
ftp://ftp.unidata.ucar.edu/pub/

Opps, never mind, there is is. Must have been internet glitch...


feat: create mailer

Overview
What I've done
What I haven't done
How I tested
Which point I want you to review particularly
Memo

Still draft?


Update gradle to 4.8.1

Speeds up the build by fixing some weird CF/AWS maven problems. Enables Intellij to work properly. Also adds bookshelf dependency which GameStage now requires.

I'll close this one as it's effectively included in the other PR :)


Frames of reference

Looking at the document for reference frames, I understand that there is global/local frame (world) and the body frame (vehicle). Other than that, there is Lidar (velodyne64), IMU (imu), Camera (short_camera, long_camera) and Radar (radar) frames. The localization module outputs a transform from 'localization' to world. Now which frame is 'localization' ? Technically it should be vehicle to world. Which physical entity does 'localization' frame represent ?

Currently, frame "localization" refers a transform from IMU to world.

Closing this issue as we have not heard back in a while. Feel free to reopen if you have additional questions. Thanks!


Add chain domain separation context

Fixes #17

(Coverage decreased because this now also includes client-sdk/go and we need to add tests there.)

cross reference: getting a clean test will depend on https://github.com/oasisprotocol/oasis-bridge/pull/17 and the additional work of making the test pass.
let's bring things up to https://github.com/oasisprotocol/oasis-core/commit/d186644faee8ab99cc1e94df4bdcf04a92873e00, as used in #14, get the tests to pass, then bring things up to https://github.com/oasisprotocol/oasis-core/commit/1ca440ee0f78be5381447fe655b32cc82d59d561, as used in this PR

tests now pass https://github.com/oasisprotocol/oasis-bridge/pull/20

ts sdk updates are up, in #46


RCOCOA-2365 Update release packaging for Xcode 15.4

Passing packaging job: https://github.com/realm/realm-swift/actions/runs/9162228954


feat: Overhaul popup menu and provider management

This PR is primarily meant to fix a bug where github enterprise URLs would not actually work due to 'github' being the hardcoded provider on API requests. While I was in here though I took it as a chance to rewrite the popup menu to address some other issues.
Goals for the new popup:

Better support API tokens for cloud codecov
Improve error messaging
More clearly communicate optional settings
Remove unnecessary dependencies

I think this PR was successful in achieving each of these goals! Have approved and iterated on design with input from Adalene.
Am currently testing everything actually works on a real Github enterprise instance and will not merge before confirming.
This is what the final result looks like:

Here's what it currently looks like for comparison:

Was not able to test this on GHE because our instance is years out of date and updating is non-trivial. We've decided to merge as-is as this won't break anything that currently works. Will need to follow up on the GHE story should we hear from our customers that it's not working.


CI: Update to use ODH 2.18.2

Many thanks for submitting your Pull Request :heart:!
Please make sure that your PR meets the following requirements:

[ ] You have read the contributors guide
[ ] Pull Request title is properly formatted: FAI-XYZ Subject
[ ] Pull Request title contains the target branch if not targeting main: [0.3.x] FAI-XYZ Subject
[ ] Pull Request contains link to the JIRA issue
[ ] Pull Request contains link to any dependent or related Pull Request
[ ] Pull Request contains description of the issue
[ ] Pull Request does not include fixes for issues other than the main ticket

LGTM.
Just a note that when we deploy KServe, and if we are still using this ODH version, we need to patch the inferenceservice-config.


open XiEditor from the command line

We'd like this eventually. In the interim, I currently have a teeny bash script at /usr/local/bin/xi:
#! /bin/sh
open -a /Applications/XiEditor.app $@

perhaps not helpful but here's an alias I've been using:
alias xi="open $HOME/xi-mac/build/Release/XiEditor.app"

perhaps off topic or not useful but this is the alias I use for "opening XiEditor from the [cmd] line":
alias xi="open -a $HOME/xi-mac/build/Release/XiEditor.app"

I wanted to make a more detailed set of instructions for idiots like myself (Who took 4 hours to get this to work)
type open . profile in the terminal, put this in the .profile file
alias **xi** ="open /path/to/xieditor.app"

type source .profile after saving the text file
(*You can change the name of the alias (bolded) to anything you want.

This is typically done on OSX by bundling the script into the .app & then offering an option to deploy it into /usr/local/bin if it's not present.  Would be happy to accept a PR that does this.

Absent a smarter method of finding the location of XiEditor.app, the "/Applications" portion of the script can be left off. By default, "open -a" will search both /Applications and ~/Applications, and while I imagine most people will put it in the root Applications, there might be some who put it in the user Applications folder.

There's a menu item for installing the helper script mentioned in the OP now.


Create a CD pipeline to automate Deployment to Kubernetes

Scenario:
As a: Developer
I need: to create a CD pipeline to automate deployment to Kubernetes
So that: the developers are not wasting their time doing it manually
Details and Assumptions:

Use Tekton to define the pipeline.
It should clone, lint, test, build and deploy the service.
Deployment should be to OpenShift.
It can use a manual trigger for this MVP.

Acceptance Criteria:
Given the CD pipeline has been created
When I trigger the pipeline run
Then I should see the accounts service deployed to OpenShift

For screenshot purposes.


cannot proxy host and uris both

can not proxy
Summary
SUMMARY_GOES_HERE
Steps To Reproduce
Add api

host: baidu.com
uris: /baidu
methods: GET
curl get http://localhost:8000/baidu
-H Host: baidu.com

error below
Additional Details & Logs

Kong version (v0.11.1)
Kong error logs (
{
"message": "no API found with those values"
})
Centos

if add api like this

uris: /baidu
methods: GET
curl get http://localhost:8000/baidu

OK

I appreciate you took the time to open an issue for this. However, kong github issues are for bug reports only. I kindly ask you to repeat your question on the channels we have habilitated for it:

The main place for questions is gitter
Alternatively, there's also a mailing list, in case you prefer that format.

That said, you must first add an api definition to Kong through it's management api (which is on port 8001 by default). Please follow the quick start tutorial to get an idea of how this works. See https://getkong.org/docs/
I'll close this issue now. If you think this was not a question, please reopen.


The procedure entry point luaL_setfuncs could not be located in the dynamic link library C:\lua-5.2.4\bin\lfs.dll.

Hello. I'm trying to install Lua File System with LuaRocks and I get the following message when I try to use lfs in my program:
"The procedure entry point luaL_setfuncs could not be located in the dynamic link library C:\lua-5.2.4\bin\lfs.dll"
I have VS 2017 installed and this is what lfs used for compilation, there were no errors. I thought that there was some problem with my Lua distribution, but I've just built it from source and this didn't solve the problem.
What can I do to solve this problem?

The problem was indeed with my Lua's distribution. Re-compiling it again carefully solved the problem.


cached_transformers.get() load_weights arg is not implemented.

As noticed by @epwalsh the load_weights argument in which is documented in cached_transformers.get()  is not actually implemented. I checked and it is also not a supported kwarg of AutoModel.from_pretrained(). I'll look into supporting this or removing it.

FWIW, I've found the best way to load a transformer without loading pre-trained weights is to first load the config and then just initialize the model directly with the config. For example:
config = GPT2Config.from_pretrained("gpt2")
model = GPT2LmHeadModel(config)

It would probably be fairly easy to add that logic to cached_transformers.


Feature request: more control over timeline

Adding 'next' and 'previous' buttons would allow a gradual progression through the timeline at the user's leisure.

Working on this in issue-38-timeline.

Initial implementation has now been merged; will wait to test with various projects before closing.

Looks good on projects. Closing.


No json results from failed deploy

When deploying to our development DNN, PolyDeploy failed to return the expected json results.  Instead we got the and error
Received error {"Message":"Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property."}
Triaging the DNN Admin Logs discovered the deploy failure was due to sql timeout.  When a DNN deploy fails due to sql timeout the entire sql file is added to the log message. It was a very large sql file.  Because DNN includes the sql that failed to run in the error message, it exceeded PolyDeploy's ability to generate the results json.  This prevented our pipeline from failing gracefully.
We've resolved this issue before by ensuring the serializer supports potentially large objects for serialization, as .net doesn't look at the server web.config for max size for json serialization
using Newtonsoft.Json; JavaScriptSerializer serializer = new JavaScriptSerializer { MaxJsonLength = int.MaxValue };
I'm requesting the results handling get the serialization intitalized to support large objects so when DNN fails for sql issues, the proper results can be passed back in the json

We would certainly accept a pull request that implemented this change. There's also work on a new Deploy Client that uses the new System.Text.Json serializer instead of JavaScriptSerializer, which will also resolve the issue once it's ready.


Usage of pipeline requires bash>4.0

Some pieces of code will fail if the bash version is below 4.0. Could be made more explicit by specifying bash in front of the spinoza_* modules in the master script.
Could also add a check for bash version in spinoza_setup during installation. Update docs too.

To add to this, would be better to specify that one needs bash and not zshell.
Indeed, even in a bash terminal, code works without issue if specifying bash spinoza_* in the master script in each module.
Also needed to add bash call_cat12 within spinoza_brainextraction

Added a version check  here and changed the shebang line here to look for the environmental executable of bash. Maybe that works in the same way as bash call_cat12. If so, I can adapt that globally.

Version check in master script works, but needed to replace the shebang line #!/bin/sh  with
#!/usr/local/bin/bash
With the previous line, the bash version echoed by $BASH_VERSINFO was different from the one in the terminal I'm running from.

Also works!

Is $BASH_VERSION accurate in that case?


add LICENSE file

fixes #78

Please @arackaf take a look at this, since it's a pretty sensitive matter I'd like your approval


It depends on a few factors, e.g. how fast your disk is, how fast the triplet selection can run on the CPU and how fast the training on the GPU is. For me it takes roughly 72 hours to train for 500 000 steps with triplet loss and the nn4 model.

@davidsandberg thank you very much.


releases

Hi could you please schedule a release for wf-recorder? I would like to package this for the official arch linux repositories. You get bonus points if you provide a gpg key to sign the release.

Please cut a release! =)

It'd be great to see a new release as well, so that this can be packaged for Void Linux!

https://github.com/ammen99/wf-recorder/releases/tag/v0.2
Reopen the issue if I delay too much the next time :)


Update dependencies

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (58cde80) 100.00% compared to head (89e6311) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #309   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           41        41
  Lines         1633      1633
  Branches       333       333
=========================================
  Hits          1633      1633

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


test: add util tests for pkg/errortypes

Signed-off-by: Zhou Hao<EMAIL_ADDRESS>
Ⅰ. Describe what this PR did
Ⅱ. Does this pull request fix one issue?

Ⅲ. Why don't you add test cases (unit test/integration test)? (你真的觉得不需要加测试吗？)
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

merged via command line manually


Slow InMemoryTestHarness?

I can not catch actual issue yet, but I'll try to explain what I'm noticing and may be that will lead somewhere.
After starting to use InMemoryTestHarness, we've noticed that our unit test suite slowed down, a lot.
Unit tests, that were running in matter of few milliseconds now take 6s each, which does not align with sentence in documentation "The in-memory harness is the easiest to use, is lightning fast, and runs entirely in-memory without any external dependencies".
Interestingly enough if I profile single test, I don't see such numbers and even if our tests do not run concurrently, I was suspecting something with locking or our extra harsh antiviruses.
So I have following method:
private static async Task TestHarness()
{
    var harness = new InMemoryTestHarness();

    await harness.Start();
    try
    {
    }
    finally
    {
        await harness.Stop();
    }
}

And if I run like this:
var start = DateTime.UtcNow;

for (int i = 0; i < 100; i++)
{
    await TestHarness();
}

Console.WriteLine(DateTime.UtcNow - start);

It is fast, less than 0.5s for 100 invocations.
Now if I run it like this:
var start = DateTime.UtcNow;

Parallel.For(0, 100, async i =>
{
    await TestHarness();
});

Console.WriteLine(DateTime.UtcNow - start);

that becomes 30+s and in profiler I see, that most of the time is spent in waiting:

Also I've noticed one interesting thing:

If it is InMemory harness, does it actually need to rad all network interfaces in each unit test?
Sorry, that I did not had time to dig deeper in the issue and may be searching issues in obvious stuff.

The StartEndpoint() can be eliminated easily, since that Task is likely completed already. I'll fix that one. The temporary endpoint is created using NewId() to generate an ID, which has a one-time initializer that determines the workerId.

I'm using 7.1.8 version.

Thanks. Care to check it again using the .100 develop build that was just released?

Thanks for quick reaction, kind of not expected to get feedback so fast :)
I've tried new version and it did not help, so I've spent more time trying to understand what exactly might be an issue.
I've attached isolated app that reproduces the issue
ConsoleApp1.zip
It seems though, that it is by design.
All the time goes to
Assert.That(await NoFaults(harness), Is.False);

which I think is impacted by this:
 protected AsyncTestHarness()
    {
      this.TestTimeout = Debugger.IsAttached ? TimeSpan.FromMinutes(50.0) : TimeSpan.FromSeconds(30.0);

      // here is why 6s per test
      this.TestInactivityTimeout = TimeSpan.FromSeconds(6.0);

      this._inactivityObserver = new Lazy<AsyncInactivityObserver>((Func<AsyncInactivityObserver>) (() => new AsyncInactivityObserver(this.TestInactivityTimeout, this.TestCancellationToken)));
    }

I think I understand why now, just may be it could be documented somehow more explicit - that this is probably more suitable for integration tests than unit tests.
Thanks a lot for help anyway and sorry for wrong alert :)

Well, yeah; I figured it was UI actually waiting for nothing to happen.  You can change the inactivity timeout to a lower value to speed things up.

For what it's worth, the slowness started when I upgrade from 7.1.3 to 7.2.
I reverted the change and starting upgrading 1 release at a time.  7.1.3 -> 7.1.4 introduced behaviour.

I'm pretty sure I changed the default inactivity timeout from 1 second to 6 seconds in that time period.

From what i can see on the logs the Stop call takes a long time:
public async Task DisposeAsync()
{
try
{
if (TestHarness != null)
await TestHarness.Stop();
}
finally
{
if (ServiceProvider != null)
await ServiceProvider.DisposeAsync();
}
}
Is the new version already released?

So, does anyone have a fix for this yet? Any example code on how to update the timeout?

Thanks for the response @phatboyg, so are you saying the example test given in the docs here is not properly written? I am using that exact pattern and hitting the 6 second timeout.

This test:
namespace MassTransit.Tests.Testing
{
    using System.Threading.Tasks;
    using MassTransit.Testing;
    using NUnit.Framework;

    [TestFixture]
    public class Using_the_test_harness
    {
        [Test]
        public async Task Should_be_easy()
        {
            var harness = new InMemoryTestHarness();

            await harness.Start();
            try
            {
            }
            finally
            {
                await harness.Stop();
            }
        }
    }
}

Runs in well under 6 seconds, 213ms in fact.

Ok, but that's not the test I linked:
namespace UsingInMemoryTestHarnessConsumer
{
    using System;
    using System.Threading.Tasks;
    using MassTransit;
    using MassTransit.Testing;
    using NUnit.Framework;

    [TestFixture]
    public class Submitting_an_order
    {
        [Test]
        public async Task Should_publish_the_order_submitted_event()
        {
            var harness = new InMemoryTestHarness();
            var consumerHarness = harness.Consumer<SubmitOrderConsumer>();

            await harness.Start();
            try
            {
                await harness.InputQueueSendEndpoint.Send<SubmitOrder>(new
                {
                    OrderId = InVar.Id
                });

                // did the endpoint consume the message
                Assert.That(await harness.Consumed.Any<SubmitOrder>());

                // did the actual consumer consume the message
                Assert.That(await consumerHarness.Consumed.Any<SubmitOrder>());

                // the consumer publish the event
                Assert.That(await harness.Published.Any<OrderSubmitted>());

                // ensure that no faults were published by the consumer
                Assert.That(await harness.Published.Any<Fault<SubmitOrder>>(), Is.False);
            }
            finally
            {
                await harness.Stop();
            }
        }
    }
}

Actually, it was, but whatever.
The entire MassTransit.Tests.Testing folder includes dozens of tests and they all run nearly instantly.

And to quote my earlier comment:

A properly written test should never see this duration, and it's usually because developers are selecting counts, or waiting for things that shouldn't happen.

Which is exactly what that example is doing on the last line:
// ensure that no faults were published by the consumer
Assert.That(await harness.Published.Any<Fault<SubmitOrder>>(), Is.False);

Ahah, sorry, you're right, wrong link :wink:
So, I had this in the test to check the consumer's response:
var message = harness.Published.Select<MessageType>().Single().MessageObject as MessageType
Assert.NotNull(message);
Assert.Equal(expectedValue, message.Value);

Is there a way to do this without waiting for the timeout?
Thanks for the help!

Single(), by its very nature, is the same as Count(). Use .First() instead.

Single(), by its very nature, is the same as Count(). Use .First() instead.

unless you want to assert that only 1 message was published, and not just the first one that it finds.

Sure, in that case as mentioned above you can change the TestInactivityTimeout to a lower value (the default is 6s).

Sure, in that case as mentioned above you can change the TestInactivityTimeout to a lower value (the default is 6s).

Which is what i did.  But you've raised an interesting point about the different Linq operators.  I could get the first message, finish the test, but I'd still need to verify the queue is empty as some point.
Is there any way to verify that, without the system waiting for the timeout ?

No, that's the whole point of the inactivity timeout. It can typically be really short if you aren't scheduling messages, etc.

FYI, this has gotten much worse in version 8.0.7.
I already have set the TestInactivityTimeout to 1s as suggested, my tests are checking for any and all Faults and went from running 48 tests in 1m to 40m.

FYI, this has gotten much worse in version 8.0.7. I already have set the TestInactivityTimeout to 1s as suggested, my tests are checking for any and all Faults and went from running 48 tests in 1m to 40m.

If you are checking for things to not happen, you will absolutely have to ensure that your assertions are using timeouts appropriately. If you have a standalone example of a unit test that is slow which can be dropped into the MassTransit.Tests project and run, you're welcome to share it.


chore: release 1.2.172

:robot: I have created a release *beep* *boop*
1.2.172 (2022-09-12)
Bug Fixes

bundles: bundle copy from archive to remote incorrect values (e9a2c53)
deploy: lower releases-history-max default to 5 releases (was 10) (7e2cc3d)
giterminism: --add-custom-tag option is not allowed (8b72dfe)
run: --bash and --shell depend on image entrypoint (c2369f6)
run: a container is not cleaned up after execution by default (c04367c)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/werf/werf/releases/tag/v1.2.172 :sunflower:


librealsense Build Problem

Camera Model is intel realsense R200 in Ubuntu 14.04
I tried to compile by following commands
make && sudo make install

But the following error occurs:
In file included from src/uvc-v4l2.cpp:31:0:
/usr/local/include/libusb-1.0/libusb.h:937:4: warning: ISO C++ forbids zero-size array ‘    iso_packet_desc’ [-Wpedantic] [0] /* non-standard, but usually working code */
^
src/uvc-v4l2.cpp: In function ‘const char* rsimpl::uvc::get_usb_port_id(const rsimpl::uvc::device&)’:
src/uvc-v4l2.cpp:409:72: error: ‘libusb_get_port_number’ was not declared in this scope
std::to_string(libusb_get_port_number(device.usb_device));
                                                                    ^
make: *** [obj/uvc-v4l2.o] Error 1

Required Info

Camera Model
R200, F200 or SR300

Firmware Version

Operating System & Version

Kernel Version (Linux Only)

Build System
VS2013, XCode or Makefile

Please check your installation of libusb. Assuming you properly install (libusb)[https://github.com/IntelRealSense/librealsense#installation-guide] and there is no other version on your system, you should have (libusb_get_port_number)[http://libusb.sourceforge.net/api-1.0/group__dev.html#ga14879a0ea7daccdcddb68852d86c00c4] defined in libusb.h:1355.
According to Travis-CI, master is passing compilation on Linux 14.04.

Thank you for the reply
Actually I did the following commands in following website:
https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md

Install libusb-1.0 via apt-get
sudo apt-get install libusb-1.0-0-dev

The following is the result of above commands:
wkyoun@wkyoun-15Z960-GA70K:~/Downloads/RealSense_ROS/realsense_dist/2.3$ sudo apt-get install libusb-1.0-0-dev
[sudo] password for wkyoun:
Reading package lists... Done
Building dependency tree
Reading state information... Done
libusb-1.0-0-dev is already the newest version.
The following packages were automatically installed and are no longer required:
  libntdb1 linux-headers-3.19.0-25 linux-headers-3.19.0-25-generic
  linux-image-3.19.0-25-generic linux-image-extra-3.19.0-25-generic
  linux-signed-image-3.19.0-25-generic python-ntdb
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.

But, It still produce the same error as I stated above
Is installation of libusb complete?
Would you please let me know how to fix it?

Thank you for the comment,
it was because of libusb library that was installed before.
I erased it, and it works correctly!


Dirichlet and wishart

Sweet, thanks David! We can look next week at adding the optional first argument to store the result, as discussed. Would you have a few test scripts -- maybe just calls? I can show you how to turn them in unit tests easily with the totem package, it's a delight :)
Cheers!


 It then installs the named packages, like 'go install'.
The -d flag instructs get to stop after downloading the packages; that is,
it instructs get not to install the packages.
The -f flag, valid only when -u is set, forces get -u not to verify that
each package has been checked out from the source control repository
implied by its import path. This can be useful if the source is a local fork
of the original.
The -fix flag instructs get to run the fix tool on the downloaded packages
before resolving dependencies or building the code.
The -insecure flag permits fetching from repositories and resolving
custom domains using insecure schemes such as HTTP. Use with caution.
The -t flag instructs get to also download the packages required to build
the tests for the specified packages.
The -u flag instructs get to use the network to update the named packages
and their dependencies. By default, get uses the network to check out
missing packages but does not use it to look for updates to existing packages.
The -v flag enables verbose progress and debug output.
Get also accepts build flags to control the installation. See 'go help build'.
When checking out a new package, get creates the target directory
GOPATH/src/. If the GOPATH contains multiple entries,
get uses the first one. For more details see: 'go help gopath'.
When checking out or updating a package, get looks for a branch or tag
that matches the locally installed version of Go. The most important
rule is that if the local installation is running version "go1", get
searches for a branch or tag named "go1". If no such version exists
it retrieves the default branch of the package.
When go get checks out or updates a Git repository,
it also updates any git submodules referenced by the repository.
Get never checks out or updates code stored in vendor directories.
For more about specifying packages, see 'go help packages'.
For more about how 'go get' finds source code to
download, see 'go help importpath'.
This text describes the behavior of get when using GOPATH
to manage source code and dependencies.
If instead the go command is running in module-aware mode,
the details of get's flags and effects change, as does 'go help get'.
See 'go help modules' and 'go help module-get'.
See also: go build, go install, go clean.


Regression in ember data 2.5

this commit seems to be breaking has many links
https://github.com/emberjs/data/pull/4268
https://github.com/emberjs/data/commit/590fc4869eb38e8144128251bb40f3ab65990c5e

Is there an error message? I would guess null error message.

Hello, @fivetanley any updates here? I think I have the same issue on bump ember-data from 2.13.2 to 2.14.11. The point is: the references (hasMany links) which worked fine in the previous version, now broken (no request to fetch relation which specified in links)
(active-model-adapter - 2.2.0)

Hello, @jcope2013 , did you resolve this issue? I will appreciate if you can share the possible reason or the fix with me

Closing due to inactivity.


Add more detail about SQL Server named instance.

The current version does not cover the named instance, which will cause the Data movement fail to start . I added following statement: If the head node is a named instance, you need to manually add the port of SQL Server to Windows firewall on head node, also start the SQL Browser on head node.

@rothja : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@liweiSecurity Thanks for the suggestion. I made some minor changes to the wording which you can review. But I believe it retains the technical meaning. I'll merge this change in. Thank you!


Current phase ends: never

Current Phase Ends = Never
This is misleading because sometimes you don't have an active phase. Is that ok or do we want to make some changes?

Hi @ihsaan-ullah, I don't get it. How we have no active phase if the last phase is set to never ending?

Hi @ihsaan-ullah, I don't get it. How we have no active phase if the last phase is set to never ending?

In the screenshot I have shared, no phase is currently active and last phase is not never ending but we still see "Current Phase: Never Ends"

OK it is indeed confusing. In a way, it's true that the current "unactive phase" is set to never end. But it would be clearer to state that no phase is active.


Registering a BE or CN with the FEs uses IP address instead of hostname

Enhancement
When using stream load I specify the hostname and port of an FE and the stream load job gets assigned to a BE or a CN. This makes sense to me.
But
The FE assigns it to the IP address of the BE or CN instead of the hostname of the BE or CN, and that IP may be local to the internal network of the StarRocks cluster. The use of an internal network is likely true in the case where StarRocks is running in a Docker environment. My local machine may not know the IP address, but if a hostname was used I could expose the port 8040 and assign the hostname to <IP_ADDRESS>.
Would it be possible to use the hostname that the BE or CN registers as instead of the internal IP address when forwarding the curl connection to the BE or CN?
Here is how I am registering:
mysql --connect-timeout 2 -h starrocks-fe -P9030 -uroot -e \
"ALTER SYSTEM ADD COMPUTE NODE \"starrocks-cn:9050\";"

@DanRoscigno are you talking about our fqdn mode, or enhance our allin1 image with fqdn name registering?

This is not for allin1, it is for standard docker containers. I did not know about FQDN mode, but it sounds like what I need.  Thanks for telling me about it. I will give it a try!

@DanRoscigno Do you have updated version of the docker-compose file with FQDN mode?

@DanRoscigno Do you have updated version of the docker-compose file with FQDN mode?

Hi Roman. No, I will give it a go now. This has been on my list for a while.

@rkinwork here it is: https://raw.githubusercontent.com/StarRocks/demo/a5ed13f9c0e9f11fa99debd784294342bcb5c6a4/documentation-samples/quickstart/docker-compose.yml
I have not merged this yet, I need to update the docs and possibly add a delay to the minio_mc job that sets up the access key, as it failed one time in testing today. If you have the same issue then just run this after the minio service shows healthy:
docker compose run minio_mc

You also need starrocks_cn in /etc/hosts:
<IP_ADDRESS> starrocks-cn

You also need starrocks_cn in /etc/hosts:

Thank you, Dan. This eventually helped me set up my local dev environment properly


Anonymous comments

Hey. I think it is possible to implement using accounts-guest package.

Yep.

What would be nice is to add name and email fields above textarea for guests to fill in. If we just add accounts-guest then  username is generated as Guest-#someRandomId, which does not look good. Also, if we clear old guests (there is special function for it(viz accounts-guest README)), the according names in comments disappear. What if we could not also add fields for name and email but also save username in a comment document so it will be shown even if user is deleted. I could commit to this issue but I'm not a meteor expert, your skill is much better.

Feel free to help in whatever ways you would like to, I think every help is good and we could both learn from it. I like your ideas, I'll add them to the list

Ok, thanks. Glad it helps. I will fork you repo and add accounts-guest files into subfolder(I think it is the easiest way to merge repos, right?). Will try to play with it.

One more problem that I detected.
When accounts-guest package is added I cannot login as normal user (I use accounts-ui, so maybe this is the case). Signin/sugnup form just disappears as in case if i'm logged in normally without accounts-guest. This is not a problem with meteor-comments-ui but we need to take it into account anyway if we want to implement the anonymous feature through 'accounts-guest'. A will try to find out why it does not fit `accounts-ui', maybe will open an issue in their repos.

You know, I thought about this. And...maybe we do not need accounts-guest at all? It gives more issues than solves:) I would better just allow non-logged users to post, edit and delete their comments if they indicate email and username(and save the values to comment doc), so it is not necessary to populated Users collection, even temporarily. And this way it would be much easier.  We could, for example, save newly created comments ids into Session variable to control what comments can be deleted and edited by current non-logged user.

I understand your concers, let's have this open for now and if someone of us has the time to implement it we can think about it. Please know though that you use other packages by adding following code to package.js
api.use('aldeed:collection2');

See here: https://github.com/aldeed/meteor-collection2/blob/master/package.js (aldeed:simple-schema)

Anonymous users now can comment when configured https://github.com/ARKHAM-Enterprises/meteor-comments-ui#anonymous-users


create() casts Date to String if data contains collection association

Waterline version:0.11.2
Node version:5.9.0
NPM version:3.7.3
Operating system:Mac OSX 10.11.3

When you use create to insert a new record that includes a Date object, the created object that is returned will include a Date object, however, if the model has a collection association, and the association is included in the record, the created object that is returned will include the date as a string instead of a Date object.
I can repro this using the local memory and postgresql adapters.
You can repro using this repo:
https://github.com/Sencerd/waterline-issue-repro
Clone, npm install, npm test
There are 2 models, Course and Session, Course contains a collection of Sessions.
There are 2 unit tests:

The first inserts a course with no sessions and checks that completedAt is a Date, this test passes.
The second test inserts 2 sessions and then inserts a course with these 2 sessions, it then checks that completedAt is a Date, this test fails as completedAt is a String.

@Sencerd thanks for the repo link.

Model.create
A quick look at waterline's query/dql/create.js, we can identify why the results of the two unit tests might be different.
query/dql/create.js 230-237
    if (valuesObject.associations.collections.length === 0) return after(values);

    var parentModel = new self._model(values);
    nestedOperations.create.call(self, parentModel, valuesObject.originalValues, valuesObject.associations.collections, function(err) {
      if (err) return cb(err);

      return after(parentModel.toObject()); //Maybe change to "return after(values);"
    });

We see that the when the association is used in creating a record, parentModel is created to be used in the nested operations and the value parentModel.toObject() is returned.
Model.toObject
Apparently model.toObject(), results to an object where all date attributes are casted to a string. Looking at the model's toObject function, we see why.
model/lib/defaultMethods/toObject.js 47-48
    var _obj = JSON.parse(JSON.stringify(this.object));
    return _obj;

And given the purpose of a record's toObject() method, I think that this behavior is not intended.

Purpose: The toObject method returns a cloned model instance (record) but stripped of all instance methods.


Two apostrophes caused rendering to fail.

Issue Summary
Use two apostrophes to represent second derivative, but caused all math elements rendering to fail.
Steps to Reproduce:
Example:
<!DOCTYPE html>

<meta charset="utf-8">

$ f' $

$ f'' $

$ f^{''} $

Error:
tex-svg.js:1 Uncaught (in promise) TypeError: t.setAttribute is not a function
    at s.setAttribute (tex-svg.js:1)
    at Q.assistiveMml (tex-svg.js:1)
    at Q.assistiveMml (tex-svg.js:1)
    at e.assistiveMml (tex-svg.js:1)
    at Object.renderDoc (tex-svg.js:1)
    at d.renderDoc (tex-svg.js:1)
    at e.w.render (tex-svg.js:1)
    at tex-svg.js:1
    at Q (tex-svg.js:1)
    at new Promise (<anonymous>)

Technical details:

MathJax Version: 3.0.5
Client OS: Win 10 2004
Browser: Chrome 84.0.4147.105

This is a duplicate of #2402, which is fixed in PR mathjax/MathJax-src#498, part of the coming 3.1 release.

There is a work-around in the original (linked) issue.

Fixed in v3.1 released today.


[CT-2066] Handle old param/flag names in new CLI

We're renaming some flags to match the common naming convention:

no_print → print
flags.DEFER_MODE / (env var) DBT_DEFER_TO_STATE → defer
flags.FAVOR_STATE_MODE → favor_state
flags.ARTIFACT_STATE_PATH / (env var) DBT_ARTIFACT_STATE_PATH → state
(--single-threaded was renamed, but it's not something we publicly document, and it might only be relevant for dbt-rpc?)

Acceptance criteria: We continue to respect the old name:

respect the old name in env var
respect the old name in CLI flag
raise a deprecation warning encouraging them to switch over to the new name

I'm less concerned about the CLI flag, which raises a clear error already:
$ python3 -m dbt.cli.main --no-send-anonymous-usage-stats run
Usage: python -m dbt.cli.main [OPTIONS] COMMAND [ARGS]...
Try 'python -m dbt.cli.main -h' for help.

Error: No such option: --no-send-anonymous-usage-stats (Possible options: --anonymous-usage-stats, --no-anonymous-usage-stats)

After speaking with @iknox-fa, we can keep the send_anonymous_usage_stats as is, as it conforms with existing naming of params. I will edit the issue description to remove this change, and any mentions of the UserConfig, as this was the only env var held in UserConfig.

@stu-k The no_print → print rename should also be relevant for UserConfig, since this is in the same category of "global config" that's settable in three places (CLI flag, env var, user config): https://docs.getdbt.com/reference/global-configs#suppress-print-messages-in-stdout
I see it's actually missing from the class here! That's an oversight, and speaks to the way that the definition and initialization of these configs have been poorly coordinated in the past.
Not very high priority, so I'd be open to discussing kicking it out of scope — just want to make sure we're aligned on the functionality that's documented / expected.

@stu-k Opened as a new ticket: https://github.com/dbt-labs/dbt-core/issues/7036


Alphabets Accepted in Phone Number Field

Description:
While testing the Enatega Multivendor Customer App, I observed a critical issue where the phone number input field allows the entry of English alphabets. This poses a significant problem as phone numbers typically consist of numerical digits only, and accepting alphabets may lead to user errors and hinder the user experience.
Steps to Reproduce:
Open the Enatega Multivendor Customer App.
Navigate to the section where the phone number is entered (e.g., during registration or profile setup).
Attempt to enter English alphabets instead of numerical digits in the phone number field.
Expected Behavior:
The phone number input field should only allow the entry of numerical digits. An error message or validation prompt should be displayed if alphabets are entered.
Actual Behavior:
The phone number input field accepts English alphabets without providing any error or validation prompt.

/attemp

Resolved!

Resolved!

waiting for publish

@Inshirah23 is this issue still up? if yes it would be great to work on!

@Inshirah23 is this issue still up? if yes it would be great to work on!

Thanks! I will look into it and I’ll let you know. 🙌🏻

@Inshirah23 is this issue still up? if yes it would be great to work on!

This issue is still up if you'd like to work on it.

@Inshirah23 is this issue still up? if yes it would be great to work on!

This issue is still up if you'd like to work on it.

I have already created a pull request for the same.
https://github.com/Ninjas-Code-official/Enatega-Multi-Vendor-Food-Delivery-System/pull/144


Fixed callback never called for bgapi

In some cases the command replies before attaching the event listener for the reply. When this happens the callback is never called.
Is there a particular reason for which the jobid is taken from the event header given that in all cases it is available?

:+1: Good change, thanks for catching this.

Can you release it?

Already did :)
https://github.com/englercj/node-esl/releases/tag/v1.1.4

@englercj Thank you for the release! Thank you for your reactivity! Thank you for developing this great library :)

You're welcome! Let me know if there is anything else I can do.


Broken bower install

Missing files when installing version 0.3.4 with bower.

bower_components/leaflet-omnivore/leaflet-omnivore.js
bower_components/leaflet-omnivore/leaflet-omnivore.min.js

There is also a mismatch in versions with the components.js file
bower leaflet-omnivore#0.3.4         mismatch Version declared in the json (0.2.0) is different than the resolved one (0.3.4)

Reverting to version 0.3.2 works.

Bower is no longer supported: please use npm or the CDN.


Setup Windows CI Process

Description

Builds example projects for Windows.
Runs integration_test on Windows.
Removes a seemingly unnecessary format command from the install-tools script

This was causing issues on Windows I think because the path names got too long. Does anyone know the reason a format command is being run as part of the tools installation script, or is it OK to remove it?

Updates several shell scripts for the CI process to fail if there is an error

This was causing false positives during development where the CI run would report success but actually one of the shell scripts failed with melos: command not found

Ignores the network_info_plus integration tests on Windows for now because the Windows implementation for that plugin seems to actually be broken

Would also appreciate it if anyone could weigh in on this. The implementation in network_info_plus_windows is missing implementations for several methods, which causes MissingPluginException to be thrown. Want me to open a separate ticket to deal with that?

Related Issues

[Request] Setup Windows CI process #1094

Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]).
This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[ ] All existing and new tests are passing. (See above note about network_info_plus_windows being broken)
[ ] I updated the version in pubspec.yaml and CHANGELOG.md. (I don't think this is applicable as it just changes CI)
[x] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (flutter analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[x] No, this is not a breaking change.

Thanks for your contribution. We would greatly appreciate if you work in your own fork till the code is ready for review and only afterwards open a PR. Such draft PRs cause Github Actions being always busy and blocking other PRs from running required checks.

@vbuberen Noted, sorry about that. I thought I had it in a state where the CI was likely to pass but I apparently didn't perform the correct sacrifices to the CI gods and they have punished me for my hubris. I'll update this PR when I have everything passing on Github runners elsewhere.


test case failed frequently with no relationship of code change

What happened:
PR fails in non-related test case even with retry.
https://github.com/kubernetes-sigs/kubefed/pull/1469
https://github.com/kubernetes-sigs/kubefed/pull/1455
What you expected to happen:
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Environment:

Kubernetes version (use kubectl version)
KubeFed version
Scope of installation (namespaced or cluster)
Others

/kind bug

Was fixed by https://github.com/kubernetes-sigs/kubefed/pull/1500
/close


Dummy app reorganisation

Summary

I started working on some tests for #980 but I wanted to propose this little refactor first...
Moves all files related to the dummy app (mounted in the test environment) from /test to /test/dummy. This makes it a lot clearer which files are related to tests and which are part of the dummy app.
What do you think?
Other Information

It's easier to grok the changes with a visual example:
Before

After

In some contexts dummy can be perceived as less than friendly and inclusive

Ah! I wasn't aware of that.

example or something similar

I mostly use RSpec, where the word "example" often refers to tests themselves. Is there some conceptual overlap / blurryness there? Maybe not so much with Minitest?
If it's purpose is to simulate a downstream consumer that's including the engine in itself, maybe consumer conveys it's role well?
Naming things is hard :sweat_smile:

Naming things is hard sweat_smile

Some ideas: sample, mockup?

Naming things is hard

Some ideas: sample, mockup, sandbox?

I'm 👍🏻 to sample and sandbox. Pick one of those?

Updated to sandbox :ok_hand:


Transaction Issue

﹕ {"error":"invalid_scope"}
i am getting this message.
here is my procedure.
First i load cards
public void loadCards()
{
String bearerToken = sharedPreferences.getString(C.SP_BIT_RESERVE_AUTH_TOKEN,"");
try {
BitreserveClient bitreserveClient = new BitreserveClient(bearerToken);
bitreserveClient.getUser().then(new RepromiseFunction<User, List>() {
@Override
public Promise<List> call(User user) {
// Do something with the user.
return user.getCardsByCurrency(curency.curencyName);
}
}).then(new PromiseAction<List>() {
@Override
public void call(List cards) {
				card = cards.get(0);
				Toast.makeText(TransactionActivity.this,""+card.getBalance(),Toast.LENGTH_LONG).show();
				// Do something with the list of cards.
			}
		}).fail(new PromiseAction<Exception>() {
			@Override
			public void call(Exception e) {
				// Do something with the error.
			}
		});

		} catch (BitreserveSdkNotInitializedException e) {
			Log.d(MainActivity.class.toString(), e.getMessage());
		}

	}

and Doing Transaciton using this method.
public void doTransaction(BitUser user)
{
TransactionDenominationRequest transactionDenominationRequest = new TransactionDenominationRequest(user.amount, user.curencyName);
TransactionRequest transactionRequest = new TransactionRequest(transactionDenominationRequest, user.sendEmail);
card.createTransaction(transactionRequest).then(new PromiseAction() {
@Override
public void call(Transaction transaction) {
// Commit the transaction.
transaction.commit();
					Toast.makeText(TransactionActivity.this,""+transaction.getMessage(),Toast.LENGTH_LONG).show();;
				}
			});

	}

Can you please confirm that you are requesting for the transactions:write scope? [More information about the scopes we support] (https://developer.bitreserve.org/api/v0/#permissions)
You need to call the beginAuthorizationmethod with a list of scopes similar to this
ArrayList<String> scopes = new ArrayList<String>() {{
    add("cards:read");
    add("user:read");
    add("transactions:write");
}};

bitreserveClient.beginAuthorization(MainActivity.this, CLIENT_ID, scopes, state);

Can your confirm if this is the case?

No i did not add this..Once Again Thanks.


Use code style analyzers

add StyleCop.Analyzers to the solution
another option would be an .editorconfig file
not completely sure what our conventions are...
I suggest we use the conventions cake-build use in their project Settings.StyleCop & stylecop.json

We are doing that now.


fixed the typo

Thanks @shemul  for the pull request, but I've found that the way we put the "[" symbol is quite confusing so I decided to remove it. Thanks


File changes

how does fetch handle a situation where a file that is being downloaded is changed from the server side?

@duncanokeyo what kind of changes? Can you give an example?

Let’s say we a downloading a file  x which has 10mb, then let’s assume the same file on the server has been changed to 20mb.... how does fetch handle such a situation

@duncanokeyo Fetch keeps track of how many bytes have been downloaded so far and it also checks the content length when connected to the server and will update. So if the content length is greater it will download the addition bytes. If the content length is less Fetch will assume that the download has been completed and mark it as complete. I will be looking at implementing ETags soon which will help with this.


RC-28 / RC-27

❗ Checklist

[X] I am using an up to date "DEV" (not "RC") version of SFMobDrops and Slimefun.
[X] I searched for similar open issues and could not find an existing bug report on this.

📍 Description
it was no updated.
📑 Reproduction Steps
update. it bork
💡 Expected Behavior
it fix, no bork!!!!!!!
📜 Server Log
lug
💻 Server Software
Paper
🎮 Minecraft Version
1.17.x
⭐ SFMobDrops and Slimefun version
lastest and fastest
🧭 Other plugins
Spooogot and SmileFun.

Thanks for the very detailed report. This made finding the issue very easy and quick. I commend your excellent issue reporting. Build is released :)

XD I am so sorry, buddy.
But I had to take the chance.


error when using proxy while trying to download youtube playlist

File "/usr/lib/python3.3/site-packages/youtube_dl/extractor/common.py", line 191, in _request_webpage
return self._downloader.urlopen(url_or_request)
File "/usr/lib/python3.3/site-packages/youtube_dl/YoutubeDL.py", line 1157, in urlopen
return self._opener.open(req)
File "/usr/lib/python3.3/urllib/request.py", line 469, in open
response = self._open(req, data)
File "/usr/lib/python3.3/urllib/request.py", line 487, in _open
'_open', req)
File "/usr/lib/python3.3/urllib/request.py", line 447, in _call_chain
result = func(*args)
File "/usr/lib/python3.3/urllib/request.py", line 1289, in https_open
context=self._context, check_hostname=self._check_hostname)
File "/usr/lib/python3.3/urllib/request.py", line 1248, in do_open
h.request(req.get_method(), req.selector, req.data, headers)
File "/usr/lib/python3.3/http/client.py", line 1065, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python3.3/http/client.py", line 1103, in _send_request
self.endheaders(body)
File "/usr/lib/python3.3/http/client.py", line 1061, in endheaders
self._send_output(message_body)
File "/usr/lib/python3.3/http/client.py", line 906, in _send_output
self.send(msg)
File "/usr/lib/python3.3/http/client.py", line 844, in send
self.connect()
File "/usr/lib/python3.3/http/client.py", line 1202, in connect
self._tunnel()
File "/usr/lib/python3.3/http/client.py", line 803, in _tunnel
(version, code, message) = response._read_status()
File "/usr/lib/python3.3/http/client.py", line 328, in _read_status
raise BadStatusLine(line)
[debug] Encodings: locale 'UTF-8', fs 'utf-8', out 'UTF-8', pref: 'UTF-8'
[debug] youtube-dl version 2014.02.20
[debug] Python version 3.3.4 - Linux-3.12.9-2-ARCH-x86_64-with-arch-Arch-Linux
[debug] Proxy map: {'http': '<IP_ADDRESS>:8082', 'https': '<IP_ADDRESS>:8082'}

Most likely your proxy was dead.


Fix the tracking path of npm metadata

Fix for MMENG-2881, indy tracks the npm metadata with suffix package.json, which is wrong. I checked and found it just happens when client requests the metadata from group repo, the PR is to keep the origin path in EventMetadata and set it during tracking.

Seems only the GET method is covered. Should we also check the HEAD and PUT methods?
We don't track HEAD in folo, so it's ok to ignore the HEAD, for PUT, we can ask @pkocandr to confirm if this is the same case with GET.

And another little nitpick: seems all the REST doc description(@APIOperation) is confused, maybe we should consider to give some better docs.
Yeah, seem so. : ) Will tweak them in another PR.

Checked the folo records of the build mentioned in the jira, there is such issue for PUT request, I will merge this and do test on devel. thanks.

Checked the folo records of the build mentioned in the jira, there is such issue for PUT request, I will merge this and do test on devel. thanks.


ruff check --fix changes Jupyter notebook output data

Notebook to reproduce:
ruff-bug.ipynb.json
Script demonstrating the bug:
$ cp ruff-bug.ipynb ruff-bug-reformatted.ipynb
$ ruff check --isolated --fix ruff-bug-reformatted.ipynb
$ diff ruff-bug.ipynb ruff-bug-reformatted.ipynb

Output:
Found 1 error (1 fixed, 0 remaining).
9,10c9
<     "# unusued import, to give ruff something to fix\n",
<     "import os"
---
>     "# unusued import, to give ruff something to fix"
72c71
<           0.022936753928661346,
---
>           0.022936753928661343,
98c97
<           0.16423597931861877
---
>           0.16423597931861875
147c146
<           0.022936753928661346,
---
>           0.022936753928661343,
173c172
<           0.16423597931861877
---
>           0.16423597931861875
223c222
<           0.022936753928661346,
---
>           0.022936753928661343,
249c248
<           0.16423597931861877
---
>           0.16423597931861875

All fixes except the unused import are applied to cell output which should never be reformatted.
Tested with ruff 0.3.2.

Thanks for the report. Ruff does't look at the outputs field, it only updates the source field which is where the source code is which makes this bug a bit weird. It could be that the deserialization is causing this change. I'll need to look into it.

Hi @dhruvmanila , and thanks for looking into this. Is this something that can/will be fixed on the Ruff side? Maybe there is some workaround to prevent this behaviour from happening while the fix hasn't arrived?

I'm not sure. I need to look at it in a bit more detail. I plan to do so this week.


ACHTUNG: Check Oracle documentation after Uni, before v12 hits mainnet

The oracle has 🔪 powers.
To avoid them being used on ususpecting validators (like Notional on Umee, for example) we should carefully go through the docs after collating experiences from Uni validators.

not relevant at this time


Add jscs jsdoc

WIP
Don't know if we still want to add jsdoc checks but if we do... jscs-jsdoc.
Added jscs-jsdoc, updated grunt-jscs to 1.0.0 and jscs to 1.8.1.
I know Ngdoc is a bit different so not sure if it will work consistently. However @param should be the same?
Not sure if I should remove the fsevents from npm-shrinkwrap.json.
I did
npm install jscs-jsdoc
npm shrinkwrap --dev
./scripts/clean-shrinkwrap.js
Adding jscs rules:

checkParamNames to match the docs parameter names.

Could also standardize parameter names like expression vs expr that are used a lot.

requireParamTypes to make sure there is a {TYPE}.

can also look at some of the different types used - https://gist.github.com/hzoo/1c9c8443b7e495f63a8d

No extra errors with jscs (fixed ~25 style errors for each rule).

There was a problem with src/ngMessages/messages.js  line 349
where jscs had a problem with
* @param {string} ngMessage a string value corresponding to the message key.
since the parameter is the parameter of the directive and not a function so just did
// jscs:disable jsDoc for now.
Not sure why it didn't have a problem with directive ngMessages but had one with ngMessage - maybe have to check some of these manually.
cc: @caitp

Going to make a new PR just to update jscs.


Add more tracing events

[ ] request
[ ] request body
[ ] response
[ ] response body

separately, we should also enable tracing inside of sigv4:

[ ] canonical request
[ ] string to sign

don't need to do all of them, but adding a couple would be a good tour of the code


🎉🍾🍻 Release SmoothCrawler-Cluster v0.1.0

Target

Release SmoothCrawler-Cluster v0.1.0.

Modify Code Scope

Source Code

First official release (v0.1.0).

Meta-data objects in cluster
Utility modules

Converter about serialization and deserialization
Operations with Zookeeper

Election --- base class and Index election
Crawler --- ZookeeperCrawler

Testing Code

Add unit test.
Add integration test.

Documentation

Add docstring of each modules, classes, functions and global variables.
Add documentation as RST format with Google style.

Scripts

Bash for CI.
Bash for development.

Configuration

GitHub Action workflows.
Code style tool PyLint.
Documentation CI ReadTheDoc.
Project management tool Poetry.
Service for recording and analyzing code coverage of testing CodeCov.

Effecting Scope

Official release to PyPI and releasing package documentation to ReadTheDoc.

Description

First releasing package SmoothCrawler-Cluster.

Ignore the testing fail of development tool Tox. It would fix it in next version.


Ion Slides not functioning after navigating back to them

Ionic version:  (check one with "x")
[ ] 1.x
[ X] 2.x
I'm submitting a ...  (check one with "x")
[X ] bug report
[ ] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
The home page has a simple 3 slide slider. The button on each slide will change the page to a details screen. If you navigate back to the home screen using the header navigation, the slider will function again. If you use the ion button to go back (via this.navCtrl.push(HomePage), the slider will NOT function. This only appears when running the app in the local browser NOT in device mode. In device mode the slider will function correctly. In my advanced case, I am able to jump to a specific slide, but no swipe interaction is possible.
Expected behavior:
The Ion Slider would accept the ability to slide under user control
Steps to reproduce:
Verify the base ion slide is functioning
Navigate to another page.
Navigate back to the page with the slider via navCtrl.push()
Verify the ion slide is NOT functioning
Related code:
Here is the sample repo:
https://github.com/chrisgriffith/ionic-slider-bug
Other information:
No errors are listed in the console. Brandy has reproduced the issue.

I have similar issue when trying to navCtrl.push another page that contains another slider, all subsequent push have issues on local browser.  On device or emulator, they worked as expected.

It' funny cause I am having this problem when switching tabs but only on Android device and not on browser with ionic serve
I've posted the details on the forum

I'm still facing this issue in 2.2.1, Refer to this plunker: http://plnkr.co/edit/RjnMlZ?p=preview

I'm also seeing this behaviour.

#12166  -- Looks similar issue

So the short explanation of this bug is that it is deeply ingrained in both how Swiper (the slides library that Ionic is using) and how Ionic’s navigation works.
When you push() a page onto the navigation stack, the previous page still exists in the DOM. Ionic applies the following styles to the previous page: display: none, visibility: hidden, opacity: 0, as well as setting the previous page’s z-index to be place it behind the newly pushed page. The most important one here is display: none, since this prevents the previous page from taking up any space in the DOM.
Now, if the previous page has slides, and the current page rotates, the slides are still listening for this rotation event and will initiate a resize. This resize also includes repositioning slides on the previous page.
Swiper dictates the position of the slides based on the size of both the slides and the container. When the page and all its children are set to display: none, the slides and their container have no height or width values, so when the slides resize, the new position is incorrect.
Since popping the current page off of the nav stack and returning to the previous page doesn’t trigger the slides to resize or update in any way, this results in the slides being misaligned when returning to the slides page.
The simplest solution for this bug would be to have Ionic automatically trigger Swiper's onResize() event when navigating back to a page with slides, this wouldn’t require much or any change to the underlying Swiper code, probably just exposing the onResize() function that swiper-event.js contains. Even better would be for the slides to unsubscribe to their event listeners when navigating away too.
I’ve developed a workaround though, that would only involve a one-line code change in the Ionic source code.
Ionic exposes an update() function for their slides that can be called manually. Documentation here.
/**
 * Update the underlying slider implementation. Call this if you've added or removed
 * child slides.
 * @param {?=} debounce
 * @return {?}
 */
Slides.prototype.update = function (debounce) {
    var _this = this;
    if (debounce === void 0) { debounce = 300; }
    if (this._init) {
        this._plt.cancelTimeout(this._tmr);
        this._tmr = this._plt.timeout(function () {
            update(_this, _this._plt);
            // Don't allow pager to show with > 10 slides
            if (_this.length() > 10) {
                _this.paginationType = undefined;
            }
        }, debounce);
    }
};

This update function calls the Swiper update() function: update(_this, _this._plt);
However, looking at the Swiper update function indicates that this update function is meant to take 3 variables:
/**
 * @param {?} s
 * @param {?} plt
 * @param {?=} updateTranslate
 * @return {?}
 */
export function update(s, plt, updateTranslate) {   ...

This means that when you manually call this.slides.update() on your page, the position of the slides doesn’t actually change, since Ionic’s update() function doesn’t pass through this updateTranslate boolean to indicate that the translation of the slides should update as well.
If I am manually calling update on Ionic slides, I would expect that it would also recalculate the positioning of the slides, and would change the update call within this.slides.update() to be update(_this, _this._plt, true);.
With these changes to the Ionic source code, users that are experiencing this issue can call:
public ionViewWillEnter() {
    this.slides.update();
}

to get rid of the symptoms that they are experiencing as part of this bug.
Additional Info:
After digging into the Swiper code within Ionic, I can provide some background info on this issue. Swiper doesn’t have a sense of ‘rotation’ per se, Ionic has provided an ‘onResize’ event within their ‘swiper-events.js’, which is triggered on rotation or when the browser size changes. (You can take a look at the Swiper resize handler code, in swiper-events.js)
Resizing invokes Swiper’s updateContainerSize, updateSlideSize, and, if you are not using ‘freeMode’, the slideTo functions. These functions all illuminate very specific issues about this bug. All three of these functions live in the main ‘swiper.js’ file.
updateContainerSize() sets the s._renderedSize variable that is used in later calculations. s._renderedSize is based on the width or height of the swiper DOM element, or its containing element. Assuming that you let Swiper dictate its own size based on the items that are contained within a slide, s._renderedSize will always be based on its container.clientWidth or container.clientHeight.
updateSlideSize() sets the contents of the s._snapGrid array (lines 449-468). These lines iterate over all the slides and stores off their position. The slide position is based on the size of the slide, as determined by either s._renderedSize or the left and right margins of the slide in the DOM, the offset applied to the slides, and the space between slides. Basically, if the slides or their container have no width/height, their positions in the s._snapGrid array are all incorrect.
slideTo(), uses s._snapGrid to translate the .swiper-wrapper element on the screen. It does this by pulling the value from the s._snapGrid for the slideIndex it is translating to, and then setting the .swiper-wrapper’s transform: translate3d(….); based on this value.
On the Ionic side, Ionic’s navCtrl object holds a list of _views, each of these _views has a _isHidden variable that is set within a function called _domShow(). This function is the one that applies the [hidden] class to the page that is navigated from. This [hidden] class is what applies display: none !important;.
Also, the event subscriptions are applied to the Ionic Slides in the _initSlides() function, stored in the _unregs array, the Swiper events are dictated by Swipers initEvents() function, which is called by _initSlides().
See also: #11216 and #12166

I think its late for a solution but it might help someone... I found a quick workaround for this issue after reading @kpoconnor comment, it was a thorough analysis of the problem i must say.
Now the workaround which i did is quite funny but works.
//Stop the slide autoplay when the view will leave
public ionViewWillLeave(){
 this.slide.stopAutoplay();
}

//Start the slide autoplay when the view will enter
public ionViewWillEnter(){
 this.slide.startAutoplay();
}

I don't know if this is a acceptable solution or not but as long as it works it's great for me... #Cheers

#12213

https://github.com/ionic-team/ionic/issues/14391

Has anybody found a workaround or fix for this? @sagarkhan solution does not work for me, since im using slides in a custom child component.

@m1nka if you are using slides in a child component can you try passing an event to the child component from parent's component ionViewWillLeave() and ionViewWillEnter(). On receiving that event, the child component will start and stop autoplay accordingly?


OUIA safe tags for tables

Implements https://issues.redhat.com/browse/OCPADVISOR-24.
Use the data-ouia-safe tag and ouiaSafe PF component property in each table in Advisor (recs list, clusters list, affected clusters list, cluster reports list). The tag is set to false if there is an animation in a table (= a table is in the loading state); otherwise is true.

@RedHatInsights/team-interact, please, take a look 🦝

:tada: This PR is included in version 1.5.5 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Blueprintjs + PDF.js (by way of react-pdf) causes error

Configuration:

Web browser and its version: Electron v1.6
Operating system and its version: Mac OSX
PDF.js version<EMAIL_ADDRESS>copdependency of<EMAIL_ADDRESS>
Steps to reproduce the problem:
https://github.com/nschwan94/electron-react-boilerplate on branch blueprintjs_reactpdf_issue, install packages and execute dev npm script. When @blueprintjs/core is imported in Home.js component error is thrown, when it is not imported there is no error.
Error is:
Uncaught TypeError: Cannot read property 'PDFJS' of undefined
    at Object.defineProperty.value (pdf.js:13270)
    at __w_pdfjs_require__ (pdf.js:45)
    at Object._typeof (pdf.js:7416)
    at __w_pdfjs_require__ (pdf.js:45)
    at Object.defineProperty.value (pdf.js:88)
    at pdf.js:91
    at webpackUniversalModuleDefinition (pdf.js:18)
    at Object../app/node_modules/pdfjs-dist/build/pdf.js (pdf.js:25)
    at __webpack_require__ (bootstrap 53283a0…:686)
    at fn (bootstrap 53283a0…:105)

https://github.com/wojtekmaj/react-pdf/issues/90

I have this error without any involvement of BlueprintJS. Any advice? Does rolling back to a different version do anything worthwhile?

Works for me (kind of, but requested pdf is not avaialable):

More information needed.

Closing until more information is provided since it cannot be reproduced.

the error occurs when using yarn, but it doesn't occur when using npm.


Fix #63: Fix serialization errors

Changed all of the serialized fields to have a private setter. There is a potential for writing a custom contract resolver for working with readonly fields, but this works fine for now.

Sweet, thanks for taking care of that!


[Enhancement] scrobble based on album artist

The last.fm scrobbler on this app is great. I love the “Remove featured artists from song title” (which I think should be labeled “Remove featured artists from artist field) feature. Apple Music scrobbles are too cluttered by default and this feature helps a bunch.
Though, I’d like to be able to toggle between that feature and another one which would allow you to scrobble based on the song’s album artist. Other scrobblers already allow this (see Marvis Pro Last.fmᐩ) and scrobbles usually come off better. Specially when it comes to duet artists like Wisin & Yandel or single artists with ampersands in their names like Brown & Gammon. The current implementation would result in mistakenly scrobbling Wisin and Brown instead.

Wrong. Repository.
Cider is here

aight
also maybe shoutout the Cider repo on applemusicelectron.com so we newcomers stay in the loop


[rom-e2e] rom_e2e_bootstrap_rma

Testpoint name: rom_bootstrap_rma
Contact person: @alphan
Description: End to end test to ensure RMA mode can be activated by halting ROM execution.

This test must be run with the real ROM.
Pre-load the device into PROD or PROD_END state.
Backdoor load CREATOR_SW_CONFIG_RMA_SPIN_CYCLES and SPIN_EN.
The value for CREATOR_SW_CONFIG_RMA_SPIN_CYCLES should be small, just enough
for the DV agent to activate the life cycle JTAG interface.
Drive software strap to the RMA bootstrap value.
The test contains two iterations.
In iteration 1, do not issue the life cycle rma command. ROM should timeout on spin cycles
and automatically reset the device. Check to ensure device has reset via backdoor CSR.
In iteration 2, issue the life cycle RMA command and ensure RMA transition can be successfully
completed.

@dmcardle let's discuss this offline today

@alphan, can you advise on the best way to approach this test — GDB test or regular functest?
I'm a little unclear how to implement a few of the steps. I have some guesses, but it would be great if you could confirm whether I'm on the right track.

Backdoor load CREATOR_SW_CONFIG_RMA_SPIN_CYCLES and SPIN_EN.

Would it be sufficient to hardcode these values when I define the OTP image with otp_json()? Or does "backdoor load" imply it's done dynamically?

Yes, "backdoor load" refers to the mechanism that we use in DV. For FPGA tests please use otp_json() and friends.

Drive software strap to the RMA bootstrap value.

I figure we're talking about SW_STRAP_BOOTSTRAP, which appears to be a GPIO pin. Does it make sense to use dif_gpio_write()?

Yes, this point refers to the SW STRAP pins but this should be handled in opentitantool: Instead of applying the bootstrap strapping, we should apply the RMA strapping. You can add the new strapping to this file like ROM_BOOTSTRAP: https://cs.opensource.google/opentitan/opentitan/+/master:sw/host/opentitanlib/src/app/config/opentitan.json?q=ROM_BOOTSTRAP&ss=opentitan%2Fopentitan. References to ROM_BOOTSTRAP should demonstrate how to apply and remove that bootstrapping. I think you'll need to write a custom rust program that depends on opentitanlib for this test. Please see this folder for some examples.

issue the life cycle rma command

Can I do this with dif_lc_ctrl_transition()? The device life cycle docs indicate (1) that you cannot transition from PROD_END to RMA and that (2) this will require an RMA_UNLOCK token.

Does that mean the PROD_END variant of this test cannot work?
Is the RMA_UNLOCK token baked into the OTP? I couldn't find any examples of "RMA_UNLOCK" exactly, but I found "TEST_UNLOCK_TOKEN" and "RMA_TOKEN".

This should be done externally, @tjaychen @timothytrippel could you point @dmcardle and me in the right direction?
Also your comment regarding PROD_END is correct. PROD_END is special in the sense that it has no outgoing edges.
@dmcardle, you should be able to cover "iteration 1" by applying the RMA strapping and checking the reset reason at the next boot. The relevant piece of code starts here. For "iteration 2" we actually need to complete the RMA transition and check the lifecycle state at the next boot.

issue the life cycle rma command

Can I do this with dif_lc_ctrl_transition()? The device life cycle docs indicate (1) that you cannot transition from PROD_END to RMA and that (2) this will require an RMA_UNLOCK token.

Does that mean the PROD_END variant of this test cannot work?

I think if you are pre-loading the LC state to PROD_END the test just is making sure you cannot transition out of this; as you shouldn't be able to. Whereas when you pre-load PROD LC state, it should be possible to transition to RMA.

Is the RMA_UNLOCK token baked into the OTP? I couldn't find any examples of "RMA_UNLOCK" exactly, but I found "TEST_UNLOCK_TOKEN" and "RMA_TOKEN".

I believe the RMA_TOKEN and RMA_UNLOCK are the same thing. What is written to the lc_ctrl token CSRs is what must match the token that is placed in OTP. (others correct me if I am wrong tho)

This should be done externally, @tjaychen @timothytrippel could you point @dmcardle and me in the right direction? Also your comment regarding PROD_END is correct. PROD_END is special in the sense that it has no outgoing edges.
@dmcardle, you should be able to cover "iteration 1" by applying the RMA strapping and checking the reset reason at the next boot. The relevant piece of code starts here. For "iteration 2" we actually need to complete the RMA transition and check the lifecycle state at the next boot.

Since this test references the JTAG agent, I am assuming you want to use the JTAG interface to issue the LC transition request?
If you look at the chip_sw_lc_walkthrough_rma top-level test you should see an example to go off of when developing the FPGA test. Specifically,

the DV sequence shows how to do backdoor writes to the OTP with the *_UNLOCK tokens, and pass the same values to SW, and use the JTAG agent to drive a transition (for a certain transition), and
the device code will show how to do a transition with SW.

issue the life cycle rma command

Can I do this with dif_lc_ctrl_transition()? The device life cycle docs indicate (1) that you cannot transition from PROD_END to RMA and that (2) this will require an RMA_UNLOCK token.

Does that mean the PROD_END variant of this test cannot work?

I think if you are pre-loading the LC state to PROD_END the test just is making sure you cannot transition out of this; as you shouldn't be able to. Whereas when you pre-load PROD LC state, it should be possible to transition to RMA.

@timothytrippel @dmcardle let's leave this out of this test since this functionality is not related to ROM.

Is the RMA_UNLOCK token baked into the OTP? I couldn't find any examples of "RMA_UNLOCK" exactly, but I found "TEST_UNLOCK_TOKEN" and "RMA_TOKEN".

I believe the RMA_TOKEN and RMA_UNLOCK are the same thing. What is written to the lc_ctrl token CSRs is what must match the token that is placed in OTP. (others correct me if I am wrong tho)

This should be done externally, @tjaychen @timothytrippel could you point @dmcardle and me in the right direction? Also your comment regarding PROD_END is correct. PROD_END is special in the sense that it has no outgoing edges.
@dmcardle, you should be able to cover "iteration 1" by applying the RMA strapping and checking the reset reason at the next boot. The relevant piece of code starts here. For "iteration 2" we actually need to complete the RMA transition and check the lifecycle state at the next boot.

Since this test references the JTAG agent, I am assuming you want to use the JTAG interface to issue the LC transition request?

Correct, we would like to issue the LC transition request via the JTAG interface not using the lc_ctrl.

If you look at the chip_sw_lc_walkthrough_rma top-level test you should see an example to go off of when developing the FPGA test. Specifically,

the DV sequence shows how to do backdoor writes to the OTP with the *_UNLOCK tokens, and pass the same values to SW, and use the JTAG agent to drive a transition (for a certain transition), and
the device code will show how to do a transition with SW.

Thanks!

@alphan I'm working on iteration 1 (WIP PR https://github.com/lowRISC/opentitan/pull/16905), but I'm having trouble getting the reset reason. The bitfield result from dif_rstmgr_reset_info_get() is always zero. Even when I induce a reset with dif_rstmgr_software_device_reset(). I also tried resetting the chip from a custom test harness, which has a similar result.
I'm also a little confused by this part of the test description:

ROM should timeout on spin cycles and automatically reset the device.

I can't find the code that would reset the device after running out of spin cycles. I'd expect it to be right here, but instead it looks like control reaches .L_rma_spin_skip. I'm probably misunderstanding something!

i think you might need to use this one
There's a thread from long ago about how ROM actually clears the reset reason after reading it, so in order for downstream software to get the reason, you need to read it from where ROM stores it.

@alphan I'm working on iteration 1 (WIP PR #16905), but I'm having trouble getting the reset reason. The bitfield result from dif_rstmgr_reset_info_get() is always zero. Even when I induce a reset with dif_rstmgr_software_device_reset(). I also tried resetting the chip from a custom test harness, which has a similar result.

@dmcardle, ROM stores the reset reason in retention SRAM and clears it. You can get the last reset reason using retention_sram_get()->reset_reasons please see this snippet.

I'm also a little confused by this part of the test description:

ROM should timeout on spin cycles and automatically reset the device.

I can't find the code that would reset the device after running out of spin cycles. I'd expect it to be right here, but instead it looks like control reaches .L_rma_spin_skip. I'm probably misunderstanding something!

It's actually right there. We expect lc_ctrl to be ready unless there is an active life cycle transition. In this case, the execution would fall through beqz to unimp, then to _asm_exception_handler which resets the chip. You may want to confirm that the value of the STATUS.READY bit is 1. If not, we should chat with @tjaychen.

Ah, @tjaychen beat me to it haha :)

Aha, thank you!

Hey @msfschaffner, I made some progress after we talked, but I'm  having trouble completing the PROD-to-RMA transition. I've gotten to the point that I can connect OpenOCD to the LC JTAG TAP, but my requested transition fails with a token error. (After I set TRANSITION_CMD.START=1, I see that STATUS is 0x21 == INITIALIZED | TOKEN_ERROR.)
I'm pretty sure the problem has is constrained to token hashing because I successfully transitioned from TEST_UNLOCKED to SCRAP, which worked once I  zeroed out the transition token registers. That time, the STATUS came back as 0x5 == INITIALIZED | TRANSITION_SUCCESSFUL.
So, I've been writing the preimage to the TRANSITION_TOKEN_{0,1,2,3} registers with the following OpenOCD commands. Note that I chose a preimage of [0x99] * 16 because it's palindromic on the byte and bit levels, which enables me to punt on endianness when I build these commands.
lc_ctrl.tap.0 riscv dmi_write 0x6 0x99999999;
lc_ctrl.tap.0 riscv dmi_write 0x7 0x99999999;
lc_ctrl.tap.0 riscv dmi_write 0x8 0x99999999;
lc_ctrl.tap.0 riscv dmi_write 0x9 0x99999999;

For the postimage, I compute the cSHAKE128 digest in Python and bake a hex literal into the OTP image as SECRET2.RMA_TOKEN.
from Crypto.Hash import cSHAKE128

preimage = bytes([0x99] * 16)
hash_obj = cSHAKE128.new(data=preimage, custom=b'LC_CTRL')
digest = hash_obj.read(384 // 8)
digest_truncated = digest[-16:]
digest_int = int.from_bytes(digest_truncated, byteorder='little')
print(f"postimage literal: 0x{digest_int:032x}")

I guess I want this to do the same thing as dec_otp_token_from_lc_csrs(). It's a little confusing because that function reads 48 bytes from cSHAKE128, reverses them with a right-to-left stream operator (digest_bits = {<< byte {dpi_digest}};), and finally keeps only the lowest 128 bits — doesn't that mean the output is reversed now? In chip_sw_flash_rma_unlocked_vseq, it looks like we don't reverse the token returned by dec_otp_token_from_lc_csrs(). It flows to otp_write_secret2_partition, which scrambles and writes 64 bits of the token at a time. Am I reading that correctly?
I'm still kind of suspicious that OtpMemImg.py doesn't interpret the 128-bit postimage I'm trying to put in the SECRET2 partition the way that I think.  Is there some debug mode that would enable me to read out the contents of the partition at runtime?
I actually went ahead and tried all permutations of "truncate front or back of digest", "swap chunks of 1, 4, or 8 bytes", "read 16 or 48 bytes from cSHAKE128", and "int.from_bytes with byteorder big or little" when generating the postimage/hex literal. Any ideas what I could be missing?

Hi @dmcardle - just a quick question before digging deeper: did you make sure that the SECRET2 partition is declared as locked in the OTP backdoor image? If not, the RMA token is not sent to the LC_CTRL after OTP initialization.

Btwy, the streaming operator digest_bits = {<< byte {dpi_digest}}; only converts the big-endian byte array to a little-endian bitvector:
    bit [7:0] dpi_digest[kmac_pkg::AppDigestW/8];
    bit [kmac_pkg::AppDigestW-1:0] digest_bits;

I admit, this is a bit confusing because the function models the width that KMAC internally uses, which is wider than 128bit, and then it tosses most of it away and just outputs the lowest 128bit.

OK, I believe I just successfully transitioned from PROD to RMA via JTAG! Thank you, @msfschaffner! Both of your comments were spot on — the SECRET2 partition needed to be locked, and I was using the highest 128 bits of the digest instead of the lowest.

Time to close this now that we've merged #17029. Thanks to everyone that helped me understand lc_ctrl!


NavigationExperimental: Unnecessary rendering in NavigationView.

While I was testing out and tried to understand how NavigationCompositionExample works, I found that renderScene() was called 3 times (exactly the number of tabs) for a single view.  If you have N tabs, you will see N x N times of the debug log.  I don't quite understand it.  It doesn't seem it's necessary.
class ExampleMainView extends React.Component {
  render() {
    return (
      <NavigationView
        navigationState={this.props.navigationState}
        style={styles.tabsContent}
        renderScene={(tabState, index) => {
          console.log('index:', index);  // <<<<< This is printed 3x.
          return (
            <ExampleTabScreen
              key={tabState.key}
              navigationState={tabState}
              onNavigate={this._handleNavigation.bind(this, tabState.key)}
            />
          );
        }}
      />
    );
  }
  //...
}

The output:
'index:', 0
'index:', 1
'index:', 2

I think, the culprit is render() in NavigationView.  It runs map() over children.  But why?
var NavigationView = React.createClass({
  propTypes: {
    // todo, figure out a propType for getK
    navigationState: React.PropTypes.object.isRequired,
    renderScene: React.PropTypes.func.isRequired,
  },
  render: function() {
    return (
      <View
        style={this.props.style}>
        {this.props.navigationState.children.map(this._renderScene)}
      </View>
    );
  },
  _renderScene: function(route, index) {
    var isSelected = index === this.props.navigationState.index;
    return (
      <View
        key={route.key}
        pointerEvents={isSelected ? 'auto' : 'none'}
        style={[
          styles.navView,
          {opacity: isSelected ? 1 : 0},
        ]}>
        {this.props.renderScene(route, index)}
      </View>
    );
  }
}

The docs say NavigationView is "A simple view that will render a scene for the currently presented sub-state. The most common use-case is for tabs, where no transition is needed." Maybe @ericvicenti or  @hedgerwang knows if we can remove map() and just render the current navigationState.index?

Good catch.
The is no transition and we should just render the focused scene.
This file seems outdated to me and we should have updated it to ensure its design matches the rest of the component.
import type  {
  NavigationParentState,
  NavigationScene,
  NavigationSceneRenderer,
  NavigationSceneRendererProps,
} from 'NavigationTypeDefinition';

type Props = {
  navigationState: NavigationParentState,
  renderScene: NavigationSceneRenderer,
};

const {PropTypes} = React;

class NavigationView extends React.Component<any, Props, any> {
  static propTypes = {
    navigationState: NavigationPropTypes.navigationParentState,
    renderScene: PropTypes.func.isRequired,
  };

  render(): ReactElement {
    return (
      <View
        style={this.props.style}>
        {this._renderScene}
      </View>
    );
  }

  _renderScene(): ReactElement {
    const {navigationState} = this.props;

    const scenes = navigationState.children.map((childState, index) => {
      // @type NavigationScene.
      return {
        index,
        isStale: index !== navigationState.index,
        key: 'scene_' + childState.key,
        navigationState: childState,
      };
    });

    // @type NavigationSceneRendererProps.
    const props = {
      navigationState,
      layout: {
        height: new Animated.Value(0),
        initHeight: 0,
        initWidth: 0,
        width: new Animated.Value(0),
      },
      navigationState,
      onNavigate: this.props.onNavigate,
      position: new Animated.Value(navigationState.index),
      scene: scenes[navigationState.index],
      scenes,
    };

    return (
      <View
        style={[
          styles.navView,
          {opacity: isSelected ? 1 : 0},
        ]}>
        {this.props.renderScene(props)}
      </View>
    );
  }
}

Hi there! This issue is being closed because it has been inactive for a while.
But don't worry, it will live on with ProductPains! Check out its new home: https://productpains.com/post/react-native/navigationexperimental-unnecessary-rendering-in-navigationview
ProductPains helps the community prioritize the most important issues thanks to its voting feature.
It is easy to use - just login with GitHub. GitHub issues have voting too, nevertheless
Product Pains has been very useful in highlighting the top bugs and feature requests:
https://productpains.com/product/react-native?tab=top
Also, if this issue is a bug, please consider sending a pull request with a fix.
We're a small team and rely on the community for bug fixes of issues that don't affect fb apps.


My advice

Hi, I really like this furniture XML generator. But I hope you can develop a company XML generator and functional software XML generator.

Hi and thanks!
I'll be updating the furniture XML generator, if I decide to work on a software XML generator I'll include a link here to the repo.
If you think you can help out, feel free to submit a pull request!