Doesn't support more than two users

Hi, i saw your project its awesome.But i see it doesn't support more than two users at once, the second user is replaced with the third user when he joins new and if third with fourth, that happens so on. What can i do to have more than two users displayed?

Hello
Example provided by me is only for 2 person. If you want to connect more
peoples you have to modify example (for example by adding new video tag
when new person appears). In example (index.html) you can see that there're
only two tags with video (with id local and remote)
Best regards
2016-03-14 9:47 GMT+01:00 kishorejaladich<EMAIL_ADDRESS>
Hi, i saw your project its awesome.But i see it doesn't support more than
two users at once, the second user is replaced with the third user when he
joins new and if third with fourth, that happens so on. What can i do to
have more than two users displayed?
—
Reply to this email directly or view it on GitHub
https://github.com/mslosarz/nextrtc-signaling-server/issues/8.

--
Marcin Ślósarz


Installation?

Hi
How to install fea2?

Hi,
you need to install it from source. Clone the repo on a location on your machine first. Then, from inside the folder, run the following (you can skip the conda environment creation if you want)
conda create -n fea2 compas
conda activate fea2
pip install -e .
pip install -r requirements.txt

NOTE: compas_fea2 is a WIP so most things won't probably work...just to let you know ;)


JWT Validation policy in APIM level

# Azure documentation issue guidance
As per below code snippet it's working fine. I would like to append "tenant id"  to the issuer, like  issuer-1/tenant_id. Here how I can read tenant id from JWT to append to existing value.
Current code working fine.
<required-claims>         <claim name="iss" match="any">             <value>iss-1</value> 	   <value>iss-2</value>         </claim> </required-claims>
Expecting
<required-claims>         <claim name="iss" match="any">             <value>iss-1/tenant</value> 	    </claim> </required-claims>
<required-claims>         <claim name="iss" match="any">             <value>iss-1</value>             <value>iss-2</value>         </claim>     </required-claims>

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 248a0753-0fa7-1cc0-d13a-d378ab182e95
Version Independent ID: 7efa247a-7184-6e7f-c1f5-3ff2531df357
Content: Azure API Management access restriction policies
Content Source: articles/api-management/api-management-access-restriction-policies.md
Service: api-management
GitHub Login: @vladvino
Microsoft Alias: apimpm

@Prabhakar96-dev Thank you for your feedback! We will review and update as appropriate.

@Prabhakar96-dev If I understood correctly, you have your JWT structured such that the issuer comes in as issuer/tenant format and you want to validate it as such in the APIM?

@Prabhakar96-dev Please review the following example on how to parse a JWT in policy expressions: https://github.com/Azure/api-management-policy-snippets/blob/master/examples/Parse a JWT token using expressions.xml
Since this channel is more for driving improvements towards MS Docs and we haven't determined any changes to this documentation upon reviewing this feedback, we will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


Ability to configure Allow download and distribute when Xray is unavailable setting

Is your feature request related to a problem? Please describe.
Ensuring that the Allow download and distribute when Xray is unavailable setting is as expected and consistent across installations is tedious since it is not available in the terraform provider.
Describe the solution you'd like
A new resource (maybe artifactory_xray_settings) that has a boolean for allow_download_when_unavailable that controls this setting.
Describe alternatives you've considered
Scripting API calls. This is less than ideal since the rest of our configuration is handled by terraform.
Additional context

@bmanuel Thanks for the request, we will add this to our schedule. We will likely add new attribute allow_download_and_distribute_when_unavailable to resource xray_settings.

Hi @bmanuel, thank you for raising this ticket!
Unfortunately, we can't resolve it right away, because there is no proper API support. This call has no GET request implemented. Also, the call context is artifactory, not xray.
Adding a new resource will be problematic and a workaround would be 'hackish'.
Also, there is another way to apply these settings, by using Artifactory configuration API. Allow download and distribute when Xray is unavailable is, in fact, an Artifactory configuration, not Xray. That API has no such option either (for now).
So, I've created a feature request to extend the configuration. Once it's implemented, we will add the support to the Terraform Provider.
I suggest you please create a support ticket for JFrog to make things work faster.


latest code build failed for shadowstream module has been deleted in go-shadowsocks2 project

With 2.11-dev branch's lated code, I got below response during build process for the module has been removed in shadowsocks project.
build github.com/ginuerzh/gost/cmd/gost: cannot load github.com/shadowsocks/go-shadowsocks2/shadowstream: module github.com/shadowsocks/go-shadowsocks2@latest found (v0.1.0), but does not contain package github.com/shadowsocks/go-shadowsocks2/shadowstream

Which go version are you using?
This is a confirmed bug and has been fixed in v1.13.2.
See: https://github.com/golang/go/issues/34085

Which go version are you using?
This is a confirmed bug and has been fixed in v1.13.2.
See: golang/go#34085

go version go1.13.3 darwin/amd64

Which go version are you using?
This is a confirmed bug and has been fixed in v1.13.2.
See: golang/go#34085

shadowstream was deleted 13 days ago

hello,  any update on this issue?

I can't reproduce this problem, GOST only uses the go-shadowsocks2/core sub-package, so this buid error looks weird.
Please try to clean the module cache (go clean -modcache) then build again.

I am sorry, it's my mistake, I did use the go-shadowsocks2/shadowstream in the tuntap.go.
But as for my build works, I checked the shadowsocks/go-shadowsocks2 release history, the v0.1.0 first released on Feb. 15th, and it was released again on Feb. 20th with some new commits (also deleted the shadowstream sub-directory). So the module cache may be inconsistent.


setObservationsPolicy

Hello,
How does one set the ObservationPolicy on an AgentHost so they can view all the chats sent by every agent/player ...
I have enabled ObservationFromChat in xml, and tried to set the observation policy ENUM
to KEEP_ALL_OBSERVATIONS, but I can't seem to get the syntax right.
I know it's along the lines of --> agent_host.setObservationsPolicy( "SOMETHING GOES HERE");
I'm using Python 3.6 with Boost --> Malmo 0.37
Thanks

Nevermind, I found the solution. I was manually logging observations to a file and was missing the chats, but then checked the recording specs and the chats are in the observations.txt data dump. Either way this might help someone ...
Thanks!

@Bulbousonions13 could you please elaborate more on this? I've added ObservationFromChat to the XML but still cannot get the message in the chat box when calling clients.step. Thank you!


setup cron to publish rust nightly images

this should be relatively straight forward.

This would be much appreciated.


fix(ccls): add cuda filetype support

I used to use clangd as my language server, and today I changed to ccls. However, I found that ccls did not offer support to cuda.
In the configuration of clangd, the cuda filetype is added by default. So maybe it is better for ccls to support cuda by default?

Sorry for the  inconvenience I made, and now I amend my commit

you can change before pr commit message by using git commit --ammend command ...


Support independently add and build custom udf in Doris

*Source code:
The new directory nanmed custom_udf is used to add and build custom udf.
The directory structure is as follows:
Doris
-- be
-- custom_udf
-- fe
If user wants to add a new udf in Doris, the source code will be placed in custom_udf such as:
Doris
-- be
-- custom_udf
-- src
-- udf_samples
-- udf_sample.h
-- fe
*Build:
It can be built independently also the udf does not effect BE.
The file 'build_custom_udf.sh' is used to build udf with 2 params: --udf, --clean.
The default behavior is that building udf only.
*Output:
The dynamic link library will be placed in
Doris
-- be
-- output
-- custom_udf
-- udf_samples
-- libUdfSample.so
Change-Id: Ic8ae16d37b53a904c3ec04e25f99e63442850e5a

Changing doc file

Create a proposal first


[FeatureRequest] Support RQL-queries for the AAS and Submodel Registry APIs

What is missing?
As requested in #7 and #169 and probably more additional querying is needed.
How should it be fixed?
Instead of introducing more and more query parameter we should also (re)consider to introduce RQL-queries for the AAS and Submodel Registry.
Adding RQL would be backward compatible and does not lead to an explosion of API operations.

[x] I have signed the required Developer Certificate of Origin (DCO) already.

@BirgitBoss Do you mean this query language:
https://github.com/a8m/rql
A very simple query language is also used by OSLC:
https://docs.oasis-open-projects.org/oslc-op/query/v3.0/oslc-query.html
OSLC query is very restricted and it should be simple to implement it in different languages.

@BirgitBoss Can you provide a little more context on what "RQL" is? It's hard to conceptualize otherwise.

it is https://github.com/persvr/rql

Regarding the OSLC specification, its primary intent is to query RDF resources, which isn't the case for the Registry. In terms of simplicity, one could argue that RQL is easier to read and understand, although this may vary based on individual preferences. However, it's worth noting that using RQL typically requires less code for the same query compared to OSLC and their is not so much support on up-to-date libraries for different languages. It seems also that RQL is more used by different companies e.g CludBlue, Extra Horizon, Rollbar, ...

@waltersve Thank you for looking into OSLC query. Yes, it is primarily intented to query RDF as OSLC data integration is also based on RDF.
However, I would challenge your points regarding the compactness of OSLC queries vs. RQL. Also OSLC queries are very restricted and hence easier to implement. The whole grammar of oslc.where is as follows:
    oslc_where    ::= "oslc.where=" compound_term
    compound_term ::= simple_term (space? boolean_op space? simple_term)*
    simple_term   ::= term | scoped_term
    space         ::= " " /* a space character */
    boolean_op    ::= "and"
    term          ::= identifier_wc comparison_op value | identifier_wc space in_op space? in_val
    scoped_term   ::= identifier_wc "{" compound_term "}"
    identifier_wc ::= identifier | wildcard
    identifier    ::= PrefixedName
    PrefixedName  ::= /* see "SPARQL Query Language for RDF", http://www.w3.org/TR/rdf-sparql-query/#rPrefixedName */
    wildcard      ::= "*"
    comparison_op ::= "=" | "!=" | "<" | ">" | "<=" | ">="
    in_op         ::= "in"
    in_val        ::= "[" value ("," value)* "]"
    value         ::= uri_ref_esc | PrefixedName | literal_value
    uri_ref_esc   ::= /* an angle bracket-delimited URI reference in which > and \ are \-escaped. */
    literal_value ::= boolean | decimal | string_esc (LANGTAG | ("^^" PrefixedName))?
    boolean       ::= "true" | "false"
    decimal       ::= /* see "XML Schema Part 2: Datatypes Second Edition", http://www.w3.org/TR/xmlschema-2/ */
    string_esc    ::= /* a string enclosed in double quotes, with certain characters escaped. See below. */
    LANGTAG       ::= /* see "SPARQL Query Language for RDF", http://www.w3.org/TR/rdf-sparql-query/#rLANGTAG */

I've found some RQL examples on Bosch's documentation for querying the digital twin registry:
https://docs.bosch-semantic-stack.com/registry/find-digital-twins.html

RQL
OSLC query
Description

(twinCategory,"Machine","Device")
twinCategory in ["Machine", "Device"]
All digital twins that have a twinCategory of either "Machine" or "Device"

and(eq(twinCategory,"Printer"), eq(labels.name,"Floor1"))
twinCategory = "Printer" and labels { name = "Floor1" }
All digital twins with given twinCategory and at least one label with name Floor1

eq(digitalTwin.aspects.modelReference.urn, "urn:samm:com.bosch.nexeed.digitaltwin:aspect-model:Aspect:1.1.0")
digitalTwin { aspects { modelReference = urn:samm:com.bosch.nexeed.digitaltwin:aspect-model:Aspect:1.1.0 } } }
Twin with specific aspect model.

The main difference is that OSLC query is based on nested properties of an object while RQL uses the usual object-oriented path syntax to reference related objects.
I'm not against using RQL. I just want to show that there are other options that may also be worth investigating.

@kenwenzel It is right that OSLC queries could be compact as well. In case of RQL one difference would be that the query must not be encoded and can be used also as query parameter (where I also would recommend to use a POST request to avoid any issues e.g. URL is too long). It seems also that for OSLC ist not widely adopted and mainly used in dedicated areas where SPARQL and RDF plays also a role. In contrast, RQL (Resource Query Language) is designed specifically for RESTful resources, providing a more straightforward approach to querying REST-based systems. For me there is currently no universal query language standard for REST APIs, and I don't expect one to emerge in the foreseeable future. My primary decision factors are simplicity and commonality. In this context, RQL operator like eq or not etc. are similar to for example the once with are used in GraphQL or Google APIs which helps developer to get started. Also not defining additional topics like PrefixedName which could be misleading.


Proposal to replace util/timer.zig with Timer

Currently zbench uses util/timer.zig and nanoTimestamp to track benchmark durations.
// zbench.zig
var startTime: u64 = @intCast(std.time.nanoTimestamp());

Looking at the std library source code, I believe that Timer may be more accurate and better suited to this task.

std.time.nanoTimestamp is a calendar timestamp, something we don't need to worry about in a benchmark.
std.time.Timer is designed to be monotonic and measure durations accurately.

Thanks for bringing that up :)
I knew something slipped my mind... - I stumbled across this when doing some research for my datetime "experiement" - however forgot to bring it up here. See also #10 - std.time.Timer seems like the better choice since it explicitly calls for a CLOCK.MONOTONIC or similar.

I did a quick comparison of the original implementation that uses std.time.nanoTimestamp to one that uses std.time.Timer.

7 subsequent runs, called from a loop (external / shell)
on a Linux x64 machine 🐧
results in detail below

In summary, I'm inclined to say that there is not much difference in the results. Both variants show quiet some variation in the min/max values, sometimes also the average is off. That could for instance depend on what the operating system scheduler thinks is more important. I don't have easy access to a different OS right now, but would be excited how that comparison looks for example on 🪟 . Anyhow, I would still say that a monotonic timer is the right way to go here.

original
Test [1/1] test.bench test basic... Total operations: 404
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.667µs      (4.487µs ... 22.596µs) 4.699µs    4.824µs    12.243µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 433
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.283µs      (4.183µs ... 14.173µs) 4.264µs    4.416µs    6.821µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 387
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.566µs      (4.492µs ... 7.610µs) 4.574µs    4.733µs    7.610µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 430
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.634µs      (4.475µs ... 36.904µs) 4.573µs    4.656µs    4.733µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 427
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.697µs      (4.496µs ... 12.965µs) 4.582µs    7.698µs    8.523µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 425
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.557µs      (4.491µs ... 4.735µs) 4.573µs    4.614µs    4.616µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 435
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.558µs      (4.494µs ... 4.741µs) 4.571µs    4.720µs    4.733µs
All 1 tests passed.

using std.time.Timer
Test [1/1] test.bench test basic... Total operations: 385
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         6.197µs      (4.791µs ... 19.692µs) 6.843µs    11.391µs   19.692µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 425
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.468µs      (4.118µs ... 17.462µs) 4.452µs    4.593µs    14.200µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 422
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.312µs      (4.95µs ... 6.168µs) 4.328µs    4.486µs    5.171µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 469
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.299µs      (4.90µs ... 4.438µs) 4.324µs    4.435µs    4.437µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 470
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.323µs      (4.211µs ... 13.563µs) 4.324µs    4.453µs    4.536µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 471
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.315µs      (4.90µs ... 13.102µs) 4.323µs    4.434µs    4.437µs
All 1 tests passed.
Test [1/1] test.bench test basic... Total operations: 463
benchmark            time (avg)   (min ... max)        p75        p99        p995
--------------------------------------------------------------------------------------
My Benchmark         4.389µs      (4.109µs ... 48.488µs) 4.314µs    4.436µs    4.443µs
All 1 tests passed.

@jasperdunn  @hendriknielaender I had some fun today, setting up Zig on a Windows machine :) Turns out that we have to use std.time.Timer there, since the granularity of the CLOCK_REALTIME on Windows doesn't resolve most elapsed durations we want to measure!
bench.N = @intCast((bench.N * MIN_DURATION) / duration); (l. 264) then has a duration of zero and crashes the executable with a divide-by-zero.
If nobody wants to go first, I can make a suggestion for a Timer-based version of zBench in a PR.

@FObersteiner thank you for your thorough analysis! The comparison between the original implementation using std.time.nanoTimestamp and the one using std.time.Timer is super insightful.
I fully support the idea of migrating to std.time.Timer. If you're willing to create a PR, that would be fantastic. It sounds like a valuable contribution that will enhance the accuracy and cross-platform compatibility. I'm looking forward to reviewing your implementation.
Again, thank you for set up Zig on a Windows machine and conduct these experiments is greatly appreciated 🙌


MutabilityDetector is not thread safe

The following test fails more than half of the time on my 4 core/8 thread machine (it's an Intel  i7-4710MQ CPU).
@Test
public void concurrentMutabilityTest() throws BrokenBarrierException, ExecutionException, InterruptedException {
	final class DummyClass {
		private final ImmutableList<String> list = ImmutableList.of();
		private final ImmutableSortedSet<String> sortedSet = ImmutableSortedSet.of();
	}

	/* Configure the amount of concurrency. */
	final int threads = Runtime.getRuntime().availableProcessors() * 4;
	final int triesPerThread = 10000;

	/* We'll start analysis on multiple threads at roughly the same time. */
	final CyclicBarrier barrier = new CyclicBarrier(threads);
	final ListeningExecutorService es = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(threads));

	final List<ListenableFuture<List<Throwable>>> futures = new ArrayList<>();
	for (int i = 0; i < threads; i++) {
		futures.add(es.submit(() -> {
			/* Await the start signal. */
			barrier.await();

			/* Repeatedly run the analysis; collect failures. */
			final List<Throwable> failures = new ArrayList<>();
			for (int j = 0; j < triesPerThread; j++) {
				try {
					MutabilityAssert.assertImmutable(DummyClass.class);
				} catch (final Throwable t) {
					failures.add(t);
				}
			}

			return failures;
		}));
	}

	/* Wait for all threads to complete, collecting any failures. */
	final Iterable<Throwable> failures = Iterables.concat(Futures.allAsList(futures).get());

	/* Print the failures, if any. */
	failures.forEach(Throwable::printStackTrace);

	/* Fail if there are any. */
	assertEquals(Lists.newArrayList(failures), Lists.newArrayList());
}

When the failure occurs, the following type of stacktrace is logged:
org.mutabilitydetector.unittesting.MutabilityAssertionError:
Expected: com.example.Test$1DummyClass to be IMMUTABLE
     but: com.example.Test$1DummyClass is actually NOT_IMMUTABLE
    Reasons:
        There is a field assigned which creates a circular reference. [Field: sortedSet, Class: com.example.Test$1DummyClass]
    Allowed reasons:
        None.
    at org.mutabilitydetector.unittesting.internal.AssertionReporter.assertThat(AssertionReporter.java:48)
    at org.mutabilitydetector.unittesting.MutabilityAsserter.assertImmutable(MutabilityAsserter.java:108)
    at org.mutabilitydetector.unittesting.MutabilityAssert.assertImmutable(MutabilityAssert.java:672)
    at com.example.Test.lambda$0(AmountTest.java:69)
    at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:108)
    at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:41)
    at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

If MutabilityAssert is not meant to be used concurrently, then that should be documented. But since the default entry point is a static method, I'd argue that concurrent invocations should be supported.
My use case: I use MutabilityAssert quite extensively and run lots of unit tests in parallel, in a single JVM.
What do you think?

Great test case, it reproduced the problem on my Intel Core 2 Duo laptop. I have committed it to the "client" project, hope you are okay with the project using it.
I've known for a while that Mutability Detector is not thread safe, but the closest that's come to being documented is the name of an internal class, which I agree isn't good enough. Until MutabilityAssert can be made threadsafe, what would you consider the most effective way of documenting that? I would lean towards JavaDoc on the MutabilityAssert class, explained in detail at the class level, and pointers to the doc at the method level. Also perhaps the @NotThreadSafe annotation, described in Java Concurrency in Practice, from the FindBugs jsr305 project, probably on the class level.
The reason I haven't made a bigger deal of it in documentation already is that while I know there is thread unsafety, I wasn't sure how big a deal it would be in practice, and was adopting a Wait And See attitude. Congrats, you're the first caller! :)
Some background on the issue. To my knowledge there is only a single race condition which causes a problem. While there is a lot of internal mutability due to caching, most things that are cached are based on bytecode that doesn't change during a run, so if there is a race to calculate a result, it will be benign. However, in this case, the race condition that causes the failure is due to the implementation of a naive algorithm that detects whether there is a cycle in the types of fields of a class. For example, java.lang.reflect.Constructor has a field of type java.lang.Class and Class has a field of type Constructor. When analysing Constructor, Mutability Detector will check the mutability of the type Class, because generally, every field of an immutable object must be immutable (with caveats). If the analysis has not already completed for Class it will be done on demand. However, while answering the question of whether Class is immutable, it has to find out if Constructor is immutable, because it's the type of one of it's fields, and so it requests the analsysis. This results in a cycle, and in earlier versions would have thrown a StackOverflowException. To avoid this, the analysis "session" keeps track of the requests for an analysis, and if an analysis has already been requested for a class when asked to analyse it again, the algorithm deems that there is a cycle, and returns a result[0] immediately rather than crashing. The mutable state that tracks the requests for analysis is where the race condition is.
By tweaking the settings in your (excellent) test case, there is evidence this is the case. As well as tracking the assertion failure, I also tracked which iteration caused the failure. While it's non-deterministic as you might expect, the failures are only in early runs, in the window before the analysis of DummyClass is completed and cached. Whether there are 100 or 10000 iterations, I never saw it fail later than the 20th iteration, and tended much closer to the 0th iteration. It's also coroborated by only seeing a failure with message There is a field assigned which creates a circular reference, as you mentioned.
All that is to say: yes, Mutability Detector is not thread safe, but I don't think it's a "deep" flaw in the design, it only arises because of one small, specific aspect of design, and it's certainly not a limitation that is irrevocably "baked in".
So, what to do? The cycle detection algorithm should be made thread safe, that's pretty obvious. But until then, documentation should highlight the problem, and a workaround that allows you to run Mutability Detector in multiple threads should be identified. Hopefully you can help me out with suggestions for documentation, and I think there is an approach that will allow you to run tests in parallel in the meantime. Presuming you A) don't mind adding some classes to your source path, and replacing all current calls to MutabilityAssert (hopefully this could be a quick textual search 'n' replace task) and B) your current heap constraints can handle duplication of analysis sessions across threads. The approach uses ThreadLocal analysis sessions, meaning the cycle detection still works on a per-thread basis, but the race condition goes away, with the downside that any cached results are cached once per thread, thus using more memory. I've observed this implementation to pass the test case multiple times, while the original fails,
Three classes are needed for this, which consist of a fairly small change with a lot bit of copy/pasting to keep API and JavaDoc consistent. I've added them here. To use this, include those three classes in your code base, and replace all calls to MutabilityAssert.xxx to ThreadSafeMutabilityAssert.xxx. I think that should solve your immediate problem today, while I consider the best way to solve the problem so that existing calls to MutabilityAssert are thread safe.
How does that sound?
[0] It happens to say that the class is mutable. This is mostly due to erring on the side of caution, rather than the cycle having that impact, since it is possible to have immutable classes with a cycle.

Thanks a lot of the extended response! Of course it's no problem to c/p the test code. :)
Luckily this issue doesn't block us from using MutabilityDetector today, as it happens that we use the utility in only a single unit test in an abstract test class, which is inherited by the unit tests for the relevant model classes. So for the time being I solved the problem simply by wrapping the assertion in a synchronized block.
Very happy to hear the problem is localized to only a single part of the algorithm. I won't have time the coming week(s) to take a closer look, but if it turns out to be a hard one to fix, I might have a crack at it further down the line :)
As for documenting the thread-unsafety in the interim: I'd only go through that trouble if you don't think the code can me made thread-safe before the next release. If that's indeed so, then I guess strictly speaking a warning should be placed on any class and method that a user of the library might use as an "entry point" to the code. Sounds like quite some grunt work. Then again, it might be enough to just place @NotThreadSafe on the relevant classes; any user interested in this topic will probably open the source or JavaDoc and just search for the word "thread". If I'm right about that, then a single hint per class file will do, and the annotation is all that's needed.

Hi Stephan,
I have removed the underlying race condition and now consider MutabilityAssert.assertXXX to be thread safe. The state that tracks whether a request for a class is repeated before it's complete, thus indicating a cycle, is now done explicitly by passing that information from the point of the assertion, and is now never shared across threads.
This change will be in version 0.9.6, which I will release after addressing another issue.
In the meantime, is there any chance you could build and test the latest version, and see if your test environment passes without having to resort to using synchronized?
Many thanks again.

@Grundlefleck: Thanks for fixing this! Just tested the latest SNAPSHOT (revision 69fdbd1635ebee06bb5576d256f5722a5482d57f) and I can confirm the fix works. (To the extend that repeatedly running the tests successfully can be considered "proof", of course!)

Thanks again @Stephan202. I'll let you know when a release is available.


Bug:  data ref data.google_cloud_run_service.content_api causing setup.sh build failure

Thanks for stopping by to let us know something could be better!
PLEASE READ: This repository is dedicated to a sample application that uses multiple Google Cloud products. We will only be able to address issues related to this application, not to underlying issues in a client library or one of the products. Please visit the Support page to reach the most relevant engineers.
Problem
Running through setup.sh script with brand new GCP projects for prod, staging, and ops projects produces the following failure from terraform/environments/ops/main.tf:
Step #2 - "tf plan": │ Error: Error when reading or editing CloudRunService "locations/us-central1/namespaces/thinking-armor-prod/services/content-api": googleapi: Error 403: Cloud Run Admin API has not been used in project<PHONE_NUMBER>64 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/run.googleapis.com/overview?project=157914570064 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
Step #2 - "tf plan": │ Details:
Step #2 - "tf plan": │ [
Step #2 - "tf plan": │   {
Step #2 - "tf plan": │     "@type": "type.googleapis.com/google.rpc.Help",
Step #2 - "tf plan": │     "links": [
Step #2 - "tf plan": │       {
Step #2 - "tf plan": │         "description": "Google developers console API activation",
Step #2 - "tf plan": │         "url": "https://console.developers.google.com/apis/api/run.googleapis.com/overview?project=157914570064"
Step #2 - "tf plan": │       }
Step #2 - "tf plan": │     ]
Step #2 - "tf plan": │   },
Step #2 - "tf plan": │   {
Step #2 - "tf plan": │     "@type": "type.googleapis.com/google.rpc.ErrorInfo",
Step #2 - "tf plan": │     "domain": "googleapis.com",
Step #2 - "tf plan": │     "metadata": {
Step #2 - "tf plan": │       "consumer": "projects/157914570064",
Step #2 - "tf plan": │       "service": "run.googleapis.com"
Step #2 - "tf plan": │     },
Step #2 - "tf plan": │     "reason": "SERVICE_DISABLED"
Step #2 - "tf plan": │   }
Step #2 - "tf plan": │ ]
Step #2 - "tf plan": │
Step #2 - "tf plan": │   with data.google_cloud_run_service.content_api,
Step #2 - "tf plan": │   on main.tf line 13, in data "google_cloud_run_service" "content_api":
Step #2 - "tf plan": │   13: data "google_cloud_run_service" "content_api" {
Step #2 - "tf plan": │
Step #2 - "tf plan": ╵

Steps to Reproduce
Steps to reproduce the behavior:

Simply follow the README, create 3 separate GCP projects for prod, staging, ops.
Ensure you've retrieved the latest from the root, execute ./setup.sh

Expected behavior
Successful deployment of staging/prod Cloud Run services.
Screenshots

User environment:

OS: [e.g. iOS]
Browser [e.g. chrome, safari] n/a
Emblem Project Version [e.g. v0.5.3] 0.6.0

We need to enable the run.googleapis.com API.
We can do that in bootstrap.sh or in the ops module.
We should try using the ops module first (since IIRC we tend to prefer config lives in Terraform). If that fails, we can move it to bootstrap.sh.


Add more table functions

Added draft-safe table functions that are emitted by roblox-ts (e.g. array.join(",") emits table.concat(array, ",")

We may need another function like makeDraftSafe that is for functions which are only meant to read from the draft. Currently makeDraftSafe will always pass a cloned table to the function it wraps. This isn't always desirable since this could mean a finalized draft could return a new table without any changes made.
This applies to some of the functions added by this PR since they're just using the data found in the table and not actually making any modifications to it (table.find, table.concat)

Ah, I didn't consider the fact that getClone will cause a new table to be returned by finishDraft. Will attempt to make a makeDraftSafeReadonly function. Was considering a readonly argument to makeDraftSafe but will go ahead with a separate function for now.

Pushed changes to add makeDraftSafeReadOnly. Feel free to update the docs, didn't know how to word it.
I also removed table.move from the draft-safe functions as it's a little trickier. table.move takes in a table to copy values onto another table. So it performs a read from the first table and a set on the second table. Using makeDraftSafe would not work as makeDraftSafe only makes it safe for the first table argument. Thought it'd be easier to just completely omit table.move.

Can you update the changelog as well? Just make a new section at the top for unreleased changes and add the new functions below it.
Aside from that, this looks good! If we really need table.move in the future then we can handle it specially instead of using one of the wrappers.


Feature/aks get cluster admin credentials

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: kazurrr sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Abandoning this PR in ref to #9564


Remove redundancy across script files

Instead of having the same code for getting the wallpaper path and for blurring it in both files, it might be better to split it into functions in wpblur.sh and just call those functions from setup.sh. The script is easier to maintain this way and if one wants to modify the implementation of the aforementioned actions, one has to do it only once in wpblur.sh, without duplicating the code in both files.

This makes a lot of sence. I didn't knew that I can call functions from onther .sh file (I didn't even knew that there are functions in bash). Thanks a lot. I've tested it, and seems that everything is working as it should.


Frames are sometimes corrupted with a horizontal strip of an old frame

Required Info

Camera Model
D414

Firmware Version
5.12.7

Operating System & Version
Ubuntu 18

Platform
NVIDIA Jetson Xavier NX

Issue Description
Usually things work well, but rarely, the camera gets into a state where every few frames are corrupted in a very particular way:
The top (~ 80%) of the frame is correct, but the bottom of the frame (~ 20%) is the bottom of an old frame.
It's the same old frame that is re-hashed, over and over for the bottom horizontal strip of the frame, but only every few frames. The frames in between these corrupted ones are fine. Restarting the camera fixes it.
Has anyone seen this? I've seen it on more than one machine/camera a handful of times.

Hi @logidelic  There was a similar case in March 2020 on a Jetson Nano where the top 10% of the screen did not match up to the rest of the image, as though there was a second's difference between the timing of that top section and the rest.   Updating the SDK and reducing resolution helped in that case.
https://github.com/IntelRealSense/librealsense/issues/5986

Hi Marty,
Thank you so much for the response.
Unfortunately, even though it sounds coincidental, I believe this is a different issue:

In my case, when I see these frames, the bottom part is always from the same old frame. That same, singular, old frame gets its bottom strip re-displayed with every one of the problematic frame pulls.

It's worth mentioning that, in my experimentation I've rebuilt librealsense in CPU mode as well as in CUDA mode. I've seen the problem with both builds of the library...

Thanks!

  The differences between them are discussed in the link below.
https://github.com/IntelRealSense/librealsense/issues/2422#issuecomment-423254709

Using try_wait_for_frames().

Okay, thank you very much.  In recent cases that I have seen try_wait_for_frames() used in, it may be masking problems because it prevents errors from being thrown and crashing the program (it returns a False state instead if there is a timeout) but you can instead have a situation where the program just appears to freeze up and do nothing.

Thanks again Marty. Switched to using poll_for_frames but eventually the problem reproed again. Some more info:
Something that I suspected and I think I can now confirm: It seems that when this problem occurs, it starts as soon as we enable the stream start streaming frames . In other words, it doesn't suddenly manifest after the stream has been open for a while. I guess it is something in the stream init that (silently) goes wrong... I hope this is a good clue.
Attached is a video with an example of what I'm seeing when I have the problem. Note that (for this video) the top horizontal strip shows an old frame once every few frames.
Just to re-iterate: If I had some way of detecting this condition I'd be happy since it's so rare and I could just restart the stream in that case...
corrupt.tar.gz

I watched the video intensely carefully.  There was no obvious source of the overlay outside of the video, even taking account for the possibility that it may be copy and pasting a section from lower down the image onto the top of it.
I focused on the image that appears in the window.  It looks very much like human hair.  What's more, it seems to be moving as the frames progress, as though the head is moving.  I see a human moving at the far edge of the video.
I wondered if the RealSense camera was being pointed at the window but a webcam such as one built into a laptop screen was pointing towards the back of the human's head, and somehow the computer webcam image was intermixing with the RealSense RGB image on the video.  Is this scenario possible?

HI Marty,
Thanks for watching my video. My covid-hair is now famous. To clarify about what you're seeing in that video:

The bottom portion of the scene (the part that is not corrupt) does indeed show a human (me) on the left side.
The top strip overlay that periodically appears (every few frames) is static. I assure you that it is a portion of a single frame from the same sensor (possibly the first frame read). What's more it is in the correct position (it is not random or from another part of the frame; it is the top strip repeating itself where it originally showed up)
There's no other camera.

If auto-exposure is being used then the first frame or two tends to have incorrect exposure because the auto-exposure is settling down, so it is good practice to skip the first several frames at the start of streaming by adding code to a script to do so.
// Camera warmup - dropping several first frames to let auto-exposure stabilize
rs2::frameset frames;
for(int i = 0; i < 30; i++)
{
//Wait for all configured streams to produce a frame
frames = pipe.wait_for_frames();
}

Hi Mary, was that comment meant for another thread?

Oh yes, thanks very much for pointing it out quickly!  A case of too many browser tabs open at once.  :)

I checked the comment and it was indeed meant for you.  I was wondering whether putting such a check into your application at its launch might eliminate any 'bad' frames at the very start of the streaming.

Heh, yea, I'll experiment with what you're suggesting, but as you point out, I don't think it'll fix the real part of the problem..

Just one more note: I haven't proved it yet, but I believe that this (or something similar) is sometimes happening with the depth stream as well. The symptom in that case is that the depth numbers don't make sense. As with the above, restarting the stream fixes the issue.

If the problem only ever occurs at stream start then you may just need to reset once when the program starts.  Doing this in ROS is a good way to fix a range of errors at start-up, so it may be equally helpful in this case.
https://github.com/IntelRealSense/librealsense/issues/2161#issuecomment-408779150
If there are any log errors that are generated when the problem occurs, you could also set up a mechanism to catch any error (not just specific named ones) and do a reset if one occurs.  The error handling documentation of the SDK provides C++ code for error catching.
https://dev.intelrealsense.com/docs/librealsense-error-handling-scheme#section-types-of-errors

Regarding catching errors: We consider all exceptions to be fatal and restart everything in those cases, so I don't think this is the issue...

I wonder if it would be a possibility to use D415's left infrared stream in RGB8 color mode instead of using the RGB camera and see whether the flickering overlay still occurs.

Hi @logidelic  Do you have an update about this case that you can provide, please?   Thanks!

Case closed due to no further comments received.


[BUG] Multiline labels not working when ticks callback is used

Expected Behavior

Current Behavior

Steps to Reproduce (for bugs)

Create a line or bar chart
Add a multiline label in your labels using nested arrays e.g. [['June', '2015'], 'July']
Add an xAxes ticks callback

Context
My scale labels come in a variety of lengths. Ideally I would use the ticks callback to dynamically wrap the text where necessary. For example, in the callback I can check the length of the label text, if it exceeds an amount, I'll split the text into an array where necessary.

Environment

Chart.js version: 2.5
Browser name and version: Mac OS, Chrome Version 58.0.3029.81
Link to your project: https://jsfiddle.net/xqchpwwe/2/

Closing issue. This is not a problem with Chart.js, but a problem with my callback. I needed to check if the label was an array, then return the array.
Version 3 of my jsfiddle demonstrates the fix
https://jsfiddle.net/xqchpwwe/3/


use ip command instead of brctl

File: engine/userguide/networking/default_network/build-bridges.md, CC @mistyhacks
[bridge up]
ip link add name br0 type bridge
ip link set dev br0 up
[bridge down]
ip link del name br0

Updated the title to better reflect what the issue is about.
@Niemi if you've bested this out and know that this works, you should create a pull request to help us fix the docs 🌈


Listen Snapshot

Is there a reason why listen snapshot was removed? I searched through the existing issues and pull requests and didn't find much information about why. Was there an issue with how it worked with the cluster design?
I do have a use for it to see if a particular client is subscribed to a particular record or event.

Listening changed significantly for 2.0, and the snapshot was never introduced into the client API or spec. The idea was to be able to provide a regex and get told of all the matching subscriptions as a one off request, but it clashed with active listening as a concept so we removed it while still a concept/in beta.

I do need some way to see if a particular authenticated client is still connected, which in using multiple nodes would require checking each node for active connections.
For my use case it could be against connections and not just listeners to a particular record, although listeners would be a much smaller set.
I guess from my standpoint, regex would not really matter, it would be either a query that would return true/false if the specified client was connected, or just return the list of all subscribers to a particular event or record.
Im fine with going ahead an implementing this. Do you have thoughts on how this should work?

This was implemented via presence. Going forward you can also hook into the monitoring API in order to see what subscriptions are open.


Add Source Dataset - DOI Flow

Need
Table
source_datasets

Id UUID auto-generated
Update and create timestamps as normal
DOI unique, not required
sd_info Jsonb

Definition of Done
Enable the addition of source datasets using DOIs.

Create source-dataset form is available at /atlases/id/source-datasets/create
Source dataset form has a single field DOI, required, must be a URL.
DOI is validated on selecting "Submit"
On posting the form, the server validates the API input as well
Once validated, the server calls Crossref to look up the publication.
The publication info title, journal, publication date, and authors are extracted from the crossref API response and saved in the database as a new "source dataset" putting the DOI in its own column and crossref info in the sd_info JSONB column
in the same transaction, the source datasets id (returned from create) is added to the end of the source datasets jsonb array on the atlas.
After creation the create form shoes  the user to the update form at /atlases/id/source-datasets/id/edit
The update form shows the DOI as a link, the publication title and the publication string e.g Sikkema et al. (2023) Nat Med
Tests
Only can be executed by content admin

Complete


fix calico_apiserver pod won't start Error: unknown shorthand flag

Signed-off-by: cyclinder<EMAIL_ADDRESS>Description
fix calico-apiserver pod won't start Error: unknown shorthand flag: 'v' in -v=5

Related issues/PRs

https://github.com/projectcalico/calico/issues/6319
Todos

[ ] Tests
[ ] Documentation
[ ] Release note

Release Note

TBD

Reminder for the reviewer
Make sure that this PR has the correct labels and milestone set.
Every PR needs one docs-* label.

docs-pr-required: This change requires a change to the documentation that has not been completed yet.
docs-completed: This change has all necessary documentation completed.
docs-not-required: This change has no user-facing impact and requires no docs.

Every PR needs one release-note-* label.

release-note-required: This PR has user-facing changes. Most PRs should have this label.
release-note-not-required: This PR has no user-facing changes.

Other optional labels:

cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.
needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.

/sem-approve


Add support for Spark DecisionTreeRegressionModel

I'm trying to implement a support for Spark DecisionTreeRegressionModel.
I'm currently trying with a simple pyspark.ml.regression.DecisionTreeRegressionModel: https://github.com/QuentinAmbard/shap/blob/%2338_spark_tree_explainer/tests/explainers/test_tree.py#L257
In my implementation, when I build the tree from the spark model, I'm defining the shap self.values as being the predictions from spark tree (
https://github.com/QuentinAmbard/shap/blob/%2338_spark_tree_explainer/shap/explainers/tree.py#L819)
Is that what it is supposed to be for a regressionTree?
Something seems to be wrong and I can't find what: when I try to sum the shape values, it's completely off (https://github.com/QuentinAmbard/shap/blob/%2338_spark_tree_explainer/tests/explainers/test_tree.py#L269)
Am I forgetting something else ?
Thanks !

Ok I fixed it for the DecisionTreeRegressionModel, it was a bug in the test. I still need to work on the GBTClassifier which isn't working properly (wrong shape values, it's using DecisionTreeRegressionModel under the hood, will keep you updated...)


Adding masterkeyfile decryption with domain backup keys

adding masterkey file decryption with domain backup keys (PVK file)

thank you, I'll have to reject this but as discussed please send a new PR


[Feature] Provide configuration for floating terminal title

Hi, thanks for the awesome plugin!
I didn't find any way to configure the title in a floating terminal.
I'd like to avoid trimming to see the whole command and also change colors.

I'd also like to be able to customize the color. The rainbow coloring can make it a bit difficult to read depending on the editor color scheme.

There is a refact PR I am working on blocking title updates. Will back to this once that one resolved

ray-x, I'm using navigator plugin. How to disable this rainbow title and make it as usual?


Date validation passing for grater year value than 9999

Laravel Version: v5.8.24
PHP Version: 7.3.6
Database Driver & Version: MySQL 8.0.16

Description:
I am using Laravel 5.8 and trying to validate a date field. The name of the field is date_of_birth and the validation is like the following,
$validatedData = $request->validate([
    'date_of_birth'     => 'date|before:today',
]);

I was using only date rule but when it failed to validate i was trying with date|before:today.
Both of the date rules are failing to for any year grater than 9999. The validation i passing as success and MySQL is showing the error as an invalid date.
Steps To Reproduce:

Add a date field and submit any date grater than 9999
Set validation rule  as date|before:today
The validation will be passed and MySQL will show you an error

#28138

Please see the issue above.


[DO NOT MERGE] Enable A/B education redirects from JavaScript-powered browse pages

Ensure that when a user clicks on 'Education and learning' from /browse, they are redirected to the new taxon page if they are in the B bucket.
https://trello.com/c/D7QsJmAy/329-redirects-to-the-new-navigation
Before merging:

[ ] Use the A/B testing gem to simplify the HTTP_GOVUK_ABTEST_EDUCATIONNAVIGATION checks
[ ] Merge #232 and rebase this PR on master

I'm not very keen on all the hard-coded "education" strings in this code - even once the A/B test is removed, we'll (presumably?) be leaving the redirects in place from the old to the new navigation. At that point, it seems wrong for "education" to be hard-coded into the controller and "/browse/education" to be hard-coded into the JS which handles the browse page links.
Would it be better to add another type of link to the content store, named something like new_navigation_redirect? Then we could use it store the redirect from /browse/education to /education. @tijmenb and I talked about doing this for topic pages, but it might make sense here, too. It would make it simple to start redirecting other themes as they're added to the taxonomy, because we'd just make a config change and push it to the content store rather than updating hard-coded theme names in collections.

Closing: replaced by #249.


Removal of some functions from Block

Problem description
As we are now implementing Topics and mapping process , we have some functions in existing Blocks, which are not needed.
Requirements
We need to remove all the functions from the existing Blocks, which are not needed after implementing Topics and mapping.
Definition of done
Functionality needs to be working after functions are removed.
Acceptance criteria
Expected functionality to be working.

https://github.com/hashgraph/guardian/pull/682

This ticket is closed on April 5th


Recognize r'' literals as Python does

Issue Type: Feature Request
The r'' format shows the string literal as normal, i.e. using '' as escape characters.  It should show them as Python interprets them as exact literals.  For instance, in file paths, the backslashes show the character following them as escaped if it is a meaningful escape sequence:

Extension version: 2022.8.0
VS Code version: Code 1.68.0 (4af164ea3a06f701fe3e89a2bcbb421d2026b68f, 2022-06-08T11:44:16.822Z)
OS version: Windows_NT x64 10.0.19043
Restricted Mode: No

We don't control syntax highlighting for Python files. That comes from either VS Code which gets it from MagicPython or semantic colouring from Pylance. It's best to open an issue on one of those two repositories.


Fix erroneous top/left clipping in composite #2571

#2571 Fixes bug where certain input values for top/left parameters
in composite can conflict with clipping logic, resulting in
inaccurate alignment in output png. Adds logic to run check
which determines if clipping needs to be applied.
Issue #2571

Coverage remained the same at 100.0% when pulling ce5618b78f020d812de23d60a95ca0c4a1c7c55d on SHG42:SHG42_composite_clipping_fix into 68ccba8f74191bd06ad64edd615416c638617f3b on lovell:master.

Thank you for the PR. If you're able to add a unit test to test/unit/composite.js with an example scenario this change fixes, that would be amazing.

Hi, sure! I'm not familiar with unit tests yet, so I'll do some reading on it and get back to you when I've taken a crack at it.

Hi, I'm not entirely sure how to tackle this unit test, if you have a moment could you clarify the process for me? I've reviewed the unit test file you linked, and I've done some reading on Javascript unit testing as a concept, but I'm not sure how to apply that to this specific issue, since I only discovered the bug due to a very particular set of circumstances in my project. How would I write a test that demonstrates this fix?

Here's a possible test case that checks colour of the top-left pixel after compositing a 2x2 blue over a 2x2 red image at an offset of 1+1.
The current version of sharp will incorrectly clip the offset and produce a top left pixel that is blue, but with the change in this PR it should be corrected to red (as only the bottom right pixel should be blue).
   it('Allow offset beyond bottom/right edge', async () => {
    const red = { r: 255, g: 0, b: 0 };
    const blue = { r: 0, g: 0, b: 255 };

    const [r, g, b] = await sharp({ create: { width: 2, height: 2, channels: 4, background: red } })
      .composite([{
        input: { create: { width: 2, height: 2, channels: 4, background: blue } },
        top: 1,
        left: 1
      }])
      .raw()
      .toBuffer();

    assert.strictEqual(red, { r, g, b });
  });

If this works, please feel free to add it as a test case to test/unit/composite.js.

Hi, I keep getting a test failure on that. Just to make sure, should I be adding it at a specific line in test/unit/composite.js? I tried adding it inside describe('composite') after describe("validation"), and I also tried it inside describe("validation") after it('invalid gravity') just to be sure. I also tried both placements with both npm run test and npm run test-unit. Did I miss a step in the testing process? I'm also curious why this test uses async/await when the rest of the unit tests in the file don't?
This is the error I get:
 AssertionError [ERR_ASSERTION]: Values have same structure but are not reference-equal:

{
  b: 0,
  g: 0,
  r: 255
}

Sorry, try deepStrictEqual rather than strictEqual - the docs for these are at https://nodejs.org/dist/latest/docs/api/assert.html
I'm slowly moving tests to using async/await where it makes sense to do so as I find it usually simplifies the flow, makes the intent clearer and offloads more error handling onto the test runner.

Thanks, that worked! Gonna go ahead and add it to the test file.

Landed via commit https://github.com/lovell/sharp/commit/34a2e14a144b8768f326751a88c81c0e2d19c59b


Error I18N.West

Console say its not possible find that dependency, Could not find dependency: I18N.West, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=0738eb9f132ed756 Failed to load uEconomy, unloading now...

You need to get a library dll called I18N.West.
You can download it from:
https://www.mediafire.com/file/2p5rlqhk41arpcf/I18N.West.dll/file
Put it to /Rocket/Libraries

Could not find dependency: I18N.West, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=0738eb9f132ed756
Could not find dependency: I18N.West, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=0738eb9f132ed756
Failed to load Uconomy, unloading now... :System.IO.FileNotFoundException: Could not load file or assembly 'I18N.West, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies.
File name: 'I18N.West, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=0738eb9f132ed756'
at fr34kyn01535.Uconomy.Uconomy.Load () [0x00006] in <57bf67bbeec0488f801a3ad0568633b4>:0
at Rocket.Core.Plugins.RocketPlugin.LoadPlugin () [0x00033] in <466fa14d466749559a64a11ae8acbc60>:0
Same problem bro, the plugin already have one in the folder when i downloaded uconomy, but seems that dont work, any help?

Fixed in the latest build


feature: enable shell based bash multi-cluster testing

Feature Description
Now that we are switching to ginkgo based e2e tests, we still need to keep a shell script based test.  This is going to be it.  We'll keep only the basic multi cluster test without all the extensions made in the update-delete.sh script.
Proposed Solution
See feature description.
Want to contribute?

[X] I would like to work on this issue.

Additional Context
No response

@effi-ofer I want to try doing this a little differently. Can I take it ?

@effi-ofer I want to try doing this a little differently. Can I take it ?

It's all yours @ezrasilvera .

We need to retain at least one example of how a contributor issues shell commands to exercise their own local copy and version of the system (this is importantly different from documenting how a user uses a release). That is what we have now: there remains just one E2E test written in bash, the basic multi-cluster distribution test. We should keep that.
I think this issue has been addressed.


v3.0.3 disappeared from Docker Hub

I'm using v3.1.5 now since it was fixed https://github.com/jmartin82/mmock/issues/140
But it looks like you removed v3.0.3 from docker hub that it was the one that I was using before, just letting you know

Fixed, sorry for all the mess 🙏


Mint records with DataCite-like provider

Confirmation is needed on this task:
Implement and integrate minters to generate internal record persistent identifiers (pid_type=recid). Rather than legacy record identifiers, random 10-character alphanumeric string (with checksum) should be used.

[x] implement provider (or should the provider be defined in invenio-pidstore?)
[ ] use provider in minter and integrate minter to creation flow. (means deciding on using invenio-deposit or postponing that usage even further...)

This is the task that will finally connect base32-lib functionality with record minting (via invenio-pidstore).

Did it in invenio-pidstore mostly.

@fenekku Shall we link each point's PR (So we only have issues in the board?) I beleive the first item is https://github.com/inveniosoftware/invenio-pidstore/pull/125, no?

Yes, done.


TO: LUA Plugin Script Configuration Improvements

Right now, the LUA script deployment process is painful. It involves having config mgmt deploy the script to the (hopefully correct) edge nodes, and then adding a raw remap rule to the DS to enable the lua plugin and point to that script which has already been deployed.
We need to make this process easier so that LUA scripts can be added to services using the standard configuration process.

@ryandurfey
@MattMills
@ashish-timilsina

@rob05c - any thoughts on this? how would this relate to t3c?


Bump deasync version

Bump deasync version to latest (which includes prebuilt binaries for the latest node LTS release (16x))

This change won't affect anything in this module, but will make it easier to use this module in a dockerized environment where the required build utils needed to build de-async from scratch are not available).

Ignore - I had a lock file which was interfering with my setup.


Support only standard jsdoc annotation casing

It doesn't really add anything but inconsistency.
Would be a breaking change, so we should just show the warning now and stop supporting it with #365.

JsDoc itself is not case sensitive, as you can see here: https://github.com/jsdoc3/jsdoc/blob/master/test/specs/jsdoc/tag/dictionary.js#L125 . Therefore I think we should not force this but leave it up to the user to decide.


cmd/go: using go list -json=, EmbedFiles affects the presence of CompiledGoFiles, Export fields

Discovered while debugging a problem with go/packages, but minimized below. Observe that the presence of the EmbedFiles field in go list -json affects the presence of the CompiledGoFiles and Export fields.
This example was run from a workspace checked out to<EMAIL_ADDRESS>This appears to affect many but not all packages. In this case ./pkg/kubelet/container does not have any go:embed directives, but perhaps this is related to a package in its transitive dependencies.
[kubernetes]> go list -e -json=Name,ImportPath,CompiledGoFiles,Export -compiled=true -export=true -find=false -- ./pkg/kubelet/container
{
        "ImportPath": "k8s.io/kubernetes/pkg/kubelet/container",
        "Name": "container"
}
[kubernetes]> go list -e -json=Name,ImportPath,CompiledGoFiles,Export,EmbedFiles -compiled=true -export=true -find=false -- ./pkg/kubelet/container
{
        "ImportPath": "k8s.io/kubernetes/pkg/kubelet/container",
        "Name": "container",
        "Export": "/home/rfindley/.cache/go-build/2f/2fbdb57edbec5ac55ec09a4e2eef9b20c2c354a33d7d953670540b41bb02e724-d",
        "CompiledGoFiles": [
                "cache.go",
                "container_gc.go",
                "helpers.go",
                "os.go",
                "ref.go",
                "resize.go",
                "runtime.go",
                "runtime_cache.go",
                "runtime_cache_fake.go",
                "sync_result.go"
        ]
}

/cc @bcmills

CC @matloob as well.

The issue was filed before that CL. I will test at tip and close this after confirming.

Looks like it is fixed.


Update README.md

Update readability by using bullet points for the information instead of the heading

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks

ping @TLC-10


Run with Deepspeed raise ERROR:  Gradient computed twice for this partition

Error message when trying to train using Deepspeed:
AssertionError: The parameter 255 has already been reduced.                     Gradient computed twice for this partition.                     Multiple gradient reduction is currently not supported.

If i remove "ratio" terms ,that is to say from loss = torch.mean(pos_loss - self.alpha * ratio) to loss = torch.mean(pos_loss). The program can run successfully. However, same error occur once i add "ratio" term.
I have searched the Internet but none of the solution work for me , including:

changing zero2 to zero1 not working this link
adding gradient_checkpointing_kwargs={'use_reentrant': False}  not working.Raising warning: You are using an old version of the checkpointing format that is deprecated (We will also silently ignore gradient_checkpointing_kwargs in case you passed it).Please update to the new format on your modeling file. To use the new format, you need to completely remove the definition of the method _set_gradient_checkpointing in your model. see this link
Costumize  training_step function in Trainer class and try to backwards the loss function one by one. see this link

def training_step(self, model, inputs):
        # ...
         pos_loss,ratio_loss = losses
         if self.args.n_gpu > 1:
            pos_loss = pos_loss.mean()  # mean() to average on multi-gpu parallel training
        if self.deepspeed:
            self.deepspeed.backward(pos_loss,retain_graph=True)

        if self.args.n_gpu > 1:
            ratio_loss = ratio_loss.mean()  # mean() to average on multi-gpu parallel training
        if self.deepspeed:
            self.deepspeed.backward(ratio_loss,retain_graph=False)

Raise the same error:
AssertionError: The parameter 255 has already been reduced.                     Gradient computed twice for this partition.                     Multiple gradient reduction is currently not supported
    return inner_training_loop(
  File "/root/miniconda3/lib/python3.10/site-packages/transformers/trainer.py", line 1961, in _inner_training_loop
    tr_loss_step = self.training_step(model, inputs)
  File "/root/git/Qwen-VL/orpo_trainer_general.py", line 187, in training_step
    self.deepspeed.backward(ratio_loss,retain_graph=False)
  File "/root/miniconda3/lib/python3.10/site-packages/deepspeed/utils/nvtx.py", line 15, in wrapped_fn
    ret_val = func(*args, **kwargs)
  File "/root/miniconda3/lib/python3.10/site-packages/deepspeed/runtime/engine.py", line 1976, in backward
    self.optimizer.backward(loss, retain_graph=retain_graph)
  File "/root/miniconda3/lib/python3.10/site-packages/deepspeed/runtime/zero/stage_1_and_2.py", line 2051, in backward
    self.loss_scaler.backward(loss.float(), retain_graph=retain_graph)
  File "/root/miniconda3/lib/python3.10/site-packages/deepspeed/runtime/fp16/loss_scaler.py", line 63, in backward
    scaled_loss.backward(retain_graph=retain_graph)
  File "/root/miniconda3/lib/python3.10/site-packages/torch/_tensor.py", line 492, in backward
    torch.autograd.backward(
  File "/root/miniconda3/lib/python3.10/site-packages/torch/autograd/__init__.py", line 251, in backward
    Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
  File "/root/miniconda3/lib/python3.10/site-packages/torch/autograd/function.py", line 288, in apply
    return user_fn(self, *args)
  File "/root/miniconda3/lib/python3.10/site-packages/torch/utils/checkpoint.py", line 288, in backward
    torch.autograd.backward(outputs_with_grad, args_with_grad)
  File "/root/miniconda3/lib/python3.10/site-packages/torch/autograd/__init__.py", line 251, in backward
    Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
  File "/root/miniconda3/lib/python3.10/site-packages/deepspeed/runtime/zero/stage_1_and_2.py", line 899, in reduce_partition_and_remove_grads
    self.reduce_ready_partitions_and_remove_grads(param, i)
  File "/root/miniconda3/lib/python3.10/site-packages/deepspeed/runtime/zero/stage_1_and_2.py", line 1412, in reduce_ready_partitions_and_remove_grads
    self.reduce_independent_p_g_buckets_and_remove_grads(param, i)
  File "/root/miniconda3/lib/python3.10/site-packages/deepspeed/runtime/zero/stage_1_and_2.py", line 928, in reduce_independent_p_g_buckets_and_remove_grads
    self.reduce_ipg_grads()
  File "/root/miniconda3/lib/python3.10/site-packages/deepspeed/runtime/zero/stage_1_and_2.py", line 1382, in reduce_ipg_grads
    assert self.params_already_reduced[param_id] == False, \
AssertionError: The parameter 255 has already been reduced.                     Gradient computed twice for this partition.                     Multiple gradient reduction is currently not supported

Do you have any good advice on this problem? Thanks you! @jiwooya1000

for method 2, i tried downgrade transformers from 4.38.2 to 4.32.0, the warning become:
 /root/miniconda3/lib/python3.10/site-packages/torch/utils/checkpoint.py:429: UserWarning: torch.utils.checkpoint: please pass in use_reentrant=True or use_reentrant=False explicitly. The default value of use_reentrant will be updated to be False in the future. To maintain current behavior, pass use_reentrant=True. It is recommended that you use use_reentrant=False. Refer to docs for more details on the differences between the two variants.

Hello @iFe1er, is your issue resolved?
We were preparing the modification in ORPO Trainer to apply the following change for DeepSpeed-2.
I think this issue originates from using two forward passes for chosen/rejected in the training loop.
One workaround is to concatenate chosen and rejected into a single batch and break them after the forward pass (which I was about to implement in the trainer).
However, I recommend using FSDP as it is faster and memory-efficient than DeepSpeed-2 in my experience.

Thanks for the reply!
You are right, concating chosen and rejected in one forward pass is a valid solution. i have saw the re-implementation in trl, and i have modified my code according to the trl‘s ORPOTrainer implementation, and now i can successfully run the code.
I highly suggests you can also look into the code here. Hope it helps！ ：）


cargo-audit: 0.15.0 -> 0.15.1

Motivation for this change
Update to latest upstream release 0.15.1
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 137361 run on x86_64-linux 1

1 package built:

cargo-audit


Generate identical cache MD5 for Linux and Windows

This issue was originally created at: 2010-07-19 22:42:49.
This issue was reported by: 3dknut.

3dknut said at 2010-07-19 22:42:49

As of r5102, using the CacheDir function results in files being pushed with different MD5s on Linux and Windows. This is due to file paths using slashes on Linux and backslashes on Windows. Targets with no environment differences should be pushed to the same cache MD5 on both platforms.

3dknut said at 2010-07-19 22:44:07

Created an attachment (id=774)
Patch to replace backslash with forward slash when calculating cache MD5

gregnoel said at 2010-08-08 12:53:35

Bug party triage.  Requires release notes since not fully backward compatible.  Hold for 3.0 since that's the next time incompatible changes are allowed.

3dknut attached cross_platform_cache_md5.patch at 2010-07-19 22:44:07.

Patch to replace backslash with forward slash when calculating cache MD5

Copying over a comment from duplicate #2870 which originally proposed the same simple (on-liner) fix:

Unfortunately, the fix I proposed is not enough: different versions of python on different platforms have different executor.get_contents() values. It's the same for trivial actions, but differs for more complex ones. I didn't dig very deep into that issue, maybe it's worth investigating. For now to make use of shared cache you have to either disable adding executor content to cache signature or to make your action function trivial (for example, by delegating all work to another function right away).

This topic is mentioned in #1908 as well.

Hmmm, perhaps this is fixed in the codebase?  The proposed patches show modifying a line sigs.append(self.path), but in the current code that line looks like sigs.append(self.get_internal_path()) which suggests to me maybe it's no longer using an os-dependent path string?

Assigning to self so I remember to test this.

Some research here: using the existing testcase test/CacheDir/multi-targets.py, which doesn't create compiled code, so the sigs could reasonably end up the same. I've had matches, and non-matches - the compiler version needs to be the same for there to be any hope.  The path to the target is not the problem, however the current node's signature can differ. This is now in a helper function get_contents_sig, but the relevant line is still the same:
        result = self.contentsig = hash_signature(executor.get_contents())

Along the way, the action's get_presig and get_contents methods are called and that produces a bytearray - we know these differ as we have to update things in ActionTests for every new Python feature release.
I still don't have a large body of proof, will think about ways to test for lots of files. I suspect there's really nothing more to be done here, it's as good as it's going to get.


[Syphilis] CSV Bulk Results Uploader updated with new AOE columns for Syphilis

Description
Action Requested
Acceptance Criteria
Additional Context
Syphilis AOE Questions: The following information is to be presented on the screen for single-entry when the patient/participant has a positive/reactive Syphilis test result. (text below is meant as a placeholder until final confirmation is received from DHSP)
Syphilis result
[Radio button] Positive
[Radio button] Negative
[Radio button] Inconclusive

Has the patient been told they have syphilis before?
[Radio button] Yes
[Radio button] No
[Radio button] Prefer not to say

Is the patient currently experiencing any symptoms?
 (Select all that apply)
[checkbox] Female
[checkbox] Male
[checkbox] Transwoman
[checkbox] Transman
[checkbox] Nonbinary or gender non-conforming
[checkbox] Gender identity not listed here
[checkbox] Prefer not to answer

Is the patient pregnant?
[Radio button] Yes
[Radio button] No
[Radio button] Prefer not to say

[Button] Submit results

Ignore symptoms, only report the existing field of "symptomatic"

Already completed in #7809


Add back optName syntax in order to keep compatibility.

In addition to the new the majority of opt-name that lenses-go supports, also support optName format (since it was the default for some).

Did you test both right?

Tested both but I can not verify the remote endpoint since it does not support ACLS. I can confirm however that I get no syntax error


Notes navigation

Basic functionality of notes tab. Essentially does everything listed in #4 including deletion of notes. There is no fake content in notes as saving does not work. When it comes time to set up the database this will be ironed out. This could also be done before the database is implemented with some local saving. I've tested all functionality on my local machine but have not created any unit tests for this feature.
Closes #4

Looks good, nice work!


Feature Request - Maiking it availabe for JetBrains Products

Hi,
I wanted to ask if your thinking about making this plugin available for Jetbrains (e.g. PyCharm) products in the near future?

Hi @ChRen95 ! Thank you for this great suggestion! I have verified the compatibility of TDB Highlighter's source code with PyCharm / JetBrains and added some straightforward installation instructions to README. Please let me know if it works well for you :)

Hi @ChRen95 did you have a chance to test everything with JetBrains?

Hi @ChRen95 did you have a chance to test everything with JetBrains?

Yes, but unfortunately it doesn't work. To be more precise, I can't load it via TextMate

@ChRen95 Could you elaborate on which JetBrains software you are using?
In my PyCharm 2024.2.1 (Professional Edition) (from August 29, 2024) I can get it to work without issues by:

Downloading and unzipping TDB-Highlighter in my Documents directory.

Going to Settings.. > Editor > TextMate Bundles.

Clicking on the +, navigating to the root directory of the unzipped TDB-Highlighter (see below) and clicking Open.

The all-lowercase tdb-highlighter should show up on the bundles list.

After around 30s or so, both tdb and TDB extensions should be correctly recognized:

(optional) You can also adjust the color theme under Settings.. > Editor > Appearance to tune it to your liking. Numerous themes can be installed from the plugin store, too. Below is the light GitHub theme.

So it seems that during cloning if the repository it got damaged, maybe a faulty WiFi connection.
Nevertheless, it works as expected. Thanks.

@ChRen95 No problem! I'm glad it worked. I will close the issue as completed.


Is scully --help a joke ?

🗄 Docs report
Description
By using the command scully --help it explain how to use scully --help command itself and nothing others

Expected behavior
Having the liste commands available here https://scully.io/docs/scully-cmd-line/ with details.
🌍 Your Environment
Scully 0.0.99
Node 12

This is a great call out. We should fix this.

It is a yargs error really ... There are all the descriptions added to explain each of the commands, I am going to check what happened and why yargs is showing that ..

closed by #728


Minor 1.3.0 updates

replaceOne now uses projection: { '*': 0 } under the hood
made distinct much faster
added token providers
extra bug fixes, refactoring, documentation, etc.


Issues sending characteristic notify - stuck on SEMAPHOR -  What am I missing?

D (23428) FreeRTOS: Semaphore taking: name: ConfEvt (0x3ffd4698), owner: <N/A> for notify␛[0m
D (23438) FreeRTOS: Semaphore taken:  name: ConfEvt (0x3ffd4698), owner: notify␛[0m
V (23438) FreeRTOS: >> wait: Semaphore waiting: name: ConfEvt (0x3ffd4698), owner: notify for notify␛[0m

Again, seems that I am having issues with the SEMAPHOR?  Am i missing something?

There is not much info. More logs would be helpful.
Maybe this is your case:
https://github.com/nkolban/esp32-snippets/issues/628#issuecomment-417798479

Hmmm.. I am setup as a server, a client has connected to me and is sending Write messages over BLE.
I receive the WiFi messages in my BLE callback message, and I am successfully able to connect to WiFi, but it is getting stuck on a semaphor.
D (71908) BLECharacteristic: >> setValue: length=11, data=20574520474f5420495421, characteristic UUID=0d563a58-196a-48ce-ace2-dfec78acc814␛[0m
D (71928) BLECharacteristic: << setValue␛[0m
D (71928) BLECharacteristic: >> notify: length: 11␛[0m
D (71938) GeneralUtils:      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f  ----------------␛[0m
D (71938) GeneralUtils: 0000 20 57 45 20 47 4f 54 20 49 54 21                  WE GOT IT!␛[0m
D (71948) FreeRTOS: Semaphore taking: name: ConfEvt (0x3ffd4698), owner: <N/A> for notify␛[0m
D (71958) FreeRTOS: Semaphore taken:  name: ConfEvt (0x3ffd4698), owner: notify␛[0m
V (71968) FreeRTOS: >> wait: Semaphore waiting: name: ConfEvt (0x3ffd4698), owner: notify for notify␛[0m

This is how I am setting up my Task:
class bleCharacteristicCallback: public BLECharacteristicCallbacks
{
	void onWrite(BLECharacteristic* pCharacteristic)
	{
		std::string msg = pCharacteristic->getValue();
		ESP_LOGI(LOG_TAG, "BLE received: %s", msg.c_str());
		esp_log_buffer_char(LOG_TAG, msg.c_str(), msg.length());
		esp_log_buffer_hex(LOG_TAG, msg.c_str(), msg.length());
		pCharacteristic->setNotifyProperty(true);
		processMessage(msg, pCharacteristic);
		BLEUUID sentUUID = pCharacteristic->getUUID();
		ESP_LOGI(LOG_TAG, " BLEUUID Sent: %s", sentUUID.toString().c_str());

		pCharacteristic->setValue(" WE GOT IT!");
		pCharacteristic->notify();

	}

	void onRead(BLECharacteristic* pCharacteristic)
	{
		std::string msg = pCharacteristic->getValue();
		ESP_LOGI(LOG_TAG, "BLE received: %s, %i", msg.c_str(), msg.length());
		esp_log_buffer_char(LOG_TAG, msg.c_str(), msg.length());
		esp_log_buffer_hex(LOG_TAG, msg.c_str(), msg.length());
	}
};

class MainBLEServer: public Task {
	void run(void *data) {
		ESP_LOGI(LOG_TAG, "Starting BLE work!");

		BLEDevice::init(DEVICE_NAME);
		BLEServer* pServer = BLEDevice::createServer();
        BLEDevice::setEncryptionLevel(ESP_BLE_SEC_ENCRYPT_MITM);

		BLEDevice::setSecurityCallbacks(new MySecurity());
		BLEService* pService = pServer->createService("91bad492-b950-4226-aa2b-4ede9fa42f59");

		BLECharacteristic* pCharacteristic = pService->createCharacteristic(
			BLEUUID("0d563a58-196a-48ce-ace2-dfec78acc814"),
			BLECharacteristic::PROPERTY_BROADCAST |
			BLECharacteristic::PROPERTY_READ  |
			BLECharacteristic::PROPERTY_NOTIFY    |
			BLECharacteristic::PROPERTY_WRITE //|
			//BLECharacteristic::PROPERTY_INDICATE
		);

		pCharacteristic->setValue("Hello World!");

		BLE2902* p2902Descriptor = new BLE2902();
		p2902Descriptor->setNotifications(true);
		pCharacteristic->addDescriptor(p2902Descriptor);
        p2902Descriptor->setAccessPermissions(ESP_GATT_PERM_READ_ENCRYPTED | ESP_GATT_PERM_WRITE_ENCRYPTED);
		pCharacteristic->setCallbacks(new bleCharacteristicCallback());
		pService->start();

		BLEAdvertising* pAdvertising = pServer->getAdvertising();
		pAdvertising->addServiceUUID(BLEUUID(pService->getUUID()));

		BLESecurity* pSecurity = new BLESecurity();

		pSecurity->setAuthenticationMode(ESP_LE_AUTH_REQ_SC_MITM_BOND);
		pSecurity->setCapability(ESP_IO_CAP_OUT);
		pSecurity->setKeySize();
		pSecurity->setInitEncryptionKey(ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK);

		pAdvertising->start();
		ESP_LOGI(LOG_TAG, "Advertising started!");
	}
};

In the main, I am starting up the BLE task:
extern "C"
{
	void app_main();
}

void app_main(void)
{
	ESP_LOGI(LOG_TAG, "Starting!");
	//esp_log_level_set("*", ESP_LOG_DEBUG);
	MainBLEServer* pMainBleServer = new MainBLEServer();
	pMainBleServer->setStackSize(65535);
	pMainBleServer->start();

	ESP_LOGI(LOG_TAG, "After BLE RAM left %d", esp_get_free_heap_size());

} // app_main

Whenever I have the notify set, it gets stuck in the SEMAPHOR like above:

pCharacteristic->setValue(" WE GOT IT!");
pCharacteristic->notify();

@nkolban any suggestions?

alright. Looking there now.
While I read that, can you consider these questions:
Am I doing something wrong with memory?
I create the BLE Task, and give it a very large stack size, but then I am calling it from a BLE Callback EventHandler -  Am i crossing memory somewhere?  Should I do another global for access in other parts?

  I can set a value, and notify - doesn't get stuck and disconnect.

I tested it over 20 hours with 1-3 clients connected, every client sent write request every 50 ms and server on on write sent notification to each client. Ive got no issue, clients could connect and disconnect in mean time.
From my observation i can say its only reliable solution and its not semaphore fault.

oh wait - I was testing with commenting out the wait in the notify function.   was that the wrong test?

I think it does not matter. I did tests with normal, not commented semaphore.wait. Here is my current repository i am working on with few enhancements. It will be merged here when i decide that passed all my tests.
https://github.com/chegewara/esp32-snippets-enchancements-test

so, it worked without commenting the
// m_semaphoreConfEvt.take("notify");
I am only able to succeed if this is commented out.  I am using v3 of the library and not master, so that might make a difference also.

here you can see latest logs before my esp32 lost power from usb:
I (80333672) SampleClient: 8--> 7392
E (80333710) SampleClient: Notify callback for characteristic beb5483e-36e1-4688-b7f5-ea07361b26a8 of data Time since boot com3: 80333.615981 length 34
I (80333726) SampleClient: 8--> 7392
E (80333770) SampleClient: Notify callback for characteristic beb5483e-36e1-4688-b7f5-ea07361b26a8 of data Time since boot com3: 80333.668192 length 34
I (80333778) SampleClient: 8--> 7392
E (80333800) SampleClient: Notify callback for characteristic beb5483e-36e1-4688-b7f5-ea07361b26a8 of data Time since boot com3: 80333.720985 length 34
I (80333831) SampleClient: 8--> 7392
E (80333860) SampleClient: Notify callback for characteristic beb5483e-36e1-4688-b7f5-ea07361b26a8 of data Time since boot com3: 80333.773192 length 34

over 80000 seconds runtime.

Should be fixed in features branch.

I just tried the feature branch, but some of the updates include esp-idf library updates that I am not using. I am in 3.30101.0 (3.1.1) esp-idf.
Does the features update that fixes this require the newest library?  or can i just bring in the changes in BLECharacteristic.cpp?

I am working on master esp-idf, but if there is some issue with this branch against esp-idf v3.1 then let me know and i will see what i can do.


Update Progression.lua

Wizard Progression UUIDs

Might be good to leverage setupClassLevelEntry, with a few tweaks to the function, since we're changing the structure a bit:
local function setupClassLevelEntry(progression, mc_progression)
    local levels = {}
    levels.Progression = progression
    if mc_progression ~= nil then
        levels.MulticlassProgression = mc_progression
    end

    return levels
end

And then with that, just pass the relevant UUID values into the function, rather than defining them as strings


Migrate C2D code from kubeflow/kubeflow into kubeflow/kfctl

Should we migrate the click to deploy code (C2D) from kubeflow/kubeflow to kubeflow/kfctl?
The C2D code is here:
https://github.com/kubeflow/kubeflow/tree/master/bootstrap
https://github.com/kubeflow/kubeflow/tree/master/components/gcp-click-to-deploy
I think it makes sense to move into kubeflow/kfctl so all the Kubeflow control plane code is in one place.
@kunmingg What do you think?
Related to: kubeflow/kfctl#7

/lifecycle frozen

Closing this because we are turning C2D down so the code will be deleted.


Clarify documentation of output shape from DepthwiseConv2D

The number of output channels is the number of input channels multiplied by the depth_multiplier.

@tanzhenyu I have rebased it to try make import/copybara accept it. Please re-review.


Epic: ItemCategory Sync

For New Contributors
How to contribute
Description
Child issues

#940
#941
#942
#943

Only default values used which are registered at start, thus does not need sync.


Add implementation of gMLP

Adds own implementation of gMLP from Pay Attention to MLPs.

Thanks @SauravMaheshkar! Could you move this to "Models and Projects" please?

Hey @n2cholas, Isn't it already in the "Models and Projects" Section. It should be at the bottom.

My mistake, looks good, thanks!!


OpenCensus Core Tracing Implementation

Method and class decorators has been implemented and spans are added to inventory module.

[ ] Core tracing for gRPC server/client
[ ] Tracing Integration libraries
[ ] Spans for important methods

Closing this. Opened #2317 instead which fixes travis issues.


subsurface: 4.7.5 -> 4.8.1

Currently build is broken due to some invalid use of incomplete type 'class QHeaderView':
https://hydra.nixos.org/build/76951177/nixlog/2
CC: @bkchr @mguentner
Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Fits CONTRIBUTING.md.

Success on x86_64-linux (full log)
Attempted: subsurface
Partial log (click to expand)
-- Installing: /nix/store/3jv0q90fzwx3c6xyhb5vxqr4hl9jnyi5-subsurface-4.8.1/bin/subsurface
glibPreFixupPhase
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/3jv0q90fzwx3c6xyhb5vxqr4hl9jnyi5-subsurface-4.8.1
shrinking /nix/store/3jv0q90fzwx3c6xyhb5vxqr4hl9jnyi5-subsurface-4.8.1/bin/.subsurface-wrapped
strip is /nix/store/h0lbngpv6ln56hjj59i6l77vxq25flbz-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/3jv0q90fzwx3c6xyhb5vxqr4hl9jnyi5-subsurface-4.8.1/bin
patching script interpreter paths in /nix/store/3jv0q90fzwx3c6xyhb5vxqr4hl9jnyi5-subsurface-4.8.1
checking for references to /build in /nix/store/3jv0q90fzwx3c6xyhb5vxqr4hl9jnyi5-subsurface-4.8.1...
postPatchMkspecs

Success on aarch64-linux (full log)
Attempted: subsurface
Partial log (click to expand)
glibPreFixupPhase
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/jmjip7xgnc5p57lpsqv8anq849zr1c6q-subsurface-4.8.1
shrinking /nix/store/jmjip7xgnc5p57lpsqv8anq849zr1c6q-subsurface-4.8.1/bin/.subsurface-wrapped
strip is /nix/store/y4ymnvgxygpq05h03kyzbj572zmh6zla-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/jmjip7xgnc5p57lpsqv8anq849zr1c6q-subsurface-4.8.1/bin
patching script interpreter paths in /nix/store/jmjip7xgnc5p57lpsqv8anq849zr1c6q-subsurface-4.8.1
checking for references to /build in /nix/store/jmjip7xgnc5p57lpsqv8anq849zr1c6q-subsurface-4.8.1...
postPatchMkspecs
/nix/store/jmjip7xgnc5p57lpsqv8anq849zr1c6q-subsurface-4.8.1


playing youtube video on web.skype.com web client window..

I'm using https://web.skype.com/en/?ecsoverride=developer and I just want to simply show user a youtube video, i know that the bing music bot does this ok, im setting it like so:
new Attachment
{
    ContentUrl = "https://www.youtube.com/watch?v=tcPVzzyB7OI",
    ContentType = "video/mp4"
};

but im getting this instead:

what I might be missing?

As advised by @Stevenic I need to set the Text property of the Message like so:
var reply = context.MakeMessage();
reply.Text = "https://www.youtube.com/watch?v=tcPVzzyB7OI";
await context.PostAsync(reply);
context.Wait(MessageReceived);

The weird thing with this is that this did not work for me before and what I did next it you use the youtube url like:
https://youtu.be/tcPVzzyB7OI

as the value of the Text property and that actually shows up and web skype plays it as well. and then I switch back and tried using:
https://www.youtube.com/watch?v=tcPVzzyB7OI

and that one worked as well, for which that particular url link before wont show up at all.. any developer from the skype team look at this one please.. or will i just accept that it worked this time? assumming that the web skype client was updated? still puzzled.

Yes, Ronnelsantiago is correct.


"Create varbales" and "Sync vaiables" are greyed out

Describe the bug
Even if I create a new clean file and create local variables or tokens in Token Studio, the options are greyed out.
To Reproduce
Steps to reproduce the behavior:

Open the dropdown

Expected behavior
The options are not disabled

I am seeing this as well.

This is happening on the Pro plan as well. I just upgraded to Pro so I could use this single feature, but the options are still greyed out.

@StanLaurent @Joanie324 you need your Themes defined in order to be able to create variables.


BLE throughput woes (IDFGH-12642)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

General issue report
I'd like to raise this issue, because I'm pretty unsatisfied with the BLE throughput on ESP32S3 (and ESP32C3).
In https://github.com/mickeyl/esp-nimble-cpp/tree/l2cap-channel-refactor, I have added C++ wrappers for the L2CAP connection oriented channels as well as demo programs to examine the throughput.
In my tests, using a COC MTU of 5000 bytes, I get a throughput of about 12K/sec between two ESP32S3. These 96KBit/sec are nowhere near the 1000KBit/sec for the 1M PHY, let alone the 2000KBit/sec for the 2M PHY. Although I know that these best case values do not translate to net throughput, I still believe that less than 100KBit/sec is much too low for BLE5 in practice.
Changing the connection parameters does not seem to have a major effect for me, I tried with multiple values.
What's your assessment on that?

Are you using ACKs (normal write operation)? or write_without_response? Is your RF environment busy? With ACKs and a busy 2.4GHz environment, you'll see lots of delays/hiccups in sending bulk data.

This is L2CAP, not GATT. There are no GATT ACKs involved. The 2.4GHz band is pretty free in my space, as I have most, if not all, my other devices in the 5GHz band.

Do you have wifi turned on in the ESP?  BLE and wifi share the same radio. So if the radio is listening for WIFI packets when a BLE packet arrives the BLE packet gets dropped triggering a retransmission which ruins throughput. Note that you don't have to see WIFI packets on the sniffer for this to impact you, the WIFI protocol requires the ESP to listen for WIFI packets and it if is listening to WIFI it isn't listening to BLE.
We are debating on adding an external BLE chip to address this issue.

#12789 might be of interest.

@jonsmirl WiFi is turned off in these tests.

@KaeLL Thanks for pointing me to #12789. While I did read this already, I didn't really get it until now.
So with LE DATA LENGTH set to 251 (for both sides of the LE connection) instead of the default 27, there is indeed a 250% throughput increase available.
Without any more changes, I'm now at ~30KB/second (240KBit/second), which -- while still being far away from the theoretical maximum of BLE 5) -- feels much better.
Interestingly, in mixed vendor scenarios the results vary a lot depending on the client and the server roles: With an Apple device as peripheral, I get much better values than with an Apple device as central, although Apple does only support a maximum L2CAP SDU of 2048.
So at the end of the day, I'm not sure whether there is still a "bug" here, although I'd applaud all kinds of insights by the Espressif team. There are so many performance guides with regards to speed and memory, but there is little about BLE (L2CAP), so at least the documentation team could improve things here.

@rahult-github @igrr feel free to chime in. This is important.

Not trying to kick a dead horse here, but I'd love to see at least some form of acknowledgement from Espressif.
For anyone interested in the larger latency benchmarking effort and longerform discussion, it's available here: https://electricui.com/blog/latency-comparison

Ok, many hours of experimentation later, I need to correct myself (https://github.com/espressif/esp-idf/issues/13637#issuecomment-2066727982). At least some Apple devices do accept 15ms, if you set the other parameters in a way that Apple accepts. Of tremendous help was a spreadsheet I found here.
This is now my (esp-nimble-cpp) GATT connection callback:
void GATTServerCallbacks::onConnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo) {
    // BLE Throughput Booster #1, courtesy of learning from BLE 4.2 standard documents
    pServer->setDataLen(connInfo.getConnHandle(), 251);
    // BLE Throughput Booster #2, courtesy of finding https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/296641/spreadsheet-to-check-whether-ble-parameters-are-within-apple-specs
    BLEDevice::getServer()->updateConnParams(info.getConnHandle(), 12, 12, 0, 200);
}

With this (magic) incarnation, I seem to get a whopping 60KB/sec via an L2CAP COC when the Apple device is the central -- stable over the course of several minutes. This is a quarter of the theoretical throughput and something I can very well live with.
More thorough long time tests will follow, but I wanted to drop the bomb as soon as possible for you to reproduce.


Resolve bugs and warnings from browser console

React.StrictMode gives console warnings as does compiler when example project is started.  We should seek to resolve all of these warnings and errors.

The source of the problem is probably shared with #292.

@GregoryHamel Agreed - I also think that anything resolving this will also address #292.  Do you know where the staticcontext prop is coming from?  Is that related to routing or popper?

@GregoryHamel Any update on this?  Hoping to close #292 soon

Is there any update on this? If not, I'd be open to working on this

@treyhakanson Please go ahead! I really haven't had the chance to look into this any further...

Closing as this has now been completed in version 2


Authenticator should have a getStorage() method

I initialize my Storage together with my Authenticator as part of a single service in my DI container.  So, it would be helpful if I could access Storage (for example, to call cleanAllTriplets) through the Authenticator instance.

Interesting idea, however, I'd like to know more about your use case. Just implementing getStorage would violate the Law of Demeter. It would be better in this case if you code requested the storage from your DI and manipulated directly.

I ended up creating a manager class for my authentication system, which encapsulates both the Storage and Authenticator.  So, I'm not sure if this is still an issue for me.