Ambiguous filter_temporal process definition

While implementing filter_temporal process we have stumbled across some inconsistencies in the process definition. Note that none of it is a blocker for us, but it is probably best to document such issues when we encounter them. Let us know if you would prefer some other channel of communication for this.
Also, if you would prefer a PR (IIUC, it should be fixed here) I'd be happy to do it, but would appreciate a confirmation that these suggestions make sense.

The filter_temporal process documentation is not clear on whether the dimension parameter specifies a single or multiple dimensions:

If the dimension is set to null (it's the default value), the data cube is expected to only have one temporal dimension.

If the dimension is not set or is set to null, the filter applies to all temporal dimensions.

Return value: ... remain unchanged, except that the given temporal dimension(s) have less (or the same) dimension labels.

Since the data types do not suggest a way to provide multiple extents and/or dimensions, I am assuming that this process can only operate on a single temporal dimension. If this is so, I would suggest changing the texts to read:

If the dimension is set to null (it's the default value), the data cube is expected to have exactly one temporal dimension.

If the dimension is not set or is set to null, the filter applies to the only temporal dimension that exists (and must exist) in data cube.

Return value: ... remain unchanged, except that the given temporal dimension has less (or the same) dimension labels.

Additionally, this exception is not available in the list of errors:

Fails with a DimensionNotAvailable error if the specified dimension does not exist.

Errors/Exceptions
DimensionNotAvailable
Message: A dimension with the specified name does not exist.

I assume that ProcessParameterInvalid should be used instead and that other possible messages should also be included. One option would be:

Fails with a ProcessParameterInvalid error if the specified dimension does not exist.

Errors/Exceptions
ProcessParameterInvalid
Message: A dimension with the specified name does not exist.
Message: A dimension with the specified name is not temporal.
Message: More than one temporal dimension available, please specify dimension.
Message: No temporal dimension is available.

Thanks for the report.

The filter_temporal process documentation is not clear on whether the dimension parameter specifies a single or multiple dimensions:

If the dimension is set to null (it's the default value), the data cube is expected to only have one temporal dimension.

If the dimension is not set or is set to null, the filter applies to all temporal dimensions.

Return value: ... remain unchanged, except that the given temporal dimension(s) have less (or the same) dimension labels.

Since the data types do not suggest a way to provide multiple extents and/or dimensions, I am assuming that this process can only operate on a single temporal dimension. If this is so, I would suggest changing the texts to read:

If the dimension is set to null (it's the default value), the data cube is expected to have exactly one temporal dimension.

If the dimension is not set or is set to null, the filter applies to the only temporal dimension that exists (and must exist) in data cube.

Return value: ... remain unchanged, except that the given temporal dimension has less (or the same) dimension labels.

You are correct, there are contradicting statements in the process. It was meant to work this way:

dimension not given: filters ALL temporal dimensions
dimension given (you can only specify one): Filters only the specified temporal dimension

I'll issue a PR.

Additionally, this exception is not available in the list of errors:

Yes, it is correct that the error is missing there. The file you are referring to is just giving a recommendation on some general errors as they may be reported by the API. The processes define their own errors in addition.

I assume that ProcessParameterInvalid should be used instead and that other possible messages should also be included.

Indeed, sometime it could be useful to combine the error messages as they give additional context. Through the introduction of logging it got less relevant though as now the logs give more context, too (e.g. path).  I agree that this is a bit confusing.

Thank you for the explanation and the fix, it makes much more sense now!


Nami wallet no balance

Same as the others, no balance or assets showing, reset didn't work.

@Geep01 Talk to Cardano Support on the Live support page so that your issue can be looked into.

Kindly open a ticket by sending your address to
<EMAIL_ADDRESS>A team member would respond to you we are sorry for any inconvenience caused , not all Nami addresses was involved
Or
⚠ Attention
Zero Balances
Our devs have informed us not to use the Nami Extension for now pending the time it will be fixed.
Only the web app is up and working for now. We are deeply sorry for the inconveniences. All tokens are safe and secured.
click to connect


Test mode through environment variables

Hi! Thanks for the module by the way :) Just created this to help others making unittesting easier

Pull Request Test Coverage Report for Build 51

4 of 4 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 50:
0.0%

Covered Lines:
2183

Relevant Lines:
2183

💛  - Coveralls


Speedup pseudoheader lookup

Motivation:
Pseudoheader's could be cached within Hpack static table, but when they are added into Http2HeadersSink they are validated, verifying if they are pseudo-headers. Given that the AsciiStrings used within PseudoHeaderName and HpackStaticTable, it always requires to perform `AsciiString's equality.
For the same reason, if user code lookup those pseudo-headers using (as expected) PseudoHeaderName, the same equality check will always be performed.
Modification:
Speed-up pseudo-header lookup algorithm using a simple switch and ensuring that PseudoHeader's name are used to populate HpackStaticTable, to remove the need of a content equality check.
Result:
Faster pseudo-header lookup

@normanmaurer FYI

This is just a tiny fraction of the whole cost (it's no more than 5-10% then the whole), but I'm trying hard to reduce the overhead of lookup to the bare minimum for the most used headers names.

Currently the switch approach is about twice as fast of the existing one using the map, in pretty much any case but with normal strings, where it is just 10% faster.
The approach I have used for the pseudo headers in the static table could be reused with the other known header names (eg content-type) which are currently in HttpHeaderNames and would allow faster lookups from user code which use them, skipping a wasteful content equality and just perform a reference equality, wdyt @normanmaurer ?
This approach can guarantee a very important performance improvement which extend beyond the internals of Netty, to users (and framework built on top of it)

this PR push a significant change in case the Hpack static table hit, which would impact the speed of the mentioned code path at https://github.com/netty/netty/blob/ee9bb63aa5382bf9930eb0df4b690286173f126a/codec-http2/src/main/java/io/netty/handler/codec/http2/HpackDecoder.java#L559-L561 given that both
headers.add and getPseudoHeader relies on AsciiString.contentEquals which would be speedup by not performing content equality but just performing a quick reference equality on an already present AsciiString::hashCode.
I've performed a similar treatment to the other known HttpHeaders.
@normanmaurer @chrisvest let me know how it looks like, if I've understood correctly what the static HPack table is used for...

I think I could further improve if I can detect that headers/pseudo headers are "hydrated" from the static/dynamic table and save part of the validation to happen.
For the header's map insertion, it could be great to save any additional header name validation to happen for "trusted" header names (or, just obtained from hpack tables, especially static ones). Wdyt @idelpivnitskiy ?
Don't want to cause CVEs with this, eh, but I see revalidation as a waste of cycles, if that happen over and over for already validated header names.

@chrisvest @normanmaurer I've changed my mind, and I've improved the lookup in every single case, see
before c1aca1202044a69a37adca48953b2f7b146a01b5
Benchmark                                                        (hits)  (same)  Mode  Cnt    Score    Error  Units
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true    true  avgt   20   16.072 ±  0.080  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true   false  avgt   20   43.031 ±  0.267  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true    true  avgt   20   95.165 ± 13.537  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true   false  avgt   20  105.938 ±  5.767  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true    true  avgt   20   82.462 ±  1.555  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true   false  avgt   20   82.244 ±  0.151  ns/op

on c1aca1202044a69a37adca48953b2f7b146a01b5
Benchmark                                                        (hits)  (same)  Mode  Cnt   Score    Error  Units
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true    true  avgt   20   7.350 ±  0.212  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true   false  avgt   20  16.102 ±  0.075  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true    true  avgt   20  38.207 ±  3.491  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true   false  avgt   20  27.765 ± 10.314  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true    true  avgt   20  23.331 ±  0.481  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true   false  avgt   20  23.517 ±  0.167  ns/op

The use case, thanks to this PR aiming to reuse pseudoheader's AsciiString, which care the most, is the very first one (getAsciiStringPseudoHeader with same and hits), given that after the changes in this PR we reuse the same AsciiString of the pseudo header name's enum, but we're mildly interested in the rest.
The hits = false case is not interesting (unelss for CVEs), because HTTP 2 validators prevent using others pseudoheader(s).
The String-based uses cases are interesting in case users uses APIs to query pseudoheader(s) which make uses of String literals, conversely they're gonna pay the cost of an intrinsified String::hashCode which should be still decent.
I'm now adding a further commit to fix the java 1.6 compatibility issue at
Error:  Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project netty-codec-http2: Compilation failure
Error:  /home/runner/work/netty/netty/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Headers.java:[269,19] error: strings in switch are not supported in -source 1.6
Error:    (use -source 7 or higher to enable strings in switch)
Error:  -> [Help 1]
Error:
Error:  To see the full stack trace of the errors, re-run Maven with the -e switch.
Error:  Re-run Maven using the -X switch to enable full debug logging.
Error:
Error:  For more information about the errors and possible solutions, please read the following articles:
Error:  [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Error:
Error:  After correcting the problems, you can resume the build with the command
Error:    mvn <args> -rf :netty-codec-http2
Error: Process completed with exit code 1.

Which is easy to be solved (with some ugly code, as usual).

@idelpivnitskiy @chrisvest PTAL

@idelpivnitskiy @chrisvest PTAL

@bryce-anderson PTAL

These are the 3 benchmark results (from https://github.com/netty/netty/pull/13747#issuecomment-1879736797):
before c1aca1202044a69a37adca48953b2f7b146a01b5
Benchmark                                                        (hits)  (same)  Mode  Cnt    Score    Error  Units
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true    true  avgt   20   16.072 ±  0.080  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true   false  avgt   20   43.031 ±  0.267  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true    true  avgt   20   95.165 ± 13.537  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true   false  avgt   20  105.938 ±  5.767  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true    true  avgt   20   82.462 ±  1.555  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true   false  avgt   20   82.244 ±  0.151  ns/op

on c1aca1202044a69a37adca48953b2f7b146a01b5
Benchmark                                                        (hits)  (same)  Mode  Cnt   Score    Error  Units
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true    true  avgt   20   7.350 ±  0.212  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true   false  avgt   20  16.102 ±  0.075  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true    true  avgt   20  38.207 ±  3.491  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true   false  avgt   20  27.765 ± 10.314  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true    true  avgt   20  23.331 ±  0.481  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true   false  avgt   20  23.517 ±  0.167  ns/op

and the last one is, by using your suggestions (if I got them right) (at f0da758ce15edc81405707f4b8ac56a01dcd5855)
Benchmark                                                        (hits)  (same)  Mode  Cnt   Score   Error  Units
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true    true  avgt   20   8.242 ± 0.466  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true   false  avgt   20  26.543 ± 0.056  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true    true  avgt   20  56.179 ± 5.559  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true   false  avgt   20  55.942 ± 0.624  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true    true  avgt   20  20.651 ± 0.114  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true   false  avgt   20  20.424 ± 0.066  ns/op

the Strings suggestion seems to work very good (even better, actually, because we avoid the hash), but:

getNewAsciiStringPseudoHeader which force creating a new AsciiString  (which can contains the same byte array of a pseudo-header, or a copy of it) to make it compute hash code, forcibly, is receiving a performance penaltly, as expected, although not as bad as it was in 4.1 now.
getAsciiStringPseudoHeader which is using a cached AsciiString (ie which hashcode is already computed), and is a pseudo-header despite not being the same (ref equality) of any existing, it has received a perf penality, meaning that saving the char-by-char equality (eg https://github.com/netty/netty/blob/88ac731d6195c40af1903d9c777d1ce9882b8955/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Headers.java#L179-L196) in favour of using AsciiString::equals didn't work as good, could be either due to array bound checking, increased number of comparisons or because we don't split the equality checks based the uncommon letters first.

Both cases looks to me like "uncommon" expected slow paths, especially after this PR, but none prevent users to use different cached AsciiStrings without using the existing ones, unless (@normanmaurer please confirm/reject)
HPack could skip using the static table for pseudo-header(s), meaning that we risk to fall into both above cases.
If that's the case, I would reconsider improving things, by using the char-by-char strategy.

f0da758 is really close to what I was suggesting but may still suffer from the unnecessary computation of hash-codes which is really an artifact of AsciiString.equals(..). Also, unnecessary may not be all that unnecessary since as you pointed out this is part of a larger operation of adding the header to a hashmap and therefore we'll compute the hash regardless for the hot path.
This patch to f0da758 is what I mean:
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Headers.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Headers.java
index a2b214f952..c554ddd1be 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Headers.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Headers.java
@@ -134,15 +134,6 @@ public interface Http2Headers extends Headers<CharSequence, CharSequence, Http2H
                     return ":path".contentEquals(header)? PATH : null;
                 case 7:
                     // :method, :scheme, :status
-                    if (":method" == header) {
-                        return METHOD;
-                    }
-                    if (":scheme" == header) {
-                        return SCHEME;
-                    }
-                    if (":status" == header) {
-                        return STATUS;
-                    }
                     if (":method".contentEquals(header)) {
                         return METHOD;
                     }
@@ -177,16 +168,6 @@ public interface Http2Headers extends Headers<CharSequence, CharSequence, Http2H
                     // :path
                     return PATH.value().equals(header) ? PATH : null;
                 case 7:
-                    if (header == METHOD.value()) {
-                        return METHOD;
-                    }
-                    if (header == SCHEME.value()) {
-                        return SCHEME;
-                    }
-                    if (header == STATUS.value()) {
-                        return STATUS;
-                    }
-                    // :method, :scheme, :status
                     if (METHOD.value().equals(header)) {
                         return METHOD;
                     }
diff --git a/common/src/main/java/io/netty/util/AsciiString.java b/common/src/main/java/io/netty/util/AsciiString.java
index da06a1dc49..997e8e0c4a 100644
--- a/common/src/main/java/io/netty/util/AsciiString.java
+++ b/common/src/main/java/io/netty/util/AsciiString.java
@@ -1136,16 +1136,16 @@ public final class AsciiString implements CharSequence, Comparable<CharSequence>

     @Override
     public boolean equals(Object obj) {
-        if (obj == null || obj.getClass() != AsciiString.class) {
-            return false;
-        }
         if (this == obj) {
             return true;
         }
+        if (obj == null || obj.getClass() != AsciiString.class) {
+            return false;
+        }

         AsciiString other = (AsciiString) obj;
         return length() == other.length() &&
-               hashCode() == other.hashCode() &&
+                (hash == 0 || other.hash == 0 || hash == other.hash) && // don't trigger hash code computation: the follow up equality check is still necessary either way so checking hash is only a shortcut for the non-equal case.
                PlatformDependent.equals(array(), arrayOffset(), other.array(), other.arrayOffset(), length());
     }

I dropped the reference equality checks since they should happen anyway if we get lucky and the .equals(..) call gets inlined but it's hard to say without running it.

@bryce-anderson
re the patch, it's not good to avoid the 3 ref equalilty fast-path eg

getPseudoHeader(":status") is called
":method".equals(":status") would perform the ref equality check AND fail at the second iteration char (m != s); the equality could be performed by using a vectorized intrinsics, but I think, due to the string length to NOT benefit of it, and just use byte per byte comparisons (with bound checks) - i will take a look anyway
":scheme".equals(":status") will do the same, but failing at the third char (meaning it has to perform, again, 3 chars comparison AND the ref-equality check)
finally ":status".equals(":status") win the ref-equality check and complete

In total, forgetting any optimization, we have to perform:

3 ref checks, where 1 has succeeded
2 + 3 chars comparisons and potential equality calls which could NOT be inlined for different reasons (eg "already compiled into a big method" or just an unfortunate inlining depth)

The optimized version, previously done, instead, just perform:

3 ref checks, where 1 has succeeded

I'm running a benchmark run with your suggestion just on AsciiString, anyway, although the microbenchmark is the best case scenario.
And it doesn't re

Applying your full patch I got
Benchmark                                                        (hits)  (same)  Mode  Cnt   Score   Error  Units
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true    true  avgt   20  18.340 ± 0.160  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader       true   false  avgt   20  30.618 ± 0.383  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true    true  avgt   20  17.721 ± 0.310  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true   false  avgt   20  27.735 ± 0.382  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true    true  avgt   20  20.201 ± 0.958  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader            true   false  avgt   20  21.198 ± 0.536  ns/op

which show a regression in getAsciiStringPseudoHeader which I would like to save, so I'm creating a new branch picking the parts which i think are acceptable as a performance degradation, and will report it here.

@franz1981 lots of interesting data. I'll admit I'm biased toward readability when we're talking about differences of about 10 ns but thats obviously a subjective opinion. I'll leave it to you, @normanmaurer, and anybody else to make a final decision. All options presented so far look correct to me which is the most important thing.
Regardless of what ya'll decided to do, this is a very detailed performance analysis which is pretty cool.

Thanks @bryce-anderson for completeness I can tell that these values at my previous comment
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true    true  avgt   20  17.721 ± 0.310  ns/op
Http2PseudoHeadersLookupBenchmark.getNewAsciiStringPseudoHeader    true   false  avgt   20  27.735 ± 0.382  ns/op

related your full patch doesn't seem correct and despite i have a very stable box (isolcpu/numactl isolated/turbo boost off) has produced just once that values, which is not fun...
Anyway, exactly like you, IDK what could be done best although I could send a final commit which try to get the best of both worlds

@franz1981 yeah lets do a final commit with best of both worlds please

In the next days @normanmaurer I promise we can close this :P
But happy about the interaction with @bryce-anderson, thanks again 🙏

@franz1981 thanks... just ping me when ready

Ready to go @normanmaurer and @bryce-anderson
some numbers
I've modified the benchmark to include a case which have the insertion in the headers map as well, which should perform a validation over the headers etc etc to emulate what HPack does, but specifically for pseudoheaders.
I've removed the benchmark cases which we allocating strings/asciistring just for the sake of forcing hash code computation: this is the slowest path we try hard to avoid, with this PR, so I see no points into checking it.
The baseline on 4.1 looks like:
Benchmark                                                              (same)  Mode  Cnt    Score    Error  Units
Http2PseudoHeadersLookupBenchmark.addAsciiStringInHttp2Headers           true  avgt   20  144.130 ± 12.018  ns/op
Http2PseudoHeadersLookupBenchmark.addAsciiStringInHttp2Headers          false  avgt   20  191.564 ±  8.842  ns/op
Http2PseudoHeadersLookupBenchmark.addStringInHttp2Headers                true  avgt   20  352.912 ± 12.620  ns/op
Http2PseudoHeadersLookupBenchmark.addStringInHttp2Headers               false  avgt   20  337.322 ± 15.688  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader             true  avgt   20   19.153 ±  0.227  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader            false  avgt   20   42.377 ±  0.120  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader                  true  avgt   20   82.420 ±  0.087  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader                 false  avgt   20   82.356 ±  0.040  ns/op

While 7cc21953e455c1910e8dea086de174d932ae3ce7 :
Benchmark                                                              (same)  Mode  Cnt    Score    Error  Units
Http2PseudoHeadersLookupBenchmark.addAsciiStringInHttp2Headers           true  avgt   20  128.374 ± 11.856  ns/op
Http2PseudoHeadersLookupBenchmark.addAsciiStringInHttp2Headers          false  avgt   20  186.544 ± 11.011  ns/op
Http2PseudoHeadersLookupBenchmark.addStringInHttp2Headers                true  avgt   20  192.007 ±  8.835  ns/op
Http2PseudoHeadersLookupBenchmark.addStringInHttp2Headers               false  avgt   20  224.983 ± 11.036  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader             true  avgt   20    8.630 ±  0.054  ns/op
Http2PseudoHeadersLookupBenchmark.getAsciiStringPseudoHeader            false  avgt   20   26.566 ±  0.016  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader                  true  avgt   20   10.036 ±  0.098  ns/op
Http2PseudoHeadersLookupBenchmark.getStringPseudoHeader                 false  avgt   20   20.590 ±  0.281  ns/op

It's clear that "in the global picture" of adding to the map (which include removing as well, so it's not completely fair), the improvement still exists but is way more interesting for Strings vs AsciiStrings, despite the former get an hit while added to the header's map (which is not completely fair, given that HPack decoders will never do that!), because their ascii hash code cannot be cached.
The most interesting perrformance increase IMO, is that we now always hit the fastest path in the real world ie HPack decoded AsciiStrings in the static table are the same as the pseudo-headers constants AND users could use them too, to perform the fastest lookup/insertion into headers map.
the code complaxity has been further reduced thanks to @bryce-anderson suggestions, although not the possible peak performence, but as said, in the global picture involving maps operations, is just matter of a bunch of nanoseconds.

done @normanmaurer ;)

@franz1981 thanks a lot for all the work on this!


Update index.md

[x ] I have read freeCodeCamp's contribution guidelines.
[ x] My pull request has a descriptive title (not a vague title like Update index.md)
[ x] My pull request targets the master branch of freeCodeCamp.
[x ] None of my changes are plagiarized from another source without proper attribution.
[ x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

The Update doesn't introduce loop as syntaxt construction in C++. The statement is not connected to context directly, as result it leads to misunderstandings How if-else can create loop.
Lack of "for" and "while" introduction.
Lack of contex links retween statments.
It migh be better to say, that C++ has while and while - do which is a way to execute action until some case is not changed.
Similar about for operator

here is an example : http://www.cplusplus.com/doc/tutorial/control/

Thank you for opening this pull request.
This is a standard message notifying you that we’ve reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
Thank you and happy coding.


src/logic/events.ts changed. Events were sorted in ascending order

I used sort() function and isBefore() method to compare from dayjs module to sort the events in ascending order.

Fixes #32

Fixed issue screen shot

LGTM :+1:


Stocks app doesn't align with material grid at all...

Turn on the grid in the settings and browse around the app. Many parts of the app aren't actually aligned to the material grid.
Some of this will be the stocks app, but I think a lot of it might be defaults in the widgets.

We haven't had any complaints about this and we're not likely to work on it any time soon, so we're going to close this bug for now and wait specific actionable requests.

Should we remove the MaterialGrid feature if our framework doesn't match it?


Location of MapScatter in map_scatter.py is wrong [Bug]

File diagnostics/map_scatter.py has the wrong location for emcpy.plots.map_plots.MapScatter.  Instead it uses emcpy.plots.plots.MapScatter which fails.
To Reproduce
Run eva testIodaObsSpaceAmsuaN19.yaml.  It will fail in eva/diagnostics/map_gridded.py at line 18 when if tries to create a plotobj using emcpy.plots.plots.MapGridded.
Expected behavior
Test case should run to completion.
Additional information (optional)
I'll be glad to fix this if I can be assigned to it.
Changing the location to emcpy.plots.map_plots.MapScatter works -- it looks like emcpy changed at some point and eva didn't get updated.  Unless there's a reason to import all of map_plots I propose importing only emcpy/plots/map_plots/MapScatter  in map_gridded.py and not using the explicit path to MapScatter in the code.

@danholdaway
I'm running into a situation I don't understand.  In diagnostics/map_scatter.py the problem is simply that emcpy.plots.plots needs to be changed to emcpy.plots.map_plots.  Making that change allows the test case to run to completion.  But if I change the import line to
from emcpy.plots.map_plots import MapScatter
and then try to use MapScatter directly
self.plotobj = MapScatter(latvar, lonvar, datavar)
the result is a seemingly unrelated error codition:
Traceback (most recent call last):
File "/home/Edward.Safford/.local/bin/eva", line 8, in <module>
sys.exit(main())
File "/home/Edward.Safford/.local/lib/python3.9/site-packages/eva/eva_base.py", line 226, in main
eva(config_file)
File "/home/Edward.Safford/.local/lib/python3.9/site-packages/eva/eva_base.py", line 202, in eva
 eva_figure_object.execute(data_collections, timing)
File "/home/Edward.Safford/.local/lib/python3.9/site-packages/eva/plot_tools/figure_driver.py", line 95, in execute
self.make_figure(figure_conf_fill, plots_conf_fill,
 File "/home/Edward.Safford/.local/lib/python3.9/site-packages/eva/plot_tools/figure_driver.py", line 127, in make_figure
layer_list.append(layer_class(layer, self.logger, data_collections).plotobj)
File "/home/Edward.Safford/.local/lib/python3.9/site-packages/eva/diagnostics/map_scatter.py", line 33, in __init__
self.plotobj = MapScatter(latvar, lonvar, datavar)
 File "/home/Edward.Safford/.local/lib/python3.9/site-packages/eva/diagnostics/map_scatter.py", line 14, in __init__
 if 'channel' in config['data']:
IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices
I don't understand why making the change to import only MapScatter in map_scatter.py results in the MapScatter object not being able to correctly parse config[data].  Any thoughts on what I'm missing?   If not I'm going to just issue a PR for the simple rename of plots to map_plots and move on; this has already taken too long!

@kevindougherty-noaa any thoughts on this?

I think this is the issue: https://github.com/JCSDA-internal/eva/blob/cb5a15f8601c5ecc2a815a5c2e25e487a6b76057/setup.py#L44 this hasn't been updated in months. Should it have been?

I think that's it but I'm not sure I yet understand what I'm seeing.  I had had that line commented out for reasons I'm not able to recall.  I have a local copy of emcpy installed with eva.  Once I uncommented that line and rebuilt eva the test case runs to completion with the change to the import line.

I do think the plots->map_plots needs to happen, but you say that causes another issue?

No that change is fine.  When I tried changing the import line from
import emcpy.plots.map_plots to from emcpy.plots.map_plots import MapScatter that's when I ran into problems.  I just uncommented lines 43-4 in eva/setup.py and both cases now work.

@EdwardSafford-NOAA @CoryMartin-NOAA I believe at one point the plots.map_plots were in the plots.plots but I am not sure if that is the issue you are referring to. Also, the emcpy version in setup.py should definitely be updated to a more recent stable branch.

I think there are two places this needs to be changed, for mapScatter and mapGridded. This, plus the updated EMCpy hash. Sorry @EdwardSafford-NOAA that you had to struggle with this

@CoryMartin-NOAA yes I see the same issue with mapGridded.  I'll add that to this issue.
I checked the latest version of emcpy develop is dcdc868e7f48bb1ff55507f34c0548742af8bec1 .  Is that good to use in setup.py?

it should be but we need to test to be sure

Should I wait for that testing and include an update to eva/setup.py in a PR for this issue, or just issue a PR without updating setup.py?  Alternately, is the necessary emcpy testing something I can do?

Ok, that would be great.  Thanks!

Closed by PR #79


Use non-TLS connection for tunnel initiation to avoid nested TLS

Our HTTP2 layer also has TLS encryption, leading to redundant nested TLS. At first I tried to disable TLS on HTTP2, but this doesn't seem to be supported by Node.js. The other alternative is to move the authentication + encryption layer to the HTTP2 tunnel, which makes the system a little bit simpler as well.

Perhaps establishing a TLS connection from the client would help circumvent blocks since it will make the reverse-HTTP2 connection harder to detect


Host key verification failed on same host different staging

Deployer version: v7.0.0-beta.24
Deployment OS: Ubuntu 20.04.1 LTS
Trigger: Github Action

My client want using same server for bot Staging & Production, with just separate folder, so i only differ the stage & deploy_path, everything else is same.
but the problem is, it's working on staging. but return Host key verification failed on production.
error
Run php vendor/bin/dep deploy production --branch="master" -vvv
  php vendor/bin/dep deploy production --branch="master" -vvv
  shell: /usr/bin/bash -e {0}
  env:
    SSH_AUTH_SOCK: /tmp/ssh-auth.sock
    DOT_ENV: ***

  connecting production
[production] ssh -O check '-A' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=60' '-o' 'ControlPath=/dev/shm/%C' echo 2>&1
[production] Control socket connect(/dev/shm/e516e67c3c852e2ea5e6b86700a150d753dc3c39): No such file or directory
[production] ssh multiplexing initialization
[production] ssh -N '-A' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=60' '-o' 'ControlPath=/dev/shm/%C'<EMAIL_ADDRESS>
In Process.php line 267:

  [Symfony\Component\Process\Exception\ProcessFailedException]
  The command "ssh -N '-A' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=60'
   '-o' 'ControlPath=/dev/shm/%C'<EMAIL_ADDRESS>failed.

  Exit Code: 255(Unknown error)

  Working directory: /home/runner/work/xavier-app/xavier-app

  Output:
  ================

  Error Output:
  ================
  Host key verification failed.

Exception trace:
  at /home/runner/work/xavier-app/xavier-app/vendor/symfony/process/Process.php:267
 Symfony\Component\Process\Process->mustRun() at /home/runner/work/xavier-app/xavier-app/vendor/deployer/deployer/src/Component/Ssh/Client.php:143
 Deployer\Component\Ssh\Client->initMultiplexing() at /home/runner/work/xavier-app/xavier-app/vendor/deployer/deployer/src/Component/Ssh/Client.php:122
 Deployer\Component\Ssh\Client->connect() at /home/runner/work/xavier-app/xavier-app/vendor/deployer/deployer/src/Executor/Master.php:141
 Deployer\Executor\Master->connect() at /home/runner/work/xavier-app/xavier-app/vendor/deployer/deployer/src/Command/MainCommand.php:117
 Deployer\Command\MainCommand->execute() at /home/runner/work/xavier-app/xavier-app/vendor/symfony/console/Command/Command.php:256
 Symfony\Component\Console\Command\Command->run() at /home/runner/work/xavier-app/xavier-app/vendor/symfony/console/Application.php:971
 Symfony\Component\Console\Application->doRunCommand() at /home/runner/work/xavier-app/xavier-app/vendor/symfony/console/Application.php:290
 Symfony\Component\Console\Application->doRun() at /home/runner/work/xavier-app/xavier-app/vendor/symfony/console/Application.php:166
 Symfony\Component\Console\Application->run() at /home/runner/work/xavier-app/xavier-app/vendor/deployer/deployer/src/Deployer.php:304
 Deployer\Deployer::run() at /home/runner/work/xavier-app/xavier-app/vendor/deployer/deployer/bin/dep:105

deploy [--tag TAG] [--revision REVISION] [--branch BRANCH] [-o|--option OPTION] [-l|--limit LIMIT] [--no-hooks] [--plan] [--start-from START-FROM] [--log LOG] [--profile PROFILE] [--] [<selector>...]

Error: Process completed with exit code 1.

deploy.php
<?php

namespace Deployer;

require 'recipe/laravel.php';
require 'contrib/npm.php';

set('application', 'Wuling Assistance App');
set('repository', 'git@github.com:xxx.git');
//set('ssh_multiplexing', false);

task('deploy:secrets', function () {
    file_put_contents(__DIR__ . '/.env', getenv('DOT_ENV'));
    upload('.env', get('deploy_path') . '/shared');
});

host('production')
    ->set('stage','production')
    ->set('remote_user', 'root')
    ->set('hostname', '<IP_ADDRESS>') // xavier.github.xxx
    ->set('deploy_path', '/var/www/xavier-production');

host('staging')
    ->set('stage','staging')
    ->set('remote_user', 'root')
    ->set('hostname', '<IP_ADDRESS>') // staging-xavier.github.xxx
    ->set('deploy_path', '/var/www/xavier-staging');

after('deploy:failed', 'deploy:unlock');

desc('Start of Deploy the application');

task('deploy', [
    'deploy:prepare',
    'deploy:vendors',
    'artisan:storage:link',
    'artisan:view:cache',
    'artisan:config:cache',
    'artisan:migrate',
    'artisan:queue:restart',
    'npm:install',
    'npm:run:prod',
    'deploy:publish',
]);

desc('compile js to production');

task('npm:run:prod', function () {
    cd('{{release_path}}');
    run('npm run prod');
});

desc('End of Deploy the application');

.github/workflow
// Staging and it's working
- name: Setup Deployer
        uses: atymic/deployer-php-action@master
        with:
          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
          ssh-known-hosts: ${{ secrets.SSH_KNOWN_HOST }}
      - name: Deploy to Production
        env:
          DOT_ENV: ${{ secrets.DOT_ENV_PRODUCTION }}
        run: php vendor/bin/dep deploy staging --branch="development" -vvv

// Production same config but failed
- name: Setup Deployer
        uses: atymic/deployer-php-action@master
        with:
          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
          ssh-known-hosts: ${{ secrets.SSH_KNOWN_HOST }}
      - name: Deploy to Production
        env:
          DOT_ENV: ${{ secrets.DOT_ENV_PRODUCTION }}
        run: php vendor/bin/dep deploy production --branch="master" -vvv

Please Help. Thanks

add -vv and try again.
Which host key verification is failing?

you trying to deploy (so prod/stage server on your machine)
prod/stage to git?
maybe another?

Are you using a different user?

Ah! github workflow! Don't know about this but on bitbucket you need to add known hosts, are you sure this is setup correctly?

add -vv and try again.
Which host key verification is failing?

you trying to deploy (so prod/stage server on your machine)
prod/stage to git?
maybe another?

Are you using a different user?

I already add -vv and the result still same
run: php vendor/bin/dep deploy production --branch="master" -vv
you trying to deploy (so prod/stage server on your machine) > both
prod/stage to git? both
Are you using a different user? no only 1 user

it's such strange, it works on staging, but not working on production, everything is same. i think i miss something here

Ah! github workflow! Don't know about this but on bitbucket you need to add known hosts, are you sure this is setup correctly?

it's correct, cause it work on staging

Ah! github workflow! Don't know about this but on bitbucket you need to add known hosts, are you sure this is setup correctly?
it's correct, cause it's working when i'm run the staging

You can copy paste each command deployer is doing and once you found the culprit, debug it.
deployer is „only“ running commands (via ssh), so it is most likely not deployer but some misconfiguration 😶
and yes, for me is this weird as well 🤔🤔

I don’t know how to help, so feel free to comment and ask questions, but I’ll close this issue

This is an old one but I had the same issue and it was what @Schrank said (configuration)
In my case I forgot to update the deploy command in the production workflow file (yeh I copied/pasted 🤷♂):


feat(unstructured): add element index as metadata

Adding element index in the metadata when partition mode is by element
Close feature request: https://github.com/deepset-ai/haystack-core-integrations/issues/378

Is your feature request related to a problem? Please describe.
With unstructured we can do partition: one doc per file, one doc per page or one doc per elem.
When doing one doc per elem there is no way to track orders of element coming from a same doucment.
This informations can be usefull for example for a ContextExpander component.
Let's say you retrieve an element, you can retrieve also the previous and next element to expand the current context .
Describe the solution you'd like
Just automatically add index metadata.
I will do a PR.

Cool, thanks! 🚀

Happy about the merge ! :)
Is it possible to do a small bump of the version to release the feature ? :)


Add an option to set pixel threshold in bytes

Feature request
It would be very useful to threshold pixels by in-memory-size instead of number of rows. This would provide more homogeneous pixels sizes when using nested types such as lists, strings and bytes. It is useful for datasets like ZTF DRs or ZTF/LSST alerts.
Before submitting
Please check the following:

[x] I have described the purpose of the suggested change, specifying what I need the enhancement to accomplish, i.e. what problem it solves.
[ ] I have included any relevant links, screenshots, environment information, and data relevant to implementing the requested feature, as well as pseudocode for how I want to access the new functionality.
[ ] If I have ideas for how the new feature could be implemented, I have provided explanations and/or pseudocode and/or task lists for the steps.

Hello, we tried to solve the issue.
This is what we did:
Modified the code to allow thresholding pixels by in-memory size instead of number of rows. This change provides more homogeneous pixel sizes when using nested types such as lists, strings, and bytes, which is useful for datasets like ZTF DRs or ZTF/LSST alerts.
You can review changes in this commit: https://github.com/mnmnk43434/astronomy-commons-hats-import-449/commit/114452c216aa41ec44ca66cbff7d2983157ff1a7.

[!CAUTION]
Disclaimer: The concept of solution was created by AI and you should never copy paste this code before you check the correctness of generated code. Solution might not be complete, you should use this code as an inspiration only.

If you no longer want Latta AI to attempt solving issues on your repository, you can block this account.


Create Drop Down or Radio Button to Separate Imports From Export

On hold for the time being.  De-prioritize.

We handled this another way, nice to have, will close.


how to merge and integrate the TPM and raw counts matrix data

Hello,
I have downloaded the scRNA-seq data from the articles for analysis. Some articles only provided TPM data (The TPM data obtained by RSEM is performed on smart-seq2 data), while others only provided raw counts matrix data (10x genomics). How do I merge and integrate the scRNA-seq data from these articles?
Thanks

Hi, this is indeed a harder problem for integration, since full-length read counts and UMI counts differ, even after normalisation. In order to have a fairer comparison, I'd normalise the UMI counts (from 10x) and use them together with the TPM counts for integration, PCA and other downstream tasks. You might need to be cautious with count-based methods such as scVI and scANVI, since they require unnormalised counts. @LuckyMD Any suggestions on this?


[726] Fix progressbar. Change related unit tests.

There is a conflict in JPetCmdParserTest.cpp. You must resolve it. Without it I cannot merge your changes.
I think you should just update your local version first from the main repo.

I created a new PR  based on this code, but with fixed conflicts. PR #34 replaces this one


Earlgrey: tlul_fifo_async.sv doesn't work in Verilator

It gives error:
%Error: Could not get lowconn handle for port, aborting
%Error: Internal Error: ../V3Ast.cpp:346: Null item passed to setOp1p

I created the test: https://github.com/chipsalliance/UHDM-integration-tests/pull/446
It is passed already

It should be enabled with xbar_main.sv module

Removed from the list in https://github.com/antmicro/verilator/pull/464


4.10.0 Minor release docs

Adds new docs for 4.10.0 from
#8431
#8432
#8428

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

Locale
File
Note

en
reference/configuration-reference.mdx
Source changed, localizations will be marked as outdated.

en
reference/error-reference.mdx
Source changed, localizations will be marked as outdated.

en
reference/errors/env-invalid-variable.mdx
Source added, will be tracked.

en
reference/errors/env-invalid-variables.mdx
Source added, will be tracked.

en
reference/errors/env-unsupported-get-secret.mdx
Source added, will be tracked.

en
reference/errors/invalid-rewrite404.mdx
Source added, will be tracked.

en
reference/errors/rewrite-encountered-an-error.mdx
Source added, will be tracked.

en
reference/errors/server-only-module.mdx
Source added, will be tracked.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


alpine tor package is now in community

see http://pkgs.alpinelinux.org/packages?name=tor&branch=&repo=&arch=x86_64&maintainer=

Good catch - thanks!

Thanks!!!
On Monday, August 1, 2016, Christian<EMAIL_ADDRESS>wrote:

Merged #170 https://github.com/jfrazelle/dockerfiles/pull/170.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/jfrazelle/dockerfiles/pull/170#event-740724311, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABYNbHMfFWDiwErxtOiJ8akBxqMD_5Cfks5qbbtQgaJpZM4JZFvb
.

--
Jessie Frazelle
4096R / D4C4 DD60 0D66 F65A 8EFC  511E 18F3 685C 0022 BFF3
pgp.mit.edu http://pgp.mit.edu/pks/lookup?op=get&search=0x18F3685C0022BFF3


WIP moves to ASF zipkin-api removing google protobuf dep

We can merge this once the release vote is done and dusted cc @jeqo
This will fix #2550 I think

@418545106 can you try building off this branch with windows?

@ 418545106你可以尝试用windows构建这个分支吗？

yes i can

whoot! @apache/apache-committers so less proto dependencies is good for windows, too :)

@adriancole Please don't use that @ address, since you have now notified some thousands of people of a meaningless comment (for most of us)

@niclash OMG I am so embarassed. thanks for telling me

I meant to @apache/zipkin-committers but goofed and the all one is the first in auto-complete. raising an issue with INFRA asking if there's ever a reason to notify the entire ASF with github

@niclash I added an issue on this as eventhough it was my dumb fault it looks easy to do https://issues.apache.org/jira/browse/INFRA-18300

Please you've been told already dont send this to everyone. Just stop.
Sent from BlueMail
On 29 Apr 2019, 6:23 am, at 6:23 am, Adrian Cole<EMAIL_ADDRESS>wrote:

@niclash I added an issue on this as eventhough it was my dumb fault it
looks easy to do https://issues.apache.org/jira/browse/INFRA-18300
--
You are receiving this because you are on a team that was mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-zipkin/pull/2551#issuecomment-487454420

closing this PR because notifications are pinned to the all committers list even when not directly mentioned apparantly.


Feature: Decrease score of Dependency-Update Tool check if dependabot is not configured to run on GitHub Actions

Is your feature request related to a problem? Please describe.
Some projects can have dependabot installed but not configured to to update versions of GitHub Actions. As Github Actions are relevant threat vectors, we should penalize the projects that don't keep them updated.
Describe the solution you'd like
If the project have dependabot installed, we should look over dependabot.yml and check if they specify "github-actions" as a package-ecosystem to monitor. If they don't, we should decrease their punctuation. The final punctuation in this case is open for discussion, but initially I'd say we could drop to something around 7/10.
Describe alternatives you've considered
We could also penalise the usage of problematic configurations of the other dependency-update tools, but I'm not aware of a case as relevant as this one from dependabot.

I think this would dovetail well with other "ecosystem-aware" features (#2538, #2494). I.e. for each language ecosystem detected in a project, is there a corresponding Dep update tool? Conversely, if a project doesn't use a particular language ecosystem (like, if it doesn't use GHA), we shouldn't check for any tooling related to that ecosystem.


Prohibit deceiving kspy for generics

Currently kspy is generated for kspy even if they are not enabled. While using them it will simply fails.
Acceptance criteria:

do not generate the deceiving factories

Done with 0.2.0-rc01


onDidChangeTextEditorVisibleRanges shows strange behaviour!

Issue Type: Bug

VS Code Version: 1.68.* - 1.69.0
OS Version: Windows 11

I've been working with onDidChangeTextEditorVisibleRanges event lately and I have noticed few things, I will explain with code example and some different cases:
	let eventCounter: number = 0

	vscode.window.onDidChangeTextEditorVisibleRanges((event) => {
		eventCounter++
		console.log('Event trigger count:', eventCounter);
		event.visibleRanges.forEach((range) => {
			console.log('Start line:', range.start.line)
			console.log('End   line:', range.end.line)
		})
	})

As per documents

An Event which fires when the visible ranges of an editor has changed.

In my case the event is fired as expected, but with the following condition only; when I navigate (scroll around) the editor either by mouse or keyboard arrows.
However here's the strange behaviour, Assuming that I have the editor max visible range of 33 lines:

(A) It doesn't fire when a text editor is newly opened from the workspace files (I don't know if it should be!). I mentioned newly as the text editor's active courser location and visible ranges are not memorized.
(B) It fires when the opened text editor has the courser location in memory, except that:

(B.1) It fires one time but only when the courser location is within 1-33 and the memorized visible range (scroll location?) first visible line is greater than 2
(B.2) It doesn't fire at all when the memorized courser location is within the first lines of the editor (from 1 to editor's visible range) which is 1-33 in my case, if the courser location is within 1-33 the event won't be fired no matter what the total lines count is.
(B.3) It fires twice when the memorized courser location is greater than 33 no matter where the memorized visible range is, the first trigger will have visible range start from the courser location minus 33. however, the second trigger will have the correct visible range.

Using the above code and mentioned cases:
Example for case (B.1) it prints the following:
Event trigger count: 1
Start line: 2
End   line: 34

Example for case (B.2) it prints nothing
Example for case (B.3) it prints the following:
Event trigger count: 1
Start line: 61
End   line: 94

Event trigger count: 2
Start line: 71
End   line: 104

VS Code version: Code 1.69.0 (92d25e35d9bf1a6b16f7d0758f25d48ace11e5b9, 2022-07-07T05:28:36.503Z)
OS version: Windows_NT x64 10.0.22000
Restricted Mode: No

System Info

Item
Value

CPUs
AMD Ryzen 7 4800H with Radeon Graphics          (16 x 2895)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
15.37GB (7.84GB free)

Process Argv
--crash-reporter-id d50e185c-0bfc-44b6-9830-5d4a2c2c6978

Screen Reader
no

VM
0%

Extensions: none
(1 theme extensions excluded)

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.69.1. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.69.1. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

Hello bot :) I did upgrade and still the same.
Just to mention I have been experiencing this behaviour since version 1.68.0 (I haven't used the API before) up to version 1.69.1

@sandy081
A quick reproduce
https://github.com/moalamri/test-events

Any progress please?   Affecting other plugins:
https://github.com/mtbaqer/vscode-better-folding#known-issues

@tomByrer
Right now, the only workaround is a debouncing class to limit excessive events and to get the right ranges. You can get the code from here, it is self-explanatory, and you can check the extension.ts file to see the implementation.


nnunet_mednext is not listed in monai/requirements.txt

nnunet_mednext is not listed in https://github.com/sct-pipeline/contrast-agnostic-softseg-spinalcord/blob/main/monai/requirements.txt
https://github.com/sct-pipeline/contrast-agnostic-softseg-spinalcord/blob/ad7ee3d5ac37d22454d0a0e397c43f54f081a61d/monai/run_inference_single_image.py#L30
python monai/run_inference_single_image.py -h
Traceback (most recent call last):
  File "monai/run_inference_single_image.py", line 30, in <module>
    from nnunet_mednext import MedNeXt
ModuleNotFoundError: No module named 'nnunet_mednext'

Temporary fix: I commented L30 because I wanted to use the default --model monai (and not mednext).

thanks for opening the issue, Jan! Just deleted all the instances of mednext in commit https://github.com/sct-pipeline/contrast-agnostic-softseg-spinalcord/commit/bbcb45644b3fa2ac1d14ff6a4f5be935d580273f in a new branch nk/contrast-agnostic-v2

closing as will be fixed in the (very) near future in the next release


Make oddly-named tests file an error

Made possible by DefinitelyTyped/DefinitelyTyped#13882

none of these exist in DT today?

As of DefinitelyTyped/DefinitelyTyped#13882, yes.

thanks!


Allow removal of Judge/Technical Active Team.

Please fetch and re-import sportsfest-litmusda.sql

LGTM!


Reactor and turbine water and steam code

I was wondering where in the code/which file is the amount of water consumed by the reactor and water produced by turbines?

these can be found in the MultiblockReactor and MultiblockTurbine classes respectively.


Access token size increased recently for SSO users

Category

[x] Question

Expected or Desired Behavior
We are making a REST call to OneDrive to get access token with auth code and store returned access token in our database, before the token size is under 2,048 which is the column size in our database. Recently some of our customer reported that they failed to log into OneDrive with SSO, which was working for them before. After checking the response from OneDrive, we noticed that some of the access tokens are now over 2,048 (we see 2,090 and 2,115 in our log). Is there a maximum token size that we can use to avoid future issue?

Could you please clarify which API you have a question about?

Hi chackman, this happened after we got authorization code and making a POST to redeem the code for access token:
POST: https://login.live.com/oauth20_token.srf

Access tokens do not have a published maximum length, so I would discourage the use of a maximum length constraint.


Fix the test failure of size_of_scalar failure on M1/M2 Mac

Signed-off-by: remzi<EMAIL_ADDRESS>Which issue does this PR close?

Closes #3383.
Rationale for this change

What changes are included in this PR?

Are there any user-facing changes?

Codecov Report

Merging #3398 (4090903) into master (81addf7) will decrease coverage by 0.00%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master    #3398      +/-   ##
==========================================
- Coverage   85.68%   85.68%   -0.01%
==========================================
  Files         298      298
  Lines       54654    54653       -1
==========================================
- Hits        46833    46832       -1
  Misses       7821     7821

Impacted Files
Coverage Δ

datafusion/common/src/scalar.rs
85.11% <100.00%> (-0.01%)
:arrow_down:

datafusion/expr/src/logical_plan/plan.rs
77.02% <0.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

I think we need to merge this before releasing 12.0.0.
@alamb @Dandandan any objection to merging this?

Go ahead :+1:


Screen resize

Hello all,
First of all a big thank you for creating this, tho it is a bit hard to implement it works very well. I have just one question that i cant seem to find an answer to, how to disable screen resizing on htmlPy.AppGUI. Please note i dont want a fullscreen app.
Greetings,
Waro

I found a temporary solution that i discovered myself:
inside change the base_gui.py init to this
def __init__(self, title=u"Application", width=800, height=600,                  x_pos=10, y_pos=10, maximized=False,                  plugins=False, developer_mode=False,                  allow_overwrite=False,resizable=True):
Next under self.window = QtGui.QMainWindow() i added:
 if not resizable:             self.window.setFixedSize(width,height)
Now you can call it like so:
app = htmlPy.AppGUI(title=u"My app", width=500,height=200,resizable=False)


Is there an easy way to set model max length to 10 or 20 seconds?

Thank you so much for sharing the amazing repo.
I have a question, so I'm leaving an issue.
I'm currently using the model by directly loading it without using a pipeline.
However, the total length is fixed at 30 seconds. Is there an easy way to set it to 10 or 20 seconds?
I did it in the following way, but is there a way to load the model weights?
import jax.numpy as jnp
from jax import jit
from transformers import FlaxWhisperForConditionalGeneration, WhisperConfig

config = WhisperConfig.from_pretrained(MODEL_NAME_OR_PATH)
config.max_source_positions = 1000

model = FlaxWhisperForConditionalGeneration(config, dtype=jnp.float16, _do_init=False, input_shape=(1, 80, 2000))
params = model.init_weights(model.key, model.input_shape)

I referred and confirmed issue #66.
However, if max padding is done with 10 seconds or 20 seconds using a preprocessor, an error occurs in the model.
@sanchit-gandhi

I even loaded it like this, but when I put the dummy input, the following error occurs.
UnfilteredStackTrace: TypeError: float() argument must be a string or a number, not 'ShapeDtypeStruct
config = WhisperConfig.from_pretrained(MODEL_NAME_OR_PATH)
config.max_source_positions = 1000

model, params = FlaxWhisperForConditionalGeneration.from_pretrained(
    MODEL_NAME_OR_PATH,
    config=config,
    input_shape=(1, 80, 2000),
    dtype=jnp.float16,
    _do_init=False,
    ignore_mismatched_sizes=True,
)

def _generate(input_features):
    pred_ids = model.generate(
        input_features,
        params=params,
        forced_decoder_ids=forced_decoder_ids,
    )
    return pred_ids.sequences

generate = jit(_generate)

# dummy input for caching
random_inputs = np.ones((1, 80, 2000))
_ = generate(random_inputs)


keeping compatibility with Android apps using Android API older than API 26

…, Oreo (Android 8.0) by adding internal implementation of the Base64 class named as Base64Utils to distinguish it from the native Java API, resolves issue #1044

A couple things in general for work on this open source repo.

We cannot use the Base64Utils because of it's copyright and lack of an open source friendly license.
We cannot change the signature of any public method since this would be a breaking change and require a major version update.

Regarding a client that is compatible with Android 24 or 26...
We are currently in the processes of building a conversion tool that will pull the latest version of the client from git and replace all instances of non-compatible code. This includes having replacements for several things including Base64, Duration, CompletableFuture, etc.
This is currently being done for a paying customer and it has not been determined how this will be publicly available. At a minimum, we need to find replacements that are licensed in a way that it is acceptable to use in the form we release the project.


telemetry: support to control trace id length on Zipkin

Please provide a description of this PR:
fixes: #43359

@zirain: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
bd13c66b0748c94ac8c69ca0eaa82e575261d8d2
link
true
/test lint

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@zirain: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-security-istiodremote_istio
083fe54e25bb4c6712242e05d27932b887e81a3e
link
true
/test integ-security-istiodremote

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@zirain: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-security-istiodremote_istio
083fe54e25bb4c6712242e05d27932b887e81a3e
link
true
/test integ-security-istiodremote

integ-security_istio
083fe54e25bb4c6712242e05d27932b887e81a3e
link
true
/test integ-security

integ-security-multicluster_istio
083fe54e25bb4c6712242e05d27932b887e81a3e
link
true
/test integ-security-multicluster

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest


CN wrong

Hi,
I followed the tutorial for setting up proxy companion and I can see in logs that certificates are successfully generated however CN name is instead of my domain actually this string: "letsencrypt-nginx-proxy-companion".
I mapped all folders to volumes as required and added these for the container for which I am generating certificate:
- VIRTUAL_HOST=mydomain.com
- LETSENCRYPT_HOST=mydomain.com
-<EMAIL_ADDRESS>I can see folder with name mydomain.com generated in certs and also in acme I can see folder with my email name.
Please note that the same happens even if I am out of test mode. Certificate is again generated and saved correctly but the same issue persists.
What could be the issue?

Hi. Could you please follow the repository's bug template, at the very least  letsencrypt-nginx-proxy-companion image version and nginx-proxy-companion configuration ?
Bug description
A clear and concise description of what the bug is.
letsencrypt-nginx-proxy-companion image version
Please provide the container version that should be printed to the first line of log at container startup:
[you@yourhost]: $ docker logs companion-container-name
Info: running letsencrypt-nginx-proxy-companion version v2.0.0
[...]

If this first log line isn't present you are using a v1 image: please provide the tagged version you are using. If you are using latest, please try again with a tagged release before opening an issue (the last v1 tagged release is v1.13.1).
nginx-proxy-companion configuration
Please provide the configuration (either command line, compose file, or other) of your nginx-proxy stack and your proxied container(s).
You can obfuscate information you want to keep private (and should obfuscate configuration secrets) such as domain(s) and/or email adress(es), but other than that please provide the full configurations and not the just snippets of the parts that seem relevants to you.
Containers logs
Please provide the logs of:

your letsencrypt-nginx-proxy-companion container
your nginx-proxy container (or nginx and docker-gen container in a three containers setup)

docker logs name-of-the-container
Docker host

OS: [e.g. Ubuntu 20.04]
Docker version: output of docker version

Regarding the certificate with a wrong CN: the companion container automatically generates a default key and self signed certificate pair with letsencrypt-nginx-proxy-companion as its Common Name for nginx-proxy to use. If a requested certificate creation fails for whatever reason (99 % of the time an ACME authorisation failure) the proxy will serve this default certificate instead of the intended one.

Hi,
Sorry didn't see the template before. Here is the required info:
letsencrypt-nginx-proxy-companion version:
Info: running letsencrypt-nginx-proxy-companion version v2.0.2-3-ged07a99
letsencrypt-nginx-proxy-companion configuration:
version: '2'
networks:
default:
external:
name: borgdrone7
services:
proxy:
container_name: proxy_proxy_1
image: jwilder/nginx-proxy
volumes:
- /var/run/docker.sock:/tmp/docker.sock
- ./certs:/etc/nginx/certs
- ./params.conf:/etc/nginx/conf.d/params.conf
- ./vhost:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
expose:
- "9000"
ports:
- "80:80"
- "443:443"
letsencrypt:
container_name: letsencrypt_1
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./acme:/etc/acme.sh
volumes_from:
- proxy
environment:
-<EMAIL_ADDRESS>current companion log (was very long first time it generated, but everything looked ok, no errors, success messages):
Reloading nginx proxy (73e93a2053d1ff553299847dc7bf3f52958d566e6c2871670ccae87a8219bd22)...
2020/12/27 23:31:28 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
2020/12/27 23:31:28 [notice] 42#42: signal process started
2020/12/27 23:31:28 Generated '/app/letsencrypt_service_data' from 14 containers
2020/12/27 23:31:28 Running '/app/signal_le_service'
2020/12/27 23:31:28 Watching docker events
2020/12/27 23:31:28 Contents of /app/letsencrypt_service_data did not change. Skipping notification '/app/signal_le_service'
Reloading nginx proxy (73e93a2053d1ff553299847dc7bf3f52958d566e6c2871670ccae87a8219bd22)...
2020/12/27 23:31:29 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
2020/12/27 23:31:29 [notice] 54#54: signal process started
Creating/renewal mydomain.com certificates... (mydomain.com)
[Sun Dec 27 23:31:30 UTC 2020] Domains not changed.
[Sun Dec 27 23:31:30 UTC 2020] Skip, Next renewal time is: Thu Feb 25 23:29:59 UTC 2021
[Sun Dec 27 23:31:30 UTC 2020] Add '--force' to force to renew.
proxy log:
forego     | starting nginx.1 on port 5000
forego     | starting dockergen.1 on port 5100
dockergen.1 | 2020/12/27 23:31:25 Generated '/etc/nginx/conf.d/default.conf' from 13 containers
dockergen.1 | 2020/12/27 23:31:25 Running 'nginx -s reload'
dockergen.1 | 2020/12/27 23:31:26 Watching docker events
dockergen.1 | 2020/12/27 23:31:26 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
dockergen.1 | 2020/12/27 23:31:26 Received event start for container f469c386cd43
dockergen.1 | 2020/12/27 23:31:26 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
Os/Docker versions:
Ubuntu 14.04.5 LTS
Docker version 17.05.0-ce, build 89658be
I can delete all certificates and start it again if you want to see the log as it is when it is first generated. I will do it with test set to true as I think I already regenerated 3 times without test and I don't want to be blocked for a week (unless I have to do it without test enabled).

I can delete all certificates and start it again if you want to see the log as it is when it is first generated. I will do it with test set to true.

Yes please, and yes use the staging endpoint 👍
Also, please provide the proxied container configuration (compose file).

Sure, and thanks for a quick response.
Here is the config from my docker compose:
version: '2'
networks:
default:
external:
name: borgdrone7
services:
nginx:
container_name: mysiteweb_nginx_1
extends:
file: mysitebase.yml
service: nginx
volumes_from:
- application
volumes:
- ~/mysiteweb/docker_prod/config/nginx/upstream/mysiteweb.conf:/etc/nginx/conf.d/upstream.conf
ports:
- "8072:80"
environment:
- VIRTUAL_HOST=mysite.com
- LETSENCRYPT_HOST=mysite.com
-<EMAIL_ADDRESS>- LETSENCRYPT_TEST=true
This is base config from mysitebase.yml:
nginx:
    build: ./nginx
    volumes:
        - ./config/nginx/common:/etc/nginx/common
        - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf
    expose:
        - "80"
        - "443"

Here is the log from scratch (I replaced my domain with mysite.com):
Info: running letsencrypt-nginx-proxy-companion version v2.0.2-3-ged07a99
Generating a RSA private key
............................................................................................................................................................................................................................................................................................................................................................................................................++++
...........................................................................................................................................................................................++++
writing new private key to '/etc/nginx/certs/default.key.new'
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:31 Generated '/etc/nginx/conf.d/default.conf' from 14 containers
2020/12/28 00:05:31 [notice] 41#41: signal process started
Info: a default key and certificate have been created at /etc/nginx/certs/default.key and /etc/nginx/certs/default.crt.
Info: Creating Diffie-Hellman group in the background.
A pre-generated Diffie-Hellman group will be used for now while the new one is being created.
Generating DH parameters, 2048 bit long safe prime, generator 2
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:32 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
2020/12/28 00:05:32 [notice] 53#53: signal process started
2020/12/28 00:05:32 Generated '/app/letsencrypt_service_data' from 14 containers
2020/12/28 00:05:32 Running '/app/signal_le_service'
2020/12/28 00:05:32 Watching docker events
2020/12/28 00:05:32 Contents of /app/letsencrypt_service_data did not change. Skipping notification '/app/signal_le_service'
[Mon Dec 28 00:05:33 UTC 2020] Create account key ok.
[Mon Dec 28 00:05:33 UTC 2020] Registering account: https://acme-v02.api.letsencrypt.org/directory
[Mon Dec 28 00:05:34 UTC 2020] Registered
[Mon Dec 28 00:05:34 UTC 2020] ACCOUNT_THUMBPRINT='q0SZ01RzZZBGqo3mCjQbaeTcFZQaOBFV47ktNc9zsc8'
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:34 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
2020/12/28 00:05:34 [notice] 68#68: signal process started
Creating/renewal mysite.com certificates... (mysite.com)
[Mon Dec 28 00:05:35 UTC 2020] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Mon Dec 28 00:05:35 UTC 2020] Creating domain key
[Mon Dec 28 00:05:36 UTC 2020] The domain key is here<EMAIL_ADDRESS>[Mon Dec 28 00:05:36 UTC 2020] Single domain='mysite.com'
[Mon Dec 28 00:05:36 UTC 2020] Getting domain auth token for each domain
[Mon Dec 28 00:05:38 UTC 2020] Getting webroot for domain='mysite.com'
[Mon Dec 28 00:05:38 UTC 2020] Verifying: mysite.com
[Mon Dec 28 00:05:41 UTC 2020] Success
[Mon Dec 28 00:05:41 UTC 2020] Verify finished, start to sign.
[Mon Dec 28 00:05:41 UTC 2020] Lets finalize the order.
[Mon Dec 28 00:05:41 UTC 2020] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/107613341/6980302658'
me@ubuntu:~/mysiteweb/docker-proxy$ docker logs letsencrypt_1
Info: running letsencrypt-nginx-proxy-companion version v2.0.2-3-ged07a99
Generating a RSA private key
............................................................................................................................................................................................................................................................................................................................................................................................................++++
...........................................................................................................................................................................................++++
writing new private key to '/etc/nginx/certs/default.key.new'
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:31 Generated '/etc/nginx/conf.d/default.conf' from 14 containers
2020/12/28 00:05:31 [notice] 41#41: signal process started
Info: a default key and certificate have been created at /etc/nginx/certs/default.key and /etc/nginx/certs/default.crt.
Info: Creating Diffie-Hellman group in the background.
A pre-generated Diffie-Hellman group will be used for now while the new one is being created.
Generating DH parameters, 2048 bit long safe prime, generator 2
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:32 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
2020/12/28 00:05:32 [notice] 53#53: signal process started
2020/12/28 00:05:32 Generated '/app/letsencrypt_service_data' from 14 containers
2020/12/28 00:05:32 Running '/app/signal_le_service'
2020/12/28 00:05:32 Watching docker events
2020/12/28 00:05:32 Contents of /app/letsencrypt_service_data did not change. Skipping notification '/app/signal_le_service'
[Mon Dec 28 00:05:33 UTC 2020] Create account key ok.
[Mon Dec 28 00:05:33 UTC 2020] Registering account: https://acme-v02.api.letsencrypt.org/directory
[Mon Dec 28 00:05:34 UTC 2020] Registered
[Mon Dec 28 00:05:34 UTC 2020] ACCOUNT_THUMBPRINT='q0SZ01RzZZBGqo3mCjQbaeTcFZQaOBFV47ktNc9zsc8'
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:34 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
2020/12/28 00:05:34 [notice] 68#68: signal process started
Creating/renewal mysite.com certificates... (mysite.com)
[Mon Dec 28 00:05:35 UTC 2020] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Mon Dec 28 00:05:35 UTC 2020] Creating domain key
[Mon Dec 28 00:05:36 UTC 2020] The domain key is here<EMAIL_ADDRESS>[Mon Dec 28 00:05:36 UTC 2020] Single domain='mysite.com'
[Mon Dec 28 00:05:36 UTC 2020] Getting domain auth token for each domain
[Mon Dec 28 00:05:38 UTC 2020] Getting webroot for domain='mysite.com'
[Mon Dec 28 00:05:38 UTC 2020] Verifying: mysite.com
[Mon Dec 28 00:05:41 UTC 2020] Success
[Mon Dec 28 00:05:41 UTC 2020] Verify finished, start to sign.
[Mon Dec 28 00:05:41 UTC 2020] Lets finalize the order.
[Mon Dec 28 00:05:41 UTC 2020] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/107613341/6980302658'
[Mon Dec 28 00:05:42 UTC 2020] Downloading cert.
[Mon Dec 28 00:05:42 UTC 2020] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/04f3c50543607cf0e15c8e01a431ec2aead2'
[Mon Dec 28 00:05:43 UTC 2020] Cert success.
-----BEGIN CERTIFICATE-----
MIIGIDCCBQigAwIBAgISBPPFBUNgfPDhXI4BpDHsKurSMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMDEyMjcyMzA1NDJaFw0yMTAzMjcyMzA1NDJaMBgxFjAUBgNVBAMT
DWxhcHBhc29mdC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDX
67glCFDu5FUr3Q/dHI3ewIHzY8E16LqiAmmekwuSRCWACMTR4s3Yq4gsvT9yNWUu
mbwt2IblqvEWTENXrxAHbUqwyibse7ttPnHuDFVNHuvKHkrfTwmlY4W67pkuys7+
5+tHMfhHuqgY4N/qwl4VOKKUE0g1hJvEph2/zIrCN0m56ZlvGSfSxCI5fWpZ2KQ5
K9QBM4dg/OEtLcgdHFqBqXrOu0IX3vrZrd+cMGIgm5GiGAiSGgmb7myO6eE58JKS
4LNDdnX2ZYy7SMf5+SklG8GWYpkMuVipUdEh5K318sEZbtodVqbmsIVA/cm8szyw
HHaUlGzVniiIphaTrEHAFTcxL10j+PTMYcpANzWJbYVR31Eko+dm7Vm/8TNH8jR1
0u9+QQcDLkazcsPPfeFP0jcLTA99pOxdqqBlwFk0l2ozqpiwto6liGIaxlCwQbFZ
M0MhtpTYQ4DUXP651U4BEXbij6B4ficKKjQPcpF5D1GQukcrvFgxVbbZ5EHnsLKf
95MmTWMsBQ6RwjVubKkBpoSq84N6jWf9kU8FReC+NmdmVcXtz0R7nZhPC1GIV5Dh
mw9LgL2Qi835Ky2RMjoqeMcISsYiOH3tSq4TwCe0hYkKmqGJ96ZlJuSZhNmKLtxW
yPrWgZNNhv2bq4T+PI2rgPKMyV+j1GSEy2hmymzeBQIDAQABo4ICSDCCAkQwDgYD
VR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNV
HRMBAf8EAjAAMB0GA1UdDgQWBBQ3Ba9ophCENyfMnR+lK8/n8oU0TTAfBgNVHSME
GDAWgBQULrMXt1hWy65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYB
BQUHMAGGFWh0dHA6Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDov
L3IzLmkubGVuY3Iub3JnLzAYBgNVHREEETAPgg1sYXBwYXNvZnQuY29tMEwGA1Ud
IARFMEMwCAYGZ4EMAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0
dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDw
AHcAXNxDkv7mq0VEsV6a1FbmEDf71fpH3KFzlLJe5vbHDsoAAAF2pqo58wAABAMA
SDBGAiEAhlSJKBeGCJbyW5C2xNp9qOw17iTIqhi39BtuwCNSe+UCIQCrORNHg9Ki
eyjyCZtMMqQwLDo6q5JDFuAHH1BhFafo1wB1APZclC/RdzAiFFQYCDCUVo7jTRMZ
M7/fDC8gC8xO8WTjAAABdqaqOtUAAAQDAEYwRAIgVouaZP/0yHwqpKAjHpqYHrWp
5sh4vg+aIAEQ8dGp+H4CIENOD+DE4ABArNeJVWoHEzSVtLArqVvxBuwtY2AeZxqa
MA0GCSqGSIb3DQEBCwUAA4IBAQAoa9N/753I0AmF0prEj1P1VNqxMi6GnTcRbAFE
gC6wnZ1/LC6cBl047/jFmiymfX/h8Z+JyNV6dYobaHZd5bzF1+XDaXOnOeLB0mbF
Xrl52NDRGi+GqKqeMMZgaeqOyKfLlHsh03BYMeTdwBpA9f1bH2Ox4eyTUdW+A2E3
H/5nTZAI6gM/QnI8XBGrp6e+K5cnpdqAFaFqFnP6ec42AFeqsDGfgDsXx7v+Het8
Zq/DXMMdhBj56XzxDDdzLleEooD4vyg2koOR2Id84R8P9EbguQio6mPiv5tK9Dbp
4uNSy7xXUEmkNy9O8AoFgfRDfWFrw+GEuV6hyn7r/zlBitdQ
-----END CERTIFICATE-----
[Mon Dec 28 00:05:43 UTC 2020] Your cert is in<EMAIL_ADDRESS>[Mon Dec 28 00:05:43 UTC 2020] Your cert key is in<EMAIL_ADDRESS>[Mon Dec 28 00:05:43 UTC 2020] The intermediate CA cert is in<EMAIL_ADDRESS>[Mon Dec 28 00:05:43 UTC 2020] And the full chain certs is there<EMAIL_ADDRESS>[Mon Dec 28 00:05:43 UTC 2020] Installing cert to:/etc/nginx/certs/mysite.com/cert.pem
[Mon Dec 28 00:05:43 UTC 2020] Installing CA to:/etc/nginx/certs/mysite.com/chain.pem
[Mon Dec 28 00:05:43 UTC 2020] Installing key to:/etc/nginx/certs/mysite.com/key.pem
[Mon Dec 28 00:05:43 UTC 2020] Installing full chain to:/etc/nginx/certs/mysite.com/fullchain.pem
me@ubuntu:~/mysiteweb/docker-proxy$ docker logs letsencrypt_1
Info: running letsencrypt-nginx-proxy-companion version v2.0.2-3-ged07a99
Generating a RSA private key
............................................................................................................................................................................................................................................................................................................................................................................................................++++
...........................................................................................................................................................................................++++
writing new private key to '/etc/nginx/certs/default.key.new'
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:31 Generated '/etc/nginx/conf.d/default.conf' from 14 containers
2020/12/28 00:05:31 [notice] 41#41: signal process started
Info: a default key and certificate have been created at /etc/nginx/certs/default.key and /etc/nginx/certs/default.crt.
Info: Creating Diffie-Hellman group in the background.
A pre-generated Diffie-Hellman group will be used for now while the new one is being created.
Generating DH parameters, 2048 bit long safe prime, generator 2
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:32 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
2020/12/28 00:05:32 [notice] 53#53: signal process started
2020/12/28 00:05:32 Generated '/app/letsencrypt_service_data' from 14 containers
2020/12/28 00:05:32 Running '/app/signal_le_service'
2020/12/28 00:05:32 Watching docker events
2020/12/28 00:05:32 Contents of /app/letsencrypt_service_data did not change. Skipping notification '/app/signal_le_service'
[Mon Dec 28 00:05:33 UTC 2020] Create account key ok.
[Mon Dec 28 00:05:33 UTC 2020] Registering account: https://acme-v02.api.letsencrypt.org/directory
[Mon Dec 28 00:05:34 UTC 2020] Registered
[Mon Dec 28 00:05:34 UTC 2020] ACCOUNT_THUMBPRINT='q0SZ01RzZZBGqo3mCjQbaeTcFZQaOBFV47ktNc9zsc8'
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:34 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
2020/12/28 00:05:34 [notice] 68#68: signal process started
Creating/renewal mysite.com certificates... (mysite.com)
[Mon Dec 28 00:05:35 UTC 2020] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Mon Dec 28 00:05:35 UTC 2020] Creating domain key
[Mon Dec 28 00:05:36 UTC 2020] The domain key is here<EMAIL_ADDRESS>[Mon Dec 28 00:05:36 UTC 2020] Single domain='mysite.com'
[Mon Dec 28 00:05:36 UTC 2020] Getting domain auth token for each domain
[Mon Dec 28 00:05:38 UTC 2020] Getting webroot for domain='mysite.com'
[Mon Dec 28 00:05:38 UTC 2020] Verifying: mysite.com
[Mon Dec 28 00:05:41 UTC 2020] Success
[Mon Dec 28 00:05:41 UTC 2020] Verify finished, start to sign.
[Mon Dec 28 00:05:41 UTC 2020] Lets finalize the order.
[Mon Dec 28 00:05:41 UTC 2020] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/107613341/6980302658'
[Mon Dec 28 00:05:42 UTC 2020] Downloading cert.
[Mon Dec 28 00:05:42 UTC 2020] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/04f3c50543607cf0e15c8e01a431ec2aead2'
[Mon Dec 28 00:05:43 UTC 2020] Cert success.
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
[Mon Dec 28 00:05:43 UTC 2020] Your cert is in<EMAIL_ADDRESS>[Mon Dec 28 00:05:43 UTC 2020] Your cert key is in<EMAIL_ADDRESS>[Mon Dec 28 00:05:43 UTC 2020] The intermediate CA cert is in<EMAIL_ADDRESS>[Mon Dec 28 00:05:43 UTC 2020] And the full chain certs is there<EMAIL_ADDRESS>[Mon Dec 28 00:05:43 UTC 2020] Installing cert to:/etc/nginx/certs/mysite.com/cert.pem
[Mon Dec 28 00:05:43 UTC 2020] Installing CA to:/etc/nginx/certs/mysite.com/chain.pem
[Mon Dec 28 00:05:43 UTC 2020] Installing key to:/etc/nginx/certs/mysite.com/key.pem
[Mon Dec 28 00:05:43 UTC 2020] Installing full chain to:/etc/nginx/certs/mysite.com/fullchain.pem
Reloading nginx proxy (20c6aec48c45880da39437685dfbd1554dc96b59cc89be08504d10d2cdfbb272)...
2020/12/28 00:05:44 Generated '/etc/nginx/conf.d/default.conf' from 14 containers
2020/12/28 00:05:44 [notice] 82#82: signal process started
Sleep for 3600s

After I mapped ./conf:/etc/nginx/conf.d (in proxy yml), issue changed, now I was getting error: ssl_error_rx_unexpected_new_session_ticket.
I solved that one by adding to the proxy config these lines:
ssl_session_timeout 1d;
ssl_session_tickets off;

Now everything seems to work ok.

Glad your issue appears to be solved, but you shouldn't need to add anything to the proxy config for basic HTTPS support to work. Maybe that SSL session ticket error was just transient ?


Adds the MixedRealityToolkit.Tools folder and package.

There are a number of features currently in the the MixedRealityToolkit folder that are useful at editor and build time, but are otherwise never going to be shipping with the final application. For example, the screenshot utility is incredibly useful for people who want to take screenshots of their features (useful for MRTK devs especially!) but otherwise is a bit odd to have directly in the MRTK "core" folder, because it's not really a core part of a consumer's development process.
This change spawns a new folder to put these things in (MixedRealityToolkit.Tools) where we can place features (especially ones that are editor-only) that accrue value during the development cycle (or could just generally be useful tools even outside of the MRTK, but due to repo/CI resourcing we're currently putting them in here), but otherwise don't ship with the app itself.
Note that this change doesn't move EVERYTHING over (for example, the BuildWindow tool is still left inside the core part because there is some history there and it would be some degree of a "package" breaking change to move that over.)
This change also adds the new MixedRealityToolkit.Tools.nuget package, along with the corresponding MixedRealityToolkit.Tools.unitypackage
Notes for reviewers:
I would love to get feedback on the naming and the general principles behind this move. This is somewhat of a reaction to how some helpful but perhaps not "core" utilities have made their way into the core folders of the MRTK (especially ones that seem like they could be generally useful for Unity development).
I would also appreciate feedback on whether or not this SHOULD be a different package, or if people think we should continue to bundle things up in the .Foundation package to:

Reduce the mental overhead of having another package.
Reduce the cost of also having to update the existing tutorials and such.

I think the answer is "no" because consumers should be able to take just the code needed to build what they want, and then use our tooling and import that if they want (obviously the existing foundation package is already fairly large, so the idea here is we want to not grow it in ways that diverge from our philosophies)

/azp run

I would also appreciate feedback on whether or not this SHOULD be a different package, or if people think we should continue to bundle things up in the .Foundation package...
I think the answer is "no" because consumers should be able to take just the code needed to build what they want, and then use our tooling and import that if they want (obviously the existing foundation package is already fairly large, so the idea here is we want to not grow it in ways that diverge from our philosophies)

I don't think the overhead is that high to have a separate package, you have to download one more package sure, but presumably you won't be downloading packages that often. I think longer term it will be good to have a separate package, since it will prevent the core packages from getting too large as people add more useful tools.

For the build window, do we have a plan / task to migrate it? If not, can we include a readme explaining why the build window is not in the tools package?

Makes sense to me to move these items to a separate package. Do you want to pull in the texture combiner too? https://github.com/microsoft/MixedRealityToolkit-Unity/blob/mrtk_development/Assets/MixedRealityToolkit/Inspectors/TextureCombinerWindow.cs

Makes sense to me to move these items to a separate package. Do you want to pull in the texture combiner too? https://github.com/microsoft/MixedRealityToolkit-Unity/blob/mrtk_development/Assets/MixedRealityToolkit/Inspectors/TextureCombinerWindow.cs

Yasssssssss.

For the build window, do we have a plan / task to migrate it? If not, can we include a readme explaining why the build window is not in the tools package?

Also, something a bit TBD - I want to gather a little more data before moving this, because this has some history of being in the foundation package and my concern for changing this now is a little higher.
Good point on the readme, lemme do that...

Also maybe, update the "Utilities" section in the TOC to now be "Tools"? To keep consistency? I don't think this will affect references as the URLs will remain the same

/azp run

/azp run mrtk_docs

/azp run