Nginx + emu Hue

 is a comment.
You will see these throughout the issue template. Make sure you do not type your comments
between these characters or we will not be able to see what you wrote!

4. Links
To create a hyperlink, type the [text you want to link](followed by the url in parenthesis)
-->
Describe the bug
Cannot start the hue bridge on my HA - Nginx Proxy Manager is installed too cause i use a reverse proxy.
Steps to Reproduce

Expected behavior

Logs

Hardware Info:

Architecture (Ex: x86, ARM):
Addon version (Ex: stable or dev):

Value of "tag_commit_or_branch" if using dev:

OS (Ex: Windows 10, Ubuntu Buster):
Hardware (Ex: PC, Raspberry Pi 1/2/3/Zero):

Additional context

Logs?

Basic GitHub Comment Tutorial:

Logs
When pasting logs or code, type logs like so with ``` on either side.

[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 00-set-vars.sh: executing...
[cont-init.d] 00-set-vars.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
[09:29:38] INFO: Starting Emulated Hue...
2022-08-07 09:29:39,767 DEBUG emulated_hue.utils -- Loading /config/hass-emulated-hue/emulated_hue.json failed: [Errno 2] No such file or directory: '/config/hass-emulated-hue/emulated_hue.json'
2022-08-07 09:29:39,769 INFO  emulated_hue.config -- Auto detected listen IP address is <IP_ADDRESS>
2022-08-07 09:29:39,829 DEBUG getmac -- Raw MAC found: None
2022-08-07 09:29:39,832 DEBUG getmac -- Raw MAC found: e4:5f:01:bb:65:1f
2022-08-07 09:29:39,834 DEBUG aiorun -- Entering run()
2022-08-07 09:29:39,849 DEBUG aiorun -- Creating default executor
2022-08-07 09:29:39,882 INFO  hass_client -- Connected to Home Assistant ws (version 2022.8.1)
2022-08-07 09:29:40,110 ERROR emulated_hue.api -- Failed to create HTTP server at port 80: [Errno 98] error while attempting to bind on address ('<IP_ADDRESS>', 80): address already in use
2022-08-07 09:29:40,167 ERROR emulated_hue.api -- Failed to create HTTPS server at port 443: [Errno 98] error while attempting to bind on address ('<IP_ADDRESS>', 443): address already in use
2022-08-07 09:29:40,168 DEBUG emulated_hue.discovery -- Starting mDNS/uPNP discovery broadcast...
2022-08-07 09:29:54,152 DEBUG emulated_hue.discovery -- Serving SSDP discovery info to ('<IP_ADDRESS>', 55392)
2022-08-07 09:30:42,857 DEBUG emulated_hue.discovery -- Serving SSDP discovery info to ('<IP_ADDRESS>', 51667)```

is it possible to create a new ip where i can publish the port 80 and 443 because my nginx is looking to this ports

Change the ports to something else, configure nginx to proxy the IP to the emulated hue and use the emulated hue cert, then enable use default ports for discovery.


[BUG] Blob clients with Netty do not work behind proxy server without accessible DNS server

Describe the bug
This is pretty much the exact same as in #17930 again, only at the moment it appears things are broken for any proxy (authenticated or not). It looks like the code related to this was refactored entirely and that somehow broke the fix for the previously reported issue.
On machines which cannot perform DNS lookups of external internet hosts and which require a proxy for access to the internet, the Blob clients just fail to work, even with proxy properly configured using NettyAsyncHttpClientBuilder. As before, it appears the SDK first tries to perform a DNS lookup of the host before even handing off the request to the proxy. Which will fail. Typically if you need a proxy to access the internet, you also will not be able to perform DNS lookups of internet hosts.
Exception or Stack Trace
Exception in thread "main" reactor.core.Exceptions$ReactiveException: java.net.UnknownHostException: <redacted>.blob.core.windows.net
        at reactor.core.Exceptions.propagate(Exceptions.java:392)
        at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:97)
        at reactor.core.publisher.Flux.blockLast(Flux.java:2644)
        at com.azure.core.util.paging.ContinuablePagedByIteratorBase.requestPage(ContinuablePagedByIteratorBase.java:94)
        at com.azure.core.util.paging.ContinuablePagedByItemIterable$ContinuablePagedByItemIterator.<init>(ContinuablePagedByItemIterable.java:50)
        at com.azure.core.util.paging.ContinuablePagedByItemIterable.iterator(ContinuablePagedByItemIterable.java:37)
        at com.azure.core.util.paging.ContinuablePagedIterable.iterator(ContinuablePagedIterable.java:106)
        at java.lang.Iterable.forEach(Iterable.java:74)
        at com.example.App.main(App.java:35)
        Suppressed: java.lang.Exception: #block terminated with an error
                at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99)
                ... 7 more
Caused by: java.net.UnknownHostException: <redacted>.blob.core.windows.net
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324)
        at java.net.InetAddress.getAllByName0(InetAddress.java:1277)
        at java.net.InetAddress.getAllByName(InetAddress.java:1193)
        at java.net.InetAddress.getAllByName(InetAddress.java:1127)
        at io.netty.util.internal.SocketUtils$9.run(SocketUtils.java:169)
        at io.netty.util.internal.SocketUtils$9.run(SocketUtils.java:166)
        at java.security.AccessController.doPrivileged(Native Method)
        at io.netty.util.internal.SocketUtils.allAddressesByName(SocketUtils.java:166)
        at io.netty.resolver.DefaultNameResolver.doResolveAll(DefaultNameResolver.java:50)
        at io.netty.resolver.SimpleNameResolver.resolveAll(SimpleNameResolver.java:79)
        at io.netty.resolver.SimpleNameResolver.resolveAll(SimpleNameResolver.java:71)
        at io.netty.resolver.InetSocketAddressResolver.doResolveAll(InetSocketAddressResolver.java:73)
        at io.netty.resolver.InetSocketAddressResolver.doResolveAll(InetSocketAddressResolver.java:31)
        at io.netty.resolver.AbstractAddressResolver.resolveAll(AbstractAddressResolver.java:158)
        at reactor.netty.transport.TransportConnector.doResolveAndConnect(TransportConnector.java:283)
        at reactor.netty.transport.TransportConnector.lambda$connect$6(TransportConnector.java:110)
        at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125)
        at reactor.netty.transport.TransportConnector$MonoChannelPromise._subscribe(TransportConnector.java:579)
        at reactor.netty.transport.TransportConnector$MonoChannelPromise.lambda$subscribe$0(TransportConnector.java:499)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.lang.Thread.run(Thread.java:748)

To Reproduce
Steps to reproduce the behavior:

Have a machine with no direct internet access (e.g. a Hyper-V virtual machine with only an "Internal Network" and then a proxy on the host.)
Run the Java Code below

Code Snippet
    public static void main(String[] args) {

        String TEST_URL = "BlobEndpoint=https://...";

        // proxy server accepts both unauthenticated and authenticated requests
        String PROXY_HOST = "<proxyhost>";
        final String PROXY_PORT = "8080";
        final String PROXY_USER = "testuser";
        final String PROXY_PASS = "pass";
        final int PROXY_PORT_INT = Integer.parseInt(PROXY_PORT);

        // non-authenticated proxy only works with internet connection for DNS querys
        try {
            ProxyOptions nonAuthProxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP,
                    new InetSocketAddress(PROXY_HOST, PROXY_PORT_INT));
            HttpClient nonAuthClient = new NettyAsyncHttpClientBuilder().proxy(nonAuthProxyOptions).build();
            BlobServiceClient nonAuthBlobClient = new BlobServiceClientBuilder().connectionString(TEST_URL)
                    .httpClient(nonAuthClient)
                    .buildClient();
            nonAuthBlobClient.listBlobContainers().forEach(blob -> System.out.println(blob.getName()));
            System.out.println("non auth succeeded");
        } catch (Exception e) {
            System.out.println("non auth failed");
        }

        // authenticated proxy only works with internet connection for DNS querys
        try {
            ProxyOptions authProxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP,
                    new InetSocketAddress(PROXY_HOST, PROXY_PORT_INT));
            authProxyOptions.setCredentials(PROXY_USER, PROXY_PASS);
            HttpClient authClient = new NettyAsyncHttpClientBuilder().proxy(authProxyOptions).build();
            BlobServiceClient authBlobClient = new BlobServiceClientBuilder().connectionString(TEST_URL)
                    .httpClient(authClient).buildClient();
            authBlobClient.listBlobContainers().forEach(blob -> System.out.println(blob.getName()));
            System.out.println("with auth succeeded");
        } catch (Exception e) {
            System.out.println("with auth failed");
        }
    }

Expected behavior
This should just work, the SDK should not even consider trying the DNS lookup and just immediately let the proxy handle the whole request.
Setup (please complete the following information):

OS: Windows
IDE: VS Code
Library/Libraries: azure-storage-blob through azure-sdk-bom:1.0.6
Java version: 8

Additional context
Things appear to work fine with okHTTP and this appears to be Netty specific.
Looks like you can work around this by first explicitly creating a Netty HTTP Client with NoopAddressResolverGroup but this is not mentioned as being required in any documentation and it does not feel like this should be necessary.
        reactor.netty.http.client.HttpClient baseClient = reactor.netty.http.client.HttpClient.create()
                .resolver(io.netty.resolver.NoopAddressResolverGroup.INSTANCE);
        HttpClient nonAuthClient = new NettyAsyncHttpClientBuilder(baseClient).proxy(nonAuthProxyOptions).build();

Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[x] Bug Description Added
[x] Repro Steps Added
[x] Setup information Added

Thanks for filling this GitHub issue, @maben-mw.  @alzimmermsft could you please take a look?

Thank you for filing this, I'll have an update soon

@maben-mw a fix has been merged that will be included in the next release of azure-core-http-netty. In the meantime, if possible, could you use the source version to verify it has resolved the issue you were seeing?
@jbkervyn I believe this issue may be the same problem you referenced in #22661, can you confirm.

@alzimmermsft yes, I confirm ! Thanks Alan !

I wasn't really able to actually build the SDK from source (with Java 8) but I did run a quick test where I explicitly pulled-in:
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-core-http-netty</artifactId>
        <version>1.12.0-alpha.20220125.1</version>
    </dependency>

with this, the issue does indeed appear to be resolved.
Great work, thanks!

Thanks for the verification @jbkervyn and @maben-mw, I'll update you once the fixed version of azure-core-http-netty is released and you can override the dependency version as a work around until a newer version of the Storage libraries are released with the fixed version as the dependency version.


NIO branch: Client always fails with 'unsupported URL'

Doing a client request on the NIO branch always fails with error -1002: unsupported URL:
Example:
    func get(_ req: Request) throws -> Future<SomeModel> {
        let url = "https://httpbin.org/get"
        return try req.make(Client.self).get(url).map(to: SomeModel.self) { (response) -> SomeModel in
            // this exception never hits as the request will always fail
            throw Abort(.notFound, reason: "Not yet implemented")
        }
    }

Will always fail:
Convenience URL set.
Convenience URL access.
Convenience URL access.
2018-03-09 16:38:37.322314+0100 Run[28319:3408924] Task <A206ECD8-9347-4604-B940-75CDD2AFC299>.<1> finished with error - code: -1002
[ ERROR ] Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo={NSUnderlyingError=0x103d2edb0 {Error Domain=kCFErrorDomainCFNetwork Code=-1002 "(null)"}, NSErrorFailingURLStringKey=/, NSErrorFailingURLKey=/, NSLocalizedDescription=unsupported URL} (EngineServer.swift:115)

@4np this one was fixed recently. There was a bug where the url was always getting set to /. Thanks for reporting!

See https://github.com/vapor/engine/commit/732dedf057e1061cf558ee9787f41365b5e4e02c

Thanks @tanner0101  :)


_describeRelevantUserCode crash

  testWidgets('Does Text', (WidgetTester tester) async {
    await tester.pumpWidget(const Text('tight'));
    await tester.pumpWidget(const SizedBox(child: Text('loose')));
  });

I expected three exceptions, one from each pump, plus a third saying that I hadn't caught the first exception (you're supposed to call takeException after pump if pump throws).
However, one of those exceptions triggered a cascade of other exceptions because of some problem in _describeRelevantUserCode:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown attaching to the render tree:
Looking up a deactivated widget's ancestor is unsafe.
At this point the state of the widget's element tree is no longer stable.
To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by
calling inheritFromWidgetOfExactType() in the widget's didChangeDependencies() method.

When the exception was thrown, this was the stack:
#0      Element._debugCheckStateIsActiveForAncestorLookup.<anonymous closure> (package:flutter/src/widgets/framework.dart:3423:9)
#1      Element._debugCheckStateIsActiveForAncestorLookup (package:flutter/src/widgets/framework.dart:3437:6)
#2      Element.visitAncestorElements (package:flutter/src/widgets/framework.dart:3524:12)
#3      _describeRelevantUserCode (package:flutter/src/widgets/widget_inspector.dart:2827:13)
#4      _parseDiagnosticsNode (package:flutter/src/widgets/widget_inspector.dart:2794:10)
#5      transformDebugCreator (package:flutter/src/widgets/widget_inspector.dart:2774:14)
#6      _SyncIterator.moveNext (dart:core-patch/core_patch.dart:144:12)
#7      new List.from (dart:core-patch/array_patch.dart:45:19)
#8      Iterable.toList (dart:core/iterable.dart:398:5)
#9      _FlutterErrorDetailsNode.builder (package:flutter/src/foundation/assertions.dart:840:66)
#10     DiagnosticableNode.getProperties (package:flutter/src/foundation/diagnostics.dart:2914:87)
#11     TextTreeRenderer.render (package:flutter/src/foundation/diagnostics.dart:1225:63)
#12     FlutterError.dumpErrorToConsole (package:flutter/src/foundation/assertions.dart:647:11)
#13     TestWidgetsFlutterBinding._runTest.<anonymous closure> (package:flutter_test/src/binding.dart:577:24)
#14     FlutterError.reportError (package:flutter/src/foundation/assertions.dart:736:14)
#15     _debugReportException (package:flutter/src/widgets/framework.dart:5314:16)
#16     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3982:9)
#17     Element.rebuild (package:flutter/src/widgets/framework.dart:3755:5)
#18     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3941:5)
#19     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3936:5)
#20     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3109:14)
#21     Element.updateChild (package:flutter/src/widgets/framework.dart:2903:12)
#22     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5165:14)
#23     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3109:14)
#24     Element.updateChild (package:flutter/src/widgets/framework.dart:2903:12)
#25     RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1028:16)
#26     RenderObjectToWidgetElement.update (package:flutter/src/widgets/binding.dart:1006:5)
#27     RenderObjectToWidgetElement.performRebuild (package:flutter/src/widgets/binding.dart:1020:7)
#28     Element.rebuild (package:flutter/src/widgets/framework.dart:3755:5)
#29     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2347:33)
#30     AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:975:18)
#31     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:283:5)
#32     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1097:15)
#33     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1036:9)
#34     AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:873:9)
#37     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:41)
#38     AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:860:27)
#39     WidgetTester.pumpWidget.<anonymous closure> (package:flutter_test/src/widget_tester.dart:320:22)
#42     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:41)
#43     WidgetTester.pumpWidget (package:flutter_test/src/widget_tester.dart:317:27)
#44     main.<anonymous closure> (/usr/local/google/home/ianh/dev/flutter/packages/flutter/test/rendering/repaint_boundary_2_test.dart:12:18)
<asynchronous suspension>
#45     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:121:25)
<asynchronous suspension>
#46     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:695:19)
<asynchronous suspension>
#49     TestWidgetsFlutterBinding._runTest (package:flutter_test/src/binding.dart:678:14)
#50     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1051:24)
#56     AutomatedTestWidgetsFlutterBinding.runTest (package:flutter_test/src/binding.dart:1048:15)
#57     testWidgets.<anonymous closure> (package:flutter_test/src/widget_tester.dart:118:22)
#58     Declarer.test.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:168:27)
<asynchronous suspension>
#59     Invoker.waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:250:15)
<asynchronous suspension>
#64     Invoker.waitForOutstandingCallbacks (package:test_api/src/backend/invoker.dart:247:5)
#65     Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:166:33)
#70     Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:165:13)
<asynchronous suspension>
#71     Invoker._onRun.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart:400:25)
<asynchronous suspension>
#85     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:382:19)
#86     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5)
#87     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
(elided 32 frames from class _FakeAsync, package dart:async, package dart:async-patch, and package stack_trace)
════════════════════════════════════════════════════════════════════════════════════════════════════
...

cc @chunhtai @goderbauer @jacob314

I cannot reproduce it
Here is my code
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets('Does Text', (WidgetTester tester) async {
    await tester.pumpWidget(const Text('tight'));
    await tester.pumpWidget(const SizedBox(child: Text('loose')));
  });
}

Here is the error message, which looks correct to me
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building Text("tight"):
No Directionality widget found.
RichText widgets require a Directionality widget ancestor.
The specific widget that could not find a Directionality ancestor was:
  RichText
The ownership chain for the affected widget is: "RichText ← Text ← [root]"
Typically, the Directionality widget is introduced by the MaterialApp or WidgetsApp widget at the
top of your application widget tree. It determines the ambient reading direction and is used, for
example, to determine how to lay out text, how to interpret "start" and "end" values, and to resolve
EdgeInsetsDirectional, AlignmentDirectional, and other *Directional objects.

The relevant error-causing widget was:
  Text file:///Users/chtai/apps/draw/test/widget_test.dart:13:35

When the exception was thrown, this was the stack:
#0      debugCheckHasDirectionality.<anonymous closure> (package:flutter/src/widgets/debug.dart:243:7)
#1      debugCheckHasDirectionality (package:flutter/src/widgets/debug.dart:259:4)
#2      RichText.createRenderObject (package:flutter/src/widgets/basic.dart:5113:37)
#3      RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4772:28)
#4      MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5267:11)
#5      Element.inflateWidget (package:flutter/src/widgets/framework.dart:3109:14)
#6      Element.updateChild (package:flutter/src/widgets/framework.dart:2903:12)
#7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3978:16)
#8      Element.rebuild (package:flutter/src/widgets/framework.dart:3755:5)
#9      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3941:5)
#10     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3936:5)
#11     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3109:14)
#12     Element.updateChild (package:flutter/src/widgets/framework.dart:2903:12)
#13     RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1028:16)
#14     RenderObjectToWidgetElement.update (package:flutter/src/widgets/binding.dart:1006:5)
#15     RenderObjectToWidgetElement.performRebuild (package:flutter/src/widgets/binding.dart:1020:7)
#16     Element.rebuild (package:flutter/src/widgets/framework.dart:3755:5)
#17     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2347:33)
#18     AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:975:18)
#19     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:283:5)
#20     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1097:15)
#21     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1036:9)
#22     AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:873:9)
#25     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:41)
#26     AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:860:27)
#27     WidgetTester.pumpWidget.<anonymous closure> (package:flutter_test/src/widget_tester.dart:320:22)
#30     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:41)
#31     WidgetTester.pumpWidget (package:flutter_test/src/widget_tester.dart:317:27)
#32     main.<anonymous closure> (file:///Users/chtai/apps/draw/test/widget_test.dart:13:18)
<asynchronous suspension>
#33     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:121:25)
<asynchronous suspension>
#34     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:695:19)
<asynchronous suspension>
#37     TestWidgetsFlutterBinding._runTest (package:flutter_test/src/binding.dart:678:14)
#38     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1051:24)
#44     AutomatedTestWidgetsFlutterBinding.runTest (package:flutter_test/src/binding.dart:1048:15)
#45     testWidgets.<anonymous closure> (package:flutter_test/src/widget_tester.dart:118:22)
#46     Declarer.test.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:168:27)
<asynchronous suspension>
#47     Invoker.waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:250:15)
<asynchronous suspension>
#52     Invoker.waitForOutstandingCallbacks (package:test_api/src/backend/invoker.dart:247:5)
#53     Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:166:33)
#58     Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:165:13)
<asynchronous suspension>
#59     Invoker._onRun.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart:400:25)
<asynchronous suspension>
#73     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:382:19)
#74     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5)
#75     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
(elided 32 frames from class _FakeAsync, package dart:async, package dart:async-patch, and package stack_trace)

════════════════════════════════════════════════════════════════════════════════════════════════════
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building Text("loose"):
No Directionality widget found.
RichText widgets require a Directionality widget ancestor.
The specific widget that could not find a Directionality ancestor was:
  RichText
The ownership chain for the affected widget is: "RichText ← Text ← SizedBox ← [root]"
Typically, the Directionality widget is introduced by the MaterialApp or WidgetsApp widget at the
top of your application widget tree. It determines the ambient reading direction and is used, for
example, to determine how to lay out text, how to interpret "start" and "end" values, and to resolve
EdgeInsetsDirectional, AlignmentDirectional, and other *Directional objects.

The relevant error-causing widget was:
  Text file:///Users/chtai/apps/draw/test/widget_test.dart:14:51

When the exception was thrown, this was the stack:
#0      debugCheckHasDirectionality.<anonymous closure> (package:flutter/src/widgets/debug.dart:243:7)
#1      debugCheckHasDirectionality (package:flutter/src/widgets/debug.dart:259:4)
#2      RichText.createRenderObject (package:flutter/src/widgets/basic.dart:5113:37)
#3      RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4772:28)
#4      MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5267:11)
#5      Element.inflateWidget (package:flutter/src/widgets/framework.dart:3109:14)
#6      Element.updateChild (package:flutter/src/widgets/framework.dart:2903:12)
#7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3978:16)
#8      Element.rebuild (package:flutter/src/widgets/framework.dart:3755:5)
#9      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3941:5)
#10     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3936:5)
#11     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3109:14)
#12     Element.updateChild (package:flutter/src/widgets/framework.dart:2903:12)
#13     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5165:14)
#14     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3109:14)
#15     Element.updateChild (package:flutter/src/widgets/framework.dart:2903:12)
#16     RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1028:16)
#17     RenderObjectToWidgetElement.update (package:flutter/src/widgets/binding.dart:1006:5)
#18     RenderObjectToWidgetElement.performRebuild (package:flutter/src/widgets/binding.dart:1020:7)
#19     Element.rebuild (package:flutter/src/widgets/framework.dart:3755:5)
#20     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2347:33)
#21     AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:975:18)
#22     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:283:5)
#23     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1097:15)
#24     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1036:9)
#25     AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:873:9)
#28     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:41)
#29     AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:860:27)
#30     WidgetTester.pumpWidget.<anonymous closure> (package:flutter_test/src/widget_tester.dart:320:22)
#33     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:41)
#34     WidgetTester.pumpWidget (package:flutter_test/src/widget_tester.dart:317:27)
#35     main.<anonymous closure> (file:///Users/chtai/apps/draw/test/widget_test.dart:14:18)
<asynchronous suspension>
#36     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:121:25)
<asynchronous suspension>
#37     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:695:19)
<asynchronous suspension>
#40     TestWidgetsFlutterBinding._runTest (package:flutter_test/src/binding.dart:678:14)
#41     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1051:24)
#47     AutomatedTestWidgetsFlutterBinding.runTest (package:flutter_test/src/binding.dart:1048:15)
#48     testWidgets.<anonymous closure> (package:flutter_test/src/widget_tester.dart:118:22)
#49     Declarer.test.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:168:27)
<asynchronous suspension>
#50     Invoker.waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:250:15)
<asynchronous suspension>
#55     Invoker.waitForOutstandingCallbacks (package:test_api/src/backend/invoker.dart:247:5)
#56     Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:166:33)
#61     Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:165:13)
<asynchronous suspension>
#62     Invoker._onRun.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart:400:25)
<asynchronous suspension>
#76     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:382:19)
#77     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5)
#78     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
(elided 32 frames from class _FakeAsync, package dart:async, package dart:async-patch, and package stack_trace)

════════════════════════════════════════════════════════════════════════════════════════════════════
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following message was thrown:
Multiple exceptions (2) were detected during the running of the current test, and at least one was
unexpected.
════════════════════════════════════════════════════════════════════════════════════════════════════

Odd...

My steps to reproduce:

check out tip of tree flutter/flutter (I was on 076bea38f2).
create packages/flutter/test/widgets/44485_test.dart and fill it with the exact text from @chunhtai's comment above.
from the packages/flutter directory, run flutter test test/widgets/44485_test.dart.

(I have FLUTTER_TOOL_ARGS=--enable-asserts set in my environment, though that doesn't seem to affect anything here.)

This is re-producing for me as well on HEAD.
@chunhtai Where you running this on HEAD?

I am a little concerned about this one: We are crashing while generating an error message. That crash is swallowing the actual error.

I can reproduce it, I was testing it outside the flutter package. If the test is in flutter package, it will run on a different code path

Identifying the relevant widget is certainly useful and we had this request from several important customers. Reverting the functionality entirely seems to be an extreme response? How much work would it take to fix the crash?

It might take some time to fix this crasher. We just would like to some information from you to see if it worth the fix. It seems like this functionality is still relevant and we should keep maintaining it.

Yes, this feature is important. If the crash rate crosses a line that
affects many users, I'd be fine with temporarily disabling this feature
until the crash is fixed.
Tao
On Thu, Mar 5, 2020 at 12:58 PM chunhtai<EMAIL_ADDRESS>wrote:

It might take some time to fix this crasher. We just would like to some
information from you to see if it worth the fix. It seems like this
functionality is still relevant and we should keep maintaining it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/flutter/flutter/issues/44485?email_source=notifications&email_token=AACVGDW6DVYDLVSQVB5UPIDRGAG65A5CNFSM4JLA3DGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEN6345A#issuecomment-595443316,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACVGDV4CXWORNDCWHUCPHDRGAG65ANCNFSM4JLA3DGA
.


Measure  becomes twice higher if we do it twice without reloading the page

We adapted this code for implementing automatic calibration for latency compensation in a DAW we're developing. We experienced a strange behavior: when measuring the round trip latency after a fresh reload of the index.html page it works all the time, but if we perform the measure twice without reloading, the second time the round trip latency is about twice the value of the first measure. If we reload the page the measure is ok.
We fixed this in our code (adapted from the one in this repo) by resetting everything when we restart the calibration. We did it a bit "brute force" so maybe it's juste one or two variables that need to be reset.

I think the problem might be related to suspend and resume the AudioContext. I found another workaround just by connecting and disconnecting the worklet_module to the ac.destination, when clicking on start or stop.
You can check it out here:
https://github.com/padenot/roundtrip-latency-tester/commit/0aeca81fb7d4e2363c497ace99abfbd9e4f2fad5
Maybe you are also interested in this:
https://github.com/padenot/roundtrip-latency-tester/pull/2


Add .bowerrc so bower files are placed correctly

Fixes the test runner

Is this necessary if you are overriding the bower directory in your app? I'm all for completeness but I don't understand what problem this is actually solving.

Bower by default places the files in app/bower_directory, and your test html is looking for it in bower_directory (sans app/).

I'm afraid I'm still at a loss :confused:

Bower by default places the files in app/bower_directory

How does this happen? My understanding is that bower uses bower_directory by default.
For a sanity check, I did a fresh clone and followed the testing instructions, and encountered no errors. Since Travis builds are passing as well, I'm inclined to believe that the bower components are being correctly installed. Am I missing something?


Paste Style does not work with keyboard shortcuts

Issue was originally recorded for the Obsidian plugin #506, but after some testing @Missionary2112 confirmed the same issue on https://excalidraw.com
Describe the bug
I can copy style using keyboard shortcuts (option + command + C), but I cannot paste style with the shortcut (option + command + V)
However, it does work when I right-click and choose the option in the popped up menu
To Reproduce
Steps to reproduce the behavior:
Use keyboard shortcut (option + command + C) to copy style
Use keyboard shortcut (option + command + V) to paste style
See error: Cannot paste style
Environment
OS including version: macOS Monterey Version 12.2.1
Browser: Safari 15.3
Keyboard: magic keyboard from MacBook Pro 2019

I noticed this a few days ago as well. Not sure how it broke, but here's a fix https://github.com/excalidraw/excalidraw/pull/4886


left_sidebar: Add border radius to selected stream list items.

discussion: https://chat.zulip.org/#narrow/stream/9-issues/topic/stream.20selection.20area
before:

after:

Looks good to me in manual testing!

Merged, thanks @amanagr!

Backported to 6.x as 787792ca3e69d44d9dcb0f8e5b416f0d8a520bc6.


promote GLMR, DED, PINK to Polkadex

promote GLMR, DED, PINK to Polkadex

thank you for your PR, we will add those tokens in this PR, will close this for now


TopBar Brand Sizing Fix

The rev-Brand (logo) in the TopBar component has sizing issues.

[ ] update the rev-Brand component so that it is contained in the TopBar

Can you please provide a screenshot.

ah interesting, I'm no longer seeing the issue. Closing this ticket


Switch dev LungMAP instance to Azul dev

We added the lungmap and lm2 catalogs to Azul dev in  DataBiosphere/azul#3956. The dev instance of the LungMAP DB  therefore can and should be using the dev instance of Azul.

Dup of #2371.


Drop graph and stages

Graph and Stage are internals of an implementation, does not make much sense to let it be user facing in any way so it is probably a concept to drop from the spec just making builder not reusables for instance.

Graph and Stage are necessary for ReactiveStreamsEngine to exist, which is discussed in #114. As long as ReactiveStreamsEngine is needed, Graph and Stage are needed, so this is essentially the same issue as #114.

Hmm, no?
User always starts from the builder so gets an internal representation - what you call graph but actually it is always GraphImpl - which does not need these 2 implementation details at all. Exposing it is an implementation leak.

The ReactiveStreamsEngine takes a Graph, which is a sequence of Stage's, and turns into into a running stream. Without Graph, ReactiveStreamsEngine can't exist.

There is no need of that in the api or said otherwise it does not bring anything. Would you expose rxjava or akka? This is exactly the same here.
Also did you intend the user to implement his own stages? Likely not cause you can break the impl this way so it means you would have to redo an engine as an user which would never be annoption IMHO.


Check for Duplicate

Add function in Event Handler to check for duplicate before attempting to store the event and return OK false if the event already exists.

Added code to fix this. Testing and will close once confirmed it's fixed


feat: Pricing on drop cards

PR Type

[ ] Bugfix
[x] Feature
[ ] Refactoring

Context

[x] Closes #10731

Needs Design check

@exezbcz please review

Did your issue had any of the "$" label on it?

[x] Fill up your DOT address: Payout

Screenshot 📸

[x] My fix has changed something on UI;

smol

lets put "free" instead of 0 USD

smol
lets put "free" instead of 0 USD

yeah information overload but lets go, Japanese design


MB-8135 updateMTOShipment won't blank out addresses

Description
Recently, I had updated the Prime API YAML file to have a new structure for address fields in shipments so that they could each have an individual description. However, this introduced a bug to the updateMTOShipment endpoint wherein an address would have its values blanked out if it was not included in the request body. Fixing this involved updating the AddressModel function in payload_to_model to accurately identify blank addresses. I also added a test and caught another little bug in the meantime.
Reviewer Notes
One other effect of the update to the Prime API's address structure is the return values. Instead of omitting the field if a null value was sent back from the server, now the response will look like:
"secondaryDeliveryAddress": {
  "city": null,
  "postalCode": null,
  "state": null,
  "streetAddress1": null
},

There is no way to get around this if we want to have visible documentation for each of these fields. The question - is this acceptable? Is the documentation not worth the potential confusion with the response? I'd appreciate feedback on that!
Setup
Populate your db and run your server:
make db_dev_e2e_populate server_run

Using the Prime API testing tool of your choice (Prime API Client or Postman):

Run fetchMTOUpdates to grab a shipment's ID and eTag
Save a record of one of its addresses (pickupAddress, destinationAddress, secondaryPickupAddress, or secondaryDeliveryAddress) so that you can refer to it later
Go to updateMTOShipment. Fill in the ID and eTag in the path params and IfMatch header, respectively.
Set up a small request body. Something like:{
  "scheduledPickupDate": "2021-06-23"
}

Send the request.
Check out your chosen address field in the response. Are all the values the same as they were before you sent the update? Then yay, that's a success!

Code Review Verification Steps

[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

References

Jira story for this change.

Messages

:book:
:link: MB-8135

  Generated by :no_entry_sign: dangerJS against 6d8765a8b4266dfa752b9d569ff1928333cf7d38


Qa

Coverage increased (+0.01%) to 81.62% when pulling 99c4fe4c1fd0a164e609635dada140365339d882 on qa into 533a3560f2f1a0a71bc58d842dae653380b46357 on master.


Discontinued?

Hey there!
I was thinking about creating a tool like this one and, in my opinion, it had a huge potential to become super popular, because every file structure convention should have a CLI like this to rely on. I'm wondering why it isn't so.
In your opinion, what are the reasons for this? Is there another tool or library replacing it? Or simply the community is not that interested in lint folder/file structures?

hey @fsmaia
This project was intended to help me in my personal and work projects, so I wasn't really thinking about the popularity or that it could have. Although I put it out there in case anyone would find it useful.
I'm not sure about why the community, especially the Javascript one, is not interested but I have seen similar tools for other languages, especially strongly typed ones (C, Java, etc) in the past.


unable to render inside of cube using double_sided and cull_mode

Bevy version
0.9.1
[Optional] Relevant system information
1.67.0, windows 10, 3090
INFO bevy_render::renderer: AdapterInfo { name: "NVIDIA GeForce RTX 3090", vendor: 4318, device: 8708, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "527.37", backend: Vulkan }
What you did
created a cube with size 1x1 and increased the meshes size every second
let mut material = StandardMaterial {base_color: Color::rgb(1.0,0.0, 0.0), double_sided: true, cull_mode: None, ..Default::default()};
i've tried using cull mode none, back and front
What went wrong
the faces are no longer rendered once the camera goes inside the cube, possibly an issue with frustum culling?
https://user-images.githubusercontent.com/60718883/218086199-8f604ad6-d0a3-4d90-87d0-0c778284ff04.mp4

I would guess it is indeed because of frustum culling and the cube passing the near plane. You can try changing this line https://github.com/bevyengine/bevy/blob/main/crates/bevy_render/src/view/visibility/mod.rs#L414 to if !frustum.intersects_obb(model_aabb, &model, false, false) { to test the theory.

Or make the cube larger so that its half extents are larger than the projection near plane.


Kucoin : username is null

I created a sandbox account on Kucoin. Printing AccountInfo works well but username is null as you can see if I print it :
AccountInfo [username=null, tradingFee=null, wallets={main=Wallet{balances={BTC=Balance [currency=BTC, total=1, available=1, frozen=0, borrowed=0, loaned=0, withdrawing=0, depositing=0], ETH=Balance [currency=ETH, total=10, available=10, frozen=0, borrowed=0, loaned=0, withdrawing=0, depositing=0], KCS=Balance [currency=KCS, total=1000, available=1000, frozen=0, borrowed=0, loaned=0, withdrawing=0, depositing=0]}, id='main', name='main', walletFeatures=[TRADING, FUNDING], maxLeverage=0, currentLeverage=0}}]
Tried with 4.4.2-SNAPSHOT

does their API return the users name somewhere?
if yes, then feel free to submit a pull request with a fix


Support the same namespace and same gitrepository but with different git tag or git branch

We have one configuration gitrepository, call solutiona-configure.
And different components need to use solutiona-configure git repo, to deploy.
So we have several gitrepository resources like below:
Resource1:
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: GitRepository
metadata:
  name: aa--base
  namespace: aa-xxx
spec:
  gitImplementation: go-git
  interval: 5m0s
  ref:
    branch: master
    tag: v0.2.0
  secretRef:
    name: xx
  timeout: 20s
  url: http://git-xxx:8080/services/solutiona-configure.git

Resource2:
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: GitRepository
metadata:
  name: aa--base
  namespace: aa-xxx
spec:
  gitImplementation: go-git
  interval: 5m0s
  ref:
    branch: master
    tag: v0.2.1
  secretRef:
    name: xx
  timeout: 20s
  url: http://git-xxx:8080/services/solutiona-configure.git

If you check, they are the same url under the same namespace, but with different tag.
And we found, the source-controller meet issues.
So we hope source-controller can support the same git repo url under the same namespace can have different tag.

The same resource cannot be created twice with the same name and namespace, as one will necessarily overwrite the other. (I guess you found the error!)


added support for Android coarse location permission

Would love to have this merged. Either FINE_LOCATION or COARSE_LOCATION is required to use bluetooth. Asking for COARSE_LOCATION is far less aggressive towards users.

It's not available in the 1.2.0! Please check the changelog https://github.com/react-native-community/react-native-permissions/releases/tag/1.2.0


Refactor poster plugin

No longer listens to CONTAINER_STATE_BUFFERING or CONTAINER_STATE_BUFFERFILL and removes some duplicated code, as I think the same is being achieved now without those events?
Tested with a hls stream and mp4 and seems to be working.
Also this fixes a bug where the poster was hidden incorrectly when #747 is being used (although that pr is currently out of date).

Hey @tjenkinson, this refactor seems a good idea, but there are two main points that I would like to suggest that you change.
First, there's the data-clickable attribute. Instead of doing this, I'd rather add a clickable class. I'm not a big fan of using attributes, specially with data prefix, to control applying styles. Using data attributes is usually done for setting actual data to be used by whatever component is accessing the element. In Clappr, the data attributes are actually legacy, we used in early prototypes to apply individual styles to elements depending on which player instance they're rendered into (the player id was a value applied to these attributes). The data attributes have been since replaced by classes, and are being used only to increase css priority, but I think they will be removed soon.
The other one is the use of setTimeout(fn, 0). We are using process.nextTick instead of this, to keep Clappr compatible with the node.js default api. There's already a browser shim to be used in Clappr, so we'd rather use this. When we changed the other setTimeout calls, we must have missed this one.
As I told you before, I didn't want the poster to have that much logic in it. It shouldn't be responsible for keeping state in it, but I don't think it's the right time to change this, so we can go on with this refactor. Could you please change these two issues I pointed?

Yes that's fine will do.

Think those are done now

It looks great to me :) thoughts @clappr/core ?

@leandromoreira because https://github.com/clappr/clappr/pull/747 was merged in this PR now needs merging. The poster is currently removed incorrectly with that change. (It's removed as soon as the player is loaded)

I'm sorry man =) and once again thank you very much.

no problem :)


Code enhancement

Ran against HA's pylintrc
Plugwise_Smile/Smile.py:1:0: C0103: Module name "Smile" doesn't conform to snake_case naming style (invalid-name)
Plugwise_Smile/Smile.py:487:8: R1702: Too many nested blocks (6/5) (too-many-nested-blocks)
Plugwise_Smile/Smile.py:629:12: R1715: Consider using dict.get for getting values from a dict if a key is present or a default if not (consider-using-get)
Plugwise_Smile/Smile.py:717:8: R1702: Too many nested blocks (6/5) (too-many-nested-blocks)
Plugwise_Smile/Smile.py:717:8: R1702: Too many nested blocks (7/5) (too-many-nested-blocks)
Plugwise_Smile/Smile.py:827:8: R1702: Too many nested blocks (7/5) (too-many-nested-blocks)
Plugwise_Smile/Smile.py:827:8: R1702: Too many nested blocks (8/5) (too-many-nested-blocks)

629 / R1715 needs rewriting as the else in there won't work with dict.get()

Leftovers after #40


Re-define __priority_whichs as c_uint

Fixes #1767

@JohnTitor: no appropriate reviewer found, use r? to override


Add cluster-wide image whitelist using KritisConfig CRD

WHAT
This pull request adds cluster-wide image whitelisting feature.
WHY
We need whitelist feature:

to allow developers to use Telepresence which deploys docker images provided by them
to use Istio-sidecar
etc

Currently Kritis has whitelist feature which has 2 levels:

Global whitelist (hardcoded)
ImageSecurityPolicy whitelist (CRD)

But it's not useful for our use-case because:

(1) is hardcoded, we don't want to do that. and whitelist could be different between dev and prod.
(2) is per namespace, we want to have cluster-wide whitelist. Also ImageSecurityPolicy's whitelist is check strictly with image digest. ( can't allow like gcr.io/foo/bar )

Thanks!
Merged!


Custom file type editors without a whole project system

I'm currently writing an extension that opens a custom editor in C# for my file extension.  It was unbelievably painful using the existing APIs.  The docs say it isn't even supported to write custom editors in c# anymore.  I'm not looking to develop a project system.  I simply want to add my own file types that work in existing C# projects.  When the file is opened it opens in a custom editor and when it is saved, it generates some custom c# code and adds then to the project.
Think of how the Winforms designer works, you double-click a form, you get its editor, you make changes to controls and hit save, it generates code-behind.  This needs to be a lot easier and I would love to see it added to the new extensibility model.  Also, it seems impossible to set an icon on my custom file type without building a whole project system.  It would be nice to see that fixed too.

When you say custom editors, are you trying to see how you could implement a custom designer in the new extensibility model? If so, unfortunately we don't have that capability yet. But we'd love to learn more about what you envision for your custom designer.

Hi :),
I have this issue also, in my case I have an editor for certain file extensions (xlsx files) that show a wpf custom control that allows for modifications to be made in a Visual way.
Currently the editor is supported by a VSSDK extension that I would like to migrate to the new extensibility model.
The way I envision it is having a factory that allow for the creation of the wpf custom control, based on the project item, and returns it as the content of the editor.
Best regards
POFerro

Yes. In my current extension I have a custom file type that is usually backed by a JSON document when the user clicks on it, I have it open a custom designer, saving changes in the designer saves the file. It also kicks off a process that generates and adds custom code files to the project.

I would also appreciate to be able to create custom editor with the new framework. I'm developing an extension that will be used for modification of a specific XML files using UI. We could use a toolbar window but we would rather give our users the option to edit multiple of those files at once.


Make old "What's New" accessible

It seems that currently the "What's New" file covers only the most recent update. If I need the change in build instructions that were in a prior "What's New", there is no obvious way to get them.
If the "What's New" file just added to the front, then people could find old instructions, as well as scroll down the page to see how much progress has been made between versions.

Well, this "What's New" is the first one we've done to document progress explicitly.  Even if their had been previous non-cumulative versions, wouldn't they be accessible in the previous release tarballs?
Anyway, my intent with this "What's New" file it to make it a cumulative running history, with progress for later versions appended at the top each time.  It seems cleaner to me to keep this information in whatsnew.md, separate from readme.md, but if you think it's better to put it all in readme.md, I'm happy to do that instead.

cumulative running history sounds ideal


New-ServiceNowTableEntry - Unable To Add Users To SN Groups

Hello, I can create new TableEntries but have a few issues.
I am trying to automate cloning SN groups from one user to another user.
However, I am unable to populate the following fields:
sys_domain_path
sys_domain
user
group
Are you able to advise on the syntax to use in this case? If I can figure out how to manually populate those fields with the New-SNTE cmdlet I can do a foreach loop for our automation.
Also, it appears we have fields like "group" which contain multiple attributes.
However, even trying to set the ConvertTo-JSON 'depth' to 4 (which should suffice) does not help.
Kind Regards

`PS C:> $user = Get-ServiceNowTableEntry -Table sys_user_grmember -First 1 -MatchContains<EMAIL_ADDRESS>| Select user
PS C:> $user
user
@{display_value=Test User (test.user@company.com); link=https://company.service-now.com/api/now/v1/table/sys_user/redactedsysid}
PS C:> $user.user
display_value                                 link

Test User<EMAIL_ADDRESS>https://company.service-now.com/api/now/v1/table/sys_user/redactedsysid
PS C:> $user.user.display_value
Test User<EMAIL_ADDRESS>PS C:> $user.user.link
https://company.service-now.com/api/now/v1/table/sys_user/redactedsysid
PS C:> `


Always source .env in docker (if it exists)

Fixes a bug where .env was sometimes not sourced

Duplicate of #7230.

More like #7230 was a duplicate of this! I demand satisfaction!


[SPARK-47940][BUILD][TESTS] Upgrade guava dependency to 33.1.0-jre in Docker IT

What changes were proposed in this pull request?
This PR aims to upgrade guava dependency to 33.1.0-jre in Docker Integration tests.
Why are the changes needed?
This is a preparation of the following PR.

#45372

Does this PR introduce any user-facing change?
No.
How was this patch tested?
Pass the CIs.
Was this patch authored or co-authored using generative AI tooling?
No.

I made this PR with your authorship, @pan3793 .

Docker Integration Tests passed. And, PySpark UT failures are irrelevant to this PR.

Could you review this dependency PR, @huaxingao ?

Thank you! Merged to master.


Maximum of (ctime, mtime) - what I call "version time" or "vtime"

Especially (but not exclusively) on systems without btime, I often find it useful to find files newer than a given reference file/time.  However, things like cp and tar have a way of altering the time backward or forward.  When they do so they update the ctime (aka "the mtime for most inode metadata").  This makes max(ctime, mtime) a useful "synthetic" time stamp.
It seems clearly useful to have this sort of thing built in to a find-like utility in things like -newerXY.  I am unaware of tools beyond several of my own which integrate the concept.  I mean, I know you could just printf both and take the max in a pipeline, but then you have to produce all the output to run the > max() calculation against (binary->ASCII->binary cycles; blech).  Much more efficient to do the various inequalities inside whatever evaluator the find-like tool is using.  This also ought to be an extremely easy feature to add.
About the only decision to make is what letter to use.  I like lowercase 'v' for "v)ersion", but I am not aware of this "version time" as standard terminology.  I kind of doubt there is any more standard name.  I partly chose "version" so that 'v' would not collide with 'm' (and also since 'm' would be ambiguous with min, as well as modification), but I find it "suggestive".  I could be biased having used this abbreviation/term for almost a quarter century now, though..
{ Personally, I think GNU find is kind of kooky for going with uppercase 'B' for birth time.. as if someone did that first with 'C' for creation as it is sometimes called outside Linux, and then thought better of it and changed to 'b' to disambiguate and then forgot to go lowercase to be consistent or some such silliness.  So, if things are case-sensitive at all then you might want to make 'b' and alias for 'B'... but this is (more of) a nitpick. }

My understanding is that any time the mtime is changed, the ctime is set to the current time.  So typically you'll have ctime >= mtime and you can just use ctime, unless the mtime is in the future.
If that's a concern, then you can use the fact that
a > \max\{b, c\} \iff a > b \;\;\&\;\; a > c

to write the equivalent of your proposed -nexerXv as
$ bfs -newerXc ... -and -newerXm ...

and or -newervY you could use -or.

Personally, I think GNU find is kind of kooky for going with uppercase 'B' for birth time

I'm not sure where that convention came from, but I don't think GNU find started it.  The BSD finds have -Bnewer etc. while GNU find doesn't.

What prevents you from just using ctime is that mtime can be updated on its own just with file writes. { Although file writes can also happen without mtime updates via writable mmaps which mutate sans system calls.. }  So, it's not so rare for it to be in the future relative to ctime.
But your -and idea does work as a verbose substitute for the single letter change I'm used to doing... :-)  Like shell aliases, this "file age alias" is mostly a question of "how often does this construct arise".  Anyway, thanks for the reply.  I'll just close.

What prevents you from just using ctime is that mtime can be updated on its own just with file writes.

I think that would be a kernel bug if that happened.  I did see some relevant Linux patches recently, e.g<EMAIL_ADDRESS>
POSIX requires that when the mtime is updated that the ctime also be updated.

It is some pretty radical news to me that POSIX is (or always has been?!) requiring ctime updates after mtime. :exploding_head:  This strikes me as going against ancient traditions in many OS kernels which makes me wonder about its adoption.  Very interesting!
FWIW, I really only mentioned all this because bfs seems to aim to have a "union" of features.  There are some not-quite-find-but-similar ideas where that kind of boolean combination must be embedded, such as the "newest N files by various ages, X" which I am pretty sure requires a very small heap (or sorting) where the internal comparisons must be outside the max.
Once you had, say, -vnewest 10, the v would be more natural in that newerXY context.  So, I may have introduced the idea in the wrong order.  Although all my reasoning is somewhat in The Before Times when mtime could update independently..  Independent update does not, of course, change tar/cp/something sets the mtime into the future or time zones or weirdness, but all that is more rare and arguably a "false positive" for the "version concept" anyway.  (I've never been super happy with that word, "version".)
I could also see how adding -Xnewest <int> might be considered out of scope.  I don't know any finds that have a -newest/-cnewest/-anewest, though I expect you have more exhaustive knowledge of your competitors.  I do find it a useful operation and it also requires efficient recursive stats.  Maybe bfs could be the first? :-)
These kinds of "heap filters" might be interesting more generally (e.g. as -biggest N file sizes).  I'm pretty sure top N is popular in the SQL world.

It is some pretty radical news to me that POSIX is (or always has been?!) requiring ctime updates after mtime. :exploding_head: This strikes me as going against ancient traditions in many OS kernels which makes me wonder about its adoption. Very interesting!

Yeah I don't know how the various UNIXes behave in practice here.  But I did just check on my computer and echo >foo updates both times.

These kinds of "heap filters" might be interesting more generally (e.g. as -biggest N file sizes). I'm pretty sure top N is popular in the SQL world.

Indeed, and I think this might be doable with fselect.
Almost all of bfs's features are "local" in the sense that they look at each file separately, the exceptions being -s (sorting) and -unique.  There's an open ticket for more advanced sorting (#58) but that would still be per-directory like -s.  I think sorting the whole result stream is out of scope for bfs, but you can probably cobble together a pipeline to do it, something like:
$ bfs -printf '%C@ %T@ %p\n' | awk '{ k = $1 > $2 ? $1 : $2; print k, $3 }' | sort -n | tail -n10

Yeah.  I did go to the LKML archives and search around and while I'm convinced that Jeff Layton thinks POSIX says this to be true, I sure cannot find any primary POSIX-like sources that say so.  I may check Austin next.  There needs to be a nice version ctl log for all this stuff so I can just git log it... Maybe there is by now.
There is various traffic on LKML searching for ctime mtime update including some that suggests mtime on mmap()d files should also be updated (say when the kernel gets around to flushing the dirty page to backing store) as far back as 2007..2008.  I'm pretty sure back then I used kernels which did not do that, though there could have been some lag, and while I haven't written a little test program today to check it, I'd swear I also had to do the equivalent of touch after modify for mmaped writes as recently as 2 years ago.  So, the short of all this is - I'm still investigating WTF semantics have become.
The problem with your awk pipeline is that it has to do all that binary -> ASCII -> binary as well as then sort the whole thing -- including all that pathname data IO -- instead of just keeping a tiny heap-structured array of like 10 things (or N for top N).  The top N problem is not perfectly local, in your terms, but it can still be very low resource.  (The lgN per-heap operation costs are only lg10 here, too.)  Well, for top 1 it could basically be more local (but for how the flavor of the CLI might be in terms of emitting only at the end).
Anyway, I know how to do it various ways.. I perhaps should have been more clear that my interest here was more in brainstorming to help you improve your tool, not me solving some more concrete problem.  I already have newest that does that heap approach that can even use my personal sys_batch Linux kernel module to do batch stat system calls if I'm in a Caffeine-Fueled Rage Optimization (CFRO) mode. :-)

Yeah. I did go to the LKML archives and search around and while I'm convinced that Jeff Layton thinks POSIX says this to be true, I sure cannot find any primary POSIX-like sources that say so.

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_09 says

Each function or utility in POSIX.1-2017 that reads or writes data (even if the data does not change) or performs an operation to change file status (even if the file status does not change) indicates which of the appropriate timestamps shall be marked for update.

And e.g. write() says

Upon successful completion, where nbyte is greater than 0, write() shall mark for update the last data modification and last file status change timestamps of the file

I don't know the details around mmap().  Linux does not particularly care: https://yarchive.net/comp/linux/mtime_mmap.html

The problem with your awk pipeline is that it has to do all that binary -> ASCII -> binary as well as then sort the whole thing -- including all that pathname data IO -- instead of just keeping a tiny heap-structured array of like 10 things (or N for top N). The top N problem is not perfectly local, in your terms, but it can still be very low resource. (The lgN per-heap operation costs are only lg10 here, too.) Well, for top 1 it could basically be more local (but for how the flavor of the CLI might be in terms of emitting only at the end).

True, it is inefficient.  (By the way, technically you can extract the top N items with a linear time selection algorithm.  You can even do this online.  But I'd guess a heap is better in practice.)

Anyway, I know how to do it various ways.. I perhaps should have been more clear that my interest here was more in brainstorming to help you improve your tool, not me solving some more concrete problem.

That's fair!  There's basically three ways something gets added to bfs:

It's a feature I personally need
I don't really need it but I get nerdsniped into adding it anyway ;)
Someone else writes it, and I think it's worthwhile

I see the value of a "find top 10 newest files" operation, but I think it doesn't outweigh the effort it would take to implement.  I reserve the right to change my mind :)

I already have newest that does that heap approach

Nice!

that can even use my personal sys_batch Linux kernel module to do batch stat system calls if I'm in a Caffeine-Fueled Rage Optimization (CFRO) mode. :-)

Also cool!  Though I'm guessing you could use io_uring?

Well, I found it in the write(2) spec by now (as you quote), but I remain curious when this settled, who all honors it, and what prior language was.  Hence my bemoaning no git log.  The mmap stuff is pretty ambiguous about what if you never call msync or munmap.  E.g., the process simply exits and the kernel cleans up.  I did find this frustrated article LOL. (Warning - it's a long read).  At least for me it's usually a very small heap.  Quickselect-wise, I found this which supports a maybe-optimized heapselect (not sure how much those JS results generalize..)  I was only trying to help, not nerdsnipe. :-)  Cheers!

I forgot that I neglected to answer about the io_uring bit and remembered when I saw you start that repo.  Sure, you can use that now on Linux.  Part of my writing/using sys_batch is that I had very similar Linux kernel patches back around 1999..2000. So, it was follow-on work that actually pre-dated io_uring (by a lot).
Another part was/is to try to help put an example out there (another example?) not only for Linux, but any OS (or even any distributed system with pricey round-trips) with modules &| expensive system call boundaries, but also with a highly uniform/regular interface (like the Linux syscall interface).  Once you have that regularity, a little batch-comparing-jump-forward-only nano-"assembly language" has a simple strength to it.  batch.c is only 182 lines and the body of sys_batch itself only 55 lines.
io_uring is probably a bit better, also less general in a few ways.  E.g., last I knew there were also still a great many missing system calls while if anything sys_batch should probably black list a few more calls.  Optimization is specialization, of course.  So, io_uring might be marginally faster (and I should say I do like its ideas!), but I have not benchmarked the two together.  (Another possibility is the BPF stuff, but my guess is that would be slower.)  sys_batch does copy its args from user to kernel which is not free.

Yeah I looked in more detail after I made that comment and the little VM that's part of sys_batch is pretty cool, and not really something io_uring does.  Unless you can drive it with eBPF somehow.

Personally, I am a bit at a loss why this kind of thing is not more prevalent all over and kind of like "old hat" if you know that expression.  "Byte code" is freakin' everywhere.  Maybe that just comes from the deep penetration of Emacs.  Ideas need examples to copy/propaganda/something to spread ideas.  This one is kind of "too simple" for most academic paper circuits.. It would be some work to port it to all of the arch/'s Linux supports, of course.
I once asked one of the Plan9 principals why 9p didn't have something like that.  He said it was because the NJ group did not have enough feedback from the outside world which I thought was kind of an odd answer (but I think I might have been the 3rd person that particular day to ask him that question).

But I often find myself at a loss for why the world is how it is and why we are so captive to existing toolkits.  Reading your hyperfine results on bfs on ycombinator today, it reminded me that  when I was writing tim.md, I wasn't sure how to express "Why do people keep reporting error bars reflective of system noise probably not even reproducible by themselves?".  I mean, we all know it depends on what background activity is happening, where browsers are in various auto-something-or-other cycles, etc.  At least in the millisecond time scale regimes.  One mitigation is at least the mean+-stderr of min times of N which everyone also "knows" (sort of), at least as well as they know hot cache(s) != cold.  I realize this probably comes off as critical and I don't mean it that way.  I'm sure you're just used to running hyperfine foo.  And I'm not even perfectly happy with tim, but it at least feels less.. off track.
Anyway, I don't know why I write so much or mean to bother you.  I liked the vibe of your "could've invented futexes" post.  You seem like a smart fellow who might appreciate hearing my frustrations or share some was all.


Update generic_switch README.md

Fix typo in generic_switch README.md

 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.


Fix License key issues with build automation

We use Devops to build our android APK's and we build for 3 different environments (dev, beta, live). Each env has it's own license key so I needed to be able to change it during the build process, there was an issue with the plugin adding a default meta-data element for com.transistorsoft.firebaseproxy.license to androidmanifest.xml whenever the platform was added. I could not use the cordova config.xml config-file facility to add the license key as it caused a duplicate issue as one was already added by the plugin. I decided to remove the default from the plugin so it now works in the same way as the cordova-background-geolocation plugin. I also updated the  cordova-support-google-services dependency to 1.4.0 as 1.3.1 was out of date.

Looks good.   Thanks, I forgot about this one.

0.2.1 is released.


many-examples: tensorflow_cpu dependency fail with Python 3.8

Related to #425
The version of tensorflow_cpu we specify in requirements.txt doesn't work with Python 3.8. If we tell it to use version 2.4.x (latest version) that fails sometimes because of Jina's other dependencies.
Proposed solution

Switch to tensorflow_cpu==2.3 in requirements.txt. This ensures dependencies install with both Python 3.7 and 3.8 and on a version of Jina specified in requirements.txt

I'm working on this now. This should fix several examples

Update on Pokedex: It only works with Python 3.7 and tensorflow_cpu 2.1.x.
Any bump on tf_cpu version breaks things with FailedPreconditionError() on index and query (Flows close successfully, but don't work)

Huh, Pokedex works with Jina 1.2 and tensorflow_cpu 2.4. I'll make a PR to fix

Here's a sheet with testing results.
If seems whatever I do, I can't get same versions of Jina/Tensorflow_cpu working with both Python 3.7 and 3.8

we can aim to have  the latest2.4.1 tensorflow_cpu compatible with python 3.8, jina

I'm not sure whose call it is to make. @nan-wang who is in charge of our examples repo as a whole (specifically CI/CD)?

We are using this https://github.com/actions/setup-python for jina repo. I am taking care of the CICD in the example repo since last week. I've seen the problem of tensorflow_cpu and this is due to the fact 2.1.0 has security issues.

The point is that the tests are not well written and therefore only fixing CICD can NOT solve the problem. I'm updating all the tests. #512

added into CI at #596

All clear! https://github.com/actions/setup-python also does the job quite well.
Regarding the tests itself, I made a suggestion here on improving the tests for the examples. What do you think @nan-wang ?

One small advantage of tox is that developer can easily reproduce the functionality locally from the cmd-line (i.e. creating individual venv's and running tests with correct venv's) with only one command. It is nice for debugging the CI and I personally find it more verbose than the CI scripts.


[review] Link to hydra job missing

As part of the review for https://github.com/NixOS/nixos-homepage/pull/454

https://nixos.org/nixos/packages.html?attr=firefox&channel=nixpkgs-unstable&query=firefox
The Platforms link link to the job for the given platform for the given attribute. It is currently missing from the new implementation.

Three issues:

[ ] All links point to x86_64-linux forcibly.

i686-linux

[ ] Darwin links will not work

All links to darwin will end up "wrong". The old implementation only added Darwin links for nixpkgs channel, not nixos. There is no nixpkgs.hello.x86_64-darwin in Hydra for the nixos channels.
This is a hard issue to solve right. It was only working on the previous implementation because of a decision to use nixpkgs-unstable and nixos-yy.mm.

[ ] Channel change in links is immediate

This could be seen more as a nitpick, but this is more about keeping things legit and well-organized all the way.
It seems that the links are not built using the state from the current search, but from an amalgamation of the current state of the form + the state of the search. I would expect that, for all results, things always end up changing to either pressing the search button or all form changes. This is currently a mish-mash.

Be on unstable channel.
Search for hello.
Open the hello result
Observe where links point to.
Change the channel to 20.03 DO NOT update using Search.
Observe the links changing.

Yeah, just noticed this as well. nixos-unstable does not include any other platform then x86_64-linux. I'll switch to nixpkgs-unstable while still calling it unstable.

Since I also imported the evaluation builds data packages and platforms that have build will be linked to the build directly and not to the hydra job.


Big ol' Solution Meta issue

Description
Ok, so SolutionContainerManagerComponent has been added but it's not the end of Solution-related refactors.
Feel free to add your grievances:

[ ] SolutionContainerSystem should take care of Solutions as well. (and be renamed)
[ ] FitsInDispenser seems like it should be a tag that just looks for DrawableComponent
[ ] RefillableComponent could add some sounds and completely replace FireExtinguisherComponent
[ ] #3926
[ ] #4547
[ ] #4534
[ ] Methods on Solution-related systems should use EntityUid instead of IEntity but offer IEntity params as a convenience.
[ ] Investigate removing ReagentUnit non-ReagentUnit equality comparisson.
[ ] Many methods that take (string id, ReagentUnit quant) can be replaced with ReagentQuantity

For some reason, every single thing on Saltern that has a solution container ends up writing it into the blueprint, empty.
I suspect this is why the plasma items are "empty".

For some reason, every single thing on Saltern that has a solution container ends up writing it into the blueprint, empty.
I suspect this is why the plasma items are "empty".

It might be a serialization issue, I was going to investigate but I'm not feeling well.
One way to fix it is to enter default values for maxVol on every solution container and  fix values on saltern.yml, either manually or via save/load.
That said it's not a true fix. Moment someone maps a SolutionContainer twith slightly different values than default it's going to resurface again.

as far as I can tell the serialization issue is that DataField is writing tons of data to the blueprint it shouldn't, and this applies across several systems
Applying readOnly to everything may be an actual fix to some extent

as far as I can tell the serialization issue is that DataField is writing tons of data to the blueprint it shouldn't, and this applies across several systems

Well from what I saw,  spawning does it's job. On save the entity is minimized and only fields differing from default are saved in the map.
However on load rather than taking value from prototype and applying diff, the load overrides the value.

Not sure how this is an on-load issue:

there shouldn't be a value in the map in the first place
when I removed the component overrides from the map, they got put back in again on save
The corrected map without a further save works properly (map-placed plasma actually contains plasma, etc.)

* there shouldn't be a value in the map in the first place

Yes, it should. On init of SolutionContainer if Sum(ReagentUnit) is greater than the maxVol, maxVol is set to Sum(ReagentUnit). Is this a bug? No. It's not different from someone going and manually changing some reagent values.

* when I removed the component overrides from the map, they got put back in again on save

The component overrides aren't the problem; it's an inconsistency between saving and load. In other words, a serialization issue.
If something != deserialize(serialize(something))

* The corrected map without a further save works properly (map-placed plasma actually contains plasma, etc.)

Did you fix maxVol on solution prototype?
This talk should have been on Discord, I repeated this same talk like 3 different times there and here already.

I said it wasn't an on-load issue, not that it wasn't an on-save issue.

Oh, wait, I think I get what you're saying - is the maxVol in the prototype different to what gets loaded because of internal changes? Because in that case it's still going to cause issues, because even with perfect serialization it'll be writing in data that, when the prototype changes, will still overwrite things.

Oh, wait, I think I get what you're saying - is the maxVol in the prototype different to what gets loaded because of internal changes? Because in that case it's still going to cause issues, because even with perfect serialization it'll be writing in data that

Well, partially, here is the gist of it:
prototype for WeldingTank
- type: solutionContainer
  solutions:
     tank:
        reagents:
        - id: WeldingFuel
          quantity: 1500

on spawn becomes:
- type: solutionContainer
  solutions:
     tank:
        maxVol: 1500 #Added by system
        reagents:
        - id: WeldingFuel
          quantity: 1500

what's saved in the saltern.yaml (the diff between prototype and entity)
- type: solutionContainer
  solutions:
     tank:
        maxVol: 1500 #Saved

What's loaded on map start:
- type: solutionContainer
  solutions:
     tank:
        maxVol: 1500 #Saved

Rather than taking prototype entity and finding a tank entry and changing its field. The load bulldozes over the values.

@Ygg01 is right, this is a serialization issue, serv3 doesn't handle merging dictionaries and in this case it.. doesnt really handle merging 'solutions' either, i'm not really sure how you would do this
honestly it should probably just not serialize the maxvol

@Ygg01 is right, this is a serialization issue, serv3 doesn't handle merging dictionaries and in this case it.. doesnt really handle merging 'solutions' either, i'm not really sure how you would do this

Couldn't we load prototype values and first check for values before overriding them?

The problem I see is that even assuming that the issue with the loading is fixed,
if the WeldingTank prototype is later changed to, say, contain only 1000u, the maxVol will still be in the map and will cause the welding tank to gain additional volume it shouldn't have. This is, to be clear, even if the serialization problem is fixed.

as far as I can tell the serialization issue is that DataField is writing tons of data to the blueprint it shouldn't, and this applies across several systems

Well from what I saw, spawning does it's job. On save the entity is minimized and only fields differing from default are saved in the map.
However on load rather than taking value from prototype and applying diff, the load overrides the value with whatever is saved in the map (i.e saltern.yml).
In other words it's a serialization issue not a solution issue. Solution seems to be one of few things with nested dictionary.

this is intended behaviour. HOWEVER this may or may not be the one BIG issue i still have with serv3, it never being implemented properly. More specifically, serv3 currently only has very hacky and limited ability to define custom merging logic, which this is suffering from. This, as well as the fact that computed default values (TODO!) aren't supported, makes this a serv3 issue. I'm gonna open two issues related to this.


Use locally installed pug

Hey, thanks so much for making this plugin! I think this might be caused by the dependence on pug-ruby, but using a globally installed pug is less than ideal, not least because it doesn't work using nvm. Would there be a way to make pug-ruby look for a pug executable in the local project's node_modules?

Good idea. I checked out your issue in Pug-Ruby too. Once I figure out how to implement this, I'll release an update + updated documentation.

Hi, @Leeds-eBooks
You can probably get around this problem now with a new project that I have been working on. It's called Jekyll-Bliss.
Its goal is to solve Jekyll's biggest problem (Slow compile times). This will add multi-threading when processing Pug, Sass, and more. It uses Gulp behind the scenes to do so. (The user does not need any sort of gulp config).
It will take away all of the heavy lifting from Jekyll.
It's nearly a drop-in replace for Jekyll-Pug
In the readme, I show instructions for doing a global NPM install. However, it will work locally too!

npm install jekyll-bliss --save
./node_modules/jekyll-bliss/index.js

Let me know what you think. :)
https://github.com/DougBeney/Jekyll-Bliss

@DougBeney Hey, sorry for the delay – this looks really cool, taking a look now. Thanks so much!


6/16/2020 Publish

Docs Build status updates of commit 0fc0826:
:clock10: Full build: the average full build time is 76 min(s) 37 sec(s), this is based on the last 514 build(s) for this repository.

Docs Build status updates of commit 0fc0826:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs-ref-autogen/overview/KeyVault.yml
:warning:Warning
View (azure-java-stable)
Details

legacy/docs-ref-autogen/overview/EventHubs/Client.yml
:warning:Warning
View (azure-java-legacy)
Details

package.json
:white_check_mark:Succeeded

docs-ref-autogen/overview/KeyVault.yml

[Warning-DuplicateUids] Uid(azure.java.sdk.landingpage.services.keyvault) has already been defined in docs-ref-services/keyvault.md.

legacy/docs-ref-autogen/overview/EventHubs/Client.yml

[Warning-DuplicateUids] Uid(azure.java.sdk.landingpage.services.eventhub.Client) has already been defined in docs-ref-services/messaging-eventhubs-readme.md.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Cells are not remounted when an item changes

The cells are indexed using their current index relative to the row and column, so if you change page for example, the cells get the same index, meaning there is no remount.
While this might help with performance, it will cause problems for components that rely on componentDidMount. E.g. fetching data, validating images etc.

Fixed.


not able to login if I am behind squid proxy

Describe the bug
I am trying to login to Azure using fedrated token but i got the bellow error, the machine that i tried to run the command on is behind squid proxy and login.microsoftonline.com is allowed on the proxy
HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /68283f3b-8487-4c86-adb3-a5228f18b893/v2.0/.well-known/openid-configuration (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)')))
Certificate verification failed. This typically happens when using Azure CLI behind a proxy that intercepts traffic with a self-signed certificate. Please add this certificate to the trusted CA bundle. More info: https://docs.microsoft.com/cli/azure/use-cli-effectively#work-behind-a-proxy.
Related command
az login --service-principal -u xxxxxxxxxx -t xxxxxxx --federated-toke $(gcloud auth print-identity-token)
Errors
HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /68283f3b-8487-4c86-adb3-a5228f18b893/v2.0/.well-known/openid-configuration (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)')))
Certificate verification failed. This typically happens when using Azure CLI behind a proxy that intercepts traffic with a self-signed certificate. Please add this certificate to the trusted CA bundle. More info: https://docs.microsoft.com/cli/azure/use-cli-effectively#work-behind-a-proxy.
Issue script & Debug output
cli.knack.cli: init debug log:
Enable color in terminal.
cli.knack.cli: Event: Cli.PreExecute []
cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [<function CLILogging.on_global_arguments at 0x7fbd117853f0>, <function OutputProducer.on_global_arguments at 0x7fbd116e0310>, <function CLIQuery.on_global_arguments at 0x7fbd114fd510>]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'login': ['azure.cli.command_modules.profile']
cli.azure.cli.core: Loading command modules:
cli.azure.cli.core: Name                  Load Time    Groups  Commands
cli.azure.cli.core: profile                   0.014         2         9
cli.azure.cli.core: Total (1)                 0.014         2         9
cli.azure.cli.core: Loaded 2 groups, 9 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command  : login
cli.azure.cli.core: Command table: login
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x7fbd108cad40>]
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/User/.azure/commands/2023-09-05.14-09-29.login.2304.log'.
az_command_data_logger: command args: login --service-principal -u {} -t {} --federated-token {} --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument..add_subscription_parameter at 0x7fbd109139a0>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument..add_ids_arguments at 0x7fbd1092d6c0>, <function register_cache_arguments..add_cache_arguments at 0x7fbd1092d7e0>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x7fbd116e03a0>, <function CLIQuery.handle_query_parameter at 0x7fbd114fd5a0>, <function register_ids_argument..parse_ids_arguments at 0x7fbd1092d750>]
cli.azure.cli.core.auth.persistence: build_persistence: location='/home/User/.azure/msal_token_cache.json', encrypt=False
cli.azure.cli.core.auth.binary_cache: load: /home/User/.azure/msal_http_cache.bin
cli.azure.cli.core.auth.binary_cache: /home/User/.azure/msal_http_cache.bin not found. Using a fresh one.
urllib3.util.retry: Converted retries value: 1 -> Retry(total=1, connect=None, read=None, redirect=None, status=None)
urllib3.connectionpool: Starting new HTTPS connection (1): login.microsoftonline.com:443
urllib3.util.retry: Incremented Retry for (url='/TENANT_ID/v2.0/.well-known/openid-configuration'): Retry(total=0, connect=None, read=None, redirect=None, status=None)
urllib3.connectionpool: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)'))': /TENANT_ID/v2.0/.well-known/openid-configuration
urllib3.connectionpool: Starting new HTTPS connection (2): login.microsoftonline.com:443
cli.azure.cli.core.azclierror: Traceback (most recent call last):
File "/opt/az/lib/python3.10/site-packages/urllib3/connectionpool.py", line 714, in urlopen
httplib_response = self._make_request(
File "/opt/az/lib/python3.10/site-packages/urllib3/connectionpool.py", line 403, in _make_request
self._validate_conn(conn)
File "/opt/az/lib/python3.10/site-packages/urllib3/connectionpool.py", line 1053, in validate_conn
conn.connect()
File "/opt/az/lib/python3.10/site-packages/urllib3/connection.py", line 419, in connect
self.sock = ssl_wrap_socket(
File "/opt/az/lib/python3.10/site-packages/urllib3/util/ssl.py", line 449, in ssl_wrap_socket
ssl_sock = ssl_wrap_socket_impl(
File "/opt/az/lib/python3.10/site-packages/urllib3/util/ssl.py", line 493, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "/opt/az/lib/python3.10/ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "/opt/az/lib/python3.10/ssl.py", line 1071, in _create
self.do_handshake()
File "/opt/az/lib/python3.10/ssl.py", line 1342, in do_handshake
self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:997)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/az/lib/python3.10/site-packages/requests/adapters.py", line 486, in send
resp = conn.urlopen(
File "/opt/az/lib/python3.10/site-packages/urllib3/connectionpool.py", line 826, in urlopen
return self.urlopen(
File "/opt/az/lib/python3.10/site-packages/urllib3/connectionpool.py", line 798, in urlopen
retries = retries.increment(
File "/opt/az/lib/python3.10/site-packages/urllib3/util/retry.py", line 592, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /TENANT_ID/v2.0/.well-known/openid-configuration (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/az/lib/python3.10/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/init.py", line 663, in execute
raise ex
File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/init.py", line 726, in _run_jobs_serially
results.append(self._run_job(expanded_arg, cmd_copy))
File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/init.py", line 697, in _run_job
result = cmd_copy(params)
File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/init.py", line 333, in call
return self.handler(*args, **kwargs)
File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/command_operation.py", line 121, in handler
return op(**command_args)
File "/opt/az/lib/python3.10/site-packages/azure/cli/command_modules/profile/custom.py", line 139, in login
subscriptions = profile.login(
File "/opt/az/lib/python3.10/site-packages/azure/cli/core/_profile.py", line 159, in login
identity.login_with_service_principal(username, password, scopes=scopes)
File "/opt/az/lib/python3.10/site-packages/azure/cli/core/auth/identity.py", line 182, in login_with_service_principal
cred = ServicePrincipalCredential(sp_auth, **self._msal_app_kwargs)
File "/opt/az/lib/python3.10/site-packages/azure/cli/core/auth/msal_authentication.py", line 132, in init
super().init(service_principal_auth.client_id, client_credential=client_credential, **kwargs)
File "/opt/az/lib/python3.10/site-packages/msal/application.py", line 549, in init
self.authority = Authority(
File "/opt/az/lib/python3.10/site-packages/msal/authority.py", line 115, in init
openid_config = tenant_discovery(
File "/opt/az/lib/python3.10/site-packages/msal/authority.py", line 180, in tenant_discovery
resp = http_client.get(tenant_discovery_endpoint, **kwargs)
File "/opt/az/lib/python3.10/site-packages/msal/individual_cache.py", line 269, in wrapper
value = function(*args, **kwargs)
File "/opt/az/lib/python3.10/site-packages/requests/sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "/opt/az/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "/opt/az/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "/opt/az/lib/python3.10/site-packages/requests/adapters.py", line 517, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /TENANT_ID/v2.0/.well-known/openid-configuration (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)')))
cli.azure.cli.core.azclierror: HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /TENANT_ID/v2.0/.well-known/openid-configuration (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)')))
az_command_data_logger: HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /TENANT_ID/v2.0/.well-known/openid-configuration (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)')))
Certificate verification failed. This typically happens when using Azure CLI behind a proxy that intercepts traffic with a self-signed certificate. Please add this certificate to the trusted CA bundle. More info: https://docs.microsoft.com/cli/azure/use-cli-effectively#work-behind-a-proxy.
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x7fbd108caf80>]
az_command_data_logger: exit code: 1
cli.main: Command ran in 1.679 seconds (init: 0.840, invoke: 0.839)
telemetry.main: Begin splitting cli events and extra events, total events: 1
telemetry.client: Accumulated 0 events. Flush the clients.
telemetry.main: Finish splitting cli events and extra events, cli events: 1
telemetry.save: Save telemetry record of length 3754 in cache
telemetry.main: Begin creating telemetry upload process.
telemetry.process: Creating upload process: "/usr/bin/../../opt/az/bin/python3 /opt/az/lib/python3.10/site-packages/azure/cli/telemetry/init.py /home/User/.azure"
telemetry.process: Return from creating process
telemetry.main: Finish creating telemetry upload process.
Expected behavior
to login successfully
Environment Summary
azure-cli                         2.51.0
core                              2.51.0
telemetry                          1.1.0
Dependencies:
msal                            1.24.0b1
azure-mgmt-resource             23.1.0b2
Python location '/opt/az/bin/python3'
Extensions directory '/home/USER/.azure/cliextensions'
Python (Linux) 3.10.10 (main, Jul 27 2023, 07:11:10) [GCC 9.4.0]
Additional context
No response

Thank you for opening this issue, we will look into it.

ssl.SSLEOFError: EOF occurred in violation of protocol was previously reported in https://github.com/Azure/azure-cli/issues/19456.

Any news on this?  I'm currently having a similar "unexpected eof while reading" when trying to clone, curl, openssl s_client -connect to github.  The - openssl s_client -ignore_unexpected_eof doesn't appear to do anything.  No issues on servers not using the Squid Proxy.
Problem occurs on these versions:
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
OpenSSL 1.1.1f  31 Mar 2020


chore(main): release aliri_tokens 0.3.1

:robot: I have created a release beep boop
0.3.1 (2024-04-12)
⚠ BREAKING CHANGES

deps: update rust crate reqwest to v0.12.3 (#68)

Bug Fixes

add missing tokio feature dependency (#85) (1f6bbb3)
deps: update cargo all non breaking changes (#54) (4218dab)
deps: update rust crate reqwest to v0.12.3 (#68) (b24c8c9)
deps: update rust tracing monorepo (#53) (1b83612)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/neoeinstein/aliri/releases/tag/aliri_tokens-v0.3.1 :sunflower:


GPU requirements to train the model

I use 8 TitanX Pascal GPUs to train the model following the README, and get the error below.
RuntimeError: CUDA out of memory. Tried to allocate 384.00 MiB (GPU 0; 11.91 GiB total capacity; 10.95 GiB already allocated; 250.56 MiB free; 11.15 GiB reserved in total by PyTorch)

Can you supply the hardware requirements? @TiagoCortinhal

Hey @EthanZhangYi!!
We used 2 Quadro RTX 6000 24GB for most of our experiments.
Can try decreasing the batch-size on salsanext.yml?

@TiagoCortinhal
Thanks, the problem is solved.

When I try to train the model from scratch, my process gets killed after a few epochs due to memory issues. What is so memory consuming? I have already reduced the workers and the batch_size to 1. I am training on one NVIDIA GeForce GTX 1080 Ti

When I try to train the model from scratch, my process gets killed after a few epochs due to memory issues. What is so memory consuming? I have already reduced the workers and the batch_size to 1. I am training on one NVIDIA GeForce GTX 1080 Ti

Have you solved the problem?

@EthanZhangYi  Hello, how did you solve this problem？