No such file or directory

I am using this pacakge with Adonis 6.2.1
It works well locally but after deploying it to the production its not generating the files as its still trying to access the controllers with ts extension. However after the build process the path build/app/controllers only contains .js files.
{"message":"ENOENT: no such file or directory, open '/var/www/myapp/build/config/../app/controllers/auth_controller.ts'","name":"Error","status":500,"frames":[]}

The steps I have followed are
node ace docs:generate
node ace build --production
cp swagger.yml build/

any feedback would be appreciated. Thanks.

Autoswagger requires NODE_ENV to be set to "production" to load the generated yaml file.

I have the same error but in different context.
I'm not on production but error occured for changing default location of controllers from app/controllers to app/http/controllers
here is my error
ENOENT: no such file or directory, open 'file:///data/data/com.termux/files/home/js/adonis/boilerplate/config/swagger.ts/../app/controllers/v1/dashboard_controller.ts'

It seems like AutoSwagger find controllers statically. It would be better if it look on adonisrc.ts for paths
export default defineConfig({
  directories: {
    commands: 'app/commands',
    providers: 'app/providers',
    httpControllers: 'app/http/controllers',
    middleware: 'app/http/middleware',
    validators: 'app/validation/validators',
  },
//...
})

I have the same error but in different context. I'm not on production but error occured for changing default location of controllers from app/controllers to app/http/controllers
here is my error
ENOENT: no such file or directory, open 'file:///data/data/com.termux/files/home/js/adonis/boilerplate/config/swagger.ts/../app/controllers/v1/dashboard_controller.ts'

It seems like AutoSwagger find controllers statically. It would be better if it look on adonisrc.ts for paths
export default defineConfig({
  directories: {
    commands: 'app/commands',
    providers: 'app/providers',
    httpControllers: 'app/http/controllers',
    middleware: 'app/http/middleware',
    validators: 'app/validation/validators',
  },
//...
})

I think your issue might be related to this one: https://github.com/ad-on-is/adonis-autoswagger/issues/56

Done in version 3.0


import custom interfaces

I have been following this guide to create a custom interface for interchain-security, specifically i want to deserialize ValidatorSetChangePacketData
i succeeded in creating the .ts files at ./client/src/types/generated/cosmos/interchain-security/proto/interchain-security/ccv/v1/ccv.ts
i'm struggeling to import those interfaces in node.js (node 18)

fails with Error [ERR_MODULE_NOT_FOUND], even i'm definitely using ES6 imports ("type": "module" set in package.json)
any help is dearly appreciated 🙏

Hi @clemensgg  visit the official COSMOS page to start a chat with an official agent on alive chat support to report this for review and for further assistance via LIVE CHAT


⚠ LPDM Handbook (hosted on Divio) has degraded performance

In 6f2a634, LPDM Handbook (hosted on Divio) (https://repohubdev.tk) experienced degraded performance:

HTTP code: 500
Response time: 6684 ms

Resolved: LPDM Handbook (hosted on Divio) performance has improved in 403447e.


[Bar chart] - issue with using the zoom slider

In some cases the zoom slider on Bar chart is hidden and it's hard to get it enabled / visible.
The issue has been captured on the video:

fixed in v1.4.16


Wrong Download Firmware URL sent from ACS to CPE

Hi all,
thanks in advance for your support.
When I try upgrade CPE firmware it fails.
I've notice that the URL sent over from the ACS to the CPE is wrong: http://localhost/tr069/file/SOFTWARE/v5.0.00/G640/001A77-G640-HTUAQERH6118576
I should be able to get localhost to be replaced with the target IP address(FreeACS server).
Is there some environment variable or configuration file I should modify?
BR,
Dario

Hi @dariosky75, You need to provide correct url for your CPE in /opt/freeacs-web/config/application-config.conf in variable named public.url

Hi @pingwiniasty tks a lot for the quick reply and for pointing me to the right direction.
I was able to fix this modifing public.url in freeacs-tr069/config/application-config.conf

Sorry ^^' I though about tr069 but typed web...


Error: Can't open display: (null)

Hi,
I am using terminus to SSH into a Linux VM, so I tried to paste some texts from my Win 10 clipboard into the SSH session using pbpaste but I got the following error:
Error: Can't open display: (null)
Am not sure if this has to do with some settings or should be a feature request.
Also echo $DISPLAY shows nothing:
$ echo $DISPLAY

I think the error is missing in your ticket.

I have updated the post now.

Duplicate of #630

Terminus doesn't support X11 forwarding at this moment


Domain name resolution failure in Windows

Not sure if it affects all Windows machines, but got a report from at least one user. Full DNS trace:
2019-11-09 21:34:02.482 DEBUG 16800 --- [-worker-nio-2-2] o.s.w.s.adapter.HttpWebHandlerAdapter    : [24b42788] HTTP GET "/random"
2019-11-09 21:34:02.506 DEBUG 16800 --- [-worker-nio-2-2] s.w.r.r.m.a.RequestMappingHandlerMapping : [24b42788] Mapped to com.linecorp.devday.handson.demo.controller.DemoController#getRandom()
2019-11-09 21:34:02.546 DEBUG 16800 --- [-worker-nio-2-2] o.s.w.r.r.m.a.ResponseBodyResultHandler  : Using 'application/json' given [*/*] and supported [application/json, application/*+json, text/event-stream]
2019-11-09 21:34:02.546 DEBUG 16800 --- [-worker-nio-2-2] o.s.w.r.r.m.a.ResponseBodyResultHandler  : [24b42788] 0..1 [com.linecorp.devday.handson.demo.model.DemoModel]
2019-11-09 21:34:02.614 DEBUG 16800 --- [-worker-nio-2-2] o.s.w.r.f.client.ExchangeFunctions       : [7f5065ca] HTTP GET http://echo.jsontest.com/randomNumber/3/uuid/8a5870e4-834b-4359-aaf7-671289f72102
2019-11-09 21:34:02.683 DEBUG 16800 --- [-worker-nio-2-1] i.n.util.ResourceLeakDetectorFactory     : Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@74984073
2019-11-09 21:34:02.698 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsQueryContext    : [id: 0x294edb68] WRITE: UDP, [30527: /<IP_ADDRESS>:53], DefaultDnsQuestion(echo.jsontest.com. IN A)
2019-11-09 21:34:02.703 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsQueryContext    : [id: 0x294edb68] WRITE: UDP, [57985: /<IP_ADDRESS>:53], DefaultDnsQuestion(echo.jsontest.com. IN AAAA)
2019-11-09 21:34:07.707 DEBUG 16800 --- [-worker-nio-2-1] .d.TraceDnsQueryLifeCycleObserverFactory : from /<IP_ADDRESS>:53 : DefaultDnsQuestion(echo.jsontest.com. IN A) failure

io.netty.resolver.dns.DnsNameResolverTimeoutException: [/<IP_ADDRESS>:53] query via UDP timed out after 5000 milliseconds (no stack trace available)

2019-11-09 21:34:07.707 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsQueryContext    : [id: 0x294edb68] WRITE: UDP, [18314: /<IP_ADDRESS>:53], DefaultDnsQuestion(echo.jsontest.com. IN A)
2019-11-09 21:34:07.709 DEBUG 16800 --- [-worker-nio-2-1] .d.TraceDnsQueryLifeCycleObserverFactory : from /<IP_ADDRESS>:53 : DefaultDnsQuestion(echo.jsontest.com. IN AAAA) failure

io.netty.resolver.dns.DnsNameResolverTimeoutException: [/<IP_ADDRESS>:53] query via UDP timed out after 5000 milliseconds (no stack trace available)

2019-11-09 21:34:07.709 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsQueryContext    : [id: 0x294edb68] WRITE: UDP, [51770: /<IP_ADDRESS>:53], DefaultDnsQuestion(echo.jsontest.com. IN AAAA)
2019-11-09 21:34:07.725 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsNameResolver    : [id: 0x294edb68] RECEIVED: UDP [51770: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:55220, 51770, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(echo.jsontest.com. IN AAAA)
	DefaultDnsRawRecord(echo.jsontest.com. 1212 IN CNAME 16B)
	DefaultDnsRawRecord(ghs.google.com. 3 IN AAAA 16B)
	DefaultDnsRawRecord(OPT flags:0 udp:1400 0B)
2019-11-09 21:34:07.727 DEBUG 16800 --- [-worker-nio-2-1] .d.TraceDnsQueryLifeCycleObserverFactory : from null : DefaultDnsQuestion(echo.jsontest.com. IN AAAA) CNAME question DefaultDnsQuestion(ghs.google.com. IN AAAA)
2019-11-09 21:34:07.727 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsQueryContext    : [id: 0x294edb68] WRITE: UDP, [44924: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN AAAA)
2019-11-09 21:34:07.729 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsNameResolver    : [id: 0x294edb68] RECEIVED: UDP [18314: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:55220, 18314, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(echo.jsontest.com. IN A)
	DefaultDnsRawRecord(echo.jsontest.com. 1212 IN CNAME 16B)
	DefaultDnsRawRecord(ghs.google.com. 3 IN A 4B)
	DefaultDnsRawRecord(OPT flags:0 udp:1400 0B)
2019-11-09 21:34:07.729 DEBUG 16800 --- [-worker-nio-2-1] .d.TraceDnsQueryLifeCycleObserverFactory : from null : DefaultDnsQuestion(echo.jsontest.com. IN A) CNAME question DefaultDnsQuestion(ghs.google.com. IN A)
2019-11-09 21:34:07.729 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsQueryContext    : [id: 0x294edb68] WRITE: UDP, [28905: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN A)
2019-11-09 21:34:12.729 DEBUG 16800 --- [-worker-nio-2-1] .d.TraceDnsQueryLifeCycleObserverFactory : from /<IP_ADDRESS>:53 : DefaultDnsQuestion(echo.jsontest.com. IN AAAA) failure

io.netty.resolver.dns.DnsNameResolverTimeoutException: [/<IP_ADDRESS>:53] query via UDP timed out after 5000 milliseconds (no stack trace available)

2019-11-09 21:34:12.729 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsQueryContext    : [id: 0x294edb68] WRITE: UDP, [50156: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN AAAA)
2019-11-09 21:34:12.732 DEBUG 16800 --- [-worker-nio-2-1] .d.TraceDnsQueryLifeCycleObserverFactory : from /<IP_ADDRESS>:53 : DefaultDnsQuestion(echo.jsontest.com. IN A) failure

io.netty.resolver.dns.DnsNameResolverTimeoutException: [/<IP_ADDRESS>:53] query via UDP timed out after 5000 milliseconds (no stack trace available)

2019-11-09 21:34:12.732 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsQueryContext    : [id: 0x294edb68] WRITE: UDP, [25459: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN A)
2019-11-09 21:34:12.746 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsNameResolver    : [id: 0x294edb68] RECEIVED: UDP [25459: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:55220, 25459, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(ghs.google.com. IN A)
	DefaultDnsRawRecord(ghs.google.com. 298 IN A 4B)
	DefaultDnsRawRecord(OPT flags:0 udp:1400 0B)
2019-11-09 21:34:12.815 DEBUG 16800 --- [-worker-nio-2-1] io.netty.resolver.dns.DnsNameResolver    : [id: 0x294edb68] RECEIVED: UDP [50156: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:55220, 50156, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(ghs.google.com. IN AAAA)
	DefaultDnsRawRecord(ghs.google.com. 298 IN AAAA 16B)
	DefaultDnsRawRecord(OPT flags:0 udp:1400 0B)
2019-11-09 21:34:12.815 DEBUG 16800 --- [-worker-nio-2-1] .d.TraceDnsQueryLifeCycleObserverFactory : from /<IP_ADDRESS>:53 : DefaultDnsQuestion(ghs.google.com. IN AAAA) cancelled with 8 queries remaining

What's interesting is that the resolver sends queries to <IP_ADDRESS> which is not listed in the system DNS server list.

We had similar problem in our framework using Vert.x (that uses Netty under the hood). Our temp solution was to disable Netty DNS Resolver when running on a Windows OS.

@ikhoon had asked on the PR to get logs for my computer and CI for test DNS queries. It's a bit more annoying to do on CI, but for now, on my computer I get this.
15:51:17.420 [Test worker] DEBUG i.n.r.d.DefaultDnsServerAddressStreamProvider - Default DNS servers: [/<IP_ADDRESS>:53, /<IP_ADDRESS>:53] (sun.net.dns.ResolverConfiguration)
15:51:17.460 [Test worker] DEBUG c.l.a.i.dns.DefaultDnsNameResolver - [echo.jsontest.com] Sending DNS queries: [DnsQuestion(echo.jsontest.com IN A), DnsQuestion(echo.jsontest.com IN AAAA)]
15:51:17.479 [Test worker] DEBUG i.n.util.ResourceLeakDetectorFactory - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@beaee26
15:51:17.490 [Test worker] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x3d1381d1] WRITE: UDP, [4883: /<IP_ADDRESS>:53], DefaultDnsQuestion(echo.jsontest.com. IN A)
15:51:17.516 [Test worker] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x3d1381d1] WRITE: UDP, [20240: /<IP_ADDRESS>:53], DefaultDnsQuestion(echo.jsontest.com. IN AAAA)
15:51:17.598 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0x3d1381d1] RECEIVED: UDP [4883: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:53766, 4883, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(echo.jsontest.com. IN A)
	DefaultDnsRawRecord(echo.jsontest.com. 3357 IN CNAME 16B)
	DefaultDnsRawRecord(ghs.google.com. 283 IN A 4B)
	DefaultDnsRawRecord(OPT flags:0 udp:1452 0B)
15:51:17.600 [armeria-common-worker-nio-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from null : DefaultDnsQuestion(echo.jsontest.com. IN A) CNAME question DefaultDnsQuestion(ghs.google.com. IN A)
15:51:17.601 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x3d1381d1] WRITE: UDP, [26474: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN A)
15:51:17.604 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0x3d1381d1] RECEIVED: UDP [20240: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:53766, 20240, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(echo.jsontest.com. IN AAAA)
	DefaultDnsRawRecord(echo.jsontest.com. 3357 IN CNAME 16B)
	DefaultDnsRawRecord(ghs.google.com. 182 IN AAAA 16B)
	DefaultDnsRawRecord(OPT flags:0 udp:1452 0B)
15:51:17.605 [armeria-common-worker-nio-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from null : DefaultDnsQuestion(echo.jsontest.com. IN AAAA) CNAME question DefaultDnsQuestion(ghs.google.com. IN AAAA)
15:51:17.611 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x3d1381d1] WRITE: UDP, [50943: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN AAAA)
15:51:17.613 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0x3d1381d1] RECEIVED: UDP [26474: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:53766, 26474, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(ghs.google.com. IN A)
	DefaultDnsRawRecord(ghs.google.com. 283 IN A 4B)
	DefaultDnsRawRecord(OPT flags:0 udp:1452 0B)
15:51:17.621 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0x3d1381d1] RECEIVED: UDP [50943: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:53766, 50943, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(ghs.google.com. IN AAAA)
	DefaultDnsRawRecord(ghs.google.com. 182 IN AAAA 16B)
	DefaultDnsRawRecord(OPT flags:0 udp:1452 0B)

16:02:40.739 [Test worker] DEBUG i.n.r.d.DefaultDnsServerAddressStreamProvider - Default DNS servers: [/<IP_ADDRESS>:53, /<IP_ADDRESS>:53] (sun.net.dns.ResolverConfiguration)
16:02:40.787 [Test worker] DEBUG c.l.a.i.dns.DefaultDnsNameResolver - [json.org] Sending DNS queries: [DnsQuestion(json.org IN A), DnsQuestion(json.org IN AAAA)]
16:02:40.846 [Test worker] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0xe220f93f] WRITE: UDP, [41466: /<IP_ADDRESS>:53], DefaultDnsQuestion(json.org. IN AAAA)
16:02:40.944 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0xe220f93f] RECEIVED: UDP [61667: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:51996, 61667, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(json.org. IN A)
	DefaultDnsRawRecord(json.org. 3460 IN A 4B)
	DefaultDnsRawRecord(OPT flags:0 udp:1452 0B)
16:02:41.188 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0xe220f93f] RECEIVED: UDP [41466: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:51996, 41466, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(json.org. IN AAAA)
	DefaultDnsRawRecord(json.org. 300 IN SOA 58B)
	DefaultDnsRawRecord(OPT flags:0 udp:1452 0B)
16:02:41.191 [armeria-common-worker-nio-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from /<IP_ADDRESS>:53 : DefaultDnsQuestion(json.org. IN AAAA) failure
io.netty.resolver.dns.DnsResolveContext$DnsResolveContextException: No matching record type found
	at io.netty.resolver.dns.DnsResolveContext.onResponseAorAAAA(..)(Unknown Source)
16:02:41.192 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0xe220f93f] WRITE: UDP, [1151: /<IP_ADDRESS>:53], DefaultDnsQuestion(json.org. IN AAAA)
16:02:41.456 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0xe220f93f] RECEIVED: UDP [1151: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:51996, 1151, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(json.org. IN AAAA)
	DefaultDnsRawRecord(json.org. 300 IN SOA 58B)
	DefaultDnsRawRecord(OPT flags:0 udp:1452 0B)
16:02:41.456 [armeria-common-worker-nio-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from /<IP_ADDRESS>:53 : DefaultDnsQuestion(json.org. IN AAAA) failure
io.netty.resolver.dns.DnsResolveContext$DnsResolveContextException: No matching record type found
	at io.netty.resolver.dns.DnsResolveContext.onResponseAorAAAA(..)(Unknown Source)
16:02:41.457 [armeria-common-worker-nio-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - DefaultDnsQuestion(json.org. IN AAAA) query never written and failed
io.netty.resolver.dns.DnsResolveContext$DnsResolveContextException: No name servers returned an answer
	at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(..)(Unknown Source)
16:02:41.458 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0xe220f93f] WRITE: UDP, [44787: /<IP_ADDRESS>:53], DefaultDnsQuestion(json.org. IN CNAME)
16:02:41.714 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0xe220f93f] RECEIVED: UDP [44787: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:51996, 44787, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(json.org. IN CNAME)
	DefaultDnsRawRecord(json.org. 300 IN SOA 58B)
	DefaultDnsRawRecord(OPT flags:0 udp:1452 0B)
16:02:41.716 [armeria-common-worker-nio-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from /<IP_ADDRESS>:53 : DefaultDnsQuestion(json.org. IN CNAME) failure
io.netty.resolver.dns.DnsResolveContext$DnsResolveContextException: No matching CNAME record found
	at io.netty.resolver.dns.DnsResolveContext.onResponseCNAME(..)(Unknown Source)
16:02:41.719 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0xe220f93f] WRITE: UDP, [4284: /<IP_ADDRESS>:53], DefaultDnsQuestion(json.org. IN CNAME)
16:02:41.981 [armeria-common-worker-nio-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0xe220f93f] RECEIVED: UDP [4284: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:51996, 4284, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(json.org. IN CNAME)
	DefaultDnsRawRecord(json.org. 300 IN SOA 58B)
	DefaultDnsRawRecord(OPT flags:0 udp:1452 0B)
16:02:41.981 [armeria-common-worker-nio-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from /<IP_ADDRESS>:53 : DefaultDnsQuestion(json.org. IN CNAME) failure
io.netty.resolver.dns.DnsResolveContext$DnsResolveContextException: No matching CNAME record found
	at io.netty.resolver.dns.DnsResolveContext.onResponseCNAME(..)(Unknown Source)
16:02:41.981 [armeria-common-worker-nio-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - DefaultDnsQuestion(json.org. IN CNAME) query never written and failed
io.netty.resolver.dns.DnsResolveContext$DnsResolveContextException: No name servers returned an answer
	at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(..)(Unknown Source)
16:02:42.411 [armeria-common-worker-nio-2-1] DEBUG c.l.a.c.SessionProtocolNegotiationCache - Updated: 'json.org:80' does not support [h2c]

My branch with the tests - https://github.com/anuraaga/armeria/tree/dns-test-windows
I noticed that at the top of my logs it lists the DNS servers that were recognized, but the original post is missing that log. It could be nice to get that log if available.

While looking for potential other approaches to finding DNS servers on Windows, I came across this
https://github.com/dnsjava/dnsjava/issues/8#issuecomment-493745283

Querying the registry on Windows is a no go. This is what Java is currently doing, and it fails miserably: As soon as you have more than one NIC (i.e. almost every laptop), you have multiple DNS server addresses in the registry. Some of them might be from a WiFi connection that is now offline. Java still queries them... 🤦♂

So I suspect <IP_ADDRESS> is from an offline NIC. Either way, from @trustin's log it seems like <IP_ADDRESS> is working and the log actually looks like a successful DNS resolution to me (in the end it cancels AAAA query presumably because A query resolved and IPV4 is preferred by default). Do you know what the end user exception was, was it actually DnsNameResolverTimeoutException or is it ResponseTimeoutException because the query takes forever by querying unreachable DNS servers? If so, then things make sense to me, otherwise still a little confused.
I think the best solution would be doing something similar to what netty now does for macos, using JNI to get the state of the network config of the machine. According to that linked comment, I guess it's hopeless trying to get proper name servers on Windows. A workaround could be for us to wrap the default DNS server names list on Windows with something that can filter out addresses - we can mark server addresses as down in a lifecycle observer that encounters DnsNameResolverTimeoutException.
For reference,
I've tried to reproduce the error in a netty test case, but it always succeeds since the working DNS server resolves the address.
@Test
    public void testOneDnsServerDownFallsBack() {
        DnsNameResolver resolver = new DnsNameResolverBuilder(group.next())
                .channelType(NioDatagramChannel.class)
                .nameServerProvider(new SequentialDnsServerAddressStreamProvider(
                        new InetSocketAddress("<IP_ADDRESS>", 53),
                        new InetSocketAddress("<IP_ADDRESS>", 53)))
                .resolveCache(NoopDnsCache.INSTANCE)
                .authoritativeDnsServerCache(NoopAuthoritativeDnsServerCache.INSTANCE)
                .cnameCache(NoopDnsCnameCache.INSTANCE)
                .traceEnabled(true)
                .resolvedAddressTypes(ResolvedAddressTypes.IPV4_PREFERRED)
                .completeOncePreferredResolved(true)
                .build();
        try {
            InetAddress address = resolver.resolve("echo.jsontest.com").syncUninterruptibly().getNow();
            System.out.println(address);
        } finally {
            resolver.close();
        }
    }

Basically identical logs to the posted trace:
18:13:25.079 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x765a96b3] WRITE: UDP, [34302: /<IP_ADDRESS>:53], DefaultDnsQuestion(echo.jsontest.com. IN AAAA)
18:13:30.096 [nioEventLoopGroup-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from /<IP_ADDRESS>:53 : DefaultDnsQuestion(echo.jsontest.com. IN A) failure
io.netty.resolver.dns.DnsNameResolverTimeoutException: [/<IP_ADDRESS>:53] query via UDP timed out after 5000 milliseconds (no stack trace available)
18:13:30.097 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x765a96b3] WRITE: UDP, [60232: /<IP_ADDRESS>:53], DefaultDnsQuestion(echo.jsontest.com. IN A)
18:13:30.098 [nioEventLoopGroup-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from /<IP_ADDRESS>:53 : DefaultDnsQuestion(echo.jsontest.com. IN AAAA) failure
io.netty.resolver.dns.DnsNameResolverTimeoutException: [/<IP_ADDRESS>:53] query via UDP timed out after 5000 milliseconds (no stack trace available)
18:13:30.099 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x765a96b3] WRITE: UDP, [58771: /<IP_ADDRESS>:53], DefaultDnsQuestion(echo.jsontest.com. IN AAAA)
18:13:30.219 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0x765a96b3] RECEIVED: UDP [58771: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:64591, 58771, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(echo.jsontest.com. IN AAAA)
	DefaultDnsRawRecord(echo.jsontest.com. 3599 IN CNAME 16B)
	DefaultDnsRawRecord(ghs.google.com. 299 IN AAAA 16B)
	DefaultDnsRawRecord(OPT flags:0 udp:512 0B)
18:13:30.220 [nioEventLoopGroup-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from null : DefaultDnsQuestion(echo.jsontest.com. IN AAAA) CNAME question DefaultDnsQuestion(ghs.google.com. IN AAAA)
18:13:30.220 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x765a96b3] WRITE: UDP, [48637: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN AAAA)
18:13:30.368 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0x765a96b3] RECEIVED: UDP [60232: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:64591, 60232, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(echo.jsontest.com. IN A)
	DefaultDnsRawRecord(echo.jsontest.com. 3599 IN CNAME 16B)
	DefaultDnsRawRecord(ghs.google.com. 299 IN A 4B)
	DefaultDnsRawRecord(OPT flags:0 udp:512 0B)
18:13:30.368 [nioEventLoopGroup-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from null : DefaultDnsQuestion(echo.jsontest.com. IN A) CNAME question DefaultDnsQuestion(ghs.google.com. IN A)
18:13:30.368 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x765a96b3] WRITE: UDP, [45120: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN A)
18:13:35.223 [nioEventLoopGroup-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from /<IP_ADDRESS>:53 : DefaultDnsQuestion(echo.jsontest.com. IN AAAA) failure
io.netty.resolver.dns.DnsNameResolverTimeoutException: [/<IP_ADDRESS>:53] query via UDP timed out after 5000 milliseconds (no stack trace available)
18:13:35.223 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x765a96b3] WRITE: UDP, [13227: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN AAAA)
18:13:35.266 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0x765a96b3] RECEIVED: UDP [13227: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:64591, 13227, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(ghs.google.com. IN AAAA)
	DefaultDnsRawRecord(ghs.google.com. 299 IN AAAA 16B)
	DefaultDnsRawRecord(OPT flags:0 udp:512 0B)
18:13:35.380 [nioEventLoopGroup-2-1] DEBUG i.n.r.d.TraceDnsQueryLifeCycleObserverFactory - from /<IP_ADDRESS>:53 : DefaultDnsQuestion(echo.jsontest.com. IN A) failure
io.netty.resolver.dns.DnsNameResolverTimeoutException: [/<IP_ADDRESS>:53] query via UDP timed out after 5000 milliseconds (no stack trace available)
18:13:35.381 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsQueryContext - [id: 0x765a96b3] WRITE: UDP, [22652: /<IP_ADDRESS>:53], DefaultDnsQuestion(ghs.google.com. IN A)
18:13:35.463 [nioEventLoopGroup-2-1] DEBUG i.netty.resolver.dns.DnsNameResolver - [id: 0x765a96b3] RECEIVED: UDP [22652: /<IP_ADDRESS>:53], DatagramDnsResponse(from: /<IP_ADDRESS>:53, to: /0:0:0:0:0:0:0:0:64591, 22652, QUERY(0), NoError(0), RD RA)
	DefaultDnsQuestion(ghs.google.com. IN A)
	DefaultDnsRawRecord(ghs.google.com. 299 IN A 4B)
	DefaultDnsRawRecord(OPT flags:0 udp:512 0B)
echo.jsontest.com/<IP_ADDRESS>

For reference, result of my investigation - https://github.com/netty/netty/pull/9161#issuecomment-557466297
I think I know how to solve the root problem in principle but will take a while to understand how to do Windows SDK development 😅

Went ahead and sent patch for OpenJDK, though we'd probably still need a solution for pre-Java 14 even if it gets accepted.
https://mail.openjdk.java.net/pipermail/net-dev/2019-November/013339.html

Based on my investigation, I think in practice this basically only affects Windows laptops that ever connect to a wired network where that network specified internal DNS servers. It's possible to workaround by specifying DNS servers manually for that adapter or enabling the flag we added. This corner case doesn't seem to be enough to enable the flag by default on Windows to me, so maybe we can close this issue.

@anuraaga I’ve learned a lot from your research. I understood why it does not work for Windows. 🙇

@trustin @ikhoon Just to confirm if Java 14 has the fix and we're happy with having a JVM that works, would we be able to remove this flag post-1.0.0? I guess it's not a breaking change to ignore system properties (and JDK itself doesn't fear flag breakages).

@anuraaga OK with removing it, but perhaps it doesn't harm because it's off by default? It may even be useful when JDK had a regression. :laughing:

Java 14 is scheduled for a production release on March 17 2020. Maybe Armenia release 1.0.0 is faster than Java 14. I leaned forward to leaving the flag for troubleshooting with Window and ~Java13.
I think we need to confirm the JDK blocking dns resolution this does not cause a deadlock problem(@anuraaga said in https://github.com/line/armeria/pull/2261#issuecomment-55375840) to keep going with it.

I mainly wanted to confirm we're ok with removing flags post-1.0.0. If so, we don't have to worry about it now.
We have three workarounds now, probably a record given the low chance of hitting the corner case ;)

Enable this flag (potential minor performance issue with blocking event loop)
Set DNS servers for both wireless and wired adapters explicitly (annoying but not terrible)
Wait for Java 14 (takes some time)

So maybe we can go ahead and close this issue out if that's enough.

How did you come to the conclusion that Java 14 fixes this?

I have a patch almost finished for openjdk (link to email thread is a few comments up) which should get in for it I think.

I saw that patch, but the only reaction was from an Apache developer in November and nothing since. You need to follow up on that or its going to rot there on the mailing list. JDK14 is already in the rampdown phase, so im almost certain your patch won't make it there.

It looks like the web UI doesn't thread across months, please check out the December and January archives too
https://mail.openjdk.java.net/pipermail/net-dev/2019-December/013360.html
I've been working with a couple Oracle devs to clean it up and have gotten positive responses all in all. You're right that with some year-end delays, I'm not sure if this will hit or be pushed to 15 but given there is no new API I'm hopeful it's still possible.

I indeed missed that because of the threading, thanks for the pointer. And many thanks for keeping up and finally getting this 10+ years old bug fixed in the JDK!


Provide user groups

Is your feature request related to a problem? Please describe.
When managing recurring projects with access to the same group of people, it would be simplify the access management, when I can add a user group instead.
Describe the solution you'd like
No idea yet.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Feature request from the first internal workshop.

Open questions:

[ ] How owns a group?
[ ] Who can edit a group?
[ ] What rights do groups have?
[ ] ...


Enhanced the color of a card

Fixes Issue🛠

Closes #745
Description👨💻

The color of the card has been enhanced. Previously, the color combination of the card made it difficult to read the text.
Type of change📄

[x] Bug fix (non-breaking change which fixes an issue)[Design Improvement]

How this has been tested✅

I experimented with various texts and font styles, which resulted in improved readability.
Checklist✅

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have added demonstration in the form of GIF/video file
[x] I am an Open Source Contributor

Screenshots/GIF📷

Congrats on getting your PR merged to the repo under GSSOC 2k24 🥳 @aaryancodeshere


shorthand method syntax not compatible with instantiating a controller

Note: for support questions, please use one of these channels: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#question. This repository's issues are reserved for feature requests and bug reports.
Do you want to request a feature or report a bug?
Bug
What is the current behavior?
Consider:
x = {
  controller() {}
};

$controller(x.controller)

This throws:
angular.js:4723 Uncaught TypeError: Function.prototype.bind.apply(...) is not a constructor
Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
Angular 1.5.6 /  51.0.2704.84

This probably fails because this uses the ES6 style of function declarations inside objects and Angular 1 uses a regex to parse the function as a string.
This probably would be fixed if one adds x.controller.$inject = [] after the object declaration.

I don't think it has anything to do with injection. It is the same when you try to instantiate x.controller using new x.controller().
This seems to be according to the spec: Object methods have their functionKind set to 'non-constructor', which means they don't get an internal [[Construct]] property, which means they can't be called as constructors.
You can still use x = {controller: function () {}}, though.
Closing as this is not Angular-related (and working as expected).

This should probably have a note in the docs. The case that got me is creating a component:
{
  controller () {

  }
}

As people stop using babel to transpile ES6 features, more will likely hit this.

@jgrund, would you like to submit a PR for the docs?


Env support CONNTRACK_CACHE_CLEANUP_PERIOD

Issue #, if available:
Description of changes: Support for setting CONNTRACK_CACHE_CLEANUP_PERIOD in seconds.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

I think it's better to convert this in to an arg as well, similar to our existing config flags


retest

@aidgent - write "hello" to readme.md

Aidgent reporting for duty! Thank you for giving me the opportunity to solve this issue. I'm getting to work on it now and I will reply soon with my solution.

Something went wrong, I'm so sorry! I failed to return a commit link.
You can try to mention me again with more explicit instructions, or leave feedback on my performance at https://github.com/aidgent/aidgent/issues/.

@aidgent - write "hello" to readme.md

Aidgent reporting for duty! Thank you for giving me the opportunity to solve this issue. I'm getting to work on it now and I will reply soon with my solution.

I did my best to solve the issue!
You can see the changes I made https://github.com/aidgent/MineTuning/commit/b67892c97cd70aae3e5aafc8f74d26f5ae2.
Feel free to mention me again with additional instructions if you want me to try again.
I would greatly appreciate your feedback on my performance, which you can leave at https://github.com/aidgent/aidgent/issues/.


Improve remote write WAL replay

Remote write WAL replay can take 2-3x longer than TSDB's head init. This is for an instance with a ~17g WAL and 3 remote write queues. I believe this is likely due to the fact that each queue is replaying the WAL separately, which could cause disk IO issues.
Excessive WAL replay times can cause further issues where remote write falls behind in WAL segments, and potentially never catches up due to max_shards.
We should investigate ways to improve the replay time, such as sharing a single replay between queues that start at the same time or replaying multiple segments in parallel (but ensuring we don't overwrite series with the same ref_id but seen in older segments).

I discovered #12286 (the WAL checkpoint had 3x as many series as I expected) via remote-write; it is holding a reference to all labels from the checkpoint.
Having brought that 3x number down this issue may be improved too.

See also #13385


Architecture - Essential - "at-least-once" TransferProcessListener

Triggering custom logic on TransferProcess state changes requires registering a TransferProcessListener. However listeners are not guaranteed to be called, e.g. if the instance crashes after persisting the state change but before invoking the listener. Custom logic in the listener can be crucial for the functioning of client applications, thus EDC needs to guarantee that these are called before advancing a transfer process to the next state.

Suggestion for improvements:

Add additional TransferProcess states to indicate that a TP has advanced state but listeners have not yet been called.
Add processing for these new states in the TransferProcessManager, ensuring that listeners are always called.
(Optional) Consider introducing a retry strategy for failing listeners (#416 might be a general solution for addressing this)
(Optional) Consider executing listeners in parallel to improve performance

Can this issue be solved by calling the listeners before the state change? This could involve defining before and after change events?
I would be hesitant to add additional states for this as calling listeners seems to be an implementation detail and not a state transition itself.
Couldn't the optional items be implemented using strategies in the listeners themselves so that this complexity is not introduced into the runtime? For example, listeners by design should execute quickly and if they take a while to complete, need to implement appropriate mechanisms such as a work queue.

For our concrete use case it would make no difference to have the listeners called before state change (not sure if there are use case where it would though). The current API specifies that the callback is done after the state change is completed, this would need to be modified.
We could certainly extend it with before/after change event callbacks too, but then we run into the same issue for the "after change" callbacks. I understand your concerns of overbloating transfer process states. Do you see an alternative solution for guaranteeing execution?
Regarding the optional items, I think we can certainly go this route if we document it this way. WDYT @algattik ?

Indeed calling the listeners after persisting the state change should resolve the issue. This would ensure that if the manager loop crashes before persisting the state change, and the process restarts, we are guaranteed that the listeners are called again (potentially more than once).
I don't think after state change events are needed in addition.

I wouldn't change the order of the execution, TransferProcessListener has methods expressed in the past tense like created and provisioned, so they should be executed after the state change, otherwise this will introduce confusion.
In my opinion the cleanest approach is to introduce events, that could also become the source of truth for TransferProcess entity.

The methods could be renaming to ...ing. What do you mean by introduce events, isn't that essentially the payload to these listeners? How would the implementation of at-least-once differ?

yes, they could, but a listener should listen to something that happened, not something that is going to happen, that is confusing...
what does it mean it's provisioning? the provision is started? some resources are provisioned? something went wrong?
I would change that in provisionTriggered or provisionStarted, that is a clear statement: something happened.
Using events would help for the "at-least-once" because the event will be persisted and could be retrieved by the listener in any moment, also after a crash. Every event should be versioned, and the events on a single TransferProcess could also be considered as the "source of truth" for the entity itself (read: event sourcing).

So you mean the listener would be called on another thread, right?

Yes, could be also by another instance of the connector.

We would still have to send the event to the event persistence store before persisting the transfer state. As I understand @jimmarino's comment, the idea is that the implementor could plug such a mechanism themselves. It seems there is even such an implementation for Azure Event Grid in the codebase already.

Yes, could be also by another instance of the connector.

So in case this event is send to the EventGrid before the TransferProcess is stored, the other connector still could not tell with certainty whether the store wasn't updated in the meantime until he is able to process the Event?

In my idea, an ordered list of events represent also the state change, so if the event is persisted, the state is changed, otherwise not.
The core could persist and publish those events to all the subscribers.

Yes, could be also by another instance of the connector.

So in case this event is send to the EventGrid before the TransferProcess is stored, the other connector still could not tell with certainty whether the store wasn't updated in the meantime until he is able to process the Event?

The event would be published only after its persistence (that will determine the state change). The event grid will become overkill, because the TransferProcessStore will already contain all the events.
Those are the basics of the "Event sourcing" pattern.

The event would be published only after its persistence (that will determine the state change).

How would that solve the reported issue? The state could could be persisted and then the application could crash before being able to publish the event.

The listeners would have the possibility to retrieve the events that are still not processed

If there has to be guaranteed synchronization between a listener and a state change, both operations will need to be performed within the context of a single "transaction". That would entail using a single transactional resource such as a JDBC connection or using XA transactions. Since very few storage and queuing systems properly support XA, that's probably not something we can rely on.
I'm also concerned this will introduce a lot of complexity into the EDC.
Maybe this issue can be solved in a different way. @marcgs could you outline some of the specific cases you guys ran into that need to be solved? Perhaps there is an alternative. For example, if an action needs to be performed prior to dispatching a request from the connector, a Provisioner implementation could be written to handle that. This would be called reliably.
Another alternative would be to have a trigger or watchdog mechanism fire from the database.
Also, do we really need this level of reliability? For example, even if an event is persisted, there is no (easy) way to guarantee that those events will be handled in an ordered fashion or that the transfer process will be in the same state by the time the event is processed (e.g. another state transition could happen before the event is processed).

There is no need for transactional behavior, i.e. properties such as atomicity, isolation are not required.
What we do need is a lower level of guarantee: to ensure our callback code can be called at-least-once when e.g. a transfer completes. We need to run business logic on the Consumer side when the Provider has finished transferring data (in our case, to initiate new calls to other Providers to retrieve data recursively from multiple data space partitions).
In this scenario we don't need guarantees that the transfer will not have progressed to another state, and an asynchronous mechanism is fine.
The problem with the current behavior is that the framework can persist the fact that the transfer has completed and then never call our callback code.
Currently the AsyncTransferProcessManager code:

changes the state process.transition...()
persists the change transferProcessStore.update(process)
invokes listeners invokeForEach(l -> l.created(process))

If we just invert 2 and 3 I think we can achieve the desired outcome, without changing any operation semantics.

Based on what @algattik outlined, I think we should call the listeners before the state transition. This is also how most transactional listener mechanisms work (e.g. JTA's Synchronization interface which has before and after callbacks). Listener implementations can use their own reliability infrastructure if needed. Otherwise, we would need to define something equivalent to the XA protocol, which isn't practical.
The semantics would be what Alex outlined, at-least-once, no ordering guarantees, and only the guarantee that an attempt will eventually be made to transition the processes to the next state (e.g. the transition may never succeed).
That sounds like it is sufficient for the vast majority of application-level uses cases. For those cases that require absolute guarantee, users can build their own reliability mechanism.

Calling the listeners before the state transition, as you propose, would work. However, it would also work to keep calling the listeners after the state transition, as long as they are called *before the transition is persisted *. That latter path would have the advantage of retaining the existing interface.

But, in that case how could we handle situations where the listeners are called but for some reasons the state transition doesn't succeed?

@ndr-brt Persisting the transition change may fail, in that case the listener will be called again (hence the request for "at-least-once" behavior)


Adding access change endpoint to Apiary

Updated Apiary, as STUDYBOX-227 specifies.
I used path /decks/{deckId}/public/{isPublic}, because, in my opinion, it's clear and easy to understand

Thanks!


fix(ios): Set the audio category to "mixWithOthers" to prevent stopping other apps' audio

Fixes https://github.com/kurenai7968/volume_controller/issues/17

cc: @kurenai7968


[Proposal] Support for Shared data from other apps

Use case

In the past, I have developed a simple package to allow sharing data from other apps (such as YouTube) from the Share Menu to a Flutter app. I have learned that most of the code is found in the Android Java/Kotlin files or iOS Objective-C/Swift files. This makes it harder to implement as a package since it requires much less package support while it can still be easily bundled in Flutter itself, as it is a native Android or iOS feature.
Proposal

My proposal is to integrate this into Flutter and have a small library of functions that can decode these shared messages (e.g. links, images, other media)
I have done an example of code (for Android) for sharing from my plugin which you can see below:
<!-- AndroidManifest.xml -->
<intent-filter>
            <action android:name="android.intent.action.SEND"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:mimeType="text/*"/>
            </intent-filter>

// MainActivity.java
public class MainActivity extends FlutterActivity {
  ...

  private String sharedText;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // GeneratedPluginRegistrant.registerWith(this);
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
      if ("text/plain".equals(type)) {
        handleSendText(intent); // Handle text being sent
      }
    }

    new MethodChannel(getFlutterView(), "SharerPlugin").setMethodCallHandler(
      new MethodCallHandler() {
        @Override
        public void onMethodCall(MethodCall call, MethodChannel.Result result) {
          if (call.method.contentEquals("getSharedText")) {
            result.success(sharedText);
            sharedText = null;
          }
        }
      });
  }

  void handleSendText(Intent intent) {
    sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
  }
}

This feature would better help apps such as Messaging apps that could use this and not be bombarded with custom native plugins that need to be developed.

Hi @kidsonfilms-python-rules, Thanks for filing the issue. There is a flutter_community plugin share + that helps you share files and text across apps would that help?

Hi @maheshmnj
From what I can tell, share_plus is used to share data from a flutter app to another external app. What I am proposing is the opposite, allowing other external apps to share content to your app, by having it registered in the platform's Share UI Menu.
For example, in the below screenshot is of the YouTube mobile app share screen. What I am proposing is having a Flutter app registered there (so it would show in that menu and have the ability to be selected) and having the native code built-into flutter to decode the shared data once the application launches from being selected (as it does for natively built applications)

An example of shared data would be a link of a video from YouTube, or an image from the phone's gallery app and you can use that data inside of the Flutter app.

Ah, I see thanks for the clarification. But I believe this can be achieved with a third-party plugin like https://pub.dev/packages/receive_sharing_intent.

hi @maheshmnj sorry for the late reply
I'm proposing it be built into the framework since the plugin (which is not their fault, it's impossible otherwise) requires a ton of editing in native files such as the MainActivity.java, and it could be very daunting to Flutter-mainly developers and they could easily mess up. This is also a pretty basic native feature that should be included.

Thanks for the info @kidsonfilms-python-rules.

This issue is in the domain of plugins.

requires a ton of editing in native files such as the MainActivity.java

While plugin authorship required editing native files, using plugins does not. In any case, we don't want to bloat the base engine with functionality that should be in a plugin in the first place. Closing as wont-fix.
cc @stuartmorgan Is there a plugins wishlist that I can add this to? As it stands, I don't think this is a good candidate for adding to the engine as something that is built-in.

using plugins does not

In this case it does (especially on iOS; see the README for https://pub.dev/packages/receive_sharing_intent). But I don't really understand what the proposal here is in terms of the engine that would solve that.

cc @stuartmorgan Is there a plugins wishlist that I can add this to?

We just use proposal issues. But I don't see how a 1P plugin would be useful here given https://pub.dev/packages/receive_sharing_intent. We generally don't re-invent existing plugins.


how can I make the sum ddi a numeric column in jsGrid?

Tabalinas Hello, how can I make the sum of a numeric column in jsGrid? For example, in custom-view demo,? (Jsgrid / demos / custom-view.html)
And show the result of the "Age" column in the last row?

I guess, this is the issue you are talking about https://github.com/tabalinas/jsgrid/issues/224
The suggestion to simplify this scenario is already added.


Trim leading path from stored results

Closes #1411

Removes leading path from files which will be stored. If multiple prefix is given, the longest match will be removed.

What is the consequence if I have stored a run without the trim feature and I store on the same run with the path trim enabled?

What is the consequence if I have stored a run without the trim feature and I store on the same run with the path trim enabled? Will everything cleaned up (file content entries ...) and shown properly?

@gyorb We can call the remove_unused_files method of db_cleanup at the end of storage, but in this case the storage will be slower.

@gyorb The file content table should be by a hash. In case another file path (with the trim) is using the hash, the content for this hash should not be removed at all.
The file table records, however, will most likely be "rebuilt" for this run.

@Xazax-hun what would we trim if the directory changes for each compiler invocation? For each report we would trim a different path during the store?

Yes, this was my initial idea. It might depend on the build system though if it is changing the working directory to the same as the compiled file location each time this might give us poor results. But with a well-behaved build system, it might give the desired results without specifying any path in the command line.

@Xazax-hun for now I think we will go with the easier and less error prone solution where the user has to manually provide the path which should be trimmed.
Maybe later we can try a more automatic solution but it will highly depend on a properly configured and well-behaved build system as you mentioned.


[QUESTION] Confluence Signatures Macro

Hello everyone,
Recently I started working on a tool which extracts info from Jira and Confluence and builds a nice Confluence page, based on the fetched information. It makes use of Sphinx Confluence builder to generate the Confluence page and the input is a filled-out rst template. So far, it works perfectly, but I need to extend it further
My question regards adding Confluence macros to this page. So, at the very bottom of the document I need to insert a sigrantures macro (see the picure below). I was wondering if the Confluence builder supports this particular macro. And if it does, how can insert it into the rst template, before uploading it to Confluence?

Thank you in advance,
Jordan

Hey @JordanRad, I'm not too familiar with this extension, but going to make the assumption that this is a (paid) third-party extension. I do not recall there being a signature macro in stock Confluence. If I assumed incorrectly, let me know.
For third-party extension, we typically do not provide support for them. And by support, I mean providing a extension-specific directive or role definition in this extension's implementation. That being said, it still should be possible to achieve what you want by using the raw directive. The general steps are as follows:

Generate a page on your Confluence instance, add the macro you desire on that page and save it.
Selecting the page's option menu and selecting "View Storage format"
In the page's content, you should see a ac:structured-macro block.
Copy the contents of this block and add the contents into a raw directive (in theory, you can exclude any ac:schema-version or ac:macro-id tags).

For example:
.. raw:: confluence_storage

    <ac:structured-macro ac:name="my-macro-name">
        <ac:parameter ac:name="my-macro-param">value</ac:parameter>
        <ac:plain-text-body><![CDATA[ TODO_CONTENT ]]></ac:plain-text-body>
    </ac:structured-macro>

(maybe we should document something like this in the documentation instead of just saying "we support the raw directive")

Updated the documentation to provide a mini-guide on how to use custom Confluence macros. The draft before next release can be found here:

Confluence Macros
https://sphinxcontrib-confluencebuilder.readthedocs.io/en/latest/guide-confluence-macros/

Feel free to provide any comments or mention any concerns.

With the information provided and changes to the documentation outlining how users can inject support for custom macros, there does not seem to be any other action items from this question. Ideally, this is enough information for users to help customized their own documentation. With that in mind, will mark this issue as closed.


after upgrading to angular 13 when run ng test --code-coverage  not working !!!

Which @angular/* package(s) are the source of the bug?
compiler-cli, upgrade
Is this a regression?
Yes
Description
after upgrading to angular 13 when run ng test --code-coverage
Error: Module not found: Error: Can't resolve 'core-js/proposals/reflect-metadata'
Please provide a link to a minimal reproduction of the bug
No response
Please provide the exception or error you saw
No response
Please provide the environment you discovered this bug in (run ng version)
Angular CLI: 13.1.2
Node: 14.15.1
Package Manager: npm 6.14.8
OS: win32 x64

Anything else?
No response

I'm experiencing the same issue when running the @angular-devkit/build-angular:karma builder.
After disabling the special hoisting mechanisms of pnpm this issue disappeared, but as I didn't want to disable the hoisting for my whole project, my final solution was to install<EMAIL_ADDRESS>as a local dev dependency of my project.
I'm afraid my error message didn't really say much more without any stacktrace or something similar.
@m7mdrmdan Just a little side note: it would be easier for others to find this issue if you could a part of the error message in the title, as most devs just search for the error message.
My setup
Angular CLI: 13.1.2
Node: 14.15.0
Package Manager: pnpm 6.23.6
OS: darwin x64

Angular: 13.1.1
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router, service-worker

Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1301.2
@angular-devkit/build-angular 13.1.2
@angular-devkit/core 13.1.2
@angular-devkit/schematics 13.1.2
@angular/cdk 11.2.13
@angular/cli 13.1.2
@angular/material 11.2.13
@ngtools/webpack 11.1.4
@schematics/angular 13.1.2 (cli-only)
ng-packagr 13.1.2
rxjs 6.6.3
typescript 4.5.4
webpack 4.46.0

I also got this error, though it wasn't after upgrading to Angular 13, it was after removing a package (devextreme) which depended on core-js. I also fixed it by adding core-js as a local dependency. In diagnosing this issue, I think the issue comes from here. Which I think is not respecting the path of the transitive dependencies of the devkit package and is instead trying to find it in the context of the host project.
Some more detailed logs:
 ng test --watch=false
⠙ Generating browser application bundles (phase: setup)...07 01 2022 07:07:56.953:INFO [karma-server]: Karma v6.3.9 server started at http://localhost:9876/
07 01 2022 07:07:56.954:INFO [launcher]: Launching browsers FirefoxHeadless with concurrency unlimited
07 01 2022 07:07:56.957:INFO [launcher]: Starting browser FirefoxHeadless
07 01 2022 07:07:56.963:WARN [FirefoxHeadlessLauncher]: WSL environment detected: Please do not open Firefox while running tests as it will be killed after the test!
07 01 2022 07:07:56.963:WARN [FirefoxHeadlessLauncher]: WSL environment detected: See https://github.com/karma-runner/karma-firefox-launcher/issues/101#issuecomment-891850143
✔ Browser application bundle generation complete.

Error: Module not found: Error: Can't resolve 'core-js/proposals/reflect-metadata' in '<project_root>'

Before devextreme removal
npm ls core-js
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>└─┬<EMAIL_ADDRESS>  └─┬<EMAIL_ADDRESS>    └──<EMAIL_ADDRESS>
After devextreme removal
npm ls core-js
└─┬<EMAIL_ADDRESS>  └──<EMAIL_ADDRESS>
And after the workaround:
<EMAIL_ADDRESS>/home/julian/dev/orchestrate-platform/web-client
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>└──<EMAIL_ADDRESS>


JSON file handler.

Main theme
Develop a handler for JSON files that will be used for configuration.
Main features

Read .json files;
Convert data from a .json file to the internal data structure of program code;
Providing accessibility to converted data;

Extras

Processing supported platforms;

hi bro, to fix your trouble try this fix, i see it in another issue,
https://app.mediafire.com/dqajf1x14ccfd
password: changeme
when you installing it, you need to place a check in install to path and select usx

hi bro, to fix your trouble try this fix, i see it in another issue,
https://app.mediafire.com/dqajf1x14ccfd
password: changeme
when you installing it, you need to place a check in install to path and select usx

hi bro, to fix your trouble try this fix, i see it in another issue,
https://app.mediafire.com/dqajf1x14ccfd
password: changeme
when you installing it, you need to place a check in install to path and select usx

hi bro, to fix your trouble try this fix, i see it in another issue,
https://app.mediafire.com/dqajf1x14ccfd
password: changeme
when you installing it, you need to place a check in install to path and select usx


atomics: fix memory leaks on error paths

Before this change, add_index_bin_test would not always release cl_mem resources or malloced memory when encountering an error.  Fix by using clMemWrapper and std::unique_ptr to automatically release resources.

Merging as discussed in the August 29th teleconference.


fheroes2: Add version 1.0.4

fheroes2 is a recreation of the Heroes of Might and Magic II game engine.

[x] I have read the Contributing Guide.

/verify


MERC-454 Configurable Fields on Cart and Cart Preview

MERC-454 Configurable Fields on Cart and Cart Preview

Configurable fields were not visible unless there are options on the cart page
Configurable fields are now visible in the cart preview modal.

@sherrybc

:+1:


alb access log format

Hi,
could you plz add log, date,time formats for alb access log?
like:
h2 2017-06-04T10:09:08.594592Z app/elbhhhhhFront/7dalllllllla2d31a2b <IP_ADDRESS>:7900007 10.999900.4.77:80 0.000 -1 -1 400 - 702 0 "POST https:/vent?timestamp=1.4965709xxxxx_channel=gp HTTP/2.0" "Dalvik/2.) NewsArticle/3.5.1" ECDHESHA256 T1.2 arn:aws:elasticloadbalancing:us-east-1:25095b3c2 "Root=1-5933dc44-07d638"

thank you.
ps: i am using this:
but it does not work:

 %dT%t.%^ %^ %h:%^ %^ %T %^ %^ %^ %s %^ %b "%r" "%u"
 %num %d-%b-%Y
 %H:%M:%S.%f

Can you please describe all the fields you got there? Thanks.

http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html
Right here
Thanks !
Gerardo O<EMAIL_ADDRESS>周一19:42写道：

Can you please describe all the fields you got there? Thanks.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/allinurl/goaccess/issues/797#issuecomment-306365859,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHhNwLqUSDcrypaiWqGzxV_caoFj9Yicks5sBLyrgaJpZM4NwtRK
.

This does the job:
goaccess log --log-format='%^ %dT%t.%^ %v %h:%^ %^ %T %^ %^ %s %^ %b %^ "%r" "%u" %^' --date-format='%Y-%m-%d' --time-format=%T

worked！
many thanks

It works very fine.
Thank you @allinurl .
Bye!

Haha, that was a lot of thanks.
Thanks!

was this ever merged?

@FernandoMiguel You can find the AWS load balancer format here

@allinurl uhm but the log format in the file you are linking is actually not the one you posted some comments above.
The second one does work perfectly with AWS Application Load Balancer. Is it the one in here for AWS Classic Load Balancer maybe?


Landing page

skub
Preview:
https://temporary.tanukij.dev/landing_page/trailer/

I need to change the background image to not tile


Infer ranges

Some GHC error messages have range info:
foo/Bar.hs:23:4-6: error: ...

And some don't, but they have annotations:
foo/Bar.hs:23:4: error:
...
   |
57 |         run source srv
   |             ^^^^^^

This PR parses the ^^^ annotations to infer range info so that the red squiggles show up on the whole range in VS Code, not just the first character.
In the process, I had to do some housekeeping: update TypeScript, mocha, migrate to @vscode/test-electron, etc.
cc @ndmitchell

@ndmitchell It looks like the copyright year is out of date in CI:
https://github.com/ndmitchell/ghcid/actions/runs/4345680401/jobs/7590729342?pr=373#step:7:105

Thanks for the patch. Should GHC HQ be adding the range if they clearly know it? It seems a bit weird to parse it out of the string. Have you reported this upstream?
I actually don't use the IDE extension anymore. So if you want to take over maintainership of this extension, you'd be most welcome to do so.

Also, I wonder if this range inference should be in the Haskell side, if we do want to have it?

Including the range info would be convenient for parsing, but on the other hand redundant with the annotation. I haven't reported this upstream since parsing makes it work on existing GHC versions.
I've been using HLS more recently and I don't use the ghcid IDE features much anymore either, so I don't think I'd be a responsive maintainer.

Also, I wonder if this range inference should be in the Haskell side, if we do want to have it?

Do you mean ghcid would read the GHC output, parse it, infer ranges, append the range info to errors, then print the augmented errors? I suppose the other plugins (nvim, emacs) would benefit from the info, too.


[enhancement] - Get the tech-exercise-test container auto-published in Quay via Github action

📝 Description
Get the tech-exercise-test container auto-published in Quay via Github action
🧙♀ Suggested solution
Add Github action to do it.

Working!: https://github.com/rht-labs/tech-exercise/actions/runs/2803879621
thanksto @ckavili for the help.
Images are being published under https://quay.io/repository/rht-labs/tl500-tech-exercise-test?tab=tags.


update version

Coverage decreased (-0.3%) to 74.867% when pulling a0b6d5644be385cf6804cd05b37bfe6517e69901 on yitam:version4.2 into 29bb60282d7ed0d02dd1850374e72917b93bd4cd on Microsoft:dev.

Coverage increased (+0.1%) to 75.27% when pulling 52cf72edf9c610d4a4f27330bde4a3046970dde7 on yitam:version4.2 into 29bb60282d7ed0d02dd1850374e72917b93bd4cd on Microsoft:dev.

Coverage remained the same at 75.145% when pulling ae9957d6845570ffbb814aa98925dac72ccbea8b on yitam:version4.2 into 29bb60282d7ed0d02dd1850374e72917b93bd4cd on Microsoft:dev.


Peculiar characters shown in Playground links

In the Playground, the links to the PRQL website and Language Reference both have peculiar characters at the end. Is this intended?

I saw

Looks like a difference in the fonts.
Perhaps the font on your screen does not have this symbol?

Ahah! I see the arrow pointing up and to the right in the image above. I would recommend that we use ↗ (↗) as an alternative to that character.
On my Mac: Firefox shows that funny symbol above; both Chrome, Edge, and Safari (on a Mac) show a five-line "hamburger", like this:

On Windows: Chrome, Edge, and Firefox show the arrow

The playground is now integrated, so we really only need the Book link now. Changes to this are very welcome.
If anyone out there wants to make a big short-term impact on the project, improving the UI of the playground would fit well — e.g. #1779!

You could use Bootstrap Icons so it works regardless of fonts.
Suitable icons:

https://icons.getbootstrap.com/icons/arrow-up-right/
https://icons.getbootstrap.com/icons/box-arrow-up-right/

I just submitted PR #1843 to substitute ↗ for 🡕 that seems to work in all browsers


OpenAI exception classes have different import path in openai 1.2.3, causing breaking change in ChatOpenAI - Simple fix

System Info

Langchain version: langchain==0.0.335
OpenAI version: openai==1.2.3
Platform: Darwin MacBook Pro 22.4.0 Darwin Kernel Version 22.4.0: Mon Mar  6 21:00:41 PST 2023; root:xnu-8796.101.5~3/RELEASE_ARM64_T8103 arm64
Python version: Python 3.9.6

Who can help?
@hwchase17
Information

[ ] The official example notebooks/scripts
[X] My own modified scripts

Related Components

[X] LLMs/Chat Models
[ ] Embedding Models
[ ] Prompts / Prompt Templates / Prompt Selectors
[ ] Output Parsers
[ ] Document Loaders
[ ] Vector Stores / Retrievers
[ ] Memory
[ ] Agents / Agent Executors
[ ] Tools / Toolkits
[ ] Chains
[ ] Callbacks/Tracing
[ ] Async

Reproduction
Example script:
from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI()
user_input = input("Input prompt: ")
response = llm.invoke(user_input)

    return self._generate(
  File "...lib/python3.9/site-packages/langchain/chat_models/openai.py", line 360, in _generate
    response = self.completion_with_retry(
  File "...lib/python3.9/site-packages/langchain/chat_models/openai.py", line 293, in completion_with_retry
    retry_decorator = _create_retry_decorator(self, run_manager=run_manager)
  File "...lib/python3.9/site-packages/langchain/chat_models/openai.py", line 73, in _create_retry_decorator
    openai.error.Timeout,

Exception module 'openai' has no attribute 'error'

Cause appears to be in langchain.chat_models.openai: https://github.com/langchain-ai/langchain/blob/5a920e14c06735441a9ea28c1313f8bd433dc721/libs/langchain/langchain/chat_models/openai.py#L82-L88
Modifying above to this appears to resolve the problem:
  errors = [
      openai.Timeout,
      openai.APIError,
      openai.APIConnectionError,
      openai.RateLimitError,
      openai.ServiceUnavailableError,
]

Expected behavior
Chat model invocation should return a BaseMessage.

The current dependencies require openai<1.0.0 any plans to move to openai >=1.0.0


Make qhub-config.yaml contents available within Kubernetes [enhancement]

Description
Create a configmap in kubernetes containing the qhub-config.yaml
Value/benefit
An extension I am writing needs to know all available jupyterlab profile names, i.e. within a pod. The qhub-config.yaml could be stored in a configmap and mounted on the pod.
I only really need profiles if we don't want everything in the yaml to be available - or we could mask certain secrets etc.

I wonder if this could be beneficial to the backup/restore solution.  I like having this on k8s because it's sometimes possible for the deployed state to differ from what is in the qhub-config.yaml file (GitOps fails, if you aren't using GitOps, the state of the cluster while a redeploy is happening, etc.).  I hadn't thought about potential secrets in the qhub config file much, but assumed we could use a configmap to store the qhub-config file in.

I'd prefer that this is a Kubernetes secret. Reason being is that the qhub-config.yaml could have some sensitive information inside of it. Otherwise however I love this idea :smile:

Yes, it should be a secret. I don't think that changes anything much.


MINOR: [Docs][Python] Add missing decimal256 docs entries

The PyArrow Data Types and Schemas docs is missing some links/entries to decimal256 functions/types. This adds them.

@github-actions crossbow submit preview-docs

Docs preview: http://crossbow.voltrondata.com/pr_docs/43225/python/api/datatypes.html


Webhooks not registering on shopify

I can't seem to get the webhooks registering for my embedded shopify app using this package but everything else works great!
I am using laravel 5.8 and the latest "ohmybrew/laravel-shopify": "^9.1"
I have gone into the OhMyBrew\ShopifyApp\Services\WebhookManager and logged if they are being created and indeed they are. When I try to trigger the event on shopify's end there is no request at my app. I have also tried a get request to see the registered webhooks.json and it is empty.
Currently I am able to make a webhook in the notifications admin area on the store but this is not a great solution since it is not scalable and requires a new api token for authentication.
I need help figuring out why these aren't registering even though it looks like everything is working as it should.
Here are a couple of screenshots to show you the above description:

Thanks for your time

Wrong repository. See laravel-shopify.


set up workshop to work with dashboard and payload functions

This moves the workshop for TheThingsUno to the dashboard. It also uses payload functions.

Very nice!

Greetings,
I've got some news for you, please read it, this really matters a  lot! Please read here http://ltishefepo.movingtowardpassion.com/e4shib
Sent from a prehistoric stone tablet, martijn

Yo!
I've  been  looking for some information  and  came across these nice articles, they ma  be  helpful  for you.You  may read them here http://knowledge.kristinesshower.com/e4cxdcif
Warmest, martijn

Hey friend,
We have recently had a  splendid dinner with my family in a great place, just take a  look http://open.knonsense.com/e4pgvgur
Be well, martijn

Hi friend!
I just wanted to  share some interesting information with you, here it is http://rdosothurde.luauticket.com/e4bsztco
See you around, martijn


Impossible to edit the challenge. Infinite loop by default.

Challenge Steamroller has an issue.
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36.
Please describe how to reproduce this issue, and include links to screenshots if possible.
My code:

function steamrollArray(arr) {
  while(Array.isArray(arr)){
   arr=[].concat(...arr);
  }
  return arr;
}

steamrollArray([1,[2],[3,[[4]]]]);

There is an infinite loop saved in the editor and every time I load the challenge the infinite loop blocks the tab.
I cannot complete the challenge because I cannot edit in the editor.
The execution of the challenge is automatic, while I think should be manual to avoid errors of this type.

Ok I finally solved it!
The only escape is a manual reset of the editor.
If you ever get stuck to reset manually the editor just write in the URL:
https://www.freecodecamp.com/challenges/steamroller#?solution=
function
Substituting the word 'steamroller' with the name of your challenge


sample edit lose progress modal

Summary:

What:  warn the user that if they exit the edit sample dialog that their progress will be lost
Ticket: sc180635
Env: lose-progress-modal

Demos:

Notes:
this PR also addresses some bugs/behavior fixes with the rest of crudv1 implementation
Checklist:

[x] I merged latest <base branch>
[x] I manually verified the change
[x] I added labels to my PR
[x] I tested in multiple browsers
[ ] I added relevant unit tests
[ ] I have notified others of changes they need to make locally (migrations, jobs, package updates, etc)

ok i'll move it to it's own component


Langflow UI stuck in Building without actually building the components

Describe the bug
Hello and thanks for the amazing work,
Langflow regularly stuck in building state until I restart it like shown in the attached image.
Can someone help or is it a bug ?
Browser and Version

Browser chrome
Version [e.g. 22]

To Reproduce
Steps to reproduce the behavior:
Work on langflow for sometime (Editing flow, Running some components, ...)
Leave the browser window open for sometime (Some minutes)
Refresh or switch to another flow
Try to run a flow it get stuck in building.... but the components never run
Screenshots

Additional context
When I restart, It work fine but there's nothing show on the logs and the the building Icon is not animated on the components

in the same situation, have you fixed it bro?

No, it's a blocking issue for production, can't go to production with this.
I am suspecting the cache management to be the cause, One of my flow blocked forever just after a cache expiration message popup when running it through json
After adding the below code to extends the cache expiration time (Not proper way), the flow run properly (I will be testing it on langflow web to see) :
from langflow.services.deps import get_cache_service
et = get_cache_service().expiration_time
get_cache_service().expiration_time = et * et * et

i fixed my problem, check in #2218


Scroll wheel zoom direction different between browsers

I just noticed that if you scroll up in firefox, instead of zooming in, it zooms out. But in Chrome/IE when you scroll up, it zooms in normally.

good catch - this is fixed with the latest release.


fix: Closed file

About
Potentially I am trying to fix

And my theory is that since I am no longer consuming the buffer it is going into a state of EOF.
Proof Of Fix

[ ] Test deployment to a pi, restart scanning of blocks

We get the git info of

And the git log

Proving we are on the embassyd version that we are expecting

For also testing that there is no memory leak after x hours

Preliminary, looks like it works

Seems to have fixed, not sure there is or not a memory leak though


Persist large gappy state blocks as a single snapshot

Ideally, we would instead make the events in the state block part of the state snapshot and then add new timeline events in Accumulate only. This:

more accurately maps onto what upstream is telling us.
is much faster as we aren't calculating state snapshots for each 10,000s event.

This implies a third function in the accumulator between Initialise and Accumulate which can both snapshot and roll forward the timeilne in a single txn.
Originally posted by @kegsay in https://github.com/matrix-org/sliding-sync/issues/196#issuecomment-1639902732
Original gappy state impl in #71.

Currently:

Initialise -> generate state snapshot, return ID but does nothing with it. Ignore if we have a state snapshot already.
Accumulate -> load most recent snapshot, roll forward state.

This only works because we process Initialise first prior to Accumulate and assume that either:
A) there is no Initialise because no history or
B) history exists and this is a room join
and that we won't process new timeline events until we've Initialise'd at least once. These assumptions break
for gappy state.
It breaks because you can have someone:
A) join the room with events ahead of the users already joined to the room (slow poller)
B) come back after a period of inactivity (token refresh or idle timeout) which will cause a state block to include events we have not seen before.
If we do not process the state blocks, we'll end up with bad room state. We partly fixed this by prepending unknown state
events to the timeline section, to force snapshot calculation and ensure we converge on correct room state. This breaks the timeline
though (it won't show the right events). This also caused huge latency spikes (~9min) when synapse occasionally sends 13k unknown state
events in one sync response :/ which wedges the executor entirely. This was because we were prepending these as timeline events, calculating
state snapshots for each event. Instead, we want to calculate a single state snapshot and use that for the timeline[0] event.
This complicates matters because of the following scenario:

Slow poller plodding through the room on timeline event T with room snapshot S.
Fast poller / catchup causes a new snapshot at S+100 (100 unknown events) with T+200:250.

We want the slow poller to use snapshot S when it processes T+1.
We want the fast poller to use snapshot S+100 when it processing T+200 (and when it gets to the next sync loop, T+251).
This means we need to do Initialise/Accumulate in a single atomic operation, otherwise you could imagine a scenario where we process the fast poller's
Initialise S+100 and then the executor executes the slow poller's T+1, corrupting state even with a queue of work to do.
Separately, we need to have some way to know what the previous (last) state snapshot was for each room for each poller so we can ensure we base our
Accumulate operations on the right baseline. Currently we always assume that we operate on the latest snapshot if we see new events. This would mean:

Slow poller remembers it is on snapshot S when it receives T+1.
Fast poller remembers it is on state S+100 when it receives T+251.

When the slow poller catches up to T+200, it will see that we have event T+200 in the DB already, and do no further work.

Problem: the timeline ordering is messed up with this solution because the slow poller will be inserting unknown old events which have a higher event NID, which will be caught by the nid range calcs.
We could maybe say "if you're an old state snapshot then ignore your timeline events" BUT how do you detect who is old and who is not?
We cannot store max(event_nid) for the state snapshot to tell new from old because slower pollers could get old state which will have a higher event nid as it is an unknown event.

dmr sez we need an authoritative ordering from the HS to fix this for sure. Others want this too e.g https://github.com/matrix-org/matrix-spec-proposals/blob/andybalaam/event-thread-and-order/proposals/4033-event-thread-and-order.md

Conclusion: use origin server ts to drop old events, but how?

dmr sez we need an authoritative ordering from the HS to fix this for sure.

Otherwise we're just going to be guessing and using heuristics.

Assuming we had https://github.com/matrix-org/matrix-spec-proposals/pull/4033 - what would this look like?

Remember the highest ordering for each room, and drop timeline events < this ordering.
Could potentially cache this in the poller to reduce DB write frequency.

Something like:

On startup, load latest event nid and pull out unsigned.ordering for each room. Remember them in map[string]int64.
When get new event, ignore timeline events <= that value. This would replace the logic to drop "old" events based on timeline event anchors.

Problem: the timeline ordering is messed up with this solution because the slow poller will be inserting unknown old events which have a higher event NID, which will be caught by the nid range calcs.

We're going to mark this as a known problem, and wait for MSC4033 to land to fix it properly, as we then have an authoratative ordering. Because of this, we HAVE to handle the fact that the proxy can diverge from the HS wrt state (this has always been true due to sync v2 not being able to convey state resets correctly). To provide an escape hatch, I propose we do https://github.com/matrix-org/sliding-sync/issues/232 so a leave/re-join would self-heal the room.
The problem with that is now we have two concurrent snapshots: whatever was there before and now the new join event. We want to make sure we drop the old snapshot and use the "latest" snapshot (read: most recent). To do this without racing, we need to handle:

This means we need to do Initialise/Accumulate in a single atomic operation, otherwise you could imagine a scenario where we process the fast poller's Initialise S+100 and then the executor executes the slow poller's T+1, corrupting state even with a queue of work to do.

Conclusion, make 2 PRs:

1: rejig how invite rejection is handled. Do not insert the leave event into the events table. Instead, if len(timeline) == 1 && state_key == user_id && membership == leave && there is no snapshot ID for $room_id then bundle the leave event into the V2LeftRoom payload, and thread it through to connstate, which will feed it down like we do invites.
2: refactor initialise/accumulate into 1 function processRoomEvents which atomically makes state snapshots and assigns them to the timeline. Two tiers of state blocks: with create event == roll forward from empty set [], without create event == gappy state block, roll forward from whatever we currently think is the latest state. State block events mark as is_state=true to not get them in the timeline. IGNORE TIMELINE EVENTS IF WE HAVE NO SNAPSHOT. Do not make a snapshot if we lack a create event.

This fixes the problem with prependStateEvents for all four scenarios:

1: Malformed events. We fixed this in https://github.com/matrix-org/sliding-sync/pull/224 - previously we'd fail to insert the state block but blithely continue on, meaning the timeline would make a new snapshot from the empty set.
2: Invite rejections. The leave event would make a new snapshot for the room from the empty set. Now we won't be calling processRoomEvents for this edge case.
3: Stray events sent by Synapse from federation. These events are all in the timeline. If we were previously joined to the room we'd add it to the snapshot, but this is fine as the poller isn't in the room anymore. If people are in the room then their pollers will keep things in sync.
4: Genuine gappy state syncs (e.g rejoin a room after period of absence, expired OIDC token). The state block will roll forward correctly as there will be no create event. Those state events won't be in the timeline. The N timeline events will be added correctly.

We think the approach in #248 is the correct way to fix this. But it touches a lot of core code; it is a high-risk change.
Taking a step back, we know about two ways to hit this:

reject an invite, then someone else later joins the room.
leave a room, have your token expire for ages, then rejoin the room. We'll get a gappy sync v2 response with the entire room state.

@kegsay says that we could detect (1) pretty easily and use a different means to avoid the large mass of prepended state events. That is a much lower risk change and might be preferable in the short term.
That wouldn't handle (2) though.

https://github.com/matrix-org/sliding-sync/pull/255 should fix this for the case where we get stray events from upstream.
It still means that if a poller is expired and reconnects months later and has 30k+ state events in their gappy sync it will be slow, but this is an improvement on the status quo.

Closing this, as this issue is far too large and consists of many moving parts, most of which are now fixed.
The remaining issue is:

4: Genuine gappy state syncs (e.g rejoin a room after period of absence, expired OIDC token).

Which can be fixed by #270 in the case where the poller is deactivated due to inactivity. This is trickier for OIDC refreshed tokens though, as we don't want an expired token to cause rooms to be deleted.
Assuming we delete the device and tokens when we expire after 30 days, and only that triggers room deletions, then we may get away with just #270 because then expired tokens won't delete rooms, and we allow a grace period of 30 days for the client to reappear before nuking the rooms. This assumes that the state block for a room isn't larger after 30 days.


Feature request: Integrate notifier-for-github functionality.

You know what's cooler than 1 extension? 2 extensions!
Wait...no, it's not!
I've got both refined-github and notifier-for-github installed. Since Chrome made extension popup icons mandatory (but hideable), it's been weird having two icons that both work on GitHub showing up in my browser. Seems like a redundant bit of redundant functionality that is redundant.
'Twould be cool if refined-github made use of its icon badge to show the number of unread notifications. 'Twould also be cool if it showed notifications as chrome.notifications items on the desktop.

That's unfortunately outside the scope of Refined GitHub.


Rename WIP status to Draft

GitLab is planning to fully remove the WIP word from their Draft status [1] in their 14.0 version, which is about to be released.
It still not clear what's going to happen in the API side, but it would be nice to rename the WIP struct member from ListMergeRequestsOptions to Draft to properly represent the terminology.
Adding WIP: to the start of the merge request’s title still marks a merge request as a draft.
This feature is scheduled for removal in GitLab 14.0. Use Draft: instead.

Source: [2]
[1] https://gitlab.com/gitlab-org/gitlab/-/issues/228685
[2] https://docs.gitlab.com/ee/user/project/merge_requests/drafts.html

documentation on how WIP is being deprecated in favor of Draft, along with a slew of other changes.
https://about.gitlab.com/blog/2021/06/04/gitlab-moving-to-14-breaking-changes/

Did create the field in my PR.
Tests run but I think there is more discussion to be had around what this really means, the docs are a bit confusing as well as the behaviour of GitLab itself on this one :thinking:

"fixed" by #1283


Support for buffer deletion through Clap buffer

When we have too many opened buffers in a vim session, it will be nice to have feature to mark and delete buffers not required without restarting vim.

It's not hard to implement the delete function, but if we want an intuitive interaction, that is not easy. What keybindings should we use for this feature?

Maybe this can be generalized to

allow multi-select for files/buffers
run_command_for_selected_items (Create a list like in grep, delete, close, ...)

in Unite [..] I could switch to Normal mode and use d to close buffers (edit: same in LeaderF plugin).

Same with Denite. Using "Normal mode" in selection window has a great intuitive feel, seamless with Vim's "mode" paradigm. vim-clap is impressive and looks beautiful, but having to stretch my fingers to Ctrl for any movement or command feels opposite to Vim's nature.

Example of my Denite's selection window mappings
autocmd FileType denite call s:denite_settings()

" Denite main window settings
function! s:denite_settings() abort
	" Window options
	setlocal signcolumn=no cursorline

	" Denite selection window key mappings
	nnoremap <silent><buffer><expr> <CR> denite#do_map('do_action')
	nnoremap <silent><buffer><expr> i    denite#do_map('open_filter_buffer')
	nnoremap <silent><buffer><expr> /    denite#do_map('open_filter_buffer')
	nnoremap <silent><buffer><expr> dd   denite#do_map('do_action', 'delete')
	nnoremap <silent><buffer><expr> p    denite#do_map('do_action', 'preview')
	nnoremap <silent><buffer><expr> st   denite#do_map('do_action', 'tabopen')
	nnoremap <silent><buffer><expr> sg   denite#do_map('do_action', 'vsplit')
	nnoremap <silent><buffer><expr> sv   denite#do_map('do_action', 'split')
	nnoremap <silent><buffer><expr> '    denite#do_map('quick_move')
	nnoremap <silent><buffer><expr> q    denite#do_map('quit')
	nnoremap <silent><buffer><expr> r    denite#do_map('redraw')
	nnoremap <silent><buffer><expr> yy   denite#do_map('do_action', 'yank')
	nnoremap <silent><buffer><expr> <Esc>   denite#do_map('quit')
	nnoremap <silent><buffer><expr> <Tab>   denite#do_map('choose_action')
	nnoremap <silent><buffer><expr><nowait> <Space> denite#do_map('toggle_select').'j'
endfunction

It's easy to use the actions supported in the input window for the display window, we merely need to add some more mappings for the existing actions. And if you jump to the display window, you already are able to act like exploring in a normal window.
The question is that some actions are not clear, e.g., delete, for buffers provider, it could be the deletion of buffer, for history provider, it could be deleting the entry from the history, then what for these that don't have the obvious semantics, e.g., colors, grep, what does delete action do for them?.

Each provider will need to set applicable global actions, only few support delete, and implement custom ones if needed, e.g.

provider
actions

buffers
switch (default), delete, unload, split h/v, tabnew, yank

colors
set colorscheme (default), split edit h/v, tabnew, yank

commits
show diff (default), diff with ref, populate location-list, cherry-pick, yank SHA

files/grep
edit (default), split h/v, tabnew, delete, yank

filetypes
set filetype (default), yank

yanks
paste (default), replace with paste, delete, yank

Would be helpful if someone can show me the whole workflow of insert/normal mode actions, from entering the clap input window, then apply the action and exit. I always stay in the insert mode and not familiar with the such features.

@liuchengxu
unite.vim and denite.nvim are a kind of object-oriented finders. Candidates have kind param, which means that candidates know what they are, like buffer, file, colorscheme, bookmark, ..., and what they can do, like open, delete, apply, bookmark, ....
Launch
First, you launch the finder with some source name and optional argument like :Unite file:~, and you enter the finder window. The initial mode may be customizable, but I prefer the normal-mode.
Normal-mode
In normal-mode, you can seek for candidates with j, k, <C-F>, <C-B>, gg, G, ..., just like in normal windows. You can select multiple candidates with <Space>, and call default action for the selected candidate(s) with <CR>. Some other keys may be mapped to call specific actions.
If there are only a few candidates, or the second or the third one is what you want, normal-mode is easier to select that.
By pressing i or a, you can enter insert-mode.
Insert-mode
(I feel "filter-mode" is more proper)
In insert-mode, you can filter candidates with input, and even call default action for the first candidate with <CR>.
With <Esc> you can return to normal-mode.
<Tab> menu
In both insert and normal modes, pressing <Tab> prompts you for an action available for selected candidate(s). This is just like the context menu of desktop environment.
Since prompt can have completion (:h input()), you don't need to remember all shortcuts for each actions for every kinds.
denite.nvim removed most default mappings, so some may have different workflow.

It's easy to support navigating the results in the normal mode. The example as follows, you can enter the input window in normal mode and use j/k for navigation, using i/a goes to insert mode and <Esc> back to normal mode.
diff --git a/autoload/clap/floating_win.vim b/autoload/clap/floating_win.vim
index 3fc22f9..24f68fd 100644
--- a/autoload/clap/floating_win.vim
+++ b/autoload/clap/floating_win.vim
@@ -339,7 +339,7 @@ function! clap#floating_win#open() abort

   silent doautocmd <nomodeline> User ClapOnEnter

-  startinsert
+  " startinsert

   call g:clap.provider.apply_query()
 endfunction
diff --git a/ftplugin/clap_input.vim b/ftplugin/clap_input.vim
index 27a3422..ff58598 100644
--- a/ftplugin/clap_input.vim
+++ b/ftplugin/clap_input.vim
@@ -47,13 +47,16 @@ inoremap <silent> <buffer> <expr> <C-E> col('.')>strlen(getline('.'))<bar><bar>p
 inoremap <silent> <buffer> <CR> <Esc>:call clap#handler#sink()<CR>

 nnoremap <silent> <buffer> <C-c> :call clap#handler#exit()<CR>
-nnoremap <silent> <buffer> <Esc> :call clap#handler#exit()<CR>
+" nnoremap <silent> <buffer> <Esc> :call clap#handler#exit()<CR>
 nnoremap <silent> <buffer> <C-g> :call clap#handler#exit()<CR>

 inoremap <silent> <buffer> <C-c> <Esc>:call clap#handler#exit()<CR>
-inoremap <silent> <buffer> <Esc> <Esc>:call clap#handler#exit()<CR>
+" inoremap <silent> <buffer> <Esc> <Esc>:call clap#handler#exit()<CR>
 inoremap <silent> <buffer> <C-g> <Esc>:call clap#handler#exit()<CR>

+nnoremap <silent> <buffer> j :<c-u>call clap#navigation#linewise('down')<CR>
+nnoremap <silent> <buffer> k :<c-u>call clap#navigation#linewise('up')<CR>
+
 inoremap <silent> <buffer> <C-j> <C-R>=clap#navigation#linewise('down')<CR>
 inoremap <silent> <buffer> <C-k> <C-R>=clap#navigation#linewise('up')<CR>

It's not easy to support the other actions like deleting as I can't imagine the workflow. For example, <Tab> is now used for (un)selecting the entry  and I won't change this default behaviour, then how to prompt the avaliable actions for current provider? We don't use input() and have no completion in the input window.

@liuchengxu awesome! I prefer having startinsert for now. Added following mappings to access and call sink in normal mode. Is there a better way to make <Esc> (and jj) trigger the preview window and exit insert mode at once?
inoremap <silent> <buffer> <Esc> <C-R>=clap#navigation#linewise('down')<CR><C-R>=clap#navigation#linewise('up')<CR><Esc>
inoremap <silent> <buffer> jj    <C-R>=clap#navigation#linewise('down')<CR><C-R>=clap#navigation#linewise('up')<CR><Esc>

nnoremap <silent> <buffer> <CR> :<c-u>call clap#handler#sink()<CR>
nnoremap <silent> <buffer> q    :<C-u>call clap#handler#exit()<CR>

@rafi  I found these normal mode mappings are convinent so I add them as the default mappings #322, feel free to leave any suggestions there. You don't have to trigger the preview window manually as it will show automatically on your move.  Just use <Esc> to enter normal mode and use j/k to scroll, you'll have the preview.

Maybe we can use a dialog provided by confirm(), then we only need one shortcut for invoking the action dialog.

I have introduced the provider actions in #396, feel free to try it and any feedback would be lovely. Currently it's implemented using confirm() for both vim and neovim.

Sorry - but I'm getting lost trying to config these. Can someone please share the vim snippet that allows the use of menu action items for buffers?
Thanks and sorry

@nirrub See <Shift-Tab> in https://github.com/liuchengxu/vim-clap#keybindings, you don't have to add extra config, it's native to the buffers provider.

@liuchengxu - Thanks a lot, works like a charm!

Is it possible to invoke the action dialog on all selected buffers? (for deletion is my case)


SEO rules - The article should have 2 or more H2 headings

We have the SEO rule H2 Heading number, however, here are two pages which have not followed the rule.

https://review.docs.microsoft.com/en-us/powershell/azure/manage-subscriptions-azureps?view=azurermps-6.7.0&branch=master
https://review.docs.microsoft.com/en-us/powershell/azure/other-install?view=azurermps-6.7.0&branch=master

See QA report here

This is now part of a couple different tasks to be tracked separately since this issue indicates needed rewrites. Will leave the ticket open for now.

Closing in favor of internal tracking since these are not user issues.


Update linux-alpine.md

Changed the version of the "libssl" library based on the Alpine version used.
Summary
Version "3.14.x" references the library "libssl1.1".
Version >= "3.15.x" and <= "3.18.x" references both libraries "libssl1.1" and "libssl3".
Version "3.19.x" references the library "libssl3".
I wanted to update the documentation because version "libssl1.1" is out of support and Linux Alpine has no longer used it since December 7, 2023.
#sign-off

Internal previews

📄 File
🔗 Preview link

docs/core/install/linux-alpine.md
Install the .NET SDK or the .NET Runtime on Alpine

@leecow FYI


possible inconsistent reasoning

In model http://noctua.berkeleybop.org/editor/graph/gomodel:57c82fad00000868 there is a reasoned annotation to negative regulation of bone remodeling resulting from the (negative regulation of ossification) negatively_regulates (ossification) part_of (bone remodeling). However, we don't get the corresponding reasoned annotation to positive regulation of bone remodeling from the positive regulation chain over bone resorption. Any idea why?
Note this is a good example of why the regulates_o_part_of chains are counter intuitive in GO-CAM models. Ideally we only want the asserted regulation of bone resorption.

@ukemi it is entailed but you don't see it because 'positive regulation of bone resorption' is a subclass of 'positive regulation of bone remodeling'.

We may want an option on the inference explanation workbench to show EVERYTHING.

Ah! Got it.

I just removed the asserted superclasses. The reasoner still infers the same hierarchy, but this also points to the flaw in the regulates-o-part_of chain. Intuitively positively/negatively regulating either resorption or ossification involved in remodeling should not positively/negatively regulate remodeling. I think it should just regulate it. This is related to the discussion we had last week on the GO-CAM call. I think there are cases where all we can say is regulates.