Fix comparisons for CDATA tags in config

Some length numbers here do not match the strings they are comparing with. That looks very odd.
Note that:
substr($ent, 0, 5) == "text"

will return true when $ent is "text". So actually this "works". But it returns false if $ent is "text1" "texta" etc.
So it depends what the intention was.
If it was intended to match just "text" then I could be just:
$ent == "text"

If it was intended to match "text" "text1" "texta" etc, then it needs to be fixed like I suggest here.

@jim-p stuff I noticed while looking at how the config save works out when to put CDATA.
Most of the substr() comparisons here seem odd/unneeded. e.g. ldap_authcn is only ever used as-is, there are no uses of ldap_authcn1 ldap_authcnzzz etc. So a simple test ($ent == "ldap_authcn") would suffice. So what is going on there?

That's a good question. Appears to just be a typo as far as I can tell in either case.

Note: making this change will mean that fields with names like "textbox" "textarea" "text1" etc will start to e CDATA escaped in config.xml.
I searched the code, and strings like "textarea" and "texbox" appear as "data/input types" - which is fine - but not as application field names. So that seems fine - there will be no real change to behaviour.
Similarly there are no "ldap_authcn*" field names - just "ldap_authcn" appears in the code.

That should be safe. The only danger would be if something used to be CDATA escaped and then wasn't. Fields will just have the CDATA protection added the next time the config is written out.


curl oneliner - should it default to sudo ?

Hi thanks for dotenvx. I'm a long-time user of dotenv and dotenvx is just what I've been craving. I often worry about leaking my .env file and the encryption feature of dotenvx will help me sleep at night.
When trying out dotenvx, I noticed one small issue with the curl oneliner. It attempts to install to /usr/local/bin which is not writable.
curl -sfS https://dotenvx.sh | sh
[INSTALLATION_FAILED] the installation directory [/usr/local/bin] is not writable by the current user
? run as root [curl -sfS https://dotenvx.sh | sudo sh] or choose a writable directory like your current directory [curl -sfS "https://dotenvx.sh?directory=." | sh]

$ lsb_release -a
LSB Version:	n/a
Distributor ID:	ManjaroLinux
Description:	Manjaro Linux
Release:	24.0.2
Codename:	Wynsdey

I think one fix is to pipe to sudo sh instead of just sh. Another possible solution (my preference) is to install only for the current user in a place on their PATH, like ~/.local/bin/, but I'm not sure if the install script is setup for that. Anyway, just my 2 sats. Thanks again.

Hi thanks for dotenvx. I'm a long-time user of dotenv and dotenvx is just what I've been craving. I often worry about leaking my .env file and the encryption feature of dotenvx will help me sleep at night.

Great! you're very welcome @insanity54.

I think one fix is to pipe to sudo sh instead of just sh

Indeed, but for now I think it's best the user choose to use sudo than we default to it. What do you think?
The help text outputted instructs almost exactly this:
? run as root [curl -sfS https://dotenvx.sh | sudo sh] or choose a writable directory like your current directory [curl -sfS "https://dotenvx.sh?directory=." | sh]

maybe we should make it clearer?

? run as root [curl -sfS https://dotenvx.sh | sudo sh] or choose a writable directory like your current directory [curl -sfS "https://dotenvx.sh?directory=." | sh]

I completely missed this help text when I first installed. I think it's good like this :smile:

maybe rather than using the question mark we should have [try this]: or something like that, that is more eye catching. the eye sort of sees the [INSTALLATION_FAILED] and because it is so dominant stops reading (i think)

going to stick with the ?. [HELP], [TO FIX], etc all look visually too heavy when trying them out locally on my machine.


Added patch to fix tabnabbing vulnerability.

Details can be found here<EMAIL_ADDRESS>

Thanks.

You're welcome mate.


[rstmgr] Update to improve DV coverage in reset consistency checks

The code below handles sw reset requests for rstmgr consistency checks.
See here
However, since many leaf resets do not have software controls, this logic is frequently hardwired off.
This leads to issues in coverage because certain things can just never toggle.
Instead, change this to a parameter so that when there are no software requests it uses different logic.
This will help improve DV coverage without adding more burden to DV tasks.

@matutem
@cindychip
@weicaiyang
@sriyerg
FYI

turns out DV folks found an even better way, this is not needed!


Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

This happens when either your model is on the GPU but your data are not, or the other way around.


connection error when Redis Cluster deployed in kubernetes fail over

Expected behavior
Redisson is not able to send request to redis cluster deployed in kubernetes when master/slave are down.
Actual behavior
Below are the exceptions caught when requests were sent to Redisson; the exceptions are alternating (i.e. I got exception #1 in one request - then got exception #2 in an other request for the same test)

exeception #1:

org.redisson.client.WriteRedisConnectionException: Unable to send command! Node source: NodeSource [slot=null, addr=null, redisClient=null, redirect=null, entry=MasterSlaveEntry [masterEntry=[freeSubscribeConnectionsAmount=0, freeSubscribeConnectionsCounter=value:50:queue:0, freeConnectionsAmount=32, freeConnectionsCounter=value:64:queue:0, freezed=false, freezeReason=null, client=[addr=redis://<IP_ADDRESS>:6379], nodeType=MASTER, firstFail=0]]], connection: RedisConnection@223124557 [redisClient=[addr=redis://<IP_ADDRESS>:6379], channel=[id: 0x43c6edb3, L:<IP_ADDRESS>/<IP_ADDRESS>:39840], command=null], command: (GET), params: [http:device:http-gw-lan-test-6666] after 3 retry attempts
at org.redisson.command.CommandAsyncService.checkWriteFuture(CommandAsyncService.java:873)
at org.redisson.command.CommandAsyncService.access$000(CommandAsyncService.java:97)
at org.redisson.command.CommandAsyncService$7.operationComplete(CommandAsyncService.java:792)
at org.redisson.command.CommandAsyncService$7.operationComplete(CommandAsyncService.java:789)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:485)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:121)
at io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetFailure(AbstractChannel.java:991)
at io.netty.channel.AbstractChannel$AbstractUnsafe.write(AbstractChannel.java:873)
at io.netty.channel.DefaultChannelPipeline$HeadContext.write(DefaultChannelPipeline.java:1365)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730)
at io.netty.channel.AbstractChannelHandlerContext.access$1700(AbstractChannelHandlerContext.java:38)
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1127)
at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1174)
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1098)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:495)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.nio.channels.ClosedChannelException
at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)

exception #2:
2019-04-09 23:48:59.141 ERROR 1 --- [tor-tcp-epoll-2] o.r.connection.pool.SlaveConnectionPool  : slave <IP_ADDRESS>/<IP_ADDRESS>:6379 has been disconnected after 60000 ms interval since moment of the first failed connection
23:48:59.141 [reactor-tcp-epoll-2] ERROR o.r.c.pool.SlaveConnectionPool - slave <IP_ADDRESS>/<IP_ADDRESS>:6379 has been disconnected after 60000 ms interval since moment of the first failed connection
org.redisson.client.RedisTimeoutException: Unable to get connection! Try to increase 'nettyThreads' and 'connection pool' settings or set decodeInExecutor = true and increase 'threads' settingNode source: NodeSource [slot=null, addr=null, redisClient=null, redirect=null, entry=MasterSlaveEntry [masterEntry=[freeSubscribeConnectionsAmount=0, freeSubscribeConnectionsCounter=value:50:queue:0, freeConnectionsAmount=32, freeConnectionsCounter=value:64:queue:0, freezed=false, freezeReason=null, client=[addr=redis://<IP_ADDRESS>:6379], nodeType=MASTER, firstFail=0]]], command: (GET), params: [http:device:http-gw-lan-test-8888] after 3 retry attempts
at org.redisson.command.CommandAsyncService$6.run(CommandAsyncService.java:703)
at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:682)
at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:757)
at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:485)
at java.lang.Thread.run(Thread.java:748)

Steps to reproduce or test case
Deploy redis cluster in kubernetes (3 masters: redis-cluster-0, redis-cluster-1, redis-cluster-2; 3 slaves: redis-cluster-3, redis-cluster-4, redis-cluster5)
Kill redis-cluster-0 and redis-cluster-3.
Wait for redis-cluster-0 and redis-cluster3 to have state RUNNING and READY
Kill redis-cluster-1, redis-cluster-2, redis-cluster-4, redis-cluster-5
Send requests to see exceptions
I am using redisson reactive clien
redisDownError-Report.txt
t.
Redis version
5.0.3
Redisson version
3.10.5
Redisson configuration
clusterServersConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
failedSlaveReconnectionInterval: 3000
failedSlaveCheckInterval: 60000
password: Redis123456
subscriptionsPerConnection: 5
clientName: null
loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
slaveConnectionMinimumIdleSize: 32
slaveConnectionPoolSize: 64
masterConnectionMinimumIdleSize: 32
masterConnectionPoolSize: 64
readMode: "SLAVE"
subscriptionMode: "SLAVE"
nodeAddresses:
- "redis://redis-cluster:6379"
scanInterval: 1000
pingConnectionInterval: 10000
keepAlive: false
tcpNoDelay: false
threads: 8
nettyThreads: 16
codec: !<org.redisson.codec.FstCodec> {}
transportMode: "NIO"

According to the follow text in stacktrace Caused by: java.nio.channels.ClosedChannelException first issue caused by closed channel.
slave <IP_ADDRESS>/<IP_ADDRESS>:6379 has been disconnected after 60000 ms interval since moment of the first failed connection - appears when Redisson detects broken connection to slave. If slave ndoe hasn't been recovered in failedSlaveCheckInterval time interval then Redisson disconnects this slave to avoid overall performance degradation.
Could you check your network for issues?

There is no network issue.  The redis cluster is deployed in kubernetes hence when the nodes die and brought back up by kubernetes, the nodes will have new ip addresses, and becasue of Redisson still looking at the old ip addresses we are getting this error. We need to know if there is a solution for this problem.
IP addresses in kubernetes before the test start:
lt65@CA-00000619:~$ kubectl -n lmc-dev get pods -o wide
NAME                                                              READY   STATUS    RESTARTS   AGE     IP             NODE                       NOMINATED NODE
redis-cluster-0                                                   0/1     Running   1          4m24s   <IP_ADDRESS>   aks-agentpool-22432579-4
redis-cluster-1                                                   1/1     Running   0          34m     <IP_ADDRESS>   aks-agentpool-22432579-6
redis-cluster-2                                                   1/1     Running   0          34m     <IP_ADDRESS>   aks-agentpool-22432579-1
redis-cluster-3                                                   1/1     Running   0          40m     <IP_ADDRESS>   aks-agentpool-22432579-3
redis-cluster-4                                                   1/1     Running   0          33m     <IP_ADDRESS>    aks-agentpool-22432579-0
redis-cluster-5                                                   1/1     Running   0          32m     <IP_ADDRESS>   aks-agentpool-22432579-7
IP addresses after redis-cluster-0 and redis-cluster-3 are killed and brought back by kubernetes:
lt65@CA-00000619:~$ kubectl -n lmc-dev get pods -o wide
NAME                                                              READY   STATUS    RESTARTS   AGE     IP             NODE                       NOMINATED NODE
redis-cluster-0                                                   1/1     Running   0          2m2s    <IP_ADDRESS>     aks-agentpool-22432579-3
redis-cluster-1                                                   1/1     Running   0          42m     <IP_ADDRESS>   aks-agentpool-22432579-6
redis-cluster-2                                                   1/1     Running   0          41m     <IP_ADDRESS>   aks-agentpool-22432579-1
redis-cluster-3                                                   0/1     Running   0          35s     <IP_ADDRESS>   aks-agentpool-22432579-4
redis-cluster-4                                                   1/1     Running   0          40m     <IP_ADDRESS>    aks-agentpool-22432579-0
redis-cluster-5                                                   1/1     Running   0          40m     <IP_ADDRESS>   aks-agentpool-22432579-7

In this case I would recommend to monitor cluster state log output. You can observe it if you set logging level DEBUG for org.redisson.cluster package

Our redis kubernetes setup consists of three masters and three slaves. The problem starts happening when at least two masters are killed.  However, it is fine when we kill two slaves. Please check the log attached for more details.
redisson-killed-two-masters.txt

Interesting <IP_ADDRESS> reports cluster state but not in cluster. Let me clarify, did you set single host name resolving single IP as nodeAddresses ?

Becasue the Pods (redis instances) in a kubernetes Deployment come and go, and their IP addresses change. We used kubernetes Service in front of them, which give us a stable IP address that lasts for the life of the Service, even as the IP addresses of the member Pods change.
This Service provides load balancing. Clients call the service, and their requests are balanced across the redis instances that are members of the Service.
in the redisson configuration we had the service host name as nodeAddresses.
nodeAddresses:
- "redis://redis-cluster:6379"
{"@timestamp":"2019-04-12T11:27:44.248+00:00","@version":"1","message":"Redis cluster nodes configuration got from redis-cluster/<IP_ADDRESS>:6379:\ncd5fee46618fcde3bfe83ec809e41fa082419933 <IP_ADDRESS>:6379@16379 slave 3e0b9c101fe9b4897d337b60b1f89da67cd97b5e 0<PHONE_NUMBER>000 47 connected\n61e5fafc621f4209041487471446fd87349c5424 <IP_ADDRESS>:6379@16379 slave cd231a96283a98d77e29e0f1ae15dfc756254937 0<PHONE_NUMBER>599 40 connected\n3e0b9c101fe9b4897d337b60b1f89da67cd97b5e <IP_ADDRESS>:6379@16379 master - 0<PHONE_NUMBER>700 47 connected 0-5460\n5744bd7d242e9def46c6a8008aa03a2466dee878 <IP_ADDRESS>:6379@16379 master - 0<PHONE_NUMBER>697 48 connected 10923-16383\n23035b9f350003e4ebe11d4b03bbaefddc4501ff <IP_ADDRESS>:6379@16379 myself,slave 5744bd7d242e9def46c6a8008aa03a2466dee878 0<PHONE_NUMBER>000 45 connected\ncd231a96283a98d77e29e0f1ae15dfc756254937 <IP_ADDRESS>:6379@16379 master - 0<PHONE_NUMBER>599 40 connected 5461-10922\n","logger_name":"org.redisson.cluster.ClusterConnectionManager","thread_name":"main","level":"INFO","level_value":20000,"caller_class_name":"org.redisson.cluster.ClusterConnectionManager","caller_method_name":"","caller_file_name":"ClusterConnectionManager.java","caller_line_number":125}

ClusterConnectionManager doesn't report anything since 14:54:05 though it should log an error:

https://github.com/redisson/redisson/blob/bbe40d02ef24ce75fb364e10eaa304a3a6a4c0b3/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java#L290

https://github.com/redisson/redisson/blob/bbe40d02ef24ce75fb364e10eaa304a3a6a4c0b3/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java#L337

https://github.com/redisson/redisson/blob/bbe40d02ef24ce75fb364e10eaa304a3a6a4c0b3/redisson/src/main/java/org/redisson/cluster/ClusterConnectionManager.java#L351

Seems to be related to: https://github.com/redisson/redisson/issues/2839
I also got this issue in Redisson version: 3.11.0.
Upgrading to 3.13.2 fixed it.


feat: Add esbuild plugin for auto instrumentation (https://github.com/open-telemetry/opentelemetry-js/issues/4174)

Which problem is this PR solving?
Providing an esbuild plugin for auto instrumentation https://github.com/open-telemetry/opentelemetry-js/issues/4174
Short description of the changes
This change adds a proof of concept for an esbuid plugin to auto instrument node JS apps. The approach at a high level is:

Configure the packages + versions we care about intercepting + adding the instrumentation to (metapackages/esbuild-plugin-node/src/config), this leverages the existing init() methods on instrumentation classes.
For matching packages, load the existing source, wrapping it in an IIFE and then getting the exported contents of that module
Instantiating the relevant plugin (ie FastifyInstrumentation) and passing the existing module exports to the relevant InstrumentationNodeModuleDefinition's patch function (this gets a little more tricky for things like the AWS SDK that has many packages going on, but largely follows the same flow as the existing auto instrumentation).

There are a number of things worth noting

I'm opening this as a draft with only 3 supported packages (aws sdk, fastify and pino) to kick off a discussion and (hopefully) align on an approach before taking on all supported packages
This approach ignores built in modules (ie instrumenting fs or fs/promises). The current assumption is that you will use existing auto-instrumentation from this repo for the built-in functions since they are not subject to the same issues with bundlers and the require()-intercepting based approach of patching third party modules (the problem is outlined in more detail in https://github.com/open-telemetry/opentelemetry-js/issues/4174).
Configuration for the plugins is limited, notably in that functions in the config (ie logHook when configuring pino) cannot depend on any scope/state that is declared outside of those functions functions will not be passed to the underlying plugins.

I'm hoping to discuss any concerns with the points noted above or anything else before expanding support to all modules in this repo. Let me know if I can provide any additional information!
The README and some descriptions are slightly misleading until these points are discussed.
Example
The plugin would be used as follows (assuming my app is in src/server.ts).
import { openTelemetryPlugin } from '@opentelemetry/esbuild-plugin-node';
import { build } from 'esbuild';

build({
  entryPoints: ['src/server.ts'],
  bundle: true,
  outfile: 'dist/server.js',
  target: 'node20',
  platform: 'node',
  sourcemap: true,
  plugins: [
    openTelemetryPlugin({
      externalModules: ['#node-web-compat'], // This package also causes jest issues
      pathPrefixesToIgnore: ['~/'], // We configure this to alias `src/` via `tsconfig#compilerOptions.paths`
      instrumentationConfig: {
        '@opentelemetry/instrumentation-aws-sdk': {
          suppressInternalInstrumentation: true
        },
      },
    }),
  ],
}).catch(err => {
  throw err;
});

Alternatively, maybe we could just not allow passing functions to the configs (like logHook) and only allow simple options (strings, booleans, numbers, etc) since this would likely just trip people up.

I removed config parameters that are functions

@blumamir @haddasbronfman could you take a look when you get a chance/let me know if I should be tagging someone else? Thanks!

@pichlermarc apologies for the random tag, but I'm not sure who else to tag to get a review/discussion started on this. Could you help me out with that?

@pichlermarc thank you! I'm happy to join the SIG meeting. Is it Jan 3 or Jan 4 though, that link says meetings are on Wednesdays and this link says the Javascript SIG is on the 3rd?

Is it Jan 3 or Jan 4 though

Jan 3rd is Wednesday, no?

Is it Jan 3 or Jan 4 though

Jan 3rd is Wednesday, no?

Yep, just that his message said the 4th.

Yep, just that his message said the 4th

Ah, duh. I misread. Yah, it'll be the 3rd. Or if not, you and I can hang out for a few minutes then come back the next day. :)

In my attempt to auto generate the configs for each library I'll need to make the init() method public. MR for that here

I've updated this to generate the configs required for the plugin. Worth noting: the gRPC plugin is a strange one. It's init() function returns nothing which breaks my assumption that I can rely on the return of that method to help me instrument things. I could add a special case to use the GrpcJsInstrumentation instead in that case, but

I don't love having a special case for just that 1 plugin
I feel like I'm missing something on why that instrumentation is setup the way it is.

Locally I added a test for the AWS SDK with localstack quite easily, but I'm not sure what the policy/convention is for CI jobs/tests that depend on a running docker container. I could work something up with that in a docker image and testcontainers if people think it's a bad idea to force people to start an external dependency before running tests (which judging by the fact that there is none of so far, I imagine is the case). Happy to spend time on that, just let me know.

Worth noting: the gRPC plugin is a strange one.

Maybe related: https://github.com/open-telemetry/opentelemetry-js/issues/4201

Worth noting: the gRPC plugin is a strange one.

Maybe related: open-telemetry/opentelemetry-js#4201

Thanks! Is it an issue then that getAutoInstrumentations from @opentelemetry/auto-instrumentations-node returns GrpcInstrumentation and not GrpcJsInstrumentation?

Looks like tests may be failing because @opentelemetry/resource-detector-alibaba-cloud depends on a different version of @opentelemetry/resources than @opentelemetry/contrib-test-utils does. I can fix that in this MR but I imagine that is causing problems elsewhere too?

Is it an issue then that getAutoInstrumentations from @opentelemetry/auto-instrumentations-node returns GrpcInstrumentation and not GrpcJsInstrumentation?

Not from Auto-instrumentation point of view. GrpcInstrumentation contains GrpcJsInstrumentation so it does what a user expects. There is no spec or whatever that the name of the exported class has to match the name of the instrumented module.
Changing the name of the export is breaking which tends to make some people unhappy.
I think it's more caused by luck that most (all?) instrumentations use such a prefix. Technically it would also work if all of them export a class named Instrumentation - it would be just a bit cumbersome for the user.

Is it an issue then that getAutoInstrumentations from @opentelemetry/auto-instrumentations-node returns GrpcInstrumentation and not GrpcJsInstrumentation?

Not from Auto-instrumentation point of view. GrpcInstrumentation contains GrpcJsInstrumentation so it does what a user expects. There is no spec or whatever that the name of the exported class has to match the name of the instrumented module. Changing the name of the export is breaking which tends to make some people unhappy.
I think it's more caused by luck that most (all?) instrumentations use such a prefix. Technically it would also work if all of them export a class named Instrumentation - it would be just a bit cumbersome for the user.

Ah I was more questioning if GrpcInstrumentation should be removed since the underlying packages is deprecated and I assumed the instrumentation was too. This MR answers my questions though and once that's merged it should clarify a lot of my issues that I ran into here which is great!

I had to update the @opentelemetry/instrumentation versions to be able to consistently use instrumentation instanceof InstrumentationBase, but now I'm seeing type check errors from other things. Looks like https://github.com/open-telemetry/opentelemetry-js-contrib/pull/1978 will resolve many of these issues

I had to update the @opentelemetry/instrumentation versions to be able to consistently use instrumentation instanceof InstrumentationBase, but now I'm seeing type check errors from other things. Looks like #1978 will resolve many of these issues

Should be all updated now :slightly_smiling_face:

TAV tests are failing on some of the mongo steps, but based on this comment I think that may be unrelated to this MR.
Let me know if that's wrong, but otherwise I'd love review on this MR!

TAV tests are failing on some of the mongo steps, but based on this comment I think that may be unrelated to this MR.

If you merge the commit for #1984 (now on main) into your branch, that should fix it for you. Then there is a real fix for the mongodb failures in development.

That resolved most buy I'm still seeing an error on the AWS sdk v3 tests that I'm not seeing locally (tried node 14, 16, 18 and 20). I don't think this is related to my changes, any thoughts?
https://github.com/open-telemetry/opentelemetry-js-contrib/actions/runs/8197750252/job/22420194090?pr=1856#step:9:14567

That resolved most buy I'm still seeing an error on the AWS sdk v3 tests that I'm not seeing locally (tried node 14, 16, 18 and 20). I don't think this is related to my changes, any thoughts?
https://github.com/open-telemetry/opentelemetry-js-contrib/actions/runs/8197750252/job/22420194090?pr=1856#step:9:14567

It's not related - looks like the latest version had a missing xmlparser dependency, but there has been a new release to fix it (https://github.com/aws/aws-sdk-js-v3/releases/tag/v3.529.1). I'll manually re-run the workflow to see if that resolves it :slightly_smiling_face:

Alright workflows are finally passing 😄. Ready for review!

@pichlermarc @trentm (or others) will you have a chance to take a look anytime soon? thanks!

@pichlermarc @trentm (or others) will you have a chance to take a look anytime soon? thanks!

Is there anything that's stopping this from being reviewed? It's been open for quite some time and I feel this would be a valuable contribution to the ecosystem

I'm interested, just haven't had the time. Bandwidth is the only blocker from me.

Excited to see broader support for ESM instrumentation (which, in my experience, doesn't seem to be working well atm). Less excited about requiring a build step (and a vendor specific one at that). Wondering tough: if there will be a need for a build step, why leave further processing for runtime? Perhaps patching/rewriting the code at build time to be already instrumented could help with minimizing startup overhead of instrumented code, perhaps even down to zero overhead?

Excited to see broader support for ESM instrumentation (which, in my experience, doesn't seem to be working well atm). Less excited about requiring a build step (and a vendor specific one at that). Wondering tough: if there will be a need for a build step, why leave further processing for runtime? Perhaps patching/rewriting the code at build time to be already instrumented could help with minimizing startup overhead of instrumented code, perhaps even down to zero overhead?

The intent of this plugin is not to make this the only option. This is intended to be an alternative to the require()-patching based approach used by the packages as things stand today.
That said leveraging a build plugin to do more of the init work could be an interesting thing to look into. I imagine there will always be some overhead but I haven't really thought much about it. Regardless, it's outside the scope of this MR.

@pichlermarc will you have time to review this? Anything I could do to push this forward?

Hey there, this appears to not work too well with windows machines, mainly around hard coding of the path separator /, since windows uses \

Hey there, this appears to not work too well with windows machines, mainly around hard coding of the path separator /, since windows uses \

Thanks for pointing this out. I develop on mac + deploy on linux so I never ran into this 😅. Does the autoInstrumentation functionality aside from this plugin work on windows? I see that the existing AWS SDK instrumentation for example has paths like @aws-sdk/middleware-stack/dist/cjs/MiddlewareStack.js so I would think there's the same problem there.
Not against writing this in a more platform agnostic way but just want to make sure I understand the scope + see if automated tests on windows should be added to this repo + opentelemetry-js core

Hey there, this appears to not work too well with windows machines, mainly around hard coding of the path separator /, since windows uses \

Thanks for pointing this out. I develop on mac + deploy on linux so I never ran into this 😅. Does the autoInstrumentation functionality aside from this plugin work on windows? I see that the existing AWS SDK instrumentation for example has paths like @aws-sdk/middleware-stack/dist/cjs/MiddlewareStack.js so I would think there's the same problem there.
Not against writing this in a more platform agnostic way but just want to make sure I understand the scope + see if automated tests on windows should be added to this repo + opentelemetry-js core

Yeah I normally develop on a mac, but I was doing a PoC to use this in order to get tracing since we bundle our app. It worked well, once I made the change locally to use path.sep instead of having / hard coded, it built like a charm.
A couple suggestions/questions:

I might recommend not throwing an Error when things don't work out in the wrapModule function. I think I would expect to allow the app to continue running. Since it's injected you also can't wrap it and do custom logging so I'm not sure what you'll do there. I edited it for my purpose to use console.error, but idk maybe you can provide a configuration in the plugin options.
For the error Not sure how to handle multiple files for instrumentations for, is there a recourse there? I attempted something and I called the patch method on the first file, but I'm sure that's not the correct way.

Great work on this! This package has been super helpful.

@Beachman4 I pushed up a couple commits to log errors via diag instead of throwing errors and to (hopefully) handle the packages like graphql that involve patching mutliple files. I've still gotta come back for the windows directory separators but would love any feedback on if this is working better for your case. I hope to come back for the separators in another day or two but also feel free to push to this branch if you've got it working

@Flarna could I bother you for another review on this? I'm trying to keep this up to date with main but am struggling to get reviews on it

@pichlermarc @trentm bump on this please. I really want to push this along. If there's anything I can do (like working on similar plugins for other bundlers) I'm happy to do it, I just need some feedback/help moving this along.

@drewcorlin1 I've set a time for this coming Monday to do a first review of this.

@drewcorlin1 I've set a time for this coming Monday to do a first review of this.

thank you so much!

@drewcorlin1  I have started reviewing this, but I sure didn't give myself enough time today. :) I'll keep working on it this week.

@drewcorlin1 I have started reviewing this, but I sure didn't give myself enough time today. :) I'll keep working on it this week.

All good. Happy to add context in whatever way would be helpful too, just lmk

Looking forward to this.

@drewcorlin1 Again sorry for the delay. We had a hackathon week at work last week and I spent most of the week on work related to this. ... but I haven't written it up yet. And now I'll be away for a couple of days, so it'll be another delay before I have feedback and something to show.

Hi, any progress on this?

I have two PRs up for an alternative implementation of this. However, they are draft because I haven't documented them, added tests, etc. I do plan to get back to them, but having trouble finding the time.
https://github.com/open-telemetry/opentelemetry-js/pull/4818
https://github.com/open-telemetry/opentelemetry-js-contrib/pull/2295

@trentm let me know if I can help out there at all

Thanks, Drew. I had really intended to have this documented by now so it could be discussed.

any update on this?

No, sorry. I haven't gotten back to my draft PRs, though I intend to do so.

👋 If you don't mind, I'm going to go ahead and try to get both these PRs working for a couple of Docker's apps, since we single-bundle our server-side code. I'll let you know how it goes!

https://github.com/open-telemetry/opentelemetry-js/pull/4818
https://github.com/open-telemetry/opentelemetry-js-contrib/pull/2295

@rossipedia very excited to hear it. let me know if there's anything I can help out with

Initial results are good! It does the job, although from what I understand you need to list the bundled instrumentations in both the plugin, and the runtime SDK config. But that's easy enough to pull out into a shared module.
Now I just gotta shuffle some things around to ensure that the sdk.start() happens before any imports of the instrumented modules (which is a bit tricky given how esbuild ends up ordering things). But so far so good :+1:

for me i am using esbuild for aws lambda because if I do not use esbuild I get this error
An error occurred (InvalidParameterValueException) when calling the UpdateFunctionCode operation: Function code combined with layers exceeds the maximum allowed size of 262144000 bytes. The actual size is 301168880 bytes.
AWS Lambda function code successfully updated.

so i am kind of blocked until esbuild works with open telemetry again.

I've been trying it out locally as well now, seems to work for reasonably well, but it seems to not like the winston instrumentation as I'm getting this log line. Not my area of expertise, so not sure I'll be able to fix it but the error I see is:
Not sure how to handle patch and files on instrumentation for WinstonInstrumentation winston

@codemedian I'll take a look at this this week

My 2 cents, if it is working for other libraries than Winston then this is still a win and for winston it could be solved in a different PR as well.

I forked your PR so that i can test but i am now running into these issues.
Couldn't resolve encoding. This may be an optional dependency.
Couldn't resolve elastic-apm-node. This may be an optional dependency.
Couldn't resolve @opentelemetry/winston-transport. This may be an optional dependency.
Couldn't resolve request. This may be an optional dependency.
Couldn't resolve kerberos. This may be an optional dependency.
Couldn't resolve @mongodb-js/zstd. This may be an optional dependency.
Couldn't resolve snappy. This may be an optional dependency.
Couldn't resolve mongodb-client-encryption. This may be an optional dependency.
Couldn't resolve bson-ext. This may be an optional dependency.
Couldn't resolve kerberos. This may be an optional dependency.
Couldn't resolve @mongodb-js/zstd. This may be an optional dependency.
Couldn't resolve snappy. This may be an optional dependency.
Couldn't resolve snappy/package.json. This may be an optional dependency.
Couldn't resolve mongodb-client-encryption. This may be an optional dependency.

If anyone else is trying to instrument redis v2 and sees spans only show up for connect calls, enable keepNames in esbuild. In my scenario the RedisClient class name is changed to RedisClient6 causing this check to break. Relying on function names is bad practice for the exact reason, which I'll open an issue for

@codemedian Just pushed updates to handle modules that have a top level patch as well as children files with patches. I tested on redis, since I had that setup handy. Would you mind pulling the latest and letting me know how that works?

@krishna-koushik I haven't run into that. Could you provide a reproducible setup?
As a random thought, if they aren't modules you care about patching you could put them in the externalModules setting of this plugin to have it ignore them entirely. Not sure if that'll fix it but worth a shot

@codemedian Just pushed updates to handle modules that have a top level patch as well as children files with patches. I tested on redis, since I had that setup handy. Would you mind pulling the latest and letting me know how that works?

Amazing, will give it a go in a couple hours

Had a little play with it and from a quick test everything seems to be working as expected, thanks for that 👍

@drewcorlin1  here is the example of my build.js file.
const { build } = require("esbuild");
const { openTelemetryPlugin } = require("NPM module to esbuild-plugin-node");

build({
  entryPoints: ["src/index.ts"], // Replace with your actual entry point
  bundle: true,
  platform: "node",
  target: "node18",
  outfile: "./build/index.js",
  minify: true,
  sourcemap: true,
  plugins: [
    openTelemetryPlugin({
      instrumentationConfig: {
        "@opentelemetry/instrumentation-aws-sdk": {
          suppressInternalInstrumentation: true,
        },
      },
    }),
  ],
})
  .then(() => {
    console.log("Build successful");
  })
  .catch((error) => {
    console.error("Build failed:", error);
    process.exit(1);
  });

I am not really sure that i need those libraries as i do not use them directly.
NOTE: i do not have the latest update of your changes.

@krishna-koushik I think the more relevant info for this is the other packages you're using + the code that you're bundling. The logs you're showing don't come directly from this plugin, so it'd be useful to have a reproducible example to tinker with

@krishna-koushik I think the more relevant info for this is the other packages you're using + the code that you're bundling. The logs you're showing don't come directly from this plugin, so it'd be useful to have a reproducible example to tinker with

Yup working on it

@krishna-koushik I think the more relevant info for this is the other packages you're using + the code that you're bundling. The logs you're showing don't come directly from this plugin, so it'd be useful to have a reproducible example to tinker with

Actually I think i am good. even with those optional dependency warning, i still see open telemetry traces.

Hi @drewcorlin1
Thanks for this awesome plugin <3.
I needed to make a couple of changes to get it to work in my case. I'll isolate the changes and open PRs (to https://github.com/drewcorlin1/opentelemetry-js-contrib/tree/esbuild-plugin) with each of the changes.

@trentm @pichlermarc it seems like there is clear demand from others for this feature. I know there are these open PRs, but since they were opened a few months ago there's been more movement. Can we get some support in trying to get this feature merged?

https://github.com/open-telemetry/opentelemetry-js/pull/4818
https://github.com/open-telemetry/opentelemetry-js-contrib/pull/2295


Uncaught Type Error

Hello,
I'm using popcorn time which uses your module to cast to chromecast.
I opened the dev tools during casting since the application was stuck.
It seems like the ps member is null.
I attached a screenshot.

Sure. The code in popcorntime using castv2-client should handle error events properly and reconnect as needed.
This error surfaces only if you don't handle client's lifetime events. Thus I won't silence it or "resolve" it in any way here.


[$500] Expense - No error when saving an empty merchant in created workspace request

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: v1.4.42-0
Reproducible in staging?: Y
Reproducible in production?: N
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause-Internal Team
Slack conversation:
Action Performed:

Navigate to staging.new.expensify.com
Go to workspace chat.
Go to + > Request money > Manual.
Create a manual request with a merchant name
Save
Navigate to the request details
Click Merchant.
Empty the merchant field and save it.

Expected Result:
A merchant name is required on a money request > there should be an error "Enter a Merchant Name" if the merchant is blank. The user should not be able to save the IOU without adding a merchant
Actual Result:
User can save empty merchant when editing created request and no error shows up.
The same issue also occurs when the scan request fails. There is no error on Merchant row.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
https://github.com/Expensify/App/assets/115492554/eb41e430-ea46-4362-8936-785749ef49c1

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01b1421b286665858e
Upwork Job ID:<PHONE_NUMBER>563407360
Last Price Increase: 2024-02-15
Automatic offers:

Ollyws | Reviewer | 0
DylanDylann | Contributor | 0

We think that this bug might be related to #wave5-free-submitters
CC @dylanexpensify

@jayeshmangwani

note - before we were using the EditRequestMerchantPage page to display the edit merchant, thats why this issue happening after we are using the common MONEY_REQUEST_STEP_MERCHANT pages for the edit merchant

The logic is migrated totally from EditRequestMerchantPage to IOURequestStepMerchant. Thus, the logic should be the same in the EditRequestMerchantPage and IOURequestStepMerchant. Is there any difference here?

@DylanDylann yes there is a difference,
in this PR, you have removed below code from src/pages/EditRequestPage.js page
    if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.MERCHANT) {
        return (
            <EditRequestMerchantPage
                defaultMerchant={transactionMerchant}
                isPolicyExpenseChat={isPolicyExpenseChat}
                onSubmit={saveMerchant}
            />
        );
    }

and isPolicyExpenseChat defined like this, on the EditRequestPage page, and that was being passed to EditRequestMerchantPage, and on the EditRequestMerchantPage we were checking if isPolicyExpenseChat is true then show the error for empty merchant value
https://github.com/Expensify/App/blob/50e07e8604d40b278c1ede2fc5c6fb78c97f1c1f/src/pages/EditRequestPage.js#L86-L87
and on IOURequestStepMerchant page we are using below code to determine if we have to show the error for empty merchant
https://github.com/Expensify/App/blob/d55757ffe7dc7c8eb801fcc359d7ebb7e5cd338b/src/pages/iou/request/step/IOURequestStepMerchant.js#L78
https://github.com/DylanDylann/App/blob/d55757ffe7dc7c8eb801fcc359d7ebb7e5cd338b/src/pages/iou/request/step/IOURequestStepMerchant.js#L91-L93
now did you get why it was working for EditRequestMerchantPage and not for the IOURequestStepMerchant ?

I just tested this again and I don't think it's happening anymore. I'll ask QA to test again.

Okay sorry, it sounds like this might be a regression from https://github.com/Expensify/App/issues/36574#issuecomment-1946486859 as @jayeshmangwani already noted here https://github.com/Expensify/App/issues/36574#issuecomment-1946486859 (sorry for mixing up everything)

As @dukenv0307's proposal mentioned

Thus, I don't think this issue is a regression from https://github.com/Expensify/App/pull/35641 because this logic was created before that

I agree with him at this point. But this issue happened after that PR was merged and this issue also be resolved If we revert that PR
@hoangzinh Should we handle this issue as a regression of https://github.com/Expensify/App/pull/35641? Ping you here because you are the reviewer of https://github.com/Expensify/App/pull/35641
cc @Ollyws

As @dukenv0307's proposal mentioned

Thus, I don't think this issue is a regression from #35641 because this logic was created before that

I agree with him at this point. But this issue happened after that PR was merged and this issue also be resolved If we revert that PR
@hoangzinh Should we handle this issue as a regression of #35641? Ping you here because you are the reviewer of #35641
cc @Ollyws

Since the issue would be gone if your PR was reverted:
Yes, you should handle this issue as regression of https://github.com/Expensify/App/pull/35641.
cc @hoangzinh

What exactly is the plan here? It looks like we didn't assign a contributor, right @lakchote ? Or is @DylanDylann planning to handle it as it's a regression from their PR?

I will raise a PR to fix soon

I have the same idea as @dukenv0307's proposal and I am creating a PR. @hoangzinh What do you think about it?

What exactly is the plan here? It looks like we didn't assign a contributor, right @lakchote ? Or is @DylanDylann planning to handle it as it's a regression from their PR?

As said previously in my message, the plan since it's a regression, is for @DylanDylann to handle it.

Hi! For payment, can someone help me understand who helped with creating the solution and PR?
Was it both @lakchote and @dukenv0307? If yes, what amount of compensation seems fair for the work you did? Let me know and I can discuss with @Ollyws
Also, can we move this to Daily?

Thanks @hoangzinh - okay if I have this right, then we pay C+ and the contributor with our 50% regression penalty.
@dukenv0307 & @DylanDylann what amount do you think is fair for the work you did?

@Christinadobrzyn My PR causes this regression, I am not eligible for payment here. Let's pay for @dukenv0307 only

@Christinadobrzyn as noted above, it should be @dukenv0307 that should be paid.
As @DylanDylann produced the regression with his PR, he's not eligible for payment.

Thanks @lakchote and @DylanDylann!
@dukenv0307 what payment do you think is okay for the work you did? $250?
Can you accept this upwork job here so I can pay you?

Awesome! thanks @dukenv0307! I paid you $250 in Upwork. I also ended the other contracts with @Ollyws and @DylanDylann - let me know if we need a new contract for any reason.
Otherwise, I think this can be closed!


An unidentifiable error with code 258 has occurred on an ECS Linux container

Describe the bug
I had an application that was functioning properly on an IIS server. However, after hosting it on an ECS fargate Linux container and conducting a load test, the ECS task crashes due to the following error:
Microsoft.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired. The timeout period elapsed before the operation could be completed, or the server is not responding.
Also, I occasionally encounter the following error message:
System.InvalidOperationException: Timeout expired. The timeout period elapsed before obtaining a connection from the pool. This could be due to all pooled connections being in use and the maximum pool size being reached.
Even though my query has a proper index and a timeout of 5 seconds, it executes within only 20ms. Therefore, the query itself is not the cause of the issue.
Here is my connection string:
Data Source=x.x.x.x;Initial Catalog=DbName;User ID=Username;Password=mypassword;TrustServerCertificate=True

Previously, I had "MultipleActiveResultSets=True" in my connection string, but even after removing it, I still encounter the same error.
Here is my dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
# copy csproj and restore as distinct layers
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY *.sln .
COPY ["PdfApp/PdfApp.csproj", "PdfApp/"]
RUN dotnet restore "PdfApp/PdfApp.csproj"
# copy and publish app and libraries
COPY . .
WORKDIR "/src/PdfApp"
RUN dotnet build "PdfApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "PdfApp.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "PdfApp.dll"]

Further technical details
I am utilizing .NET Core 7.0, with the package version of Microsoft.Data.SqlClient is set to 5.1.1, while the SQL server is running on Microsoft SQL Server 2019.
Microsoft.Data.SqlClient version: 5.1.1
.NET target: Core 7.0
SQL Server version: SQL Server 2019)
Operating system: Linux Docker container

This looks like a duplicate of #647. The underlying issue is a couple of the async code paths in MDS can block threads during high load and the system thread pool runs out of threads to serve other async commands in a timely manner. This results in those timeouts. Some of the workarounds have been mentioned in #647 and include increasing the minimum thread count in the system thread pool.
The reason this doesn't happen on Windows (or is much more rare, at least) is because Windows utilizes a native SNI implementation where the socket reads/writes happen. The native library uses IOCP for IO completions, which doesn't use the .NET system thread pool. Linux/macOS use a pure managed SNI implementation that does use the .NET system thread pool for completion requests.

@David-Engel I apologize for not understanding clearly. Could you please provide more specific details on how to increase the minimum thread count? Are you referring to making changes in the application code? Also, could you guide me on how to check the default value for the minimum thread count? Alternatively, would it be possible to solve this issue by increasing the CPU core allocation for the task?

Use the .NET ThreadPool APIs: https://learn.microsoft.com/en-us/dotnet/api/system.threading.threadpool.setminthreads?view=net-7.0
Yes, this would need to be done in application code. The default values are described in the above article. No, changing the CPU core allocation wouldn't make a significant difference in this scenario. By "high-load", I'm specifically referring to a high rate of parallel calls into MDS, like connection open. It's not necessarily CPU bound. The system thread pool can be slow to add new threads (seconds for each new thread) while connection open requests are blocking each other and approach their timeout waiting on the connection pool to hand them a connection.

Closing as a duplicate for #647


🚀 Feature: Moving away from spotify/web-scripts

🔖 Feature description
Move away from the dependecy on spotify/web-scripts in the CLI & Microsite for Prettier & ESLint config.
🎤 Context
spotify/web-scripts is deprecated since December 2023. We depend on it for our Prettier config with "@spotify/prettier-config" in the Microsite. In the main workspace we depend on it for the Prettier config as well as using the ESLint Plugin with "@spotify/eslint-plugin".
Reminded about this by dependabot: https://github.com/backstage/backstage/pull/23259
✌ Possible Implementation
Prettier: This should be straigthforward. The current dependency only exports the following config values (source):
module.exports = {
  singleQuote: true,
  trailingComma: 'all',
  arrowParens: 'avoid',
};

Let's check if this isn't enforced already & adjust the current configs if needed.
ESLint Plugin: I'm actually not sure if we need this at all. The plugins allows to discourage the use of certain words. Haven't looked into our configs, but if we haven't configured it with custom words it probably does not bring a benefit at the moment. For more context checkout the code here.
👀 Have you spent some time to check if this feature request has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
No, but I'm happy to collaborate on a PR with someone else

Hey team,
Let me know if I can work on this.

Awesome - feel free to raise a PR!:)

@tudi2d just opened my first PR, sorry if I missed following some steps.


添加一个卸载

Description of the new feature / enhancement
卸载此软件
Scenario when this would be used?
部分游戏受到影响
Supporting information
No response

Are you asking for a new utility for uninstall programs?
/needinfo


compile error

When i import the code into eclipse,there are some compile error like 'cannot refer to the non-final local variable defined in an enclosing scope' in class 'org.jkiss.dbeaver.ext.exasol.manager.ExasolPrimaryKeyManager'(68 line and so on).This is because the variable called in anonymous inner class should be final,so i want ask why the developer lost the 'final'?Is there some other reason?

You need to compile with Java 8.
In Java 8 you don't have to make all variables finel to use them in inner classes.
https://stackoverflow.com/questions/28408109/java-stopped-erroring-on-non-final-variables-in-inner-classes-java-8


use go's built-in runtime arch

If the user hasn't explictyly set GOARCH, don't default to amd64. This
way, a user has to expliciltly cross-compile, instead of needing to know
to set GOARCH on build for a native arch that isn't amd64.
Signed-off-by: Christy Norman<EMAIL_ADDRESS>
Description of the change:
See https://github.com/operator-framework/operator-sdk/pull/2256
Motivation for the change:
See https://github.com/operator-framework/operator-sdk/pull/2256

Merging this one 👍

Sorry - was out on vacation. Thanks all!


Website sidebar not displayed when JavaScript is disabled

This is a Bug Report

Problem:
When JavaScript is disabled, the site sidebar does not appear, which can affect the user experience and accessibility of the website. Users who rely on JavaScript being disabled for security or other reasons may find it challenging to navigate the site without access to the sidebar. This issue needs to be addressed to ensure the site is usable for all users.
Expected Behaviour:
Either the  sidebar should be visible and functional or alternate navigation option should be made available when JavaScript is disabled, ensuring accessibility and usability for all users.
Raised this issue as request in https://github.com/kubernetes/website/pull/41687#discussion_r1335470711
Sidebar not visible under https://kubernetes.io/docs
/sig docs
/area web-development
/priority important-longterm

/remove-priority important-longterm
Removing the priority for now, till we decide that as a SIG.

Have this as a labeled bug for now because the sidebar functions correctly in certain areas of the site without Javascript, particularly in the blog section. However, it could also be seen as a potential feature request to extend its functionality to the rest of the site.

Have labeled this as a bug for now because the sidebar functions correctly in certain areas of the site without Javascript, particularly in the blog section. However, it could also be seen as a potential feature request to extend its functionality to the rest of the site.


Any possibility to bind event on marker hover?

For example to show a infoWindow on hover..
thanks

I do not think Google maps API has that event.

Ye, probably..

@zsitro How about this?:
http://plnkr.co/edit/DoD28n45mwYiNSTINGcC?p=preview

https://developers.google.com/maps/documentation/javascript/events. Never tried on infoWindow

looks good, thanks!


Performance Enhancement: Replace Individual Image Deletion with Docker Prune Method

Issue Context:
Currently, our image cleanup process involves retrieving a list of all images and then deleting them one by one. This approach can be resource-intensive and time-consuming, especially when there are a significant number of images to manage. To improve our system's performance and efficiency, we propose switching to the docker.prune method.
here the docs link for docker.prune method: https://dockerpy.readthedocs.io/en/stable/images.html#docker.models.images.ImageCollection.prune
Rationale for Using docker.prune:

Performance: The docker.prune method is optimized for bulk cleanup, making it significantly faster and less resource-intensive compared to deleting images one by one. This change can lead to substantial performance improvements.

Resource Management: Efficiently managing Docker resources is crucial for system stability. docker.prune automates the removal of not just images but also other unused resources like containers, volumes, and networks, ensuring that our system stays clean and optimized.

Reduced Complexity: Our current approach involves multiple API calls and error handling for each image deletion. By adopting docker.prune, we can simplify our codebase, reduce the likelihood of errors, and improve code maintainability.

Proposed Action:
We propose implementing the use of the docker.prune method for image cleanup in our system. This change will lead to noticeable performance improvements and more efficient resource management.
Cautionary Note:
Before implementing this change, we should carefully review and document any potential impact on our system. Additionally, we should communicate this change to the team to ensure everyone is aware of the updated image cleanup process.
Let's work together to enhance our system's performance and resource management by adopting the docker.prune method for image cleanup.

Looks like a good idea. Can we also do the same for containers? @UsmanMaan324

You're welcome to submit a PR with the proposed changes for images and containers. @UsmanMaan324

@SyedMHashim PR for this is merged. going to close this issue


[Changes]: Meta fix

License changed
Add more escape characters
Edit setup tool (premake5.lua)
Better test file

Will lauch a 1.2.1 version :D


removed "postinstall" script which cause npm install to fail for windows

thank you!!!

bah, semantic dropped support for node 12. I really need to add them to Ci. or something pre-release to check this. hold on. I need to roll that back


Fix positive test percentage

Previously the percentage was calculated between the number of new
positive cases and the total number of tests executed on a specific
date. But tests on a specific date could also include people who have
already tested positive, and therefore do not count in the new
positive cases. So adjusted to use the total number of people tested,
where second tests for the same person do not count.


[feature] Does tfJob support setting different label/envVar for each worker(replicas >1)?

In my case, I have some tools which are designed by pod label.  How can I set different label for each pod which is created by tfJob? (N workers with different custom labels)
    - replicas: 2
      tfReplicaType: WORKER
      template:
        spec:
          containers:
            - image: gcr.io/tf-on-k8s-dogfood/tf_sample:dc944ff
              name: tensorflow
          restartPolicy: OnFailure
          #replicaLabels:
          #- labelA: valueA-0
          #  labelB: valueB-0
          #- labelA: valueA-1
          #  labelB: valueB-1

If not, are there any hints or suggestions to do this(Maybe I can make a PR). Such as naming, how to validating(spec.replicaSpecs.replicas equal to replicaLabels size) and so on.

@sdf611097 Does this address your needs?

Yes. If I still need to set different label or env var for each job, I will send a PR.

@sdf611097 Thanks.


Markdown code blocks have two background colors

Looks kinda strange:

Seems to be a regression. Will fix for June.
Repo:

Open markdown file:

```js
const a = 1;
```

Open md preview


Question

Hello, I read your paper. That is excellent. But I have a question, how can we get the feature_map.mha and the mask.mha.
I would be very grateful if you reply.

Feature_map would be the output of computing a pixel-wise texture map from an input image.
Mask would be the annotation of the region of interest that you are analyzing (so RADISTAT is limited to within that region)

I appreciate your reply very much. I am a CS student, a beginner in RADIOMIC. I have the .dcm and nii.gz, should I transform them to .mha？ And the feature_map and mask need my own calculations or they are generated with software.

You can try to extract feature_map using from the DCM/NII.GZ file using tools such as pyradiomics - the result of which should be a pixel-wise map that you can save as an MHA file. Mask is a file that specifies the ROI - usually defined by the user in some fashion (bounding box/lesion area etc.)

Hello, after studying I have some questions again. Now I can transform mask.mha and feature_map.mha, and use them to generate the label_mask. As @jta35 said that there are incorrect arguments passed to slic() in radistat.py, and more issues will happen when I try to fix them. Such as generating the bar charts and computing the texture_vec, spatial_vec.
I don't know how to use the mask to filter out the feature_map, and the generation of bar charts has errors. Here is the error information.
ValueError: shape mismatch: objects cannot be broadcast to a single shape.  Mismatch is between arg 0 with shape (3,) and arg 1 with shape (0,).
And I noticed that the shape of your data is (222,222),  but my data's is (512,512), I don't know if this has any effect.


Check contiguousness of outgoing arrays

If an input array is not C-contiguous nor Fortran-contiguous, MPI_Ssend will fail.

The following tests failed.
chainermn_tests/links_tests/test_n_step_rnn.py::TestNStepRNN::test_heterogeneous_rnn_gpu
chainermn_tests/links_tests/test_n_step_rnn.py::TestNStepRNN::test_heterogeneous_rnn_cpu
chainermn_tests/links_tests/test_n_step_rnn.py::TestNStepRNN::test_homogeneous_rnn_gpu
chainermn_tests/links_tests/test_n_step_rnn.py::TestNStepRNN::test_homogeneous_rnn_cpu

The test conditions is following.
         MPI                    CUDA     Chainer        CuPy      NP  Job id
     openmpi       2.1.0         8.0     4.0.0b4     4.0.0b4     2x1   84103

Could you check it?


Updated project json file to new project structure

For some reason I couldn't use the NuGet package in a .Net Core 2.0 application (file missing).
I updated the project json to the new VS17 project structure, compiled and generated a new NuGet package. I tested this package and this one can be used.

This should be fixed in v1.0.3


V7 Items

Breaking Changes Requiring a Major Version Bump

Change references from webpacker to shakapacker
Change the configuration so that the configuration runs with a function invocation of a passed configuration object rather than using globals.

Other Suggestions

Change to use rspec for new tests rather than minitest
Support a dummy test app for better tests

Hey @jherdman Glad you are interested in helping out! Please have a look at issues with help wanted tag - latest 3 there should be fairly small-ish to tackle!

Change references from webpacker to shakapacker

I'm tackling this today.

OK, so webpacker ➡ shakapacker is pretty impactful. Are there PRs in flight that ought to land first?

OK, so webpacker ➡ shakapacker is pretty impactful. Are there PRs in flight that ought to land first?

Nothing in flight so far, although I think we will need to cut 6-x branch some point soon and just work on back porting any fixes to that where relevant while we keep v7 dev to the master branch.
@justin808 How do you want to play this?

We can make master v7 once we have the first PR that's definitely v7 only.
@jherdman Thanks for the help!!!

@tomdracz I added back PR #131 to the list in the issue description.

I'm very interested in getting a v7 with the global renaming of webpacker to shakapacker one.
Too many docs are too confusing with the dual names.

Justin: if you're interested you can take this off of my plate, I've been a derailed at work.

I agree to all of the above, and this should be a simple change.
We do need a dummy test app.

Then I created two separate issues for these two tasks and close this one:

Pass configuration as a Hash, not a path
Create a comprehensive dummy app for tests

I add both of them to the v7 Milestone.
This issue can get closed and any required discussions can be continue in its dedicated issue.


Issue #SH-900 fix: Locations(district, block, state, school) are not shown in the teacher's profile belongs to the school

Created New PR


disabling rule 'no-empty-first-line-in-method-block' does not work

Expected Behavior
if the rule no-empty-first-line-in-method-block is disabled in .editorconfig  under kotlin e.g. [{*.kt,*.kts,*.java}]
then it should not give error for a blank line at start of a method
rule:
no-empty-first-line-in-method-block = disabled
documentation link:
https://pinterest.github.io/ktlint/latest/rules/standard/#no-leading-empty-lines-in-method-blocks
Observed Behavior
in intellij (v2024.1.1 ) with ktlint plugin v0.22.0
and also tried on terminal with ktlint version 1.2.1
even though the rule is set to disabled in .editorconfig file at the root of the project with root=true in file
it show the empty line at start of a method as a problem in intellij
and on ktlint format command it removes the empty line
similary behavior on terminal too . if run ktlint it gives error for same line:
 First line in a method block should not be empty (standard:no-empty-first-line-in-method-block)
Steps to Reproduce
any .kt kotlin file with a method with which has a empty line as first line in method body
Your Environment

Version of ktlint used: 1.2.1 , and ktlint intellij plugin version : v0.22.0
intellij version 2024.1.1  (ultimate edition)
Relevant parts of the .editorconfig settings
Name and version (or code for custom task) of integration used (Gradle plugin, Maven plugin, command line, custom Gradle task):
Version of Gradle used (if applicable): N/A
Operating System and version: MacOS Sonomoa 14.4.1
editor config file:

root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
tab_width = 4
indent_style = tab
trim_trailing_whitespace = true
insert_final_newline = true
# max_line_length = 120

[{*.kt,*.kts,*.java}]
ktlint_code_style = intellij_idea
ktlint_experimental=disabled
indent_size = 2
tab_width = 2
indent_style = space
max_line_length = 140
#ktlint ruleset https://pinterest.github.io/ktlint/latest/rules/standard/
blank-line-before-declaration = enabled
if-else-bracing = enabled
no-blank-line-in-list = enabled
no-empty-first-line-in-method-block = disabled
no-blank-line-before-rbrace = disabled
no-consecutive-blank-lines = enabled
function-signature = default
ktlint_function_signature_body_expression_wrapping = default
ktlint_argument_list_wrapping_ignore_when_parameter_count_greater_or_equal_than = 8
ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = unset
ktlint_chain_method_rule_force_multiline_when_chain_operator_count_greater_or_equal_than = unset

multiline-expression-wrapping = disabled
# force add trailing comma at declaration site (class,functions)
trailing-comma-on-declaration-site = enabled
ij_kotlin_allow_trailing_comma = true
# no trailing comma at calling (function parameters)
trailing-comma-on-call-site = disabled
ij_kotlin_allow_trailing_comma_on_call_site = false
#  Disable wildcard imports entirely
ij_kotlin_name_count_to_use_star_import = 999
ij_kotlin_name_count_to_use_star_import_for_members = 999
ij_kotlin_line_break_after_multiline_when_entry = true
ktlint_ignore_back_ticked_identifier = false

The way you disable rules in the .editorconfig is wrong. See docs https://pinterest.github.io/ktlint/latest/faq/#how-do-i-enable-or-disable-a-rule


Enable to skip update checks from pom properties

Follow up of https://github.com/GoogleContainerTools/jib/issues/3350#issuecomment-885058082 since it is really bothering to not be able to disable update check for project in time - when you don't work on a single "everyday" project and disabling it globally is rarely the desired behavior (it is really a per project thing) but the properties were not read as expected so this PR ensures it is the case.
Thank you for your interest in contributing! For general guidelines, please refer to
the contributing guide.
Please follow the guidelines below before opening an issue or a PR:

[ ] Ensure the issue was not already reported.
[ ] Create a new issue at https://github.com/GoogleContainerTools/jib/issues/new/choose if you are unable to find an existing issue addressing your problem. Make sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
[ ] Discuss the priority and potential solutions with the maintainers in the issue. The maintainers would review the issue and add a label "Accepting Contributions" once the issue is ready for accepting contributions.
[ ] Open a PR only if the issue is labeled with "Accepting Contributions", ensure the PR description clearly describes the problem and solution. Note that an open PR without an issues labeled with "Accepting Contributions" will not be accepted.
[ ] Verify that integration tests and unit tests are passing after the change.
[ ] Address all checkstyle issues. Refer to the style guide.

Fixes #<issue_number_goes_here> 🛠

even more there is the problem to settings environment variable with dots like jib.disableUpdateChecks on unix systems
I have tested with zsh and bash on macOs ...
zsh
export jib.disableUpdateChecks=true
export: not valid in this context: jib.disableUpdateChecks

bash
export jib.disableUpdateChecks=true
bash: export: `jib.disableUpdateChecks=true': not a valid identifier

so I can not disable it at easy way


Some more changes for Xcode 9 beta 5

Hi, please consider this to be merged into swift4 🙏 – thank you


Support for federated tables

See https://github.com/GoogleCloudPlatform/datalab/wiki/Federated-(External)-Tables for design discussion.

Fixed in 9daae0f6eadca47fd25a5f95fd0e1fcf28e52840


"Auto compile on save" not working after commit 596c1a2 on Windows.

compile.into-file called with these arguments:
root-dir: D:\dev_env\vimconf\nvim
ev.file: rc\dap.fnl
(fs.full-path ev.file): D:\dev_env\vimconf\nvim\fnl\rc\dap.fnl

My .nfnl.fnl:
{:source-file-patterns ["fnl/**/*.fnl" "fnl/*.fnl" "*.fnl"]
 :compiler-options {:compilerEnv _G}}

Is this commit means users should write source-file-patterns in Lua's regex now?
(core.some #(string.find path $) (cfg [:source-file-patterns]))

Sorry about this but thanks for the great report! I'll get on this ASAP!
On Fri, 19 Jan 2024, 15:29 UnderCooled, @.***> wrote:

compile.into-file called with these arguments:
root-dir: D:\dev_env\vimconf\nvim
ev.file: rc\dap.fnl
(fs.full-path ev.file): D:\dev_env\vimconf\nvim\fnl\rc\dap.fnl
My .nfnl.fnl:
{:source-file-patterns ["fnl/**/.fnl" "fnl/.fnl" "*.fnl"]
:compiler-options {:compilerEnv _G}}
Is this commit means users should write source-file-patterns in Lua's
regex now?
(core.some #(string.find path $) (cfg [:source-file-patterns]))
—
Reply to this email directly, view it on GitHub
https://github.com/Olical/nfnl/issues/31, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACM6XJHIYRFHLTA4XHB7L3YPKGMZAVCNFSM6AAAAABCCD7UMCVHI2DSMVQWIX3LMV43ASLTON2WKOZSGA4TANZYGU2DKMA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Is this commit means users should write source-file-patterns in Lua's regex now?

This was a mistake and I'm reverting it, I realised the patterns were not being applied in one codepath and applied them as Lua patterns (regexes) which is wrong. You're right, it should just be glob patterns, not Lua patterns (which are a form of regex, but not identical).

I'm updating it so it matches against glob patterns as it always should've done. Thank you for the report, you caught a nasty bug I introduced while fixing an issue.

Should all be fixed! I've kept my change so as to fix the original issue (things were being compiled when they were not in the source-file-patterns list!) but fixed that change so it treats the patterns as glob patterns, not Lua string match patterns.

Although the test for this is failing right now I think the behaviour is fine, so it's probably just the test which I'm trying to fix now. Might have to finish it later though since I'm on the way out.


byte operation problem

Hi team, I have the problem for byte operations. For example:
I have two byte array:
A []byte // size 20
B []byte // size 20

C := append(A, B) // size 40
CHash := mimc(C)

If I only put A,B into the circuit, how can I get the same result?

@gbotrel @ThomasPiellard

And another problem, if I have an array:
var A []Variable

Could I just use Select to decide to if I need to append that something like if.
My goal is to:
if flag{
    A = append(A, new value)
}


🚀 - Titles above barsets and stripe barsets style

Which @taiga-ui/* package(s) are relevant/releated to the feature request?
addon-charts
Description
Hi, guys!
My UI\UX designer and I want to ask you to develop following features for BarChart component.

titles
strip css
and so on

I drew all the wishes in the pictures
this

Could you add title above barsets?
Could you add so dividers between barsets?
Could you add short suffix (тыс. млн.) like this?

and this

Could you add strip css effect for some barsets(not for all)?
Could you align X text by center or give component attr for this?

I added 2 directives for added titles and strip effect as workaround (this directives depends on html structure and format):
            <tui-bar-chart
                [max]="maxX$ | async"
                [value]="barSegments$ | async"
                [collapsed]="true"
                [size]="'l'"
                [hintContent]="hint"

[barSetTitles]="titles$ | async"
[barSetLinearGradient]="from$ | async" // from index position

            ></tui-bar-chart>

barSetTitles - the directive get titles$ array and print above barsets
            for (let i = 0; i < this.elementRef.nativeElement.children.length; i++) {
                const span = document.createElement("span");
                const {height} = this.elementRef.nativeElement.children[i].querySelector("div").style;

                span.innerText = value[i];
                span.classList.add("bar-set-title");
                span.style.bottom = height;
                this.elementRef.nativeElement.children[i].prepend(span);
            }

    .bar-set-title {
        position: absolute;
        left: 50%;
        transform: translateX(-50%);

        font: var(--tui-font-text-xs);
        color: var(--tui-text-02);
    }

barSetLinearGradient - the directive get from$ number and make strip effect for next(after from index) barsets
            for (let i = 0; i < this.elementRef.nativeElement.children.length; i++) {
                if (i >= data.value) {
                    const first = this.elementRef.nativeElement.children[i].querySelector("div > tui-bar-set > tui-bar > div:nth-child(1)");
                    const second = this.elementRef.nativeElement.children[i].querySelector("div > tui-bar-set > tui-bar > div:nth-child(2)");
                    const third = this.elementRef.nativeElement.children[i].querySelector("div > tui-bar-set > tui-bar > div:nth-child(3)");

                    first.classList.add("bar-set-first");
                    second.classList.add("bar-set-second");
                    third.classList.add("bar-set-third");
                }
            }

    .bar-set-first {
        background: repeating-linear-gradient(45deg,
        var(--tui-support-01),
        var(--tui-support-01) 10px,
        var(--tui-support-02) 10px,
        var(--tui-support-02) 20px) !important;
    }

I use 3 section in barset thats why I repeat classList 3 times.

As for strips, you can set any kind of color, including gradients, by just using the CSS vars, see this example called Horizontal.
As for labels, you can provide an array of strings with whatever texts you like already, no need for a directive to do it.
Titles above bar chart is a valid feature request and it is what this issue is about for those who want to take it on :)


Revert "TST/TEMP: fix pyqt to 4.x for plotting tests"

Reverts pydata/pandas#14240
For when https://github.com/ContinuumIO/anaconda-issues/issues/1068 is solved

Also needs to revert https://github.com/pydata/pandas/commit/b99cb7ab225f432da4dfe73e0882e1de3db121b6

Current coverage is 85.26% (diff: 97.14%)

Merging #14243 into master will increase coverage by 0.01%

@@             master     #14243   diff @@
==========================================
  Files           140        140
  Lines         50559      50619    +60
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits          43099      43160    +61
+ Misses         7460       7459     -1
  Partials          0          0

Powered by Codecov. Last update e8357a1...b99cb7a

@jorisvandenbossche ?

Wanted to close and reopen to trigger travis (to see if it is fixed), but can't reopen -> new PR https://github.com/pandas-dev/pandas/pull/14744


Implementing py-tuple py-list py-dict py-chain

This PR adds py-tuple py-list py-dict py-chain into stdlibs
This PR also updates sandbox simple_import examples

@Necr0x0Der @besSveta I've made the following changes.

py-tuple py-list py-dict and py-chain now requires python tuple as a single parameter. So it will work as following:

(py-tuple (1 (2 3)))    -> (1, (2,3))
(py-list (1 (2 3 ))) -> [1, [2, 3]]
(py-dict (("a" "b") ("c" "d"))) -> {"a":"b", "c" : "d"}

Unit tests were added.

py-dict will automatically convert Symbol into python string for keys:
(py-dict ((a "b"))) -> {"a" : "b"}

The most controversial change: all functions will pass non-grounded objects as it is (except Symbol for dictionary keys and Expressions in py-tuple and py-list).
It means that the function (py-list (a b))  will create python list with two symbol atoms.


,kl

[Enter feedback here]

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

ID: fb403b5d-dd95-2c8f-23f7-65af9d76cb5e
Version Independent ID: 3aea5b61-0cf5-8e5e-04f5-0ddf11b3818f
Content: Page.OnAppearing Method (Xamarin.Forms)
Content Source: docs/Xamarin.Forms/Page.xml
Product: xamarin
Technology: xamarin-forms
GitHub Login: @dotnet-bot
Microsoft Alias: dotnetcontent

Hi, @lass3ad00 - would you mind elaborating? Would love to have a clearer understanding of your feedback on this page.

Microsoft support for Xamarin will end on May 1, 2024 for all Xamarin SDKs including Xamarin.Forms. In preparation for this, all issues and PRs in this repository are being closed.
.NET MAUI is the replacement for Xamarin.Forms, and its API docs are built from /// in the dotnet/maui repository. Therefore, any issues with the .NET MAUI API docs should be opened in that repository.


T4 Completion

0.2 GTU shielded transactions were carried out 3 times a day for 5 days. Please refer to the attached file.

confirmed:T4
address:4RQVoXPui4aae9cA4pFVoPQNs667CCgJgG6nzP11HoF4BC8Y73

confirmed:T4
address:4RQVoXPui4aae9cA4pFVoPQNs667CCgJgG6nzP11HoF4BC8Y73


Python package

I'm interested in #2311 python package as well since I use poetry for some functions, I have seen the existing PR and I understand the requested changes.
The Check if version tag checks for the x.y.z tag. I'm well-versed in CI/CD so I can help. Please lemme know any changes if required.

On reflection, I'm very hesitant to add this. I have a bad track record of maintaining just packages myself, since it adds a lot of friction to releases, and they tend to get out of date easily. I also haven't had the greatest experience with the python package ecosystem, and I feel like this is likely to break, especially because I'm unlikely to actually test it after each release. The current rust release workflow is pretty simple, and doesn't tend to break, and I don't think I want to make it more complicated.
I think the best thing would be for someone to maintain the python package in another repo, and I can link to it in the readme, similar to other packages.

For the package name, I would suggest rust-just, but justcli is fine too.

For the package name, I would suggest rust-just, but justcli is fine too.

Sure, I can maintain the package by creating a new repo, as soon as there's a release here I can setup pipelines that can test the package and release it. I'll update more details over here as soon as I setup the process if it's okay for you

Sounds good!

pip install rust-just to install just via pip
npm package is also on the way and will publish tomorrow

Nice! Added instructions to the readme #2383.

Here's npm package https://www.npmjs.com/package/rust-just :)

Nice! Documented in #2384.

FWIW, I would like to comment/warn that npm i rust-just does not install the just binary globally for the user, it only installs it to the current node package that the user is working on (and if there isn't one, it creates a new node project in the current directory). The documentation for rust-just currently doesn't indicate this (or anything useful, really; in fact, the README documentation is just a copy of the entire just README).
This difference feels misleading, as it seems outside the spirit of the just README section for installing via a package manager, which lists ways to install it on a global level (asdf, brew and cargo are the ones I'm most familiar with; the others imply they do something similar).
Most worryingly, the https://github.com/gnpaone/rust-just appears to be a manual fork of casey/just, which, at best, will require consistent "syncing" of the source code by the maintainer (a potential source of frustration to users looking to upgrade their just version), or at worst, is an untrusted clone of the original source with potential for security vulnerabilities without the same active review as the original repo.
I hate to be "that guy" here, but the rust-just project seems to be either misguided in its intentions/implementation, or potentially even malicious or at least insecure - I'm not accusing, but just saying I personally could not trust it enough to use it without a thorough review (which I ain't got time for).
@casey please feel free to tell me to mind my own business, but I'd encourage you to review whatever is actually happening in the other repo and make sure it aligns with your project's goals.
https://github.com/casey/just/discussions/1238#discussioncomment-11198397

@brombal You can install rust-just globally using npm i rust-just -g and it's documented here at https://github.com/gnpaone/rust-just/tree/master/npm. I've added this readme (which also points out towards original readme instructions in casey/just recently and from next release I will modify such that it shows this readme 🙂. It automatically syncs from source repo using a workflow and no manual intervention is necessary (similar to a fork but in the case of fork unless PR is created it doesn't count towards my contributions 😅). Also I'm not building my own binaries, I'm using the binaries from casey/just while packaging to npm registry as there's a workflow for that too. Also there's not really a necessity to sync the whole repo because I need only few files such as LICENSE, README, Cargo.toml etc for the purpose but I just wrote simple code to sync all and then checkout my repo and use whatever files necessary. You can take a look at my code and see my past commits for any presence of malicious modifications if you feel suspicious since it's open source. Sorry if I sound rude.
I guess modifying the README here at https://github.com/casey/just/blob/master/README.md?plain=1#L170 to npm install -g rust-just would help the users @casey

I think changing the readme to -g is probably a good idea. Feel free to open a PR!
It would also be a good idea, just for comprehensibility, to figure out how to avoid cloning the whole repo. Otherwise it's rather hard to figure out what's new and what's old.
In general, I just don't have time to review packages. If I had to review every package before linking it in the readme, I just wouldn't be able to link any packages because I wouldn't have any time to review them 😅 Packages are always kind of buy beware. I could see adding a small note above the packages table that says that they're packaged by third parties, and I don't review them. On the other hand, it doesn't seem like other projects actually do this.

Take this as just my two cents, but I don't believe npm is really intended as a system-level package manager for binaries that are not highly related to the node/npm ecosystem. Generally npm i -g is used for installation of common utilities that are meant specifically for node and JavaScript-related development (like tsc, eslint, etc). I'll admit that's definitely more of an opinion than a hard fact, though.
However, there are several caveats that I think could be misleading to users if not made extremely clear:

The rust-just binary always runs through a JavaScript intermediate script. Not always a big deal, but could definitely come with side-effects that the average user might not be able or wanting to deal with, especially if they are using rust-just with a different language.
There is a 3rd level of dependency on your repository and CI processes that appear to be maintained by a single contributor. I am absolutely guilty of the same thing, so I can't knock you for it; but if the added underlying complexity doesn't provide any significant benefit, I'd have to really consider whether it's useful to put this "single point of failure" in my dependency graph.
The user likely already had to install npm/node using one of the other available package managers listed, so do these additional complexities justify doing something that could be just as easy with a more appropriate package manager?

I definitely don't suspect any malicious intent here, but the average user is probably not going to dig deep enough to see that your repo is only an automated clone, or that most of the files are not being used. All they would see is a forked repo that is not maintained by the original just developers, and probably be rightfully scared off due to doubts about its authenticity.
If you can make these things obvious to users, and make it clear what the benefit is of installing via npm rather than a more typical system package manager, then at the very least you should make sure that the documentation at https://www.npmjs.com/package/rust-just is the rust-just documentation, and not the just README.
A more elegant solution might be to simply download and install the latest just binary (directly from the casey/just releases) in an npm postinstall script (a great example is https://github.com/eugeneware/ffmpeg-static - it doesn't have anything to do with the ffmpeg source code; it just uses a script to download the binaries and install them after running npm i ffmpeg-static)
And I definitely don't mean to be rude or mean-spirited about this at all either; I am just making comments as a engineering/security professional. I would likely have to deny this from being used in any professional capacity because of the points mentioned above.

In general, I just don't have time to review packages. If I had to review every package before linking it in the readme, I just wouldn't be able to link any packages because I wouldn't have any time to review them 😅 Packages are always kind of buy beware. I could see adding a small note above the packages table that says that they're packaged by third parties, and I don't review them. On the other hand, it doesn't seem like other projects actually do this.

@casey Good point, and I realize the things I've been mentioning are probably more of a discussion for gnpaone/rust-just and not for casey/just.
I guess my only concern here is that without a disclaimer in just's README, it does feel somewhat endorsed/official, but as a node "expert", I look at it and feel a little uneasy about it in its current state.
There is definitely a place for unreviewed 3rd party plugins/addons, and I don't really know what the standard is on providing disclaimers when it's clear they are 3rd party. But on the other hand, installers feel like a slightly different category, a bit too "essential" to be listed without a disclaimer if they're unreviewed.
As I said, I'm happy to just buzz off, I'm just looking out for my fellow node devs 😉

@brombal I totally get the concerns here—especially regarding npm as a system-level package manager for binaries that aren’t directly related to Node. My goal with rust-just was to offer a simple, alternative way to access just for users (including me) who are already in the Node ecosystem, particularly in situations where traditional package managers might not be available or practical. For instance, some common use cases for an npm-based installation approach such as Dockerized environments, deps management using package.json for tracking and installing all dependencies consistently across environments entirely via npm, npm-based auto-updates to packages using tools like Dependabot.
The current setup does, as you noted, use an intermediary JavaScript layer to run the binary via execa, which could introduce minor overhead. That said, I’ve tried to make the implementation as efficient as possible while sticking to standard Node practices. This is just an another option for users to use just.
I will work on clarifying the README with disclaimers and details about the repository's maintained by third party (which is me) and use the README related to npm only and not the copied README from this repo, changes will be reflected in next release. My intent is to make it clear that this is a third-party option tailored to npm users and not an official just distribution.

@gnpaone I would like to point out that your main use case of CI pipelines and making JS devs' experience easier has already been solved by just-install. It basically does what you are proposing but solves for (nearly) all of the problems I was discussing above:
Installing just globally via npm doesn't really make sense to me, but installing it as a local project dependency is useful for CI pipelines and JS dev experience. And it doesn't fork the just source code at all but instead just downloads the appropriate binary directly from the current just release. You also could install it globally with npm i -g, though I don't explicitly recommend it.
I am all for open source "competition" and don't want to simply come across as biased, but when two projects seemingly offer no clear distinction in functionality, yet one of them arguably has practical and security issues, referencing both of them in the casey/just README seems like a potential source of confusion, or at least the appearance of a lack of thoughtful review.
I'd ask that you consider whether the existing solution to this problem is sufficient for you, and if not, what does yours offer that the other does not. There could very well be a good use case for both projects to exist, by either serving different purposes or even providing competing approaches, I'm just not sure that I see what it is yet.

@brombal Please don't criticize or bad-mouth a package just because you think it's a competition for your package. There are differences and use cases for my package as well as yours. I can also criticize yours since your intention is criticizing—all that your package does is wrap a shell script in a node executable file and run it if linux and if windows it downloads, copies files, installs and deletes the installer. It's a script and not technically a package. What if I want to update just via npm such as using dependabot, run your script again? I'd better off create my own shell script or use the shell script you provided and run it rather than using a node wrapper since you are keen on criticizing "node wrapper" part. You are also using child_process to run the script, I'm using Execa which is an optimized version of the same. There are lots of differences so it's not a competition. You feel so bad about me using binaries from casey/just repo. You are downloading the binaries from github each and every time npm package is installed, I download once and package it in npm directly. If you are worried about so called security issues, running a third-party link (from github in this case) inside the npm package, modifying permissions inside a hidden shell script without user consent (in some cases the user account won't even have permissions to change access permissions) is a big security issue, is it not? As I said earlier npm package don't even concern with casey/just files, it's not for npm, and I said you can look at my previous commits.
I support open-source community and any feedback on improving my package is welcome but don't try to criticize or undermine any work and I am clear I don't see your package as competition cuz working and use case is different. I've been polite all along until you started bad-mouthing. Please forget about me criticizing your package part as I don't want to do that. And end of discussion for this matter!

Sorry @gnpaone I am absolutely not trying to criticize or bad mouth. I am only expressing technical opinions and constructive criticism. Intention and attitude are very hard to convey over textual comments, so I apologize if it seems rude or mean-spirited, because I don't mean it that way at all.
As I said, I am all in favor of friendly open source competition. If someone can contribute something different, useful, effective, and technologically sound, then nobody should be saying "not to" just out of of jealousy. That's different than voicing a concern or offering constructive criticism in a public forum over actual technological issues that might negatively affect unknowing users.
If you feel your project has value then I hope you continue working on it, and the community will of course decide what they want to use.


Launcher failing today, worked fine yesterday.

haven't changed anything

I even downloaded the updated Hermes-proxy and copied my Account Data and still fails

Figured I'd wait to hear back from you, but my next step is going to be just re-downloading the entire WSlauncher and copying my addons/ account data over.

Reinstalled the launcher from scratch and copied my old addons/wtf/account data and it all works again. Not sure why it stopped working from one day to the next but its all good now.

Weird, it said something with about an permission error, did you change anything in your windows settings?


Feature request: watch mode

golds right now does not pick up changes made in the packages it has already parsed, even if we refresh the browser. Please consider adding a watch mode to reflect the changes on the filesystem. I think it would be very helpful for package authors.

Yes, Golds is mainly used to analyze a snapshot of a code base.
Golds now maintains a lot of analyzed information in memory.
A simple code change might invalidate much of the information.
Rebuilding the information needs some time so might cause some obvious lags.
To avoid the lags, some analyzing work needs to be lazy executed as needed.
The code needs to be refactored like go-lsp.
I have not a clear idea on how to make the refactoring now,
but I think it might be possible.
I will add this to the todo list now.
On the other hand, the refactoring needs much effort and time to finish.
Maybe it would be better to develop another Go app to support the watch feature.
I really don't know which route is better now.


Readme

Some of this prose belongs on the website, too, probably.

And I guess some of the content can be replicated there: https://github.com/typelevel/otel4s/blob/main/docs/index.md