proposal: runtime: allow access to stopTheWorld/startTheWorld via go:linkname

Proposal Details
My module github.com/fjl/memsize walks a data structure and computes its total referred memory size in bytes, as well as producing a report of per-type memory usage. This is meant to be used for debugging memory leaks in live programs in a similar manner to taking a profile over HTTP with pprof, and to my knowledge there exists no other comparable tool.
memsize requires access to runtime.stopTheWorld and runtime.startTheWorld in order to safely walk the object graph without racing with the program that is being debugged. Up until Go version 1.22, I was able to call these functions via go:linkname. Go 1.23 disallows this, and as per https://github.com/golang/go/issues/67401 only specifically approved entry points can be linkname'd.
Please allow access to runtime.stopTheWorld and runtime.startTheWorld by adding a go:linkname directive for Go 1.23.
Alternatively, we could consider adding an exposed API, perhaps in package runtime/debug, to perform a similar task. I could envision something like:
func WithWorldStopped(reason string, f func())

Perhaps access to stopTheWorld/startTheWorld could be granted temporarily during the Go 1.23 cycle while we work out a replacement API.
xref https://github.com/fjl/memsize/issues/4
xref https://github.com/golang/go/issues/67401

BTW, I wasn't sure which issue category was appropriate here. Originally went with 'Bug', but it didn't really fit either. Proposal seems kind of strongly-worded, I really just want to get my request in.

given it is for debugging use, I didn't see an issue with requiring the checklinkname flag during a build.

CC @golang/runtime

For the reference: go123's xruntime also hit this regression when trying to add support for go1.23: there stopTheWorld is used to serialize modification of program tracepoints wrt the program running itself:
https://lab.nexedi.com/kirr/go123/-/blob/8299741f/tracing/internal/xruntime/runtime.go#L24-38
https://lab.nexedi.com/kirr/go123/-/blob/8299741f/tracing/tracing.go#L211-225
<EMAIL_ADDRESS>lab.nexedi.com/kirr/go123/tracing was working ok since 2017 and it would be good to preserve support for that.
Thanks beforehand,
Kirill

stopTheWorld is very sensitive and difficult to use correctly.
We are very unlikely to support calling it even using linkname.
This is the kind of dangerous, difficult-to-keep-working use that
the new linkname restrictions are meant to catch.

Would an enhanced viewcore be an alternative? The desire to improve this is mentioned in https://github.com/golang/go/issues/43930#issuecomment-1852700705 (cc @mknyszek). If I'm not mistaken, the tracking issue is either https://github.com/golang/go/issues/57447 or https://github.com/golang/go/issues/45631.
Enhanced viewecore (gocore) would not support live debugging, but in my experience this is often just a nice-to-have.  Most deployments have multiple concurrent tasks, managed by a cluster scheduler (Kubernetes, ...). Tasks go up and down for various reasons (machine reboot, crash, lack of resources, ...) and the job in its entirety should be tolerant to tasks disappearing. Hence, sending a signal to crash and produce a core dump (or heap dump) would be a decent way to identify the exact nature of leaks, for us.
Until this type of functionality is available, we're relegated to reading the code from the allocation stack of the leaked object (likely identified by diffing two heap profiles). This is (far) less productive for identifying leaks than the proposal or an improved core viewer.

Enhanced viewcore would be nice, but it's kind of orthogonal and doesn't cover some use cases. I often use memsize by to take snapshot reports over time, checking for trends in the number of reachable objects. Can't do that if the program has to crash to get the heap.

@rsc, thanks for feedback.
While I completely understand the desire of Go team to close access to private
functionality, my reading of https://github.com/golang/go/issues/67401 is that
the access will not be closed to what is already used from outside to prevent
breaking existing applications and libraries. In other words for practical
reason the set of symbols, that is already used from outside, will continue to
be provided via go:linkname, and it is only new symbols, and symbols that were
not used previously, that become inaccessible via go:linkname to prevent
growing the set of private API that is exported in reality.
I agree that in ideal world the set of private API that is exported in reality
should be empty, and that reaching that empty set is the long-term goal.
However here we are not starting from scratch. Over the years people used to
have go:linkname working and started to depend on functionality, for which
there is usually no public equivalent. For example in my tracing library with
Go1.23 dropping access to stopTheWorld I'll have a hard time to find out what
to do.
So I suggest to please reconsider providing access to stopTheWorld via go:linkname.
It has been only a few days since go1.23rc1 and it is already two projects
speaking here due to breakage. I'm sure there will be more over time.
Kirill

@fjl I don't fully understand why pprof isn't enough to catch memory leaks. Usually when there's a memory leak it shows up as the dominant memory source in a pprof heap profile.

It's more for finding memory leaks where a large object graph is kept alive by a forgotten reference stuck in a slice backing array or channel buffer. AFAIK pprof heap profiles track new allocations of objects by location and type, which is useful, but it doesn't really give an absolute indication of what's still live. You can have lots of allocation activity which is all quickly reclaimed, and that would show up the same way, right?

Enhanced viewcore would be nice, but it's kind of orthogonal and doesn't cover some use cases. I often use memsize by to take snapshot reports over time, checking for trends in the number of reachable objects. Can't do that if the program has to crash to get the heap.

I don't think that's true. You could use a combination of heap profiles and viewcore to find it:

Take heap profile at time X
Take heap profile at time X+10 (say, with 2x RSS)
Diff both profiles.
Observe largest remaining stack(s)
Kill a process that's big in a way that leaves a core/heapdump.
Using enhanced viewcore(1), find what's keeping the objects identified in step 4 alive.

It's more for finding memory leaks where a large object graph is kept alive by a forgotten reference stuck in a slice backing array or channel buffer. AFAIK pprof heap profiles track new allocations of objects by location and type, which is useful, but it doesn't really give an absolute indication of what's still live. You can have lots of allocation activity which is all quickly reclaimed, and that would show up the same way, right?

No, the heap profile contains four views:

inuse_space, inuse_objects: objects live as of the end of the last completed GC
alloc_space, alloc_objects: objects allocated, as of the end of the last completed GC, since start of process (this is what you were referring to)

Using inuse_space and inuse_objects, you could fulfill step 4 above.

The pprof profile samples one allocation per half megabyte and records (number of bytes, number objects) x (allocated, freed). Based on those numbers, there are four profiles you can access: -inuse_space, -inuse_objects, -alloc_space, -alloc_objects. The inuse ones show only live data as of the last GC (useful for identifying leaks), while the alloc ones show total allocation ever (useful for identifying sources of garbage). At this moment I believe the default that pprof shows is -inuse_space but I may be wrong about that.

Yeah, it's fine, leak debugging could probably be done in a different way. I'm not really here to argue my tool is the best. Just brought up because it got broken by Go 1.23rc and I think I won't be the only one missing access to STW functionality in runtime. It's an important facility.
Do you think there is any chance we can find a way to expose access to STW, possibly with the new API I suggested?

Can't do that if the program has to crash to get the heap.

It doesn't. You can use tools such as gdb or gcore to get a coredump of a running process.

Yeah, that's certainly a possibility.
Regarding viewcore, it's a bit funny because I wrote memsize originally as a workaround because the heapdump viewer tool (https://github.com/randall77/heapdump14) got broken by runtime heap layout changes in Go 1.6 (https://github.com/golang/go/issues/16410#issuecomment-233445705). Seems like my workaround was good enough for 6 whole releases :). While it would be great to have a core file viewer with a per-type breakdown, it just doesn't exist right now, and is very hard to write.

With memsize, what's the problem if you just don't stop the world? (Our best guess is that this prevents races that shear interface values, but wanted to ask.)

Our policy with exposing linknames has been to look at transitive imports as a proxy for "importance". It seems like memsize doesn't meet this bar, but I can also imagine it's the type of package you import temporarily when debugging, so it wouldn't show up in an ecosystem analysis anyway.

Note that if you only import the package while debugging, it's possible to use the go build or go test option -ldflags=-checklinkname=0 while debugging.

With memsize, what's the problem if you just don't stop the world? (Our best guess is that this prevents races that shear interface values, but wanted to ask.)

It would just race with everything (including map updates, slice growth, interfaces...), and would give an inconsistent view. The idea was to have a tool that reports on the memory usage of a snapshot of a data structure. And it can also be used to compare such snapshots.
We use it in go-ethereum by registering some of the 'root objects' that hold references to most things in the system. So when it looks like there is a memory-related problem, we can go to the debugging HTTP endpoint, click the button, and check the object counts. This is also why enabling this doesn't need a special 'debug build', it's just good to have this capability built in.
If this proposal turns out rejected, we'll disable this and move on. It's not the end of the world for me :). But I do think STW is a useful primitive for debugging tools, and the runtime should either expose it in some way, or at least not prevent access to it.

Enhanced viewecore (gocore) would not support live debugging, but in my experience this is often just a nice-to-have. Most deployments have multiple concurrent tasks, managed by a cluster scheduler (Kubernetes, ...). Tasks go up and down for various reasons (machine reboot, crash, lack of resources, ...) and the job in its entirety should be tolerant to tasks disappearing. Hence, sending a signal to crash and produce a core dump (or heap dump) would be a decent way to identify the exact nature of leaks, for us.

I don’t think it is reasonable to assume that everryone is using a cluster scheduler, or even that most people are.  For small-scale deployments, it adds pointless complexity.

I don’t think it is reasonable to assume that everryone is using a cluster scheduler, or even that most people are. For small-scale deployments, it adds pointless complexity.

I shouldn't have said cluster scheduler. What I meant is that we're talking about debugging a task that has a memory leak. It's going to fail at some point. Making it fail in a way such that it produces a core dump may not be all that different. Additionally, while I haven't done this myself, @dominikh mentions it's possible to extract a core from a running process in
https://github.com/golang/go/issues/68167#issuecomment-2194543530.

We use it in go-ethereum by registering some of the 'root objects' that hold references to most things in the system. So when it looks like there is a memory-related problem, we can go to the debugging HTTP endpoint, click the button, and check the object counts. There is no special 'debug build', it's just good to have this capability built in.

It does sound useful, one can view objects by retention stack instead of allocation stack (which normal heap profiles do). It reminds me of the difference between mutex profiles and blocking profiles. It'd be nice to have a "retention profile". Perhaps it could be a feature request? However I don't see a situation where a core/heap viewer couldn't yield the same information. Importantly though, such a viewer doesn't currently exist, so it's not a real alternative yet. Perhaps -ldflags=-checklinkname=0 isn't a bad workaround for tool/servers you are running until viewcore is fixed.

This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group

I wrote on June 26 that:

stopTheWorld is very sensitive and difficult to use correctly.
We are very unlikely to support calling it even using linkname.
This is the kind of dangerous, difficult-to-keep-working use that
the new linkname restrictions are meant to catch.

The discussion so far has not convinced me otherwise. If you have a memory leak, pprof still seems like the right first step. That's always been enough for programs I've debugged. And if you really need to reach for memsize, you can import it and then build with -ldflags=-checklinkname=0.
The downsides of exposing stop-the-world to user code just seem too risky.

Based on the discussion above, this proposal seems like a likely decline.
— rsc for the proposal review group

No change in consensus, so declined.
— rsc for the proposal review group


Figure out what's going on with port/vport in 2.7.2

Long story...
Last December, working on a10-openstack, we discovered that the "port" parameter for virtual servers was actually "vport".  We changed it and stuff appeared to work.
Over the last 11 months, we have gone back and forth fixing this bug and re-introducing it.  I think we need to create a generic library for 2.7.2/4.0 discrepancies that we can use across all projects so we can stop the see-saw that is this bug.

In my branch (off the current master), in lbaasv1 talking to a api version 3 device creating a vip I get (cleaned up)
POST /axapi/v3/slb/virtual-server/6924418e-2d68-4514-b6c1-f4fdf8a8f39d/port/ HTTP/1.1
Host: <IP_ADDRESS>
Content-Length: 271
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: ACOS-Client-AGENT-1.2.7
Connection: keep-alive
Content-type: application/json
Authorization: A10 0495c496305d41476a158bf5ffda71

{
  "vport": {
    "auto": 1
  },
  "port": {
    "protocol": "tcp",
    "name": "6924418e-2d68-4514-b6c1-f4fdf8a8f39d_VPORT",
    "port-number": 80,
    "template-persist-cookie": null,
    "service-group": "495ccd03-ef09-49a6-a917-0d7ed8eaa5d8",
    "extended-stats": 1,
    "template-persist-source-ip": null
  }
}

Originally
send: 'POST /axapi/v3/slb/virtual-server/6924418e-2d68-4514-b6c1-f4fdf8a8f39d/port/ HTTP/1.1\r\nHost: <IP_ADDRESS>\r\nContent-Length: 271\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nUser-Agent: ACOS-Client-AGENT-1.2.7\r\nConnection: keep-alive\r\nContent-type: application/json\r\nAuthorization: A10 0495c496305d41476a158bf5ffda71\r\n\r\n{"vport": {"auto": 1}, "port": {"protocol": "tcp", "name": "6924418e-2d68-4514-b6c1-f4fdf8a8f39d_VPORT", "port-number": 80, "template-persist-cookie": null, "service-group": "495ccd03-ef09-49a6-a917-0d7ed8eaa5d8", "extended-stats": 1, "template-persist-source-ip": null}}'
reply: 'HTTP/1.1 400 Bad Request\r\n'
header: Date: Thu, 05 Nov 2015 22:39:24 GMT
header: Server: Apache
header: Content-Length: 150
header: Connection: close
header: Content-Type: application/json
axapi_http: data = {
    "response": {
        "status": "fail",
        "err": {
            "msg": "JSON message is wrong.",
            "code":<PHONE_NUMBER>,
            "from": "JSON"
        }
    }
}

I created the vip with
neutron lb-vip-create --name vippy --protocol-port 80 --protocol TCP --subnet-id public-subnet another-pool


[docs] Add a document about compiler performance analysis.

This is a bit of a brain dump concerning compilation-time performance analysis of the swift compiler: how to approach it, what tools to use, what you need to know to make sense of what you're seeing, etc.
Comments / edits welcome. It's a bit rough and a bit long, but I figured it'd be good to at least get a document on this stuff started, and to err on the side of verbosity rather than leaving anything mysterious or assumed.

Awesome document, it’s very well explained! :)

This is gold, I had been looking for something like this for quite a while. Thank you @graydon.

@swift-ci please smoke test and merge

@graydon The llvm bisect script part should be expanded with an example. I am fine with doing this myself later or if you want to, a subsequent commit is fine.

@gottesmm yeah feel free to post a followup; I don't know off-hand how to use it by-example but really any sections you see here that you have insight into, more content would be welcome! I'm certainly not the only person doing perf work :)

@swift-ci please smoke test and merge


Promise Inspector

Is there any plan to incorporate the Promise Inspector which was recently introduced to chrome developer tools?
If so is there anyway I can help?

This is very hard.
In current time I prepare Node Inspector 1.0-alfa with most part of current DevTools features. (you can watch a progres in next branch)
But Promise Inspector and Async Stacktrace is out of scope of this release.
Maybe I see a way to implement this features, but this will be Node Inspector 2.0

Thanks for all the great work and efforts.


Feature Request: Container groups?

Would love to be able to group related containers, otherwise you end up with this massive list.
I know you can use the filter, but grouping would tidy things up a bit more I feel.

Hi
In the docker vision (swarm mode), containers are now services, and group of services are now stacks
I think portainer need to go into that direction to stay close to docker API

+1 @WTFKr0
When adding swarm support, we'll give the ability to display/sort all the containers running inside a stack.
I'll close this for now, follow the evolution at https://github.com/portainer/portainer/issues/257


[ContainerRegistry] Update the code back to the latest preview version and prepare release

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

/azp run net - containerregistry - mgmt

API change check
APIView has identified API level changes in this PR and created following API reviews.
Azure.ResourceManager.ContainerRegistry


Question: remove grunt peerDependency?

It seems illogical that grunt should be declared as a peerDependency, our project uses gulp and has no need for grunt.
Could you explain why this is necessary please?

Hi, thanks for the report.
It was a relic from the project scaffolding, thanks for noticing it.
Its fixed and published on npm as 0.11.9.

Thanks for the quick response and registry publish - appreciated! :)

You were lucky I was still awake - its 4 A.M. here in Belgium. :wink:


[Improvement] Visually separate screenshots for  1st test and retry-attempt

Let's imagine, that we conduct a test run with retry_count=1.
In case some test has failed, and was restarted after, we see screenshots that are displayed as one heap/sequence.
I suggest to separate them for both attempts visually. Like:
Initial test:
{some screenshots}
Restarted test:
{some screenshots}

OR
what about precessing on-fail screenshot in order to paint it in red color?

obsolete


Custom username

I love the idea even more when I saw I could use my URL as the profile. But and this is a big but, it uses the username login as the username, while, I use it on purpose as a password, not displayed anywhere, to prevent hackers which were trying hard to login using my name thinking that is my username. Like this, I basically give away my username, not to mention it looks crappy having no real sense of what it says.
I could not find anywhere to change this. Apologies of there is.

Closing as I saw a long thread on this.


Method to keep the god rays effect visible even when the light source is behind camera

Hi,
I'm trying to amplify the lighting effect of a spotlight with a god rays effect.
It works great when the spotlight is facing the camera, but fails when either the spotlight is outside the camera Frustum or behind an other object.
I don't expect this effect to work when the spotlight is behind an other object in the scene, but I was wondering if it would be possible to prevent the effect from disappearing completely when the light source is outside of the camera frustum.
Basically to prevent this scenario when the effect still working when the light source is on the edge of the screen

But disappears as soon as it leaves the camera Frustum

I noticed that the example explicitly set sun.frustumCulled = false which I thought was for this purpose, but doesn't appear to have any effect, at least regarding this problem.
Any input on how to keep the god rays visible when the light source is outside the camera frustum?
Thank you.

Hi,

Any input on how to keep the god rays visible when the light source is outside the camera frustum?

Unfortunately, the GodRaysEffect can only blur light sources that are actually visible on screen. The frustumCulled = false bit is only really needed when using a Points light source to ensures that it doesn't suddenly disappear when near the screen edges.
True volumetric lighting requires a different approach, but I haven't really looked into alternatives yet. Unreal, for example, seems to use particles for its volumetric fog, so a postprocessing filter may never achieve the same results. If someone has any resources on the matter or knows of other approaches, please let me know.

Hi,

Unfortunately, the GodRaysEffect can only blur light sources that are actually visible on screen. The frustumCulled = false bit is only really needed when using a Points light source to ensures that it doesn't suddenly disappear when near the screen edges.

Thanks for the explanation, I couldn't figure out what the frustumCulled = false was actually doing and gave me false hope that it could have an effect of my issue.
I managed to get the spot light effect I was looking for by using a cone instead of a sphere geometry for the light source.
So instead of trying to emulate the light bulb with a small sphere, I use the code to recreate the base of the light beam.
Closing the issue, will try to post some results here once the website is live.

Here's the result as promised :) https://www.fundomo.com/

That's impressive! I really like the atmosphere and sound design. Thanks for sharing :+1:


lsp format volar delete my code

before:

after: :lua vim.lsp.buf.format()

https://github.com/vuejs/language-tools/issues/3925#issuecomment-1977798196 (and https://github.com/vuejs/language-tools/issues/3925#issuecomment-1978244536).

It's formatted by tsserver. Try :LspStop tsserver then format, you will see the code format correctly.
To resolve I think you can,

as @gegoune posted disabled tsserver format for vue files (if you still want volar)
My personal recommendation, use a linter (prettier, eslint or biome) rather than LSP format. They are more configurable than native lsp format.

It's formatted by tsserver. Try :LspStop tsserver then format, you will see the code format correctly.
To resolve I think you can,

as @gegoune posted disabled tsserver format for vue files (if you still want volar)
My personal recommendation, use a linter (prettier, eslint or biome) rather than LSP format. They are more configurable than native lsp format.

if I use :LspStop tsserver then all my Lsp are inactive, so it won't work

my config tsserver

and volar

You are not showing crucial part of your configuration: what and how triggers formatting, which does not happen automatically so you must have configured it somehow. You can find how to filter out tsserver from LSPs that receive format request in comments I linked to.
(also, what is it with people pasting screenshots here rather than code itself?)

You are not showing crucial part of your configuration: what and how triggers formatting, which does not happen automatically so you must have configured it somehow. You can find how to filter out tsserver from LSPs that receive format request in comments I linked to.
(also, what is it with people pasting screenshots here rather than code itself?)

When using tsserver, nothing happens

if I use :LspStop tsserver then all my Lsp are inactive, so it won't work, lsp on the .ts and .js formatting extension still works but if on vue then volar will be active so that's an error, I've tried it.

Not sure what do you mean but you should pass correct param into LspStop otherwise it will stop all servers. E.g.
With tsserver:

Without tsserver:

And this should not be the solution to your problem, it's just demonstrate where's the issue.

if I use :LspStop tsserver then all my Lsp are inactive, so it won't work, lsp on the .ts and .js formatting extension still works but if on vue then volar will be active so that's an error, I've tried it.

Not sure what do you mean but you should pass correct param into LspStop otherwise it will stop all servers. E.g.
With tsserver:
Without tsserver:
And this should not be the solution to your problem, it's just demonstrate where's the issue.

Can it be made so that both work because we also need .ts/.js to make composable, because before there was no problem?

@bobbyrahmanda13 You are ignoring everything that is said in this issue while people are genuinely trying to help you.
Once again, your issue is caused by some bug in tsserver or tsserver plugin for vue (I don't know). Until it's fixed you can mitigate it by filtering out tsserver from LSP formatting (see my second link in original response).

Can it be made so that both work because we also need .ts/.js to make composable, because before there was no problem

You have to config yourself to what you want.
e.g. Use volar in *.vue and use tsserver in *.{js,ts}. To achieve that you need few condition check, simply like if the filetype is vue then just use volar. Check gegoune's first comment(the 2nd link), everything you need is there just need to tweak a little bit.

Dd anyone fix this?

Did anyone fix this?

You may consider turning off the volar format

If you go through the threat, you will find the solution. ( maybe just a work around but works ).
Btw it's tsserver not volar.

Hey @johnsoncodehk, I see this is marked as completed, but I am still experiencing this on v2.0.13. Is this intended to be closed because it was fixed in https://github.com/volarjs/volar.js/commit/d4fbbd7d9cbbbdd8b12981b7ce05da85b2e24c3e or closed due to being an upstream issue?
Thanks for all your hard work on this project!

@codymikol Since you mentioned v2.0.13, this did not release the VSCode extension. Are you using another IDE? If so, please make sure to update @vue/typescript-plugin to the latest version.

Currently using neovim with mason, not sure how that manages the @vue/typescript plugin, I'll dig into that a little tonight.

@johnsoncodehk I should have known how that in particular was set up since I made a little shim package to do that and completely forgot about it.
But essentially, that is just takes the installed version of this language-tools repository and uses the @vue/typescript-plugin package for that version.
So in my case I'm using the latest version of @vue/typescript-plugin, but I'm still experiencing this bug unfortunately :/

I'll do a little digging and see if I can find where exactly its happening.

@johnsoncodehk Apologies, after digging into this, I was all of a sudden unable to replicate my issues. I think I must have blown the cobwebs out of something cached. You can close this again, sorry for the confusion.


Add link for download book of MySQL

Hacktoberfest notes:

due to volume of submissions, we may not be able to review PRs that do not pass tests and do not have informative titles.
please read our contributing guidelines
be sure to check the output of Travis-CI for linter errors
if this is your first open source contribution, make sure it's not your last!

What does this PR do?
Add Resource(s)
For resources
Description
Add link for download book of MySQL
Why is this valuable (or not)?
Book MySQL
How do we know it's really free?
It is public on a web page who assure that it is free
For book lists, is it a book? For course lists, is it a course? etc.
Book
Checklist:

[x] Not a duplicate
[x] Included author(s) if appropriate
[x] Lists are in alphabetical order
[x] Needed indications added (PDF, access notes, under construction)

Please check that this an authorized distribution. Please see CONTRIBUTING.md guidelines.


Use appengine-tools-api.jar from Maven Central rather than the Cloud SDK

@patflynn You mentioned that it was available on Maven Central now, but I couldn't find it.

#4

In CloudSdk:
    // Populate jar locations.
    // TODO(joaomartins): Consider case where SDK doesn't contain these jars. Only App Engine
    // SDK does.
    jarLocations.put(
        "servlet-api.jar", getJavaAppEngineSdkPath().resolve("shared/servlet-api.jar"));
    jarLocations.put("jsp-api.jar", getJavaAppEngineSdkPath().resolve("shared/jsp-api.jar"));
    jarLocations.put(
        JAVA_TOOLS_JAR, sdkPath.resolve(JAVA_APPENGINE_SDK_PATH).resolve(JAVA_TOOLS_JAR));

However I'm not sure why we want to do this. I can see removing the dependency on the App Engine SDK completely, but what's special about this one jar?

One usage I know of with appengine-tools-api.jar is for staging App Engine standard env projects. Maybe we could remove it if we use the new staging by gcloud.
java -cp .../google-cloud-sdk/.../appengine-tools-api.jar \
  com.google.appengine.tools.admin.AppCfg \
      --disable_update_check --enable_jar_splitting stage \
      <...>/tmp/1525099352339/staging-work/exploded-war \
      <...>/tmp/1525099352339/staging

Obsolete. We've usd gcloud staging for a long time.


Immediately complete transitions pending on a Child on removal from composition

Courtesy of a suggestion by Yury.
Description
Implemented DisposableEffect in Child to complete transitions when it leaves composition rather than leaving them hanging. This prevents unexpected transition animations from occurring when, for example, scrolling a LazyList containing elements that may have been mid-transition when the user scrolled past them, and avoids situations where subsequent transitions may get into races to complete with pending ones.
Check list

[ ] I have updated CHANGELOG.md if required.
[ ] I have updated documentation if required.

Let's postpone merge and release after 1.0. Maybe in 2.0. Not sure about side effects of this change, need some time to find out.

@CherryPerry perhaps we could include this in 1.x but have it as an optional behaviour? (false by default?) At least that would allow developers to use it and provide feedback about whether it's a good idea or not.

maybe enabled by default as a behaviour change that can be disabled if it's discovered to cause an issue? The better to get feedback sooner?


Don't break store's this context for isCacheableValue method

Using cache-manager-memcached-store store's isCacheableValue method will fail because when caching assigns the value to self._isCacheableValue it does not pass the this context.
This PR takes care that store's context is passed to isCacheableValue.

Coverage remained the same at 99.401% when pulling d0da2369c1d061cd5e44d6eb69b59dfb68956589 on alexandrusavin:master into 2d9decef7c323dd35568965237e7c22039ffc041 on BryanDonovan:master.

Thanks!  I'll get this merged soon.

Sorry for the delay on this.

This is available in 2.9.0


453 - You currently have access to Twitter API v2 endpoints and limited v1.1 endpoints only.

Hi there!
I get this error every time I search via Tweepy:
453 - You currently have access to Twitter API v2 endpoints and limited v1.1 endpoints only. If you need access to this endpoint, you may need a different access level.
I'm not sure why I'm getting this. I'm subscribed to the free tier. I worked on a different project in a few weeks ago and it worked with no issues. I tried to search for this error but Twitter docs were so confusing. Sometimes it says it is allowed to use the search endpoint (Standard v1.1) and sometimes it says I'm only allowed to post up to 1500 tweets only with no other endpoints. Any clue?
Here is where it says what Standard v1.1 should include (it says free there): https://developer.twitter.com/en/docs/twitter-api/v1
Here is where "Access to standard v1.1" says: https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve
Code:
import tweepy

consumer_key = ""
consumer_secret = ""
access_token = ""
access_token_secret = ""

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)
api.verify_credentials()

tweets = tweepy.Cursor(api.search_tweets, q="#NBAtwitter", count=10).items()
for tweet in tweets:
    print(tweet.user.id)

Twitter API v1.1 is not available with Free access.
https://twittercommunity.com/t/announcing-new-access-tiers-for-the-twitter-api/188728


write_stylus: refactor (sha256)

Motivation for this change
Checksum updated and https://github.com/NixOS/nixpkgs/issues/95963 fixed.
Things done

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

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

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

Sorry for the trouble - going forward I will release updates under a different filename.

Sorry for the trouble - going forward I will release updates under a different filename.

Awesome, thanks a lot!


fix: NODE_ENV cannot be correctly set to "development"

What kind of change does this PR introduce? (check at least one)

[x] Bugfix
[ ] Feature
[ ] Code style update
[ ] Refactor
[ ] Docs
[ ] Underlying tools
[ ] Other, please describe:

Does this PR introduce a breaking change? (check one)

[ ] Yes
[x] No

Other information:
When the environment is "dev", NODE_ENV cannot be correctly set to "development"

Why check if NODE_ENV is'dev'?

Why check if NODE_ENV is'dev'?

``

Why check if NODE_ENV is'dev'?

Ensure that process.env.NODE_ENV is always development when the node environment is dev and config.get can read the development.json configuration correctly.

Why check if NODE_ENV is'dev'?

Ensure that process.env.NODE_ENV is always development when the node environment is dev and config.get can read the development.json configuration correctly.Therefore, I think it is necessary to do an operation compatible with process.env.node _ env = development.

Setting NODE_ENV to 'dev' is not a good practice.
Doing an implicit conversion is not a good practice either.
Users would be extremely confused when debugging problems involving this conversion.


bug(MatChipList): Cannot set selectable of mat-chip with Angular Material

The previous version in which this bug was not present was
No response
Description
Using mat-chip-list as a multi select with fixed mat-chips and using selected as values do not seem to work:
<mat-form-field
    floatLabel="always"
    appearance="outline">
    <mat-chip-list multiple
                   required
                   name="roles"
                   [ngModel]="user.roles">
      <mat-chip
        [selectable]="true"
        [removable]="false"
        *ngFor="let option of options"
        (click)="addRole(option )"
        [selected]="user?.roles?.includes(option )">
        <span [outerText]="role"></span>
        <button
          *ngIf="user?.roles?.includes(option )"
          (click)="removeRole(option )"
          matChipRemove>
          <mat-icon>cancel</mat-icon>
        </button>
      </mat-chip>
    </mat-chip-list>
</mat-form-field>

and in .ts:
addRole = (role: string): void => {
    if (!this.user?.roles ?.some(auth => auth == role)) this.user?.roles ?.push(role);
    this.user.roles = [...this.user.roles];
  }

  removeRole = (role: string): void => {
    if (this.user?.roles?.some(auth => auth == role)) this.user.roles = this.user.roles?.filter(auth => auth != role);
    this.user.roles = [...this.user.roles];
  }

event with [selected]="true" on mat-chip it is not selected. If I don't clone with this.user.roles = [...this.user.roles]; the ngModel stops updating, and required validator is always invalid.
Reproduction
Steps to reproduce:

Use mat-chip-list with template driven forms as multi select

Expected Behavior
I'd expect the selected property to take change. Or ngModel to be updated.
Actual Behavior
Even if selected is set to true chip is never selected.
Environment

Angular:
CDK/Material: ^13.3.7
Browser(s): Chrome
Operating System (e.g. Windows, macOS, Ubuntu): Windows

Hello @hasancansaral,
I believe this issue was resolved in the newer MDC-based components released in v15. Does upgrading to v15 resolve this issue for you?
-Zach

Closing this issue due to no recent activity, if this is still an issue please create a new issue with a reproduction.


false overwrite of default cryptoModules

Here :
https://github.com/NixOS/nixpkgs/blob/19997f01007efe3124219befaf6467c15521706e/nixos/modules/tasks/encrypted-devices.nix#L70
The cryptoModules get set to a list which is smaller than the default of boot.initrd.luks.cryptoModules.
Also the example of the keyFile parameter is wrong.
https://github.com/NixOS/nixpkgs/blob/19997f01007efe3124219befaf6467c15521706e/nixos/modules/tasks/encrypted-devices.nix#L39
it needs to be prefixed with /mnt-root like in the documentation explained.
proper example would be example = "/mnt-root/root/.swapkey"

Fixed in master and 17.09 by https://github.com/NixOS/nixpkgs/pull/30477


Modify documentation to incorporate/mention new "Empire Wars" game modes

To stay updated with the current state of the aoe2.net API.
leaderboard_id: 13 (1v1) & 14 (Team).
This means updating the following method docstrings:
API class

[x] get_leaderboard(...)
[x] get_rating_history(...)

Nightbot class

[x] get_rank_details(...)

[x] get_recent_opp(...)

[x] get_current_match(...)

[x] get_current_civs(...)

[x] get_current_map(...)

[x] And the overall documentation under docs/docs.md.

New PyPi version (https://pypi.org/project/aoe2netapi-wrapper/1.1.1/) and also new GitHub release available.


Incorrect Dart setup for NativeAd

For the instructions under:
https://codelabs.developers.google.com/codelabs/admob-inline-ads-in-flutter#7
(Integrate the native ad with Flutter widgets, step 3)
_ad is assigned before being subsequently assigned in the onAdLoaded handler. This is not how the BannerAd is set up, nor how the complete version of same is set up. This also throws an error on Android (from logcat):
E h0      : This ad may have not been loaded or has been disposed. Ad with the following id could not be found: 6.
E MethodChannel#flutter/platform_views: Failed to handle method call
E MethodChannel#flutter/platform_views: java.lang.NullPointerException: Attempt to write to field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference in method 'void io.flutter.plugin.platform.o$a.g(io.flutter.embedding.engine.j.k$e, io.flutter.embedding.engine.j.k$b)'
E MethodChannel#flutter/platform_views: 	at io.flutter.plugin.platform.o$a.g(Unknown Source:119)
E MethodChannel#flutter/platform_views: 	at io.flutter.embedding.engine.j.k$a.f(Unknown Source:59)
E MethodChannel#flutter/platform_views: 	at io.flutter.embedding.engine.j.k$a.j(Unknown Source:167)
E MethodChannel#flutter/platform_views: 	at g.a.c.a.j$a.a(Unknown Source:17)
E MethodChannel#flutter/platform_views: 	at io.flutter.embedding.engine.f.c.i(Unknown Source:18)
E MethodChannel#flutter/platform_views: 	at io.flutter.embedding.engine.f.c.j(Unknown Source:20)
E MethodChannel#flutter/platform_views: 	at io.flutter.embedding.engine.f.c.k(Unknown Source:0)
E MethodChannel#flutter/platform_views: 	at io.flutter.embedding.engine.f.a.run(Unknown Source:12)
E MethodChannel#flutter/platform_views: 	at android.os.Handler.handleCallback(Handler.java:938)
E MethodChannel#flutter/platform_views: 	at android.os.Handler.dispatchMessage(Handler.java:99)
E MethodChannel#flutter/platform_views: 	at android.os.Looper.loopOnce(Looper.java:201)
E MethodChannel#flutter/platform_views: 	at android.os.Looper.loop(Looper.java:288)
E MethodChannel#flutter/platform_views: 	at android.app.ActivityThread.main(ActivityThread.java:7842)
E MethodChannel#flutter/platform_views: 	at java.lang.reflect.Method.invoke(Native Method)
E MethodChannel#flutter/platform_views: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E MethodChannel#flutter/platform_views: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
E flutter : [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, Attempt to write to field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference in method 'void io.flutter.plugin.platform.o$a.g(io.flutter.embedding.engine.j.k$e, io.flutter.embedding.engine.j.k$b)', null, java.lang.NullPointerException: Attempt to write to field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference in method 'void io.flutter.plugin.platform.o$a.g(io.flutter.embedding.engine.j.k$e, io.flutter.embedding.engine.j.k$b)'
E flutter : 	at io.flutter.plugin.platform.o$a.g(Unknown Source:119)
E flutter : 	at io.flutter.embedding.engine.j.k$a.f(Unknown Source:59)
E flutter : 	at io.flutter.embedding.engine.j.k$a.j(Unknown Source:167)
E flutter : 	at g.a.c.a.j$a.a(Unknown Source:17)
E flutter : 	at io.flutter.embedding.engine.f.c.i(Unknown Source:18)
E flutter : 	at io.flutter.embedding.engine.f.c.j(Unknown Source:20)
E flutter : 	at io.flutter.embedding.engine.f.c.k(Unknown Source:0)
E flutter : 	at io.flutter.embedding.engine.f.a.run(Unknown Source:12)
E flutter : 	at android.os.Handler.handleCallback(Handler.java:938)
E flutter : 	at android.os.Handler.dispatchMessage(Handler.java:99)
E flutter : 	at android.os.Looper.loopOnce(Looper.java:201)
E flutter : 	at android.os.Looper.loop(Looper.java:288)
E flutter : 	at android.app.ActivityThread.main(ActivityThread.java:7842)
E flutter : 	at java.lang.reflect.Method.invoke(Native Method)
E flutter : 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E flutter : 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
E flutter : )
E flutter : #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:653)
E flutter : #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:296)
E flutter : <asynchronous suspension>
E flutter : #2      MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:499)
E flutter : <asynchronous suspension>
E flutter : #3      TextureAndroidViewController._sendResizeMessage (package:flutter/src/services/platform_views.dart:1084)
E flutter : <asynchronous suspension>
E flutter : #4      RenderAndroidView._sizePlatformView (package:flutter/src/rendering/platform_view.dart:182)
E flutter : <asynchronous suspension>
E flutter :

and the ad isn't shown.

Under iOS, this doesn't cause an error, but it does cause the ad to not be shown.


Fix broken gated repos

Fixes a bug introduced in https://github.com/woodpecker-ci/woodpecker/pull/2923. I'll also try to add a test case.

My attempts to test the Create method were not successful.... Looks like a lot of mocking is required, and I'm not able to put it together properly...


Docs: CronJobs, most recent pod output

This is a Bug Report
Problem: The documentation for CronJobs does not fully explain how to get log output
Proposed Solution: Add documentation describing how to get the most recent pod name to use for the kubectl logs command
Page to Update:
https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/
Ideally, the page would describe how to get the logs for the most recent successful job and the most recent failed job, programmatically. Something you could use in a bash alias.
Ideally^2 it wouldn't involve piping porcelain output through grep (and sort and whatever).
Here's the best methods I've found so far, but they're not great:
Most recent error: kubectl get pods -o json | jq  -r '.items[] | select(.metadata.name | startswith("cronjobname")) | select(.status.containerStatuses[].lastState.terminated.reason == "Error") | .metadata.name' | tail -n 1
Most recent success: kubectl get pods -o json | jq  -r '.items[] | select(.metadata.name | startswith("cronjobname")) | select(.status.containerStatuses[].lastState.terminated.reason = "Completed") | .metadata.name' | tail -n 1
As you can see these methods are severely flawed: they find all pods with names that begin with the cronjob's name, including pods that were not made for that cronjob. They also assume that the pods output will be sorted a particular way, which I'm not sure is guaranteed.

/kind feature
/language en

/priority backlog
/kind feature


Extending available FieldCodes and allow setting parameters

This PR closes #71
The main contribution is a fieldCodeParser, which interprets the field code strings into their components. There are a few open questions that have been added as comments in the code. Though this approach is not the final perfect one, it might be a good start for further extensions in that direction.
Also, I did almost no refactoring here to avoid blowing up this PR too much.
@PrzemyslawKlys WDYT?

I guess if it's a condition, it would not impact my setup, but maybe better to do separate PR to adjust it to multiple OS development scenarios like you mentioned in the issue.
As for the PR itself, can you add maybe 1-2 different examples (not tests) showing how to use fields there are non-standard (aka showing what you added). From the code that I do understand everything seems ok, for the other I probably lack some knowledge to be able to fully comprehend it - but as long as everything works I'm happy ;)


Presto druid connector

Co-authored-by: Puneet Jaiswal<EMAIL_ADDRESS>This PR overtook the work done by Puneet as part of https://github.com/prestosql/presto/pull/532.
This is a V1 version of the connector without aggregation pushdown. While some of the work from Puneet's PR has been carried over, a lot of code was removed since it is no longer needed. Note that this PR mandates that the Druid cluster runs Druid 0.18 or newer.
The other bulk of the work done was for setting up the TestingDruidServer to run various Druid components, ingesting TPCH data by writing to a TSV file and then invoking Druid indexer job and, adding a smoke test.

Checks are failing because server-rpm size is exceeding configured threshold.
/home/runner/work/presto/presto/presto-server-rpm/target/presto-server-rpm-333-SNAPSHOT.x86_64.rpm size<PHONE_NUMBER>) too large. Max. is<PHONE_NUMBER>/home/runner/work/presto/presto/presto-server-rpm/target/presto-server-rpm-333-SNAPSHOT.x86_64.rpm

Seems to be happening because rpm size enforcement was implemented in https://github.com/prestosql/presto/pull/3404

@samarthjain we are aware of this situation.
This is said it blocks your PR. However, if we go ahead and merge the PR, we would not be able to release Presto.
There is an issue about this https://github.com/prestosql/presto/issues/3399 which needs to be acted upon urgently.

@findepi, @Praveen2112 - with the RPM size fixed, the PR is ready for review. Would you have cycles now to take a look at it? Still waiting on my signed CLA to be approved.

The connector uses jdbc to access druid and is slow.
In Didi(https://www.didiglobal.com/) we have a druid connector in presto. The druid connector uses http to access druid and aggregation pushdown,predicate pushdown and so on has been implemented. At present, some business parties have already used the feature.

@armsword - did you initially build your connector using JDBC? And was it slow instead of directly using HTTP? Do you know where the bottle neck was?

@samarthjain Yes, use http will be high performance, stable. See the slack and I @ you.

@samarthjain Druid JDBC support is built baed on Apache Calcite, and the SQLs that passed to Druid will be translated into native Druid query at Druid broker, there will be some overhead of translating SQLs to the native Druid query, I don't know how much this will impact the performance though, @armsword correct me if I am wrong.

@ArvinZheng - I am not sure if we should be worried about the small overhead that sql->native json translation broker incurs. I don't have the numbers handy but I can't imagine it to be more than a few milliseconds.

@samarthjain , Sorry that I didn't make it clearly. Yes, the small overhead of translating SQL to native Json shouldn't be a big deal, but as a result of using JDBC/SQL, we are tying the connector to Druid Broker (every SQL has to be submitted to Druid Broker since only Druid Broker understands the SQL).
I guess what @armsword (Didi) does is they don't rely on the Druid Broker(they might have built up the Druid datasource timeline and segment to Historical mapping somewhere else other than the Broker, or even build these at query runtime), so that they are able to scan the data directly from Historical nodes by submitting http calls directly.
Anyway, this should not be a blocker though, I am also waiting to see how Didi implemented their connector, but @armsword is a little busy recently, hopefully we could get more detail from him later after he's free.

@ArvinZheng  thanks for good explanation. It matches my thinking as well. I think what we have is a good place to start, because it is a simple implementation that we will be able to evolve.
If we add a new transport that requires pretty different set of configuration toggles (or there is some other reason preventing us from using it unconditionally), a plugin can easily provide a different flavor of the connector.
Having said that, I am looking forward to @armsword 's contribution or implementation advice.
@samarthjain could you please rebase?

@findepi - I have addressed your comments in the latest commit. Please take a look when you get a chance. Thanks!

Reopening

@samarthjain thanks for keeping commits separate, this was very helpful to follow the work in the PR.
Can you squash them now for the final CI run & merge?
(tip, with git rebase -i $(git merge-base HEAD master), you can easily avoid changing the base, so push force diff remains 0)

@findepi - the failure looks unrelated.

@samarthjain @puneetjaiswal merged, thanks!


Add tests to Sudo Pallet

Fix #5900
Adds a runtime mock and tests to the sudo pallet.
A logger pallet with a log call that requires root and another log call that requires just a signature is included. These calls are passed to relevant sudo functions and used to track state change.
Highlighted areas to review:

Any other testing that should be done.
Appropriate wording in comments.
Best practices for test naming conventions and how to split up the tests themselves.
And obviously that the testing makes sense :)

Note:
I think I have addressed Shawn's comments up until commit ffdb88e.

looks good otherwise


Allow users to override the source value

Currently the default value of source value is set to Starburst Metabase 1.0.6 https://github.com/starburstdata/metabase-driver/blob/main/drivers/starburst/src/metabase/driver/implementation/connectivity.clj#L106
When I tried to change this value using advance options from Metabase UI to something else I got this error
Caused by: java.sql.SQLException: Connection property 'source' is both in the URL and an argument
	at io.trino.jdbc.TrinoDriverUri.mergeConnectionProperties(TrinoDriverUri.java:464)
	at io.trino.jdbc.TrinoDriverUri.<init>(TrinoDriverUri.java:130)
	at io.trino.jdbc.TrinoDriverUri.<init>(TrinoDriverUri.java:122)
	at io.trino.jdbc.TrinoDriverUri.create(TrinoDriverUri.java:143)

It would be very useful if we could allow users to change the value but keep the default value to Starburst Metabase 1.0.6

Hi @aakashnand thanks for your suggestion!
Are you using Starburst or Trino? Looks like there is a conflict with source field, used in URL (Metronome) and as argument (Trino).
Can you elaborate about your use case?
Idea behind the same source for all queries is for the admin to be able to distinguish who is using which tool and which version. If we allow all end users to manipulate the source this can end up in a mess.

@leniartek I am using Open source trino version.

Idea behind the same source for all queries is for the admin to be able to distinguish who is using which tool and which version. If we allow all end users to manipulate the source this can end up in a mess.

Apologies for the confusion, the title of the issue little bit misleading, by users I mean the "Metabase admins" or "trino-admins" or whoever configures the trino-> Metabase connection.
Currently, it's hardcoded to Starburst Metabase 1.0.6 but I want to be able to change this to simple metabase or anything which is useful in my team's context.
The screenshot I shared is the screen of metebase where the connection is configured, on that screen, there is an option for admins to add additional JDBC properties and source should configurable through that option and we can keep the default value as Starburst Metabase 1.0.6

Hi @aakashnand thanks again for your feedback.
We decided not to implement the above feature request.
source field is hardcoded on purpose to allow us to internally identify Client Tool and Version for all incoming queries.
It is easy enough to strip the "Starburst" and "X.X.X" in your downstream reporting and just leave "Metabase".


Reference for MVP Pattern and Testability

general improvements including:

client refactoring in order to use MVP as should be
general testing setup and increse of testing coverage

https://github.com/droolsjbpm/kie-wb-common/commit/530888c6a0d182fe44a28463a7bd937f2c7f5b53


Rework Caching

Try to use more ready made cache decorators and so on for the caching.

Some simplification in https://github.com/allo-/feedjack/commit/f7db647c6ef7ba66972d14c140bd3e27fd86ee8a
Not sure if it works as intended anyway. At least generating an etag for pages which depend on the logged in user would need to be reworked, check if last modified matches the (new) pagination, see https://github.com/allo-/feedjack/issues/2.


Error when starting the second SN (SMLETHNode: Transferring 100 ETH to local account failed) - MNIST example

Issue description

issue description: error obtained when starting the second Swarm Network Node.
occurrence - consistent or rare:
error messages:  SMLETHNode: Transferring 100 ETH to local account failed
commands used for starting containers: the ones provided in the MNIST example (https://github.com/HewlettPackard/swarm-learning/blob/master/examples/mnist/README.md)
docker logs [APLS, SPIRE, SN, SL, SWCI]:
######################################################################

HPE SWARM LEARNING SN NODE
######################################################################
© Copyright 2019-2022 Hewlett Packard Enterprise Development LP
######################################################################
2023-06-22 10:19:21,321 : swarm.blCnt : INFO : Setting up blockchain layer for the swarm node: START
2023-06-22 10:19:22,628 : swarm.blCnt : INFO : Creating Autopass License Provider
2023-06-22 10:19:23,407 : swarm.blCnt : INFO : Creating license server
2023-06-22 10:19:23,407 : swarm.blCnt : INFO : Setting license servers
2023-06-22 10:19:23,421 : swarm.blCnt : INFO : Acquiring floating license<PHONE_NUMBER>:1
2023-06-22 10:19:24,047 : swarm.SN : INFO : Using URL : https://<IP_ADDRESS>:30304/is_up
2023-06-22 10:19:24,170 : swarm.SN : INFO : Sentinel Node is UP!
2023-06-22 10:19:43,727 : swarm.SN : INFO : SMLETHNode: Starting GETH ...
2023-06-22 10:22:16,547 : swarm.SN : ERROR : SMLETHNode: Transferring 100 ETH to local account failed
Traceback (most recent call last):
File "", line 1, in
File "start_swarm_sn.py", line 196, in start_swarm_sn.main
File "swarmfactory.py", line 615, in swarmfactory.createBCFullNodeForContainer
File "swarmbcnode.py", line 739, in swarmbcnode.smlethnode.initialize
File "swarmutils.py", line 678, in swarmutils.swarmlogger.emitError
RuntimeError: SMLETHNode: Transferring 100 ETH to local account failed
2023-06-22 10:22:16,556 : swarm.blCnt : WARNING : Releasing license
Swarm Learning Version:

Find the docker tag of the Swarm images ( $ docker images | grep hub.myenterpriselicense.hpe.com/hpe_eval/swarm-learning ): Version 2.0.0

OS and ML Platform

details of host OS: Ubuntu 20.04.6 LTS
details of ML platform used:
details of Swarm learning Cluster (Number of machines, SL nodes, SN nodes): 2 hosts, exactly the same as MNIST example

Quick Checklist: Respond [Yes/No]

APLS server web GUI shows available Licenses? Yes
If Multiple systems are used, can each system access every other system? Yes
Is Password-less SSH configuration setup for all the systems? Yes
If GPU or other protected resources are used, does the account have sufficient privileges to access and use them?
Is the user id a member of the docker group? Yes

Additional notes

Are you running documented example without any modification? Yes, just modifying the IPs of host 1 and host 2
Add any additional information about use case or any notes which supports for issue investigation: All the steps 1-9 and 11 from the README (https://github.com/HewlettPackard/swarm-learning/blob/master/examples/mnist/README.md) are followed correctly, but error in step 10 appears. I think the issue is related to "Ethereum" and the creation of the blockchain layer, but I do not have more information about the error.

Can you check if the systems in which the nodes running are time synchronized?

@joaquingarciaatos please confirm, whether the issue is resolved post time synchronization using NTP?

Can you check if the systems in which the nodes running are time synchronized?

Can you check if the systems in which the nodes running are time synchronized?

Hi! I tried to check the nodes are time synchronized, and they are. But it didn't solve anything about the issue... Do you have any idea about what can be the issue?

The error might occur due to unsynchronized time between nodes, where even a slight time difference of few milli seconds can cause the issue. To resolve this, you can synchronize the nodes using NTP (Network Time Protocol). Afterward, restart the Docker service and try running the example again.


Upgrade to hashbrown 0.15

This was very simple thanks to the versioned feature flags we added. I also cleaned up the code to make copy-pasting even easier in the future.

Thanks for the PR!


C# FunctionStartup - Debugging - Breakpoint warning: No executable code of the debugger’s target code type is associated with this line.

When debugging a C# Azure Function, with a FunctionStartup in Visual Code on MacOS with the
VS Code
Version: 1.49.2
Commit: e5e9e69aed6e1984f7499b7af85b3d05f9a6883a
Date: 2020-09-24T16:23:52.277Z
Electron: 9.2.1
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: <IP_ADDRESS>-electron.0
OS: Darwin x64 19.6.0

Visual code - AzureFunction 0.24.1 add-in
Azure Functions Core Tools - 3.0.2912
Function Runtime: 3.0.14287.0
I'm unable to debug my FunctionsStartup:Configure override
[assembly: FunctionsStartup(typeof(MyAssembly.Startup))]

namespace MyAssembly.Startup
{
    public class Startup : FunctionsStartup
    {
        public Startup()
        {
        }

        public override void Configure(IFunctionsHostBuilder builder)
        {
...   // <-- Break points in here.
       }
   }
}

On startup I get the following warnings:
Breakpoint warning: No executable code of the debugger’s target code type is associated with this line.
Possible causes include: conditional compilation, compiler optimizations, or the target architecture of this line is not supported by the current debugger code type. - /<Path to my code>/<MyAssembly>/Startup.cs:41

My launch.json look like this:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Attach to .NET Functions",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:azureFunctions.pickProcess}",
            "requireExactSource": false,
            "stopAtEntry": true
        }
    ]
}

However the "stopAtEntry": true is underlined to say property is not allowed.

Just to be clear - this is only an issue for the Configure/Startup stuff, right? You can get breakpoints for something simple like an Http Trigger?
Is this project on GitHub? Could I see how you're using the Configure method in context?

@EricJizbaMSFT - Hi Eric - yes this is just with the FunctionStartup. I get the Breakpoints to work fine elsewhere.
My use cases here is to connect to an Azure KeyVault but the code here should not matter...I was just trying to debug it.
I assume creating a template project and adding in a FunctionStartup method with the requisite assembly Reference should be a re-create-able use case.
My guess its that it's released to the Assembly Reference and VS Code's understanding of that ?
[assembly: FunctionsStartup(typeof(MyAssembly.Startup))]

I hit the similar issue with VS Code, but I didn't see the breakpoint warning. The breakpoint in the Startup simply doesn't work. I am using VS Code with WSL2.
The breakpoint works in Visual Studio with the same code.
The function code is here if you want to have a quick try: https://github.com/chunliu/azfunc-snowflake

Tagging @stefanushinardi for visibility.

This issue has become stale and is at risk of being closed. The community has 60 days to upvote the issue. If it receives 5 upvotes we will keep it open and take another look. If not, we will close it. To learn more about how we handle issues, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this issue has received less than 5 community upvotes and we closed it. Still a big Thank You to you for taking the time to create it! To learn more about how we handle issues, please see our documentation.
Happy Coding!


Cache all champions and seasons

Right now, to get all_champions and all_seasons, these are additional requests out to opgg, but more importantly, these do not change regularly.
Caching this information makes much more sense.
System:

Build a new copy of the cache every week? (specific day?)
Track an initial start day, lets say 2023-08-30 and store in db
Each run, see if current date is initial+7 days
-> if it is, store current date as initial and loop ...
-> once thats been stored, do a request to any summoner_id's full (non-summary) endpoint to pull a fresh list of all_champions and all_seasons
Replace above logic with checking a champion id against the table, and if it doesnt exist, THEN do an update. This is the most ideal way to do this as it removes even the uneccessary daily/weekly/monthly requests and only does it when it needs to.
Once request has been performed, and we have the all_champs and all_seasons, build out champ and season tables
We then query the db to build out the champion and season objects
Set related properties

[x] Insert logic for champions
[x] Insert logic for seasons
[x] Get logic for champions
[x] Get logic for seasons

commit fc55acc closes this.


Implemented Bellman-Ford, fixes #142

I added an implementation of Bellman-Ford with documentation.
For ease of understanding, this implementation uses a graph which is declared as a list of edges where each edge is a tuple with the parameters (source vertex, destination vertex, weight).

I also changed the name of the Dijkstra implementation as there was a typo, it seems to have thrown off some of the CI though...

Since BFS and DFS use the queue and stack data structures which need to be imported in Julia with using DataStructures, the logs say we need to include this dependency for the package.
Is there anywhere else I would need to add the dependency? afaik it should be working since I added it to TheAlgorithms.jl which also contains other dependencies such as Random and Linear Algebra which seem to work just fine

 Since BFS and DFS use the queue and stack data structures which need to be imported in Julia with using DataStructures, the logs say we need to include this dependency for the package.
Is there anywhere else I would need to add the dependency? afaik it should be working since I added it to TheAlgorithms.jl which also contains other dependencies such as Random and Linear Algebra which seem to work just fine

I guess it should be added to Project.toml. Random and Linear Algebra are there.


uname machine returns "unknown"

On many platforms the "machine" variable contains "unknown". This is because goInfo uses uname -i instead of uname -m to get the hardware platform which is non portable.
$ uname --help
Usage: uname [OPTION]...
Print certain system information.  With no OPTION, same as -s.

  -a, --all                print all information, in the following order,
                             except omit -p and -i if unknown:
  -s, --kernel-name        print the kernel name
  -n, --nodename           print the network node hostname
  -r, --kernel-release     print the kernel release
  -v, --kernel-version     print the kernel version
  -m, --machine            print the machine hardware name
  -p, --processor          print the processor type (non-portable)
  -i, --hardware-platform  print the hardware platform (non-portable)
  -o, --operating-system   print the operating system
      --help        display this help and exit
      --version     output version information and exit

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/uname>
or available locally via: info '(coreutils) uname invocation'

Hi @mildred, thank you for your interest in this provider and for your heads up about this limitation from goInfo.
When I started this provider, few years ago, I was expecting at some point that the usage of a non portable option from goInfo might bring challenges at some point. I decided to wait for the challenge to be faced to act and here we go.
Since the goInfo repo had no change about the -i option, but you raised the concern via this issue, I finally forked the goInfo repo to make these changes (https://github.com/julienlevasseur/goInfo) and the uname provider now use this forked goInfo.
I recommend you then to use the 0.2.3 version of uname that will show the machine attribute.
https://registry.terraform.io/providers/julienlevasseur/uname/latest
Encore merci pour ta contribution, n'hésites pas si tu as d'autres commentaires ou suggestion.
Au plaisir.

Closing after 3 months without update.
This is considered resolved.


  I've updated the links to point to archive.org.  I know archive.today was mentioned in the comments on #17, but archive.today doesn't have any captures for the techmiso site.

Excellent thanks! Updated on Errata side as well.

Nice pick-up 😉!


Preserve ordering in lists

For whatever reason, cabal new-repl requires c-files to be in dependency order. However, currently hpack breaks the ordering (cabal file has all entries in alphabetic order). Am I missing some option to preserve custom ordering for c-files field?

@CthulhuDen Hey, thanks a lot for reporting this.  This sounds critical, so we want to address this fast.  Do you have any code that you can share which reproduces the issue?
Also, can you give me the output of cabal --version.
As a quick workaround you can use something like this for now:
library:
  verbatim:
    c-sources: |
      foo.c
      bar.c
      baz.c

Thanks for responding! I've set up an example repo: https://github.com/CthulhuDen/cbits-ordering.
After executing hpack, running cabal new-repl (btw I used cabal <IP_ADDRESS> and ghc 8.4.3) on clean project loads ghci and then when evaluating greeting fails with
ghc: ^^ Could not load 'greeting', dependency unresolved. See top entry above.

ByteCodeLink: can't find label
During interactive linking, GHCi couldn't find the following symbol:
  greeting

cabal new-build succeeds, and running cabal new-repl in built project can't load and instead results in
ghc: panic! (the 'impossible' happened)
  (GHC version 8.4.3 for x86_64-unknown-linux):
    Loading temp shared object failed: /tmp/ghc22985_0/libghc_1.so: undefined symbol: msg

I, however, I manually rearrance c-files entries in cbits-ordering.cabal, it both builds and loads repl just fine.
The workaround you provided for now kinda works, only you need to also account for indentation (and ignore hpack warning about missing file):
  c-sources: |
    cbits/the_dependency.c
          cbits/a_dependent.c

Fails during invocation of hpack with

FWIW, the root cause here is https://ghc.haskell.org/trac/ghc/ticket/13786

@quasicomputational thanks a lot for the pointer.

@CthulhuDen thanks for providing this minimal example!  This is certainly helpful!

The workaround you provided for now kinda works, only you need to also account for indentation (and ignore hpack warning about missing file):

hpack should take care of indentation.  The following works just fine for me:
  verbatim:
    c-sources: |
      cbits/the_dependency.c
      cbits/a_dependent.c

Can you double check?
Also, what exact warnings regarding files do you get?

@sol yes indeed it works. I just didn't pay attention to that verbatim key, thought it was a dummy section or something. My mistake :-)

This will be addressed in hpack-0.30.0.  I'll try my best to push this out soon, but there are a couple of other things that should still go into 0.30.0.


'extra_data' in 'items_rooms'

(this is with the new commits)
I found quite some people sturggling with this issue,
In your old database (before the release of the new cata etc)
'extra_data' was a varchar(7000)
But in the newest database (new cata etc)
You changed the varchar(7000) to a text
Because of this people cant buy furni and for some weird reason, when i buy furni with the extra_data as a text
All items_rooms id's will become '0'
For some weird reason.
But if i change it back to varchar(7000) it works totally fine

Ok i will search about it.


Version number on published binaries

adifmt is indispensible. Thank you for making it, there's literally nothing like it.
So of course I tried to automate updating it. :) Unfortunately, that's not possible based on the information your repository provides, unless I must download it every time I run my update script:
The executable always reports its version number as '(devel)' (in --version') while the github binary release is currently invariably tagged as 'latest', and apparently overwritten, if I understand the go-build.yml` properly...

Thanks for filing this issue, I'm glad you find adifmt useful!
Could you say more about how you're trying to automate updates?
I'm still figuring out how to effectively use the automatic GitHub build process, as well as the proper use of tagging to make go install happy.  When the latest commit is associated with a tag, I thought go install would show the correct version, e.g. prior to my push this weekend adifmt version printed adifmt version v0.1.8-0.20230516025727-029457f65a0b for a command installed via go install github.com/flwyd/adif-multitool/adifmt@latest.  However, if you install from source (e.g. git clone https://github.com/flwyd/adif-multitool && cd adif-multitool && go install ./adifmt) or (I think) from an @latest when there isn't a tag, adifmt version will indeed print (devel) as the version information.
As you pointed out, it looks like GitHub workflows were making binaries available on the "Latest" version and not on the tagged version, even when I git push --tags to get the code and tags uploaded at the same time.  In 490f97ae1acb5578cba0bae1b7710475c517b35b I've attempted to change this to only building on new version tags.  Next time I push a new version (hopefully soon, to implement some feature requests), we'll see if this works.

Could you say more about how you're trying to automate updates?

Installing binaries from github releases is a repeating pattern, so I have a whole script framework to deal with this by now:
update-adifmt:
#!/bin/bash

source "$(dirname $0)/_bash_tools.sh"

EXECFILE=$HOME/.local/bin/adifmt
REPO=flwyd/adif-multitool

if ! $(isexec $EXECFILE); then
        exit 0
fi
updating adifmt

CURRENT=$(adifmt --version | head -n 1 | awk '{print $3}')
UPSTREAM=$(release_tag $REPO)

if [ "$CURRENT" != "$UPSTREAM" ]; then
        URL=$(release_url_r $REPO 'linux-amd64$')
        wget -O $EXECFILE "$URL"
        chmod +x $EXECFILE
else
        noneed adifmt
fi

_bash_tools.sh:
#!/bin/bash

# Stolen from https://stackoverflow.com/questions/4023830/how-to-compare-two-strings-in-dot-separated-version-format-in-bash
vercomp() {
	if [[ $1 == $2 ]]; then
		return 0
	fi
	local IFS=.
	local i ver1=($1) ver2=($2)
	# fill empty fields in ver1 with zeros
	for ((i = ${#ver1[@]}; i < ${#ver2[@]}; i++)); do
		ver1[i]=0
	done
	for ((i = 0; i < ${#ver1[@]}; i++)); do
		if [[ -z ${ver2[i]} ]]; then
			# fill empty fields in ver2 with zeros
			ver2[i]=0
		fi
		if ((10#${ver1[i]} > 10#${ver2[i]})); then
			return 1
		fi
		if ((10#${ver1[i]} < 10#${ver2[i]})); then
			return 2
		fi
	done
	return 0
}

# Github releases helpers

# $1 is to be user/repo, $2 is the search string for the download url.
release_url() {
	echo $(curl -s https://api.github.com/repos/$1/releases/latest | jq -r ".assets[] | select(.browser_download_url | contains (\"$2\")) | .browser_download_url")
}
# Same but with a regexp filter
release_url_r() {
	echo $(curl -s https://api.github.com/repos/$1/releases/latest | jq -r ".assets[] | select(.browser_download_url | test (\"$2\")) | .browser_download_url")
}

# Same, but only returns filenames, should help with sorting out release number in some cases.
release_name() {
	echo $(curl -s https://api.github.com/repos/$1/releases/latest | jq -r ".assets[] | select(.name | contains (\"$2\")) | .name")
}

# Returns the release tag name for $1.
release_tag() {
	echo $(curl -s https://api.github.com/repos/$1/releases/latest | jq -r .tag_name)
}

# Generic helpers: Is a file available and executable?
isexec() {
	if [[ -f "$1" && -x $(realpath "$1") ]]; then
		true
	else
		false
	fi
}

# Same but for which X
isexecwhich() {
	EXECNAME=$(which "$1")
	if [[ -f "$EXECNAME" && -x $(realpath "$EXECNAME") ]]; then
		true
	else
		false
	fi
}

# Fetch and install a deb.
fetchdeb() {
	wget -O /tmp/pkg.deb "$1"
	sudo apt install /tmp/pkg.deb
	rm /tmp/pkg.deb
}

# Dumb shorthand
updating() {
	echo === Updating $1 ===
}

noneed() {
	echo No need to update $1
}

# push a dir, git pull in it, pop update pattern.
gitpulldir() {
	if [ -d "$1" ]; then
		updating $(basename $1)
		pushd $1 >/dev/null
		git pull
		popd >/dev/null
	fi
}

There's an update-xxxx for every X installed this way, dealing with its quirks (parsing out version number, etc). But this approach inevitably requires that:

The program report an actual version number.
That version number be matchable to a github release tag after some massaging.

Binaries built for adifmt currently don't do 1 and github repo itself doesn't do 2.

After a couple rabbit hole adventures, I've learned the following:

My attempted fix to the GitHub workflow didn't work; the release workflow is configured to do "prerelease"/latest builds.  It's also out of date, and it may be prudent to switch to a different releaser action.
I think I want to split the build and release workflows.  Build + test should run on each commit and PR, but release should only happen on semver-shaped tags.
adifmt version prints (devel) if you build from source that's checked out locally (which is what the GitHub workflow is doing), but it prints the appropriate version tag if you install it via go install github.com/flwyd/adif-multitool/adifmt@latest.  The runtime/debug.BuildInfo docs don't explain this very well.

golang/go#37475 added VCS info to build info, including the SHA and dirty state of locally but not including tags.
There are a lot of potential corner cases with embedding tags (like what happens if the local repo has different tags than the origin), so it seems unlikely that the Go team will add that feature.
The popular way to embed the version info from a GitHub action is using go build -ldflags to set a version variable.  I think I'll do that; TBD whether the version var or runtime info should take precedence.  Printing Main.Sum from runtime in addition to the friendly semantic version is probably also useful.

I recognize that go install isn't how the shell scripts above work, but if you want an accurate version tag, that approach is available now.  I hope to have time to fuss with the GitHub workflow in the coming days.

I recognize that go install isn't how the shell scripts above work, but if you want an accurate version tag, that approach is available now.

Just an accurate version tag on the executable wouldn't be enough even if I was up to building it from source every time. The repository only contains one release, and it's named "latest", so I wouldn't have anything to compare the accurate version tag to.

If building from source you could check the first item in https://api.github.com/repos/flwyd/adif-multitool/tags that matches v[0-9].* and then go install github.com/flwyd/adif-multitool/adifmt@$tag.

I've restructured the build and release workflows today, and produced a release for v0.1.12-rc1.  The adifmt version command now has the same first line if downloaded from the release or if built via go install.  On any pull request or branch push, the "Build and test" workflow will create artifacts for each platform; adifmt version for those include the latest tagged semver followed by a hyphen and additional commit details (this is generated by git describe --dirty).
Let me know if this matches your expectations.

Thank you, my script works as is now! :+1:


line 479 __verbose improvement if use set -Eeou pipefail inside release.sh script

If you use inside release.sh script: set -Eeou pipefail

semtag line:479  => local __verbose=${2:-''}

By the way the release.sh could be changed to work outside the source code and and .gitignore "semtag*" or similar. Improvement would be rewrite to script to change version in all files recursive in an given release folder - but its questionary to change always the source code to add the version number.

to be honest, I kind of hate the release.sh script, as it actually changes the code of the executable file, happy to get PRs though


MetaDraw change color of variant containing ions

I think that we should add these three psm fields to the Properties window of the metadraw output (Intersecting Sequence   Variations,  Identified Sequence Variations ,  Splice Sites).

Also, this is not specific to variants, but I have a hard time seeing the yellow dot at the front of this annotated sequence. maybe a slightly darker color like orange?

I think that we should add these three psm fields to the Properties window of the metadraw output (Intersecting Sequence Variations, Identified Sequence Variations , Splice Sites).

I added those properties and changed the modification color on the annotated base sequence to orange.

seeing some strange things related to variants in metadraw. just loaded a tsv with only two variant psms from a raw file but I see five scans listed. first three are incorrect but last two are correct.

in the properties window, variantcrossingions is not displaying the ions, but instead an error


Exception when verifying after upload

FTP OS: Unix
FTP Server: Apache FTP Server
Computer OS: Windows
When calling client.UploadFile with FtpVerify.Retry I sometimes get an error if the destination server decides to move the file prior to FluentFTP getting the checksum. The exception is then interpreted as a transfer error, when in fact the transfer was OK but the checksum failed (due to the file not being accessible shortly after upload completed).
The exception 2018-04-25 14:14:38.989 -07:00 [Error] Exception while sending to ftp target FluentFTP.FtpCommandException: Command Not Implemented for the Specified Argument
Is there a combination of flags I can use to mean verify if the file is still present after upload, otherwise move on (and do not throw) ?
Logs :

2018-04-25 14:14:38.490 -07:00 [Debug] # Connect()
2018-04-25 14:14:38.490 -07:00 [Debug] Status:   Connecting to xxx.xxx.xxx.xxx
2018-04-25 14:14:38.537 -07:00 [Debug] Response: 220 Service ready for new user.
2018-04-25 14:14:38.537 -07:00 [Debug] Command:  USER ftp_xxxxx
2018-04-25 14:14:38.552 -07:00 [Debug] Response: 331 User name okay, need password for ftp_xxxxx
2018-04-25 14:14:38.552 -07:00 [Debug] Command:  PASS ***
2018-04-25 14:14:38.568 -07:00 [Debug] Response: 230 User logged in, proceed.
2018-04-25 14:14:38.568 -07:00 [Debug] Command:  FEAT
2018-04-25 14:14:38.583 -07:00 [Debug] Response: 211 End
2018-04-25 14:14:38.583 -07:00 [Debug] Response: 211-Extensions supported
Response: SIZE
Response: MDTM
Response: REST STREAM
Response: LANG en;zh-tw;ja;is
Response: MLST Size;Modify;Type;Perm
Response: MODE Z
Response: UTF8
Response: TVFS
Response: MD5
Response: MMD5
Response: MFMT
2018-04-25 14:14:38.583 -07:00 [Debug] Status:   Text encoding: System.Text.UTF8Encoding
2018-04-25 14:14:38.583 -07:00 [Debug] Command:  OPTS UTF8 ON
2018-04-25 14:14:38.599 -07:00 [Debug] Response: 200 Command OPTS okay.
2018-04-25 14:14:38.599 -07:00 [Debug] Command:  SYST
2018-04-25 14:14:38.615 -07:00 [Debug] Response: 215 UNIX Type: Apache FtpServer
2018-04-25 14:14:38.615 -07:00 [Debug] Status:   Auto-detected UNIX listing parser
2018-04-25 14:14:38.615 -07:00 [Debug]
2018-04-25 14:14:38.615 -07:00 [Debug] # SetWorkingDirectory("/")
2018-04-25 14:14:38.615 -07:00 [Debug] Command:  CWD /
2018-04-25 14:14:38.630 -07:00 [Debug] Response: 250 Directory changed to /
2018-04-25 14:14:38.630 -07:00 [Debug]
2018-04-25 14:14:38.630 -07:00 [Debug] # UploadFile("yak.txt", "yak.txt", Overwrite, False, Retry)
2018-04-25 14:14:38.630 -07:00 [Debug]
2018-04-25 14:14:38.630 -07:00 [Debug] # FileExists("yak.txt")
2018-04-25 14:14:38.630 -07:00 [Debug]
2018-04-25 14:14:38.630 -07:00 [Debug] # GetWorkingDirectory()
2018-04-25 14:14:38.630 -07:00 [Debug] Command:  PWD
2018-04-25 14:14:38.646 -07:00 [Debug] Response: 257 "/" is current directory.
2018-04-25 14:14:38.646 -07:00 [Debug] Command:  SIZE /yak.txt
2018-04-25 14:14:38.677 -07:00 [Debug] Response: 550 /yak.txt: No such file or directory.
2018-04-25 14:14:38.677 -07:00 [Debug]
2018-04-25 14:14:38.677 -07:00 [Debug] # OpenWrite("yak.txt", ASCII)
2018-04-25 14:14:38.677 -07:00 [Debug] Command:  TYPE A
2018-04-25 14:14:38.693 -07:00 [Debug] Response: 200 Command TYPE okay.
2018-04-25 14:14:38.693 -07:00 [Debug]
2018-04-25 14:14:38.693 -07:00 [Debug] # OpenPassiveDataStream(AutoPassive, "STOR yak.txt", 0)
2018-04-25 14:14:38.693 -07:00 [Debug] Command:  EPSV
2018-04-25 14:14:38.708 -07:00 [Debug] Response: 229 Entering Extended Passive Mode (|||99999|)
2018-04-25 14:14:38.708 -07:00 [Debug] Status:   Connecting to xxx.xxx.xxx.xxx:99999
2018-04-25 14:14:38.724 -07:00 [Debug] Command:  STOR yak.txt
2018-04-25 14:14:38.739 -07:00 [Debug] Response: 150 File status okay; about to open data connection.
2018-04-25 14:14:38.739 -07:00 [Debug] Status:   Disposing FtpSocketStream...
2018-04-25 14:14:38.942 -07:00 [Debug] Response: 226 Transfer complete.
2018-04-25 14:14:38.958 -07:00 [Debug] Command:  MD5 yak.txt
2018-04-25 14:14:38.973 -07:00 [Debug] Response: 504 Command Not Implemented for the Specified Argument
2018-04-25 14:14:38.973 -07:00 [Debug]
2018-04-25 14:14:38.973 -07:00 [Debug] # Dispose()
2018-04-25 14:14:38.973 -07:00 [Debug] Status:   Disposing FtpClient object...
2018-04-25 14:14:38.973 -07:00 [Debug] Command:  QUIT
2018-04-25 14:14:38.989 -07:00 [Debug] Response: 221 Goodbye.
2018-04-25 14:14:38.989 -07:00 [Debug] Status:   Disposing FtpSocketStream...
2018-04-25 14:14:38.989 -07:00 [Debug] Status:   Disposing FtpSocketStream...

FluentFTP.FtpCommandException: Command Not Implemented for the Specified Argument
   at FluentFTP.FtpClient.GetMD5(String path)
   at FluentFTP.FtpClient.GetChecksum(String path)
   at FluentFTP.FtpClient.VerifyTransfer(String localPath, String remotePath)
   at FluentFTP.FtpClient.UploadFileFromFile(String localPath, String remotePath, Boolean createRemoteDir, FtpExists existsMode, Boolean fileExists, Boolean fileExistsKnown, FtpVerify verifyOptions, IProgress`1 progress)
   at FluentFTP.FtpClient.UploadFile(String localPath, String remotePath, FtpExists existsMode, Boolean createRemoteDir, FtpVerify verifyOptions, IProgress`1 progress)
   ...

I'm not sure if this is a bug or a feature request. And as to the flags, I'm not sure how any library should detect if the transfer was successful if the server decided to immediately move the file. If you could contribute another mode of verification it would be appreciated, but again, I'm not sure what that mode would do or check. If you feel there is a fix here, reply and I'll reopen.


[Improve][transform-v2] Support dynamic types for array function

Array function support string, double, long, int types.
Currently, sql parse does not support float and boolean.

Purpose of this pull request

Does this PR introduce any user-facing change?

How was this patch tested?

Check list

[ ] If any new Jar binary package adding in your PR, please add License Notice according
New License Guide
[ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/seatunnel/tree/dev/docs
[ ] If you are contributing the connector code, please check that the following files are updated:

Update plugin-mapping.properties and add new connector information in it
Update the pom file of seatunnel-dist
Add ci label in label-scope-conf
Add e2e testcase in seatunnel-e2e
Update connector plugin_config

[ ] Update the release-note.

@Hisoka-X PTAL

Please resolve conflict. Thanks


panic:the stream contains non-printable characters at line 8, column 1:    ^=^C^DaAambBdbdcdoeEeneqfFgegogt ...     ^

YAMLError: the stream contains non-printable characters at line 8, column 1:
^=^C^DaAambBdbdcdoeEeneqfFgegogt ...
^
at generateError (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:88:12)
at throwError (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:91:11)
at captureSegment (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:154:20)
at readPlainScalar (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:331:13)
at composeNode (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:944:28)
at readBlockMapping (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:706:20)
at composeNode (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:934:84)
at readDocument (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:1055:5)
at loadDocuments (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:1093:9)
at load (https://deno.land/std@0.173.0/encoding/_yaml/loader/loader.ts:1112:23)

What command was being run?

The YAML must have been corrupted somehow. But yes, what command was run?


Elites parameter in genetic algorithm

The best individuals are always carried over to the next generation without crossover and mutation. This helps avoid degradation of solution quality between generations.

You are right, the CLI was not supported. I added an elites argument.

You are right, the CLI was not supported. I added an elites argument.

@peterNordin any ideas why the ghactions tests are failing? It fails to download Qt for some reason.

@peterNordin any ideas why the ghactions tests are failing? It fails to download Qt for some reason.

Yes, the Qt download servers crashed or something. If appveyor is green in this case, go ahead and merge

Yes, the Qt download servers crashed or something. If appveyor is green in this case, go ahead and merge


Can we add some concrete examples for JavaScript initializers in this page?

[EDIT by guardrex to change the metadata to point to the Startup topic, where we can place the examples with existing ones.]
Examples are:

Ensuring that your library is loaded before Blazor Starts.
Automatically loading the scripts that your library needs.
Ensuring that Blazor has been initialized before calling into it from your library.

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

ID: ad891f84-d11e-e334-fcdc-b55c5171fca4
Version Independent ID: 11f8db3d-9988-e0a1-89c5-c3552ee47b93
Content: ASP.NET Core Blazor startup
Content Source: aspnetcore/blazor/fundamentals/startup.md
Product: aspnet-core
Technology: aspnetcore-fundamentals
GitHub Login: @guardrex
Microsoft Alias: riande

I'm changing the metadata for this b/c this was classified as a fundamental startup concept and placed in the Startup doc at ...
https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/startup?view=aspnetcore-6.0#javascript-initializers
... which is cross-linked from the JS interop topic. I think I'll adjust the cross-link to make it more obvious in the JS interop overview section.
We'll add the scenario examples to the Startup topic.

I'm going to place my notes here and mark this back off of In progress to P1 until I get a clearer understanding for each ask. Right now, here are the directions that I was thinking ...

Ensuring that your library is loaded before Blazor Starts.
For this, does one add async="false" and defer="false" with a script tag appended to the head (in code) in beforeStart?
We already show a script tag appended to the head in beforeStart; so if that's correct, I just need to show an example of adding async and defer after the existing example.

Automatically loading the scripts that your library needs.
As I said, we already show a script tag appended to the head in beforeStart.
Do you want to add the approach for modules of using an import statement ... and if so ...
(a) What should the doc say about adding an import statement to the top of the *.lib.module.js file? ... anything in particular about it?
(b) Using a dynamic import({MODULE PATH}); statement within beforeStart? ... anything in particular?

Ensuring that Blazor has been initialized before calling into it from your library.
This doesn't just mean calling the library's initialization FN from afterStarted? I guess I'm not clear on where/when you mean for the "calling into it" part of that.

Another ? #1 ...
Does the IIFE pattern play a role in any JS initializer scnearios?

Another ? #2 ...
Should the guidance state that it's OK for a dev to export custom JS FNs from within the *.lib.module.js file SxS with beforeStart/afterStarted?


fix: Bringing in some of the changes from Zettelkasten feedback back home

[x] fix: Bringing in feedback from The Archive;
[x] Commit built themes
[x] feat: Treating built files as binaries

This includes the feedback from @DivineDominion over at
Zettelkasten-Method/The-Archive-Themes#19.

Thanks @sgoudham for the initial review. I'll be updating the README in this PR
as well since the upstream PR is merged too. I'll fix this up shortly.

Thanks @sgoudham. I've made those changes. Now that the upstream ticket is
merged, can I go ahead an cut a release of this for 1.0.0? Or how should that
stuff work?

can I go ahead an cut a release of this for 1.0.0? Or how should that
stuff work?

So for "simple" ports generated by whiskers which involve simply moving files from the repository to another directory, we've moved away from creating releases since it's a high maintenance burden (unnecessary CI/CD to create a release, update changelogs, attaching files which are already present in the repository, etc)
I think it's best if we discuss on discord to formalise the strategy of release management across Catppuccin for the different types of ports that we have (if you're interested in contributing to that discussion)
I think it'd be fine to create a v1.0.0 git tag but not a GitHub release if you're really wanting to track the version with semver.

I think it'd be fine to create a v1.0.0 git tag but not a GitHub release if you're really wanting to track the status of the files with semver.

Thanks. I'll think about doing this. The main reason is that the upstream theme is versioned and I'd like to have this repo reflect that versioning. I may also need to make some tweaks to the colors so I'd like to version it in case feedback comes in that some of the colors don't look great / could be better.

Yeah it's interesting since the version tag is explicitly in the files. I don't mind if we setup release-please (which is what I'm aiming for all ports in the organisation to standardise on) but I'd like to avoid it for such a "simple" repository.
My first preference here would definitely be to just create git tags and leave it at that.


Consider Adding Responsible Social Share Links

I have resisted adding social share links because of potential privacy concerns. We certainly do not want to scare off people from using our site.
This page may provide a solution:
Responsible Social Share Links
https://jonsuh.com/blog/social-share-links/#use-share-urls
Is this aproach okay to add? I would like to hear thoughts about it.

The "easy" way to implement this is to add it to the page footer.  Then people can EASILY create links to ANY page.
The footer I have in mind looks like this:
Share with: Twitter Reddit Facebook LinkedIn Google+
I don't know if we need to translate the names (since they are names).  I don't see why we'd use Pinterest.
Thoughts?


Change executeCommand return type typing

Problem
Here's the current typing of excuteCommand:
export function executeCommand<T>(command: string, ...rest: any[]): Thenable<T | undefined>;

Command such as vscode.executeLinkProvider will always return a value instead of undefined. However the current typings mean that you have to handle undefined
(await vscode.commands.executeCommand<vscode.DocumentLink[]>('vscode.executeLinkProvider', file))!

Proposed change
I propose that we change the typings of executeCommand to simply return a Thenable<T>:
export function executeCommand<T = unknown>(command: string, ...rest: any[]): Thenable<T>;

For commands that do return undefined, users can type them to explicitly list that they return undefined:
vscode.commands.executeCommand<string | undefined>('my.command')

/verified


Fixes "No georeferenced data" dialog.

Fixes #3198.
We were generating the localStorage key using the id (name) of the table. So if you created/imported a new table with the name of a previously existing table, the localStorage key already existed and we din't display that dialog. It's an edge case.
Instead of relying on table.id, I added the map_id to the key, which is the only attribute that seemed unique in the table metadata (I was planning to use created_at but it wasn't present). I'm open to suggestion on better ways to generate a unique id for the table metadata.
@javisantana, this one is for you! :)

Frontend tests were OK :+1: (details)

:es:


[Feature] Report Automation Workflows - DM and Deletions

Is your feature request related to a problem? Please describe.
As a moderator, I want to be made aware of when a report of mine has been actioned or requires additional steps to be taken by me (for example, a ticket needs to be opened to finish processing the report).
As a Discord employee, I want report channels to automatically clean themselves up after a report has been processed. After a standardized reaction has been added to a report, the report should delete itself in roughly 48 hours to keep the channel clean.
Describe the solution you'd like
When a reaction is added, users should receive a DM from the bot containing the following:

A brief description of the state of the report

If the report was actioned, rejected (including information of why it may have been rejected), unactionable, or more appropriate for a ticket.

If a ticket is necessary, a link to go to the Zendesk portal for filing a T&S report.
A (truncated) copy of the initial report
A jump link to the initial report.

A DM shall only be sent upon the first reaction to a message. Any reactions not from Discord staff (including additional reactions) shall be deleted and not trigger further events such as the deletion timer.
After a reaction is added, a 48 hour timer should start to message deletion. Once the reaction on the message is 48 hours old, trigger a job to delete that message from the channel.
Additional context
Sample Embeds (note the missing emoji, this is a restriction of the test environment that this embed was generated from.)

Implementation Details from Discord:
It is safe to assume that emotes will be consistent, but check for names as well. Check order should be by known reaction ID then by reaction name where easily distinct (actioned, not actioned, cant action). If a reaction is received that is not known, pass a generic message to the end user.
Timed message deletion should be handled through Redis, taking in the redis URL and creating a client from environment variable REDIS_URL. Use from_url method to retrieve URL where appropriate.

Soft block by #3 for the deletion feature (scheduling a oneshot).