Add basic build cancellation

Cancelling the build is a desirable function. For example, let's say one wanted
to hook up inotify to trigger a build/run cycle when code was edited. At the
moment if there were multiple changes in quick succession, you would end up
with many in-flight builds contending with each other, and no way to cancel
them other than restarting the docker daemon.
This PR has been optimised for being the smallest useful change. It does not
represent the full changes needed to cancel in all circumstances yet. That
will come later, first I hope to disseminate some understanding of how to
achieve this.
Currently it only allows cancellation during the command running phase. If the
command is a RUN statement, the container is killed. Other statements are
not currently interrupted but instead the build is cancelled just before
the next statement.
Cancellation can be used by non-docker clients by cancelling the http request.
There is an example of how to do that here:
https://github.com/fsouza/go-dockerclient/pull/183

Add the capability to cancel the build by disconnecting the client.
This adds a cancelled channel which is used to signal that a build
should halt. The build is halted by sending a Kill signal and noticing
that the cancellation channel is closed.
This first pass implementation does not allow cancellation during a
pull, but that will come in a subsequent PR.
See also:
https://github.com/docker/docker/issues/3654
https://github.com/docker/docker/issues/6928
Next on my TODO list will be to implement the same thing in a similar style
for docker pull, if this PR is accepted. That change will automatically
make the pull phase of builds cancellable, too.
Docker-DCO-1.1-Signed-off-by: Peter Waller<EMAIL_ADDRESS>(github: pwaller)

I think it's an awesome idea and simple implementation.  Lets do it.
I'm thinking of the best way to handle the racy job close, I'm leaning towards a sync.Once like you said.

@SvenDowideit does this require an API version number bump?

I've added docs to the cli reference.
Does anyone have any opinion on how to implement a test for this? It's not clear that it's possible to do it reliably without introducing some way of listing on-going builds.

Maybe for a test we could do a RUN sleep 5 and cancel during that sleep.  It may work but could be racy.  It's a little hard to have a test.

Hm. One possibility is to have a process which blocks indefinitely. Then it would always be obvious if it halted due to the cancel or not. The downside is that if the test is broken (because the cancellation feature is broken), the docker daemon will have a stuck process. The test itself could have a long timeout to ensure that it doesn't cause builders to be stuck indefinitely.

The tests have a timeout so I think that would work.  When we cancel the build we send a quit any current processes and that will make it unblock.  Sounds much better to me.

@pwaller the API doc for next release is the 1.17 one, so you should be good to add there

@SvenDowideit I'm done with the documentation as far as I'm concerned, PTAL
Everyone: I'm going to write a test for this, but I'm a little busy and it might take up to ~1 week.

@pwaller drone complains that you need do gofmt builder/job.go

Okay, I just added 9fb1e21, which is a first go at testing this. I would appreciate anyone cross-checking my race analysis. I would love to know if docker events is well behaved with respect to the start epoch.
It's tricky because really the test needs to know when the container has started and when it has exited. I've used the output of docker events for this purpose which may be iffy. It appears to work reliably in the number of times I've tried it.
I've also tested that running the test on master fails after the default TIMEOUT. That's quite long, so I'm tempted to insert our own <-time.After() in a select with <-eventDie since we know it shouldn't take longer than, say, 30s.
@SvenDowideit PTAL at the documentation :book:
@LK4D4 PTAL especially at the test, whilst wearing your concurrency wizard hat :8ball:
Comments welcome from all!

Hmm. I didn't receive notification of the failed test. The current situation is that the test works fine when it is run alone, but when run with other tests it fails:
Works:
+time make TESTFLAGS='-v -run ^TestBuild(Can)' test-integration-cli
-time make TESTFLAGS='-v -run ^TestBuild(Can|For)' test-integration-cli

So it seems I still have more work to do.
Can anyone tell me how to make the daemon emit verbose debugging output during the tests?

Build passes. It was failing because it was seeing the start from the previous test. I've "fixed" it by making the regex more specific. I fear though that in the future someone else could come along and add another test which could break this one. So I could use some input from testing gurus, if anyone knows who to ping.

I'd like to wait for after 1.5 to merge this, since this is just a first step.

maybe we should add to "next" milestone or is that confusing?
On Wed, Jan 14, 2015 at 12:54 PM, Tibor Vass<EMAIL_ADDRESS>wrote:

I'd like to wait for after 1.5 to merge this, since this is just a first
step.
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/9774#issuecomment-69989609.

@jfrazelle its probably better (less ambiguous) to make a 1.6 milestone or even a consider for 1.6

true trueeee
On Wed, Jan 14, 2015 at 5:46 PM, Sven Dowideit<EMAIL_ADDRESS>wrote:

@jfrazelle https://github.com/jfrazelle its probably better (less
ambiguous) to make a 1.6 milestone or even a consider for 1.6
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/9774#issuecomment-70027401.

Rebased to account for new documentation and test.
What is the timeline for 1.5/1.6? When is a good time to ping the thread alive again? I assume after 1.5 is released would be a good time to start thinking seriously about this again.

+1 being able to Ctrl-C stuff would be lovely

Ping anyone @crosbymichael (please see my above post).

@pwaller I'll add this to the 1.6 milestone, thanks for working on this.

Docs LGTM - @fredlf @jamtur01
I wonder if its really desirable for the build to stop when my internet connection times out on my mobile phone connection to the remote swarm - but perhaps that's a corner case.

@SvenDowideit isn't that the sort of thing you want to solve with a tmux or some other solution? Because you probably want the output to still go somewhere useful in that case, in case of build failure, for example.
I strongly think that disconnecting from the docker server should usually be interpreted as a cancellation signal.

I strongly think that disconnecting from the docker server should usually be interpreted as a cancellation signal.

Hm, not sure. Dropping connection is (in most cases?) not an explicit action by the user.
Is it possible to distinguish an explicit CTRL+C from a dropped connection? If it is, I'd be +1 on only canceling on an explicit CTRL+C.

@thaJeztah The way I look at the problem is this: what should happen if the docker client process is killed or un-cleanly terminated?
At the moment, a build you can't see or synchronise with continues in the background. It may more may not complete at some point in the future and make a new tag.
Most users at the moment, if they're closing their docker client during a build, it's presumably because the build needs tweaking. If they cancel, tweak and resubmit, then they've now got two builds (one invisible) racing each other.
The only way I'm aware of to respond to a remote processes being killed or un-cleanly shutting down is by responding to the socket close. If people strongly want the ability to detach from their build process, this should be provided by some mechanism which has a reliable connection to the target API (i.e, it should at least on the same machine, e.g, it could be a tmux, or maybe the mechanism could sit separately from docker build in the docker server).

(But I'm not sure I see a strong argument for "oh, if my network connection dies I want the build to blunder on in the background". I use a mobile connection all the time and I don't think this behaviour is desirable. If I want to cope with the connection dropping to a remote docker server, I would use a tmux).

Yes, you are right. For some reason I had my wires crossed and had docker pull cancelation in mind (issue https://github.com/docker/docker/issues/6928). For pull, I can see it useful to have docker continue if my connection is lost. Build should indeed be cancelled.

@thaJeztah Well, I would argue the same applies for pulls, really. In my ideal world, pulls would be reference counted and when the last docker client requesting that pull disconnects the pull should be cancelled. Otherwise again, it might consume expensive resources (e.g, mobile bandwidth), if I set something going and then can't cancel it.

@pwaller it really depends on the situation I guess. However, I think #6928 is a more appropriate location for brainstorming on that; don't want to mess up this thread with non (directly) related discussions.

I've rebased against master and updated the location of the "What's new".

Is there any way to tell if these failures are related to my implementation?

I should add that I can't reproduce the failure locally.

want to rebase and squash your commits?

Is it procedure to squash commits?

Rebased. If you see failed tests please ping the thread.

Unless there's a reason to keep commit separate (like you want to isolate features for easier review), yea its pretty common to just squash 'em into one.

I've reduced it into four commits to limit the "fix foo" line-noise. But unless anyone suggests otherwise, I think leaving these commits broken up like this may be helpful for future bisection.

Heads up, I've tested it locally and it passes. I apologise in advance if it freezes the builders, but it shouldn't. It froze last time due to a semantic change from the rebase. Apologies again for that!

Rebased for merge conflict in docker_remote_api_v1.17.md.

I've rebased and squashed to a single commit.
Locally, master currently appears to take a long time for the tests to complete (before applying my patch). Is there a known problem?
It's in:
go test -test.timeout=30m github.com/docker/docker/daemon/graphdriver/devmapper

Please ping me if the test fails.

We have moved this to code review.

@pwaller looks like the integration-cli tests cannot be compiled due to a syscall see jenkins. Can you update?

Updated @jfrazelle.

cool I like how simple the implementation is, will try again tomorrow but so far seems good to me :) ping @crosbymichael too

I've added a trivial commit on the end so as not to nullify the review so far. I'll squash the commit when I next rebase or when it's ready for merging.

Tests pass locally for me, is anyone in a position to understand the windows failure? I don't use windows. @crosbymichael @jfrazelle

windows seems unrelated but can you rebase and we can try to get this in today for 1.6.0 (today is freeze) thanks so much @pwaller

On it, @jfrazelle.

Rebased, tested locally works. Please ping me if you see failed tests and I will respond as fast as I can, though I will have having food. I'll also be leaving ~4-5 hours after this message.

Awesome thanks so much, testing now!

LGTM, note the API docs should be in 1.18 but we can update that after the fact

Uh, are they not in v1.18 already? Or were you meaning something else?

@jfrazelle janky build passed, FWIW.

yay ping @crosbymichael  @LK4D4

hmmm this one is failing on windows "--- FAIL: TestBuildCancelationKillsSleep (0.55s)
docker_cli_build_test.go:2049: wait failed during build run: *exec.ExitError exit status 1
docker_cli_build_test.go:2019: docker events had bad exit status: exit status 1"

ah its an events think I would maybe just skip it on windows for now

I would use a testRequires(t, SameHostDaemon) for now and we can make a follow up patch to make it work on windows :)

@pwaller @jfrazelle if that's the case, then let's add a TODO above it :)

yes for sure you can even assign to me

On it.

@jfrazelle it's green :)

yayyyy!
On Fri, Mar 20, 2015 at 2:44 PM, Peter Waller<EMAIL_ADDRESS>wrote:

@jfrazelle https://github.com/jfrazelle it's green :)
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/9774#issuecomment-84160619.

overall it looks good, just a few comments/questions.

@tiborvass  @duglin responded to comments, PTAL. I'm ~relatively unlikely~ to respond today, may respond over weekend.

@pwaller there's still this one: https://github.com/docker/docker/pull/9774#discussion_r26883677

I think I have addressed things. PTAL.

@jfrazelle there were failures but they seem unrelated, please advise. :)

Thanks @pwaller for reworking the timeouts and comments--much clearer and understandable now.  I'm good with this @jfrazelle ; the TestPullEventsVerified has some real (known) issue, so it definitely has nothing to do with your code changes.

It is a registry issue they are looking into it
On Saturday, March 21, 2015, Peter Waller<EMAIL_ADDRESS>wrote:

@jfrazelle https://github.com/jfrazelle there were failures but they
seem unrelated, please advise. :)
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/9774#issuecomment-84305540.

@spf13, is there some implication I need to act on that you've tagged this with kind/writing?

nah don't worry
On Saturday, March 21, 2015, Peter Waller<EMAIL_ADDRESS>wrote:

@spf13 https://github.com/spf13, is there some implication I need to
act on that you've tagged this with kind/writing?
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/9774#issuecomment-84428644.

@duglin  You think this one can get in today

We can always make minor adjustments after instead of having to go back and
forth :)
On Saturday, March 21, 2015, Jessica Frazelle<EMAIL_ADDRESS>wrote:

nah don't worry
On Saturday, March 21, 2015, Peter Waller<EMAIL_ADDRESS><javascript:_e(%7B%7D,'cvml','notifications@github.com');>> wrote:

@spf13 https://github.com/spf13, is there some implication I need to
act on that you've tagged this with kind/writing?
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/9774#issuecomment-84428644.

@duglin as requested, I removed the code from engine/http.go.

Failure is still TestPullVerified.

@pwaller thanks! LGTM

rebuilding, and will merge after CI passes, thanks so much for being so responsive @pwaller :D

Thanks @jfrazelle and everyone who contributed! Glad to have completed this :)


[Issue #472] Move results from NlpEntityOperator to its own attribute

This PR adds a new property spanListName to NlpEntityOperator. This option lets users to specify the name of the column where the spanList results will be put into. If the spanListName is not specified or empty, then the name will be specified by system.

Similar to the other PR (https://github.com/TextDB/textdb/pull/477), LGTM. It will be good add a comment to the codebase to explain the logic.


Weather overlay location not updating in Sonoma 14.0

General troubleshooting tips
Before logging an issue please check that:

[x] You have the latest version installed (There may be a beta version that fixes your issue), see here for the latest releases and bug fixes: https://github.com/JohnCoates/Aerial/releases
[x] Your issue isn't already mentioned in our issues. You may find a workaround there or a similar request already made.
[x] Your problem isn't mentioned in the troubleshooting page.

If none of this fixes your issue, tell us about the problem you are experiencing or the feature you'd like to request.
Required information
In order to help us sort your issue, we ask that you provide the following information:

[x] Mac model: 2022 M2 13" MBP
[x] macOS version: 14.0
[x] Monitor setup: built-in display only

If appropriate, please enable Debug mode and Log to disk in Advanced tab and replicate your bug, then attach the AerialLog.txt file (You can access this file through the Advanced tab).
Description of issue / Feature request
Whenever I take my laptop to work, the location used for the weather overlay never updates.
I tried re-installing Aerial through Homebrew and the issue persisted.
I tried turning location services off and the program was still pulling a location for me - my home city.
After reviewing the log file (attached), it looks like Aerial is using cached location data rather than dynamically updating my location as it did under Ventura.
AerialLog.txt

Quick update, I think I can confirm that this is a new restriction. Usually allowing legacyScreenSaver to access your location was enough but for some reason it fails :
2023-10-05 19:39:56.151 : Starting Location initialization
2023-10-05 19:39:56.151 : Location services disabled
2023-10-05 19:39:56.151 : Couldn't retrieve your location, using latest cached coordinates instead

I'll try to dig a bit but it's just one more of these annoying restrictions. As a workaround in the meantime, if you use Aerial Companion, because it's unrestricted (providing you allow it to use your location, obviously, that's in system settings), it should be able to look up your location fine and the screensaver will use that later on.

Can confirm Aerial Companion is able to access my location as I move around. Likely going to use that moving forward. Thanks for the tip!

Spoke too soon - I'm seeing the same issue in the Aerial Companion log as well. Did the exact same troubleshooting steps and it's still pulling my work address rather than my home address.
Probably going to turn the overlay off for the time being and turn it back on if/when there's a solution. Thank you for looking into this!
AerialUnderCompanionLog.txt

I think because it caches your location, it will only look it up again if you quit/restart Companion.
It's not great and I'll try to think of a workaround for this.

@stilwellweather

please download https://github.com/AerialScreensaver/AerialCompanion/releases/download/v1.5.2/Aerial.Companion.zip
put it in your Applications folder and launch it, make sure it says 1.5.2 in the menu.
update to Aerial (screensaver) 3.3.4 when prompted

Afterwards location should work again. Please note though, weather is cached for 15 minutes between launches (this is to make sure we don't get kicked of the free weather forecast api). Let me know how it works for you.

Sure thing!

I'm remote today - I'll be able to report if the location automatically updates tomorrow. Thanks for jumping on this so quick!

Looks like it's updating like it did pre-Sonoma. I work where three different municipalities overlap and it looks like the overlay is moving between the municipalities (which is normal behavior) like before. I'd consider this resolved.

Awesome, thanks for confirming ! there's a 15 mins delay between updates so it's possible if your commute is short you get the wrong location (and it was exactly the same before), but for 99.9% of the cases it should be fine !
Closing this, let me know if you still hit an issue, take care!


Support numeric attribute values

Sorry, I thought I was clicking a "review" button 😇
This looks good to me! I missed it and made my own branch just now. But yours looks better, I missed that we can remove the HTML escaping for this branch. I do have a test if you want to copy it into yours. https://github.com/phlex-ruby/phlex/compare/integer-float-attributes

Sorry, I should have assigned the issue to myself. I'll copy your test.

@willcosgrove what are your thoughts on falling back to to_str here? This seems to be more suitable than to_s. See https://blog.appsignal.com/2018/09/25/explicitly-casting-vs-implicitly-coercing-types-in-ruby.html


please reopen unwelcome welcome window

David Bannon, you  closed #116 because you didn't get my reply. However
I did respond, by email, in reply to your email Apparently that doesn't get through to you. Here is the text I sent:
"Ok, I did as directed:
Hover the mouse over the error messages and it tells you to go to settings, Snaphots and click Recover. Read the intro screen, take a safety snapshot, click "Existing Notes" tab. If you are sure you don't need the bad note, delete it or double click it to take things further.
FormRecover window said there was one bad note. I deleted it, but saw, upon fiddling, that there were a number of notes that wouldn't open. Neither would they open from the Search window. So, I made the search window bigger so I cold see the file names, for each unopenable note, opened it with notepad++, made a small change and saved. Some of them became opened, I think but not all of them. (I did it hours ago. Sorry I didn't document anything at the time.)

I did not finish doing the above for all unopenable notes.
In any case, the FormRecover Window says there are no bad notes, the splash window does not show at startup if that box isn't checked, which is different and better, but if it does start with splash, the app crashes when the splash is X-ed closed.
So that is still buggy."
Now I will add a different bug, that one can't cntrl+shift+arrow key (any) to select blocks of text, although cntrl+arrow,shift+arrow (r & L only), home+arrow and end +arrow do work as expected.

Ed, I have reopened the other ticket, lets treat this one as dealing with the keyshortcut issue that you mention ?
Always good to try and keep to one ticket, one issue. Avoids issues being glossed over.
On my system Shift-Arrow moves and selects, I think you agree. What is it you expect Ctrl-Shift-Arrow to do ?
Many of these keyshortcuts are defined in the underlying KMemo component (think of it as a library) and as its cross platform, there are issues of the various platforms not agreeing on what should happen.
Davo

Ah, another user has also asked for Ctrl-Shift-Arrow, apparently it should select a word at a time. I have committed changes to make it do so, next release, should fix that for you.
Davo


Remove Richelieu app - replace with something else

GSIP has a small map app used to demo water data in the Richelieu watershed.

Should be removed
Could be replaced with something else (page presenting the system ?)

Perfect. Thanks @jabdali.


tls: client offered an unsupported, maximum protocol version of 300

1. What version of Caddy are you running (caddy -version)?
Caddy 0.9.3
2. What are you trying to do?
Reverse proxy a synapse server, and accessing it from the Riot Android app.
3. What is your entire Caddyfile?
synapse.club-tech.fr {
	tls<EMAIL_ADDRESS>	proxy / <IP_ADDRESS>:8008 {
		transparent
	}
	log matrix.access.log {
		import logrotate.caddyfile
	}
}

4.
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp

Using the default systemd service.
5. What did you expect to see?
Connexion between the server and the client app going through Matrix's authentication.
6. What did you see instead (give full error messages and/or log)?
"Handshake failed" in the app, and
2016/11/06 19:34:43 http: TLS handshake error from [my phone's IP]:1107: remote error: tls: internal error
2016/11/06 19:34:43 http: TLS handshake error from [my phone's IP]:1260: tls: client offered an unsupported, maximum protocol version of 300

in the Caddy error log.
When accessing the server directly, everything works fine.
7. How can someone who is starting from scratch reproduce this behavior as minimally as possible?
Install Synapse, use the above Caddy configuration, and try to access it via the Riot Android app (using the hostname and port set up in Caddy so it goes through Caddy).

It looks like your app doesn't support modern TLS protocols. Can you reproduce this error without Synapse? And riot? Simplify your setup to reduce error surface area.

I don't think it makes sense to reproduce without the app, as it seems to be the one producing the error, or Synapse because the request clearly don't go that far.
As far as I understood, the issue lies within the Riot app, so I opened an issue on their repo under https://github.com/vector-im/vector-android/issues/680

I don't think it makes sense to reproduce without the app, as it seems to be the one producing the error

And that's what I was getting at -- thanks for opening the issue with the other project. :)
I'll close this for now but if some new evidence can be presented and this can be confirmed to be a bug in Caddy we will re-investigate it!

This message has been making a mess of my log files, drowning anything else that /might/ be in there. It looks like in my case the message is caused by HAProxy's health checking. I've now changed HAProxy's health check method from SSL to Basic which will just check whether it can create a basic socket connection instead of looking for an SSL endpoint. I don't know if any of that makes a difference here, but I thought I'd post, since I came across this issue while figuring out what was going on.

@sbuller These error messages come from the Go standard library; you will probably have to take up an issue there if you want it to change.


Reimplement the Anchor object

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

This was replaced by the hide_node attribute on the Node object.


Added weapon node support

Created a list holding weapon nodes. These nodes have additional update steps.

Don't we need to update the VS files too so they'll be included in the project?

Yeah. But I also changed lots of other things in the vs file since my local environment is quite different.
I just uploaded the vcxproj file as well


Keep GitHub project count up to date

This updates at build time. Let's consider how to get it up to date.

Two things we can do here:

Create a GitHub action that builds the project nightly/weekly.
Round (to the floor) to the hundreds, format, and add "+" — e.g. "Used in 2,500+ projects"


Difference between dropping server manually and serve_with_shutdown

Feature Request (Question really)
Motivation
The method tonic::transport::server::Router::serve_with_shutdown (and serve_with_incoming_shutdown) allows aborting a tonic server with the help of anything implementing Future<Output = ()>. However, there is a primitive in the futures crate that allows you to wrap and abort any future at will: futures::future::Abortable. Another way of making a future abortable is something like:
tokio::select! {
    _ = tonic_router.serve() => { eprintln!("Server error"); }
    _ = some_channel_receiver => { println!("Server aborted by signal"); }
}

Is one way preferred over the others for a good reason? Would tonic not be able to clean up properly if a tonic_router.serve() future is just dropped?
Proposal
If there is a technical reason one way of aborting a server is better than any other, then it would be nice if the docs for serve_with_shutdown and serve_with_incoming_shutdown mentioned that, so users don't shut down servers in bad ways.
If all ways of aborting a server future are equivalent, it might still be nice if the documentation said that just dropping the normal serve() future is also a correct way of stopping the tonic server. The existence of dedicated serve futures allowing clean shutdown makes me wonder if the normal one won't cut it or be problematic.

So basically, dropping the server will forcefully cancel all connections and not perform a proper drain/shutdown. This is because it basically just deallocates the future. Abortable does this when you cancel since it can only drop the future, it can't tell it to start shutting down. While using the special shutdown methods on the server will allow hyper to gracefully drain all connections and gracefully close the H2 connection. So in general its preferred to go with the shutdown method rather than abortable.

Thanks for the reply!
I thought most async sockets do properly close themselves when dropped thanks to their Drop implementation. But I guess proper/gracefully in this case maybe involves sending some good bye message to the peer? Or what's the reason it can't clean up during drop? I know Drop does not support async dropping yet, but this has been discussed. Would it be possible to make tonic clean up properly by dropping after async dropping is implemented in the language?

Possibly! But async drop just like regular drop is still optional so there is a chance it doesn't get called. What we generally prefer for async tasks that can gracefully shutdown is to pass in a handle and let them exit gracefully instead of forcing it to end on drop.

Good to know. I just now released triggered to get some primitives that were easy to use with serve_with_shutdown.

Cool! Looks like we can close this issue then, feel free to reopen if you have questions :)


Extracting extended types of decomposed parts.

Towards #1087

Current coverage is 95.72%

Merging #1168 into master will decrease coverage by -0.05% as of 7435277

@@            master   #1168   diff @@
======================================
  Files           77      77
  Stmts         9128    9137     +9
  Branches      1716    1716
  Methods          0       0
======================================
+ Hit           8742    8746     +4
  Partial         93      93
- Missed         293     298     +5

Review entire Coverage Diff as of 7435277

Powered by Codecov. Updated on successful CI builds.

<unw00t>Subtypes still not extracted right for deeper nested examples.</unw00t>


Make setAutoCommit() method implementation safe.

In the class SQLDroidConnection, modify the setAutoCommit() method to invoke endTransaction() only after checking that the current thread has a transaction pending in the database.  This is to avoid some intermittent 'database locked' behavior observed from the android.database.sqlite.SQLiteDatabase class in some versions of Android SDK. I don't have a reproducible use case but the change should make the code safe anyway.

@dperiwal This is done, right?

Yes @donv , This is fixed. Thanks.


Changed spectroscopy notebook

@ch-stefanhi the automatic deployment of this fails with the following error:
Exception occurred:
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/nbformat/reader.py", line 26, in parse_json
    raise NotJSONError(message) from e
nbformat.reader.NotJSONError: Notebook does not appear to be JSON: '{\n "cells": [\n  {\n   "cell_type": "m...
The full traceback has been saved in /tmp/sphinx-err-bvsazt39.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at <https://github.com/sphinx-doc/sphinx/issues>. Thanks!
make: *** [Makefile:20: dirhtml] Error 2
Error: Process completed with exit code 2.

does that make sense to you? do you know how the notebook can be fixed to solve this?

No clue atm, but I can send you the notebook via email as soon as I'm home (approx 21:00)

From: Kjartan Thor Wikfeldt @.>
Sent: Tuesday, October 24, 2023 5:50:35 PM
To: ENCCS/qas2023 @.>
Cc: Stefan Hill @.>; Mention @.>
Subject: Re: [ENCCS/qas2023] Changed spectroscopy notebook (PR #12)
@ch-stefanhihttps://github.com/ch-stefanhi the automatic deployment of this fails with the following error:
Exception occurred:
File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/nbformat/reader.py", line 26, in parse_json
raise NotJSONError(message) from e
nbformat.reader.NotJSONError: Notebook does not appear to be JSON: '{\n "cells": [\n  {\n   "cell_type": "m...
The full traceback has been saved in /tmp/sphinx-err-bvsazt39.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at https://github.com/sphinx-doc/sphinx/issues. Thanks!
make: *** [Makefile:20: dirhtml] Error 2
Error: Process completed with exit code 2.
does that make sense to you? do you know how the notebook can be fixed to solve this?
—
Reply to this email directly, view it on GitHubhttps://github.com/ENCCS/qas2023/pull/12#issuecomment-1777528490, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BCSPCQYLNA5DPIJ74ETRFQDYA7PUXAVCNFSM6AAAAAA6N2YFQ6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZXGUZDQNBZGA.
You are receiving this because you were mentioned.Message ID: @.***>

there seems to be some error with the json itself. A JSON validator (https://www.freeformatter.com/json-validator.html) gave this diagnosis: The JSON input is NOT valid according to RFC 4627 (JSON specification). Unexpected character (}) at position 12514.
Haven't easily found this position yet...

is there maybe supposed to be a png image file where the caption is "The qubit frequency is: 4.009GHz"? This png is embedded in the notebook. If possible add the png file itself to the repo and link to it. I'm guessing that the error is because of the long string representing an image on line 276 in the json file


Node suport

NectarJS Client v0.0.46
OS: Ubuntu Gnome 16.04
Node: v7.10.1
I try use node modules and doesn't work.
Example:
var koa = require('koa')
var app = new koa()
I just receive: Compilation error
Obs: I'm not using --single

NectarJS 0.1.0 has now "env" compilation option. node env is compiled with LibUV and is able to support NodeJS API, modules etc.


FALCON-2010 Fix UT errors due to ActiveMQ upgrade

Fixed two test failures due to the upgrade:

JMSMessageConsumerTest
After upgrade, some messages are consumed faster and so the initial expectation on no message being dequeued right after the message sending doesn't hold. Also confirmed with @bvellanki that this kind of tests are flaky and have caused intermittent test errors before. Therefore, removed getTotalDequeueCount assertion. In addition, the expected message consumptions are tested in existing code "Mockito.verify(jobEndService,...".

FalconPostProcessingTest
After upgrade, Falcon will run into an error if it tries to delete messages when ActiveMQ service is stopped. Therefore, need to call start before deleting the message during teardown.

+1 for the patch other than the minor comment.

+1


change property visibility to protected

Turning the visibility of the properties protected makes the class useable for extension.

Or: there are already getters for both of them, but sadly internally they are not used. Which would solve the problem too…

You make a valid point, I overlooked the getters. Thanks!


help with building: is there a way to build without strong name

I'm facing issues building this repository when I try to run the binaries in debug\net40\bin:
C:\dev\src\github.com\Microsoft\visualfsharp\Debug\net40\bin>fsi.exe

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'fsi, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A) ---> System.Security.SecurityException: Strong name validation failed. (Exception from HRESULT: 0x8013141A)
   --- End of inner exception stack trace ---

I think for developer coming around and trying to get a version for debug, doing away with strong naming would not be an issue.
Is there a way to disable strong naming in the build?

The issue is that I'm running outside of admin prompt:
Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Failed to open registry key -- Administrator permissions are needed to use the selected options. Use an administrator command prompt to complete these tasks.

I'd like to know if we can circumvent the issue, AFAIK only clobbering the visual studio install (which I really don't want to do as same machine is used to work on F# code besides the compiler) requires those elevated rights.
I can't find the pieces in the build script which involves calling sn.exe nor I understand why it requires administrator command prompt.

It should be signed with OpenSourceSigning rather than delay signing.  Which means that it is loadable even though not fully signed.  "You still can't put it in the GAC but ... that shouldmn't be to problematic.
I will update the build scripts to either: make it use OSS sign by default or add an option.
Kevin

Yes it looks like we are using delay signing for the OSS build:
d:\KevinRansom\visualfsharp\debug\net40\bin>fsi
Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'fsi, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A) ---> System.Security.SecurityException: Strong name validation failed. (Exception from HRESULT: 0x8013141A)
   --- End of inner exception stack trace ---

d:\KevinRansom\visualfsharp\debug\net40\bin>sn -vf fsi.exe

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.33440
Copyright (c) Microsoft Corporation.  All rights reserved.

fsi.exe is a delay-signed or test-signed assembly

d:\KevinRansom\visualfsharp\debug\net40\bin>

Okay ... it works:
d:\KevinRansom\visualfsharp\debug\net40\bin>"c:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools"\sn.exe -Vl

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.33440
Copyright (c) Microsoft Corporation.  All rights reserved.

No verification entries registered

d:\KevinRansom\visualfsharp\debug\net40\bin>"c:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools"\x64\sn.exe -Vl

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.33440
Copyright (c) Microsoft Corporation.  All rights reserved.

No verification entries registered

d:\KevinRansom\visualfsharp\debug\net40\bin>fsi

Microsoft (R) F# Interactive version 4.1
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> #quit;;

d:\KevinRansom\visualfsharp\debug\net40\bin>

I am going to clean some more stuff up.  PR will follow shortly.

Build with the argument publicsign ngen will not work, shadow copy won't work, adding these assemblies to the gas will no longer work.


SearchAfter method overload with params argument translated into wrong json request

NEST/Elasticsearch.Net version:
7.6.1
Elasticsearch version:
7.6.0
Description of the problem including expected versus actual behavior:
Usage of method overload SearchAfter(params object[] searchAfter) results in assignment of array of arrays to search_after field in request.
It looks like this
    "search_after": [
        [
            ... sorts ...
        ]
    ]

Intead of being like this
    "search_after": [
            ... sorts ...
    ],

As elastic API expects
https://www.elastic.co/guide/en/elasticsearch/reference/7.11/paginate-search-results.html#search-after
As result API returns this error
Elasticsearch.Net.ElasticsearchClientException: Request failed to execute. Call: Status code 400 from: POST /{index-name}/_search?typed_keys=true. ServerError: Type: parsing_exception Reason: "Expected [VALUE_STRING] or [VALUE_NUMBER] or [VALUE_BOOLEAN] or [VALUE_NULL] but found [START_ARRAY] inside search_after."

Steps to reproduce:
You can reproduce this case by passing any type except IList in order to trigger SearchAfter(params object[] searchAfter) overload.
Having
class Doc
{
    public DateTime AddDate { get; set; }
}

This will use overload with SearchAfter(IList<object> searchAfter) and will generate correct request.
ISearchRequest SetupSearchRequest<T>(
    SearchDescriptor<T> descriptor,
    IReadOnlyCollection<object> cursor) where T: Doc
{
    descriptor = descriptor.Sort(s => s.Ascending(f => f.AddDate)).Size(10);
    if (cursor != null)
    {
        descriptor = descriptor.SearchAfter(cursor.ToList()); //explicit cast to list
    }
    return descriptor;
}

This will use overload SearchAfter(params object[] searchAfter) and will generate incorrect request
ISearchRequest SetupSearchRequest<T>(
    SearchDescriptor<T> descriptor,
    object cursor) where T: Doc
{
    descriptor = descriptor.Sort(s => s.Ascending(f => f.AddDate)).Size(10);
    if (cursor != null)
    {
        descriptor = descriptor.SearchAfter(cursor);
    }
    return descriptor;
}

Hi @bogdankolomiec706. I don't believe this is a bug but simply how params functions. It can accept either, one or more objects, or an array of objects. Since it seems you're passing an IReadOnlyCollection it's likely that it's being treated as the first object for the object array, resulting in an array within an array in serialisation. If you call cursor.ToArray() it should be interpreted as you intend.

Hi @stevejgordon , IReadOnlyCollection is a type of Sorts property of IHit interface, so I just passed back to library what it has returned to me from previous response.

@bogdankolomiec706 That's a fair criticism of the current design which I'm going to address by adding an IEnumerable overload for the fluent syntax. This will make using the sort from the previous search a cleaner experience. The params overload is likely to be more rarely needed but does have potential use cases. We may review this design further in a future major release but hopefully, my upcoming PR will improve consumption patterns such as yours.

PR is merged for 7.12.0 release.


CUDA SETUP BUG

===================================BUG REPORT===================================
Welcome to bitsandbytes. For bug reports, please submit your error trace to: https://github.com/TimDettmers/bitsandbytes/issues
CUDA SETUP: Required library version not found: libsbitsandbytes_cpu.so. Maybe you need to compile it from source?
CUDA SETUP: Defaulting to libbitsandbytes_cpu.so...
dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so, 0x0006): tried: '/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so' (not a mach-o file), '/System/Volumes/Preboot/Cryptexes/OS/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so' (no such file), '/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so' (not a mach-o file)
CUDA SETUP: Required library version not found: libsbitsandbytes_cpu.so. Maybe you need to compile it from source?
CUDA SETUP: Defaulting to libbitsandbytes_cpu.so...
dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so, 0x0006): tried: '/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so' (not a mach-o file), '/System/Volumes/Preboot/Cryptexes/OS/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so' (no such file), '/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so' (not a mach-o file)
/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/bitsandbytes/cextension.py:31: UserWarning: The installed version of bitsandbytes was compiled without GPU support. 8-bit optimizers and GPU quantization are unavailable.
warn("The installed version of bitsandbytes was compiled without GPU support. "

same help

Oh wow yeah I got that one too! Haha I'm not alone! Yes!


Memory Leak issue with Xgboost c_api

Hi Team,
I am getting huge memory leak while using xgboost c_api like ( XGDMatrixCreateFromMat, XGBoosterPredict, XGBoosterLoadModel). I have used valgrind to detect the leak. Following is the summary.
Xgboost Version: 0.90
valgrind Log:
==179722== LEAK SUMMARY:
==179722==    definitely lost: 1,872 bytes in 78 blocks
==179722==    indirectly lost: 12,652,023 bytes in 4,474 blocks
==179722==      possibly lost: 54,624 bytes in 65 blocks
==179722==    still reachable: 86,664 bytes in 5 blocks
==179722==         suppressed: 0 bytes in 0 blocks
One example of valgrind message:
==72562==    at 0x4C29343: operator new(unsigned long) (vg_replace_malloc.c:334)
==72562==    by 0x4F9C209: xgboost::gbm::GBTreeModel::Load(dmlc::Stream*) (in /xgboost/lib/libxgboost.so)
==72562==    by 0x4F9F23A: xgboost::gbm::GBTree::Load(dmlc::Stream*) (in /xgboost/lib/libxgboost.so)
==72562==    by 0x4FB80B9: xgboost::LearnerImpl::Load(dmlc::Stream*) (in /xgboost/lib/libxgboost.so)
==72562==    by 0x4EE1AE6: XGBoosterLoadModel (in /xgboost/lib/libxgboost.so)
is there any work around for the above ? Could any one please help me ?

Could you provide a reproducible example?  We run sanitizer at test so I would like to confirm the error is in XGBoost.

I have run valgrind for demo/c-api from xgboost compiled directory and below is the log.
Note: I have changed "cc=g++ -std=c++11" at Makefile and make use "auto" instead of "hist" at line 37 (c-api-demo.c)
Valgrind log:
-rwx------ 1 r622244 rqd_ml_appdev 11437 Oct 30 08:41 c-api-demo
-rw------- 1 r622244 rqd_ml_appdev  3073 Oct 30 08:41 c-api-demo.c
-rw------- 1 r622244 rqd_ml_appdev   154 Oct 11 06:28 CMakeLists.txt
-rw------- 1 r622244 rqd_ml_appdev   412 Oct 30 08:36 Makefile
-rw------- 1 r622244 rqd_ml_appdev   966 Oct 11 06:28 README.md
-bash-4.1$ valgrind --leak-check=yes --track-origins=yes --leak-check=full --show-leak-kinds=all ./c-api-demo
==132552== Memcheck, a memory error detector
==132552== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==132552== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==132552== Command: ./c-api-demo
==132552==
[08:42:23] 6513x127 matrix with 143286 entries loaded from ../data/agaricus.txt.train
[08:42:25] 1611x127 matrix with 35442 entries loaded from ../data/agaricus.txt.test
[08:42:31] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 12 extra nodes, 0 pruned nodes, max_depth=3
[0]     train-error:0.014433    test-error:0.016139
[08:42:36] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 10 extra nodes, 0 pruned nodes, max_depth=3
[1]     train-error:0.014433    test-error:0.016139
[08:42:41] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 12 extra nodes, 0 pruned nodes, max_depth=3
[2]     train-error:0.014433    test-error:0.016139
[08:42:47] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 12 extra nodes, 0 pruned nodes, max_depth=3
[3]     train-error:0.008598    test-error:0.009932
[08:42:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 12 extra nodes, 0 pruned nodes, max_depth=3
[4]     train-error:0.001228    test-error:0.000000
[08:43:00] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 12 extra nodes, 0 pruned nodes, max_depth=3
[5]     train-error:0.001228    test-error:0.000000
[08:43:06] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 12 extra nodes, 0 pruned nodes, max_depth=3
[6]     train-error:0.001228    test-error:0.000000
[08:43:13] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 12 extra nodes, 0 pruned nodes, max_depth=3
[7]     train-error:0.001228    test-error:0.000000
[08:43:20] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 12 extra nodes, 0 pruned nodes, max_depth=3
[8]     train-error:0.001228    test-error:0.000000
[08:43:27] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 12 extra nodes, 0 pruned nodes, max_depth=3
[9]     train-error:0.001228    test-error:0.000000
y_pred: 0.0239 0.9544 0.0239 0.0239 0.0490 0.1056 0.9544 0.0288 0.9544 0.0242
y_test: 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 1.0000 0.0000
==132552==
==132552== HEAP SUMMARY:
==132552==     in use at exit: 124,968 bytes in 68 blocks
==132552==   total heap usage: 3,103 allocs, 3,035 frees, 59,957,373 bytes allocated
==132552==
==132552== 128 bytes in 1 blocks are still reachable in loss record 1 of 6
==132552==    at 0x4C28D23: malloc (vg_replace_malloc.c:299)
==132552==    by 0x6010578: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x6018FEC: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x600EC11: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x400E9CE: dl_init (in /lib64/ld-2.12.so)
==132552==    by 0x4000B69: ??? (in /lib64/ld-2.12.so)
==132552==
==132552== 192 bytes in 1 blocks are still reachable in loss record 2 of 6
==132552==    at 0x4C28D23: malloc (vg_replace_malloc.c:299)
==132552==    by 0x6010578: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x601792A: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x4FA24E7: dmlc::Parser* dmlc::data::CreateLibSVMParser(std::string const&, std::map<std::string, std::string, std::lessstd::string, std::allocator<std::pair<std::string const, std::string> > > const&, unsigned int, unsigned int) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4F9E0F6: dmlc::Parser* dmlc::data::CreateParser(char const*, unsigned int, unsigned int, char const*) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4EB92DB: xgboost::DMatrix::Load(std::string const&, bool, bool, std::string const&) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4E9C07F: XGDMatrixCreateFromFile (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x400BF3: main (in /data/rqd/home/r622244/xgboost/demo/c-api/c-api-demo)
==132552==
==132552== 520 bytes in 1 blocks are still reachable in loss record 3 of 6
==132552==    at 0x4C28C6D: malloc (vg_replace_malloc.c:298)
==132552==    by 0x4C2AC39: realloc (vg_replace_malloc.c:785)
==132552==    by 0x60105C8: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x6017E71: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x4FA24E7: dmlc::Parser* dmlc::data::CreateLibSVMParser(std::string const&, std::map<std::string, std::string, std::lessstd::string, std::allocator<std::pair<std::string const, std::string> > > const&, unsigned int, unsigned int) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4F9E0F6: dmlc::Parser* dmlc::data::CreateParser_(char const*, unsigned int, unsigned int, char const*) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4EB92DB: xgboost::DMatrix::Load(std::string const&, bool, bool, std::string const&) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4E9C07F: XGDMatrixCreateFromFile (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x400BF3: main (in /data/rqd/home/r622244/xgboost/demo/c-api/c-api-demo)
==132552==
==132552== 13,120 bytes in 1 blocks are still reachable in loss record 4 of 6
==132552==    at 0x4C28D23: malloc (vg_replace_malloc.c:299)
==132552==    by 0x6010578: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x6016F09: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x601372B: GOMP_parallel_start (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x4F3AAD8: xgboost::obj::RegLossObjxgboost::obj::LogisticClassification::PredTransform(std::vector<float, std::allocator >) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4EA45AB: XGBoosterPredict (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x400DA9: main (in /data/rqd/home/r622244/xgboost/demo/c-api/c-api-demo)
==132552==
==132552== 38,304 bytes in 63 blocks are possibly lost in loss record 5 of 6
==132552==    at 0x4C2AAB5: calloc (vg_replace_malloc.c:711)
==132552==    by 0x4011D02: _dl_allocate_tls (in /lib64/ld-2.12.so)
==132552==    by 0x62322CC: pthread_create@@GLIBC_2.2.5 (in /lib64/libpthread-2.12.so)
==132552==    by 0x601740F: ??? (in /apps/anaconda/4.3.1/3/lib/libgomp.so.1.0.0)
==132552==    by 0x4FA24E7: dmlc::Parser dmlc::data::CreateLibSVMParser(std::string const&, std::map<std::string, std::string, std::lessstd::string, std::allocator<std::pair<std::string const, std::string> > > const&, unsigned int, unsigned int) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4F9E0F6: dmlc::Parser* dmlc::data::CreateParser_(char const*, unsigned int, unsigned int, char const*) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4EB92DB: xgboost::DMatrix::Load(std::string const&, bool, bool, std::string const&) (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x4E9C07F: XGDMatrixCreateFromFile (in /apps/anaconda/4.3.1/3/lib/libxgboost.so)
==132552==    by 0x400BF3: main (in /data/rqd/home/r622244/xgboost/demo/c-api/c-api-demo)
==132552==
==132552== 72,704 bytes in 1 blocks are still reachable in loss record 6 of 6
==132552==    at 0x4C28D23: malloc (vg_replace_malloc.c:299)
==132552==    by 0x529ED2F: ??? (in /apps/anaconda/4.3.1/3/lib/libstdc++.so.6.0.21)
==132552==    by 0x400E9CE: _dl_init (in /lib64/ld-2.12.so)
==132552==    by 0x4000B69: ??? (in /lib64/ld-2.12.so)
==132552==
==132552== LEAK SUMMARY:
==132552==    definitely lost: 0 bytes in 0 blocks
==132552==    indirectly lost: 0 bytes in 0 blocks
==132552==      possibly lost: 38,304 bytes in 63 blocks
==132552==    still reachable: 86,664 bytes in 5 blocks
==132552==         suppressed: 0 bytes in 0 blocks
==132552==
==132552== For counts of detected and suppressed errors, rerun with: -v
==132552== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4)
-bash-4.1$

Just ran sanitizer  with c-api-demo.c, didn't find any leak.  Will try valgrind later, I have very limited network access at the moment.

Using XGBoosterFree and XGDMatrixFree the memory leak reduced. hence closing the ticket.


fixfmt: fix all usages of %u so that u is a type, not a modifier

The rest of the world uses %u to mean unsigned decimal. Plan 9
uses it as a modifier, which is arguably better, but what can we do?
You don't always get to pick the standard.
This change modifies libc/fmt so that %u is unsigned decimal, and
modifies most uses of it so the kernel almost boots. Almost. Obviously
we didn't get them all yet.
It hangs in ipconfig.
Signed-off-by: Ronald G. Minnich<EMAIL_ADDRESS>

after a year, and seeing what happend with ipconfig last months, we should import that ip stack from BSD about we were talking last summer.

ipconfig is fixed. It all boots now.

LGTM


feat(form): add $dirtyAfter state to form controls

This is my attempt to add features to client side validation and inline form validation.
The aim of having a $dirtyAfter state per control is to track user's progress through the form and not display validation messages prematurely.

I've decided that this will not be implemented. It adds a layer of complexity to the ngModel / form API that not many poeple will benefit from. I also doubt that showing messages for skipped form fields is a common enough use case. Either your form fields need to be filled out in a specific order - then you have to implement the restriction anyway - or they don't have to be,


Use RbConfig instead of obsolete and deprecated Config.

Hi Guys,
While i work with his gem, i got the following error:
/path/gem/cocaine-0.2.0/lib/cocaine/command_line.rb:94: Use RbConfig instead of obsolete and deprecated Config.
This error appears when i executed my test suite with cucumber
This gem is use for paperclip
My current environment is:
Ruby 1.9.3
Rails 3.1.3
I solved the issue with the suggestion that appear on console, in others words i change the function Config by RbConfig at line indicated
I hope this help he for better his gems

This was actually fixed in 06f8ed6da248b5f168d0dd41dbd6c7830d38b907, but we haven't released a new gem with that fix in it yet.

Great!
I will update this gem :)


AttributeError: module 'omegaconf._utils' has no attribute 'is_primitive_type'. Did you mean: 'is_primitive_dict'?

I want to try using BioGPT and I followed the instructions to install the required tools (Moses、fastBPE、sacremoses、sklearn)
Then I run the following code
import torch
from fairseq.models.transformer_lm import TransformerLanguageModel
m = TransformerLanguageModel.from_pretrained(
        "checkpoints/Pre-trained-BioGPT",
        "checkpoint.pt",
        "data",
        tokenizer='moses',
        bpe='fastbpe',
        bpe_codes="data/bpecodes",
        min_len=100,
        max_len_b=1024)
m.cuda()
src_tokens = m.encode("COVID-19 is")
generate = m.generate([src_tokens], beam=5)[0]
output = m.decode(generate[0]["tokens"])
print(output)

but i get the following error
2023-03-29 14:46:39 | INFO | fairseq.file_utils | loading archive file checkpoints/Pre-trained-BioGPT
2023-03-29 14:46:39 | INFO | fairseq.file_utils | loading archive file data
Traceback (most recent call last):
  File "/home/rufus/Desktop/biogpt/BioGPT/fairseq/pre-trained_model.py", line 3, in <module>
    m = TransformerLanguageModel.from_pretrained(
  File "/home/rufus/Desktop/biogpt/BioGPT/fairseq/fairseq/models/fairseq_model.py", line 267, in from_pretrained
    x = hub_utils.from_pretrained(
  File "/home/rufus/Desktop/biogpt/BioGPT/fairseq/fairseq/hub_utils.py", line 73, in from_pretrained
    models, args, task = checkpoint_utils.load_model_ensemble_and_task(
  File "/home/rufus/Desktop/biogpt/BioGPT/fairseq/fairseq/checkpoint_utils.py", line 421, in load_model_ensemble_and_task
    state = load_checkpoint_to_cpu(filename, arg_overrides)
  File "/home/rufus/Desktop/biogpt/BioGPT/fairseq/fairseq/checkpoint_utils.py", line 328, in load_checkpoint_to_cpu
    old_primitive = _utils.is_primitive_type
AttributeError: module 'omegaconf._utils' has no attribute 'is_primitive_type'. Did you mean: 'is_primitive_dict'?

Where should my pre-trained BioGPT model code be placed?

I am also getting error with omegaconf. Did you find solution?

For anyone who is facing this issue, try to replace is_primitive_type with is_primitive_type_annotation


Disable codesigning and avoid building test for Xcode 8.0 and Carthage.

Please see the followings for details:

https://github.com/Carthage/Carthage/issues/1378
https://github.com/Carthage/Carthage/issues/903

@mitsuse: Thanks for report this issue and helping fix it! Would this affect only Xcode 8.0?

Yes, this affects only Xcode 8.0! But, this is for Swift 2.3 rather than 3.0. I also built with Xcode 7.3 on Travis CI and use with Carthage on the local environment.

In addition, I tried building with Xcode 8.0 beta on Travis, but it failed because xctool seems to have no support for Xcode 8.0 yet.
I tested on the local environment instead, and it succeeded:-)

Oh it seems that we need 2 separate versions to support both Swift 2.3 and 3.0 when Xcode 8 debuts officially. What do you think?

@ninjaprox Thanks!  I think support for both version is needed but new features (animations) are not needed in Swift 2.3, at least for me. We must use Swift 2.3 until other libraries migrate to Swift 3...


App Submission - Twitch extended app

Hi, if you wish to maintain the app by your self, instead of this org, please consider changing the package id to your domain name (e.g. something like com.github.nourlie.twitchex) to avoid confusion.


Add available quantity range into the taker UI (and validate against it)

Currently, the taker has no idea how much they can take. We only happen know during testing, as we're the ones making the offers.

This has been implemented


Matomo upgrade 4151

Hmm @nigelgbanks do you want to try this and see if you get the same error?
#0 3.341  16950K .......... .......... .......... .......... .......... 99% 4.16M 0s
#0 3.352  17000K .......... .......... .......... .......... .......... 99% 47.2M 0s
#0 3.353  17050K .......... .......... .......... .......... .......... 99% 23.5M 0s
#0 3.356  17100K ...                                                   100% 6.21T=2.8s
#0 3.356
#0 3.356 2023-08-04 19:57:44 (6.05 MB/s) - '/opt/downloads/matomo-4.15.1.tar.gz' saved [17513813/17513813]
#0 3.356
------
ERROR: failed to solve: executor failed running [/bin/bash -euo pipefail -c download.sh         --url "${MATOMO_URL}"         --sha256 "${MATOMO_SHA256}"         --strip         --dest /var/www/matomo     &&     wget --directory-prefix=/var/www/matomo "https://raw.githubusercontent.com/matomo-org/matomo/${MATOMO_VERSION}/composer.json" &&     wget --directory-prefix=/var/www/matomo "https://raw.githubusercontent.com/matomo-org/matomo/${MATOMO_VERSION}/composer.lock" &&     composer require -d /var/www/matomo symfony/yaml:~2.6.0 &&     composer require -d /var/www/matomo symfony/process:^5.4 &&     composer install -d /var/www/matomo &&     download.sh         --url "${EXTRA_TOOLS_URL}"         --sha256 "${EXTRA_TOOLS_SHA256}"         --strip         --dest /var/www/matomo/plugins/ExtraTools &&     curl https://download.db-ip.com/free/dbip-city-lite-`date +%Y`-`date +%m`.mmdb.gz > /tmp/dbip.mmdb.gz &&         gunzip -f /tmp/dbip.mmdb.gz &&    mv /tmp/dbip.mmdb /var/www/matomo/misc/DBIP-City.mmdb &&     cleanup.sh]: exit code: 123
make: *** [bake] Error 1

Not clear where the failure is.

FYI this was checked out from https://github.com/Islandora-Devops/isle-buildkit/pull/278 and refreshed with latest main which should have Nigel's latest fixes as well. The challenge I'm getting is that the old PR above can't create a new site and now well can't build. Sigh.

Okay human error on my part. Wrong SHA will make things break and me a dull boy. Built on local with new SHA & Pushed for review.

Hi folks,
Thanks for your continued patience. I have currently been on a long vacation and am just coming back now to these great questions and comments.
I'll get some traction next week including answering @ysuarez and @nigelgbanks

Okay @nigelgbanks I think this is what was needed right? Pulled the monthly update out and we're ready to merge no?


Voice note Thumbnail is not transparent

This looks ugly on everything, that is not white, can you change it to a png/webp?

No, voice notes thumbnails can be only in JPEG format. This depends on the server and can't be changed client-side.

I know, that this depends on the server, but on official telegram apps you also have a transparent background. I think, the problem here is, that official tg doesn't use the thumbnail for voice notes so it doesn't mater, whether the display is  correct or not. Should I open a issue on the server?

Thumbnails format is very unlikely to be changed, because thumbnails are generated automatically and needs to be shown on an arbitrary background. Thumbnails with transparency will generally look much uglier on a random background then thumbnails without transparency. There are also a lot of other reasons to stick with JPEG.

Okey, then we try to find another solution for nightmode on ubuntu touch


Pt kernel changes

IMPORTANT: Please search among the Pull request before creating one.
Title

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] New feature (non-breaking change which adds functionality)

Description

Change PT kernel defaults, remove percentile/dnorm from arguments.
New defaults: nu: 1.0 -> 0.5; b: 20 -> 10.
How has this been tested?

Closes

As per our discussion, merging this.


Don't require two Stan programs to use standalone GQs (add a flag to services to turn off GQ block)

Summary:
This came up when @rok-cesnovar and I were discussing the PR to add standalone generated quantities to CmdStanR:
Using standalone generated quantities requires the user to keep two versions of their stan program, one without GQs (for MCMC) and one with GQs (for standalone GQs). This seems both unnecessary and error-prone (having to make edits in two places).
I propose we add a flag in the services that would run the Stan program without generated quantities.
Current Version:
v2.23.0

the problem is this:
class  stan/services/util/mcmc_writer.hpp has function write_sample_params - relevant part is here:  https://github.com/stan-dev/stan/blob/53fd0144fdcb769e0eda44e968c3672af4f2dd90/src/stan/services/util/mcmc_writer.hpp#L97-L112
is always writes out parameters, transformed parameters, and generated quantities all in one go - note args hardcoded to true, true.
you would need to add 1 or 2 args to set of sampler service methods and insure that these are passed along to the generate_transitions method which calles write_array
relevant files are:
src/stan/util/run_sampler.hpp
src/stan/util/run_adaptive_sampler.hpp
src/stan/util/generate_transitions.hpp
src/stan/sample/fixed_param.hpp

(writing this is giving me serious deja vu)

this use case would be a good one to use when working through proposals for better/more fine-grained I/O.

Thanks @mitzimorris. So the idea would then be to run generate quantities but not write them out? Or am I misunderstanding (quite possible)? I was thinking that we could just ignore the whole block so they don't get computed at all.

So the idea would then be to run generate quantities but not write them out?

the generated C++ code (i.e., stan.hpp) doesn't exactly line up with the named block structure of a Stan program, hence the confusion here - write_array writes parameter and transformed parameter values as well as running generated quantities block code and writing results.
you can pass in a flag which tells write_array to return instead of running generated quantities block.
let's make this concrete - here's the example bernoulli.stan code with addition of ppc checks in generated quantities block:
data {
  int<lower=0> N;
  int<lower=0,upper=1> y[N];
}
parameters {
  real<lower=0,upper=1> theta;
}
model {
  theta ~ beta(1,1);
  y ~ bernoulli(theta);
}
generated quantities {
  int y_rep[N];
  for (n in 1:N)
    y_rep[n] = bernoulli_rng(theta);
}

here's the generated write_array function which will:
a) transform theta back to constrained parameter space, add to vector vars__ - lines 24-31
b) (do the same  transformed parameters - in the ex, nothing to do)
c) compute generated quantities and write them out - lines 39-48
     1	  template <typename RNG>
     2	  inline void write_array(RNG& base_rng__, std::vector<double>& params_r__,
     3	                          std::vector<int>& params_i__,
     4	                          std::vector<double>& vars__,
     5	                          bool emit_transformed_parameters__ = true,
     6	                          bool emit_generated_quantities__ = true,
     7	                          std::ostream* pstream__ = nullptr) const {
     8	    using local_scalar_t__ = double;
     9	    vars__.resize(0);
    10	    stan::io::reader<local_scalar_t__> in__(params_r__, params_i__);
    11	    static const char* function__ = "bernoulli_ppc_model_namespace::write_array";
    12	(void) function__;  // suppress unused var warning
    13
    14	    (void) function__;  // suppress unused var warning
    15
    16	    double lp__ = 0.0;
    17	    (void) lp__;  // dummy to suppress unused var warning
    18	    stan::math::accumulator<double> lp_accum__;
    19	    local_scalar_t__ DUMMY_VAR__(std::numeric_limits<double>::quiet_NaN());
    20	    (void) DUMMY_VAR__;  // suppress unused var warning
    21
    22
    23	    try {
    24	      double theta;
    25	      theta = std::numeric_limits<double>::quiet_NaN();
    26
    27	      current_statement__ = 1;
    28	      theta = in__.scalar();
    29	      current_statement__ = 1;
    30	      theta = stan::math::lub_constrain(theta, 0, 1);
    31	      vars__.emplace_back(theta);
    32	      if (logical_negation((primitive_value(emit_transformed_parameters__) ||
    33	            primitive_value(emit_generated_quantities__)))) {
    34	        return ;
    35	      }
    36	      if (logical_negation(emit_generated_quantities__)) {
    37	        return ;
    38	      }
    39	      std::vector<int> y_rep;
    40	      y_rep = std::vector<int>(N, std::numeric_limits<int>::min());
    41
    42	      current_statement__ = 4;
    43	      for (int n = 1; n <= N; ++n) {
    44	        current_statement__ = 3;
    45	        assign(y_rep, cons_list(index_uni(n), nil_index_list()),
    46	          bernoulli_rng(theta, base_rng__), "assigning variable y_rep");}
    47	      for (int sym1__ = 1; sym1__ <= N; ++sym1__) {
    48	        vars__.emplace_back(y_rep[(sym1__ - 1)]);}
    49	    } catch (const std::exception& e) {
    50	      stan::lang::rethrow_located(e, locations_array__[current_statement__]);
    51	      // Next line prevents compiler griping about no return
    52	      throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***");
    53	    }
    54	    } // write_array()


Supports prepare and execute statement

What problem does the new feature solve?
For example:
PREPARE v1 AS SELECT 'Test' LIMIT ?
EXECUTE v1(1)

May depend on #470
What does the feature do?
Supports prepare and execute statements.
Implementation challenges
No response

Note that the "prepare" and "execute" statement in datafusion only support postgresql style. We can follow the postgresql's document for implementing this feature: https://www.postgresql.org/docs/current/sql-prepare.html

All other necessary features like plan cache and parameter type parsing and binding are implemented now, so I think this issue is relatively simple to Implement. Release to "good first issue".

Is this still active? If so, I'd like to take it :)
All stmts through client are treated as COM_QUERY so I wonder if it's appropriate to filter the prepare and execute out in the on_query here and fall back to on_prepare and on_execute:
https://github.com/GreptimeTeam/greptimedb/blob/7de336f0877aa2c0416e1e13de80c0eba46a6455/src/servers/src/mysql/handler.rs#L357

@CookiePieWw On first thought, it's a viable option. Thanks for your interest, assigned.

@MichaelScofield I created a draft PR for this. Now I get stuck in 2 problems here:

To execute a statement like EXECUTE stmt, we need to construct a map from the identifier of the statement to the stmt_id of the prepared one. I tried to add a field prepared_statements into QueryContext for that but it does not work actually. It seems I need to use the configuration_variables in Session for that? It's used in the SET variables stmt which may be similar.
I'm struggling in parsing the parameters from the string EXECUTE stmt USING param1, ... into &[ScalarValue] which is used by LogicalPlan.replace_params_with_values. I'd like to assume there're some existing tools for it? A compromising plan is to use pure strings and fall back to do_query like it in on_execute.
https://github.com/GreptimeTeam/greptimedb/blob/d8b51cfaba5118ce06e239e97d16e4b68d736dbf/src/servers/src/mysql/handler.rs#L336-L340

Would you like to give me some advice? Thanks! :)

@MichaelScofield I created a draft PR for this. Now I get stuck in 2 problems here:

To execute a statement like EXECUTE stmt, we need to construct a map from the identifier of the statement to the stmt_id of the prepared one. I tried to add a field prepared_statements into QueryContext for that but it does not work actually. It seems I need to use the configuration_variables in Session for that? It's used in the SET variables stmt which may be similar.
I'm struggling in parsing the parameters from the string EXECUTE stmt USING param1, ... into &[ScalarValue] which is used by LogicalPlan.replace_params_with_values. I'd like to assume there're some existing tools for it? A compromising plan is to use pure strings and fall back to do_query like it in on_execute.
https://github.com/GreptimeTeam/greptimedb/blob/d8b51cfaba5118ce06e239e97d16e4b68d736dbf/src/servers/src/mysql/handler.rs#L336-L340

Would you like to give me some advice? Thanks! :)

@CookiePieWw :

Better not touch the Session. What's feature of mysql stays in the crate of mysql. There's already a prepared_stmts: Arc<RwLock<HashMap<u32, SqlPlan>>> field in struct MysqlInstanceShim for similar purpose, we can reuse it. The prepared_stmts then serves storing two types of prepared stmt ids, one for the original implicit generated, the other for your explicit name in PREPARE. You can create an enum StmtKey for them. Just one caution: don't let the explicit stmt name clash with the implicit stmt id.
We can treat all parameters in USING as strings, create ScalarValue::Utf8s from them, then cast them to the actual datatypes.


Cheatcode vm.setNonce does not allow for a nonce value of type(uint64).max

Component
Forge
Have you ensured that all of these are up to date?

[X] Foundry
[X] Foundryup

What version of Foundry are you on?
forge 0.2.0 (0dc266d 2022-08-05T00:05:53.884289904Z)
What command(s) is the bug in?
forge test
Operating System
Linux
Describe the bug
The cheatcode vm.setNonce does not allow for a nonce value of type(uint64).max. It's the max threshold that is actually allowed in theory. If I substract 1 from the max value it works smoothly. Maybe there are some internal reasons for that but I thought I would quickly raise the issue.

EDIT: The screenshot is from using the Windows version (built from source) but usually I use WSL Ubuntu for foundry and also there is the same error.

this happens because the vm increases the nonce here
https://github.com/bluealloy/revm/blob/77487187521ca920b4078b1a908b2630e3ee2818/crates/revm/src/subroutine.rs#L179
@onbjerg I think we should just reject a nonce of u64::MAX, as this isn't a realistic scenario anyways

I would appreciate not rejecting u64::MAX since I actually have a test against this (RLP encoding scheme for address computation via CREATE). The theoretical limit given by clients is type(uint64).max. That's why I test it.

wait, did you run this in release mode or debug?

I would appreciate not rejecting u64::MAX since I actually have a test against this (RLP encoding scheme for address computation via CREATE). The theoretical limit given by clients is type(uint64).max. That's why I test it.

If the cheatcode rejects a value of u64::MAX, you could set the nonce to u64::MAX - 1 then send a tx to bump the nonce to u64::MAX. (I have no preference on the resolution of this issue, just throwing out an idea that may help 🙂)

in release mode. @mds1 I'm currently using this approach here already: https://github.com/pcaversaccio/snekmate/blob/main/test/utils/CreateAddress.t.sol#L218. I mean obviously, it's an edge case, but if you check the other tests for uint56 etc. you will see why I encountered it. I want to test the RLP encoding scheme against the uint64 max value.

@mattsse yes exactly - you can clone my repo and remove the -1 and you will see it. I mean I can live with the current solution but to make everything exact we would need probably need a cleanup hook somehow.

ok, I finally read the example contract.
you set the nonce of create to max and then deploy with that address?

yes: I have function that computes the address (based on the nonce & address) and I compare this against the deployed contract address. The RLP encoding is different, given the nonce byte length.

finally managed to get python+vyper installed properly
I wish for once in my life I could get Python to work right away -.-
I wasn't able to reproduce this with a --release build but could reproduce with debug:
forge test -m testComputeAddressNonceUint64 -vvv --ffi                                                                                ! main
[⠢] Compiling...
[⠢] Compiling 24 files with 0.8.15
[⠔] Solc 0.8.15 finished in 5.09s
Compiler run successful

Running 1 test for test/utils/CreateAddress.t.sol:CreateAddressTest
[PASS] testComputeAddressNonceUint64() (gas: 738242)
Test result: ok. 1 passed; 0 failed; finished in 1.05s

~/git/rust/foundry-integration-tests/testdata/snekmate  v18.7.0
❯ ~/git/rust/foundry/target/debug/forge test -m testComputeAddressNonceUint64 -vvv --ffi                                                      ! main
[⠊] Compiling...
[⠃] Compiling 24 files with 0.8.15
[⠢] Solc 0.8.15 finished in 5.07s
Compiler run successful
The application panicked (crashed).
Message:  attempt to add with overflow
Location: /Users/Matthias/.cargo/registry/src/github.com-1ecc6299db9ec823/revm-1.8.0/src/subroutine.rs:179

the reason for this is that rust's primitive types don't overflow in release mode, instead they wrap.
only in debug mode an overflow results in a panic, which happens here
https://github.com/bluealloy/revm/blob/77487187521ca920b4078b1a908b2630e3ee2818/crates/revm/src/subroutine.rs#L179
check this minimal example
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=16c9e6288f5c7887d730e8ba651221d6
and compare DEBUG RELEASE toggle
so this overflow shouldn't happen with a release build
can you try with forge from foundryup?

you are completely right - problem is that I use for Windows a built from source while for WSL I use the foundryup version. Is there I fast way to get the foundryup version on Windows instead of building from source?

Wait, is a nonce of type(uint64).max even allowed? Seems like no based on https://eips.ethereum.org/EIPS/eip-2681:

Consider any transaction invalid, where the nonce exceeds or equals to 2^64-1.

So @pcaversaccio I don't think you need to even handle/test that case, since it can never occur

@mds1 you are right:

interesting - in Geth they define it as uint64: https://github.com/ethereum/go-ethereum/blob/master/core/types/transaction.go#L280
Maybe they have someone else a check for that equality.

awesome thx - so I think we can close that issue @mattsse?

yeh let's close.
re static builds for windows, not sure if we ship them yet, cc @onbjerg

We do, foundryup just doesn't install them for you


6.10.0: test suite is failing

+ /usr/bin/python3 setup.py test
running test
WARNING: Testing via this command is deprecated and will be removed in a future version. Users looking for a generic test entry point independent of test runner are encouraged to use tox.
running egg_info
writing raven.egg-info/PKG-INFO
writing dependency_links to raven.egg-info/dependency_links.txt
writing entry points to raven.egg-info/entry_points.txt
writing requirements to raven.egg-info/requires.txt
writing top-level names to raven.egg-info/top_level.txt
reading manifest file 'raven.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.txt'
warning: no files found matching '*' under directory 'raven/data'
warning: no previously-included files matching '*~' found anywhere in distribution
writing manifest file 'raven.egg-info/SOURCES.txt'
running build_ext
Traceback (most recent call last):
  File "setup.py", line 119, in <module>
    setup(
  File "/usr/lib/python3.8/site-packages/setuptools/__init__.py", line 144, in setup
    return distutils.core.setup(**attrs)
  File "/usr/lib64/python3.8/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/usr/lib64/python3.8/distutils/dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "/usr/lib64/python3.8/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.8/site-packages/setuptools/command/test.py", line 238, in run
    self.run_tests()
  File "setup.py", line 115, in run_tests
    errno = pytest.main(self.pytest_args)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/config.py", line 49, in main
    config = _prepareconfig(args, plugins)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/config.py", line 167, in _prepareconfig
    return pluginmanager.hook.pytest_cmdline_parse(
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/vendored_packages/pluggy.py", line 745, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/vendored_packages/pluggy.py", line 613, in execute
    return _wrapped_call(hook_impl.function(*args), self.execute)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/vendored_packages/pluggy.py", line 250, in _wrapped_call
    wrap_controller.send(call_outcome)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/helpconfig.py", line 68, in pytest_cmdline_parse
    config = outcome.get_result()
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/vendored_packages/pluggy.py", line 279, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/vendored_packages/pluggy.py", line 265, in __init__
    self.result = func()
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/vendored_packages/pluggy.py", line 614, in execute
    res = hook_impl.function(*args)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/config.py", line 957, in pytest_cmdline_parse
    self.parse(args)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/config.py", line 1121, in parse
    self._preparse(args, addopts=addopts)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/config.py", line 1084, in _preparse
    self.pluginmanager.load_setuptools_entrypoints('pytest11')
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/vendored_packages/pluggy.py", line 510, in load_setuptools_entrypoints
    plugin = ep.load()
  File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2450, in load
    return self.resolve()
  File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2456, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest-3.2.5-py3.8.egg/_pytest/assertion/rewrite.py", line 212, in load_module
    py.builtin.exec_(co, mod.__dict__)
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/pytest_cov-2.5.1-py3.8.egg/pytest_cov/plugin.py", line 6, in <module>
    from coverage.misc import CoverageException
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/coverage-3.7.1-py3.8-linux-x86_64.egg/coverage/__init__.py", line 10, in <module>
    from coverage.control import coverage, process_startup
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/coverage-3.7.1-py3.8-linux-x86_64.egg/coverage/control.py", line 14, in <module>
    from coverage.html import HtmlReporter
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/coverage-3.7.1-py3.8-linux-x86_64.egg/coverage/html.py", line 8, in <module>
    from coverage.phystokens import source_token_lines, source_encoding
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/coverage-3.7.1-py3.8-linux-x86_64.egg/coverage/phystokens.py", line 5, in <module>
    from coverage.parser import generate_tokens
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/coverage-3.7.1-py3.8-linux-x86_64.egg/coverage/parser.py", line 321, in <module>
    OP_BREAK_LOOP = _opcode('BREAK_LOOP')
  File "/home/tkloczko/rpmbuild/BUILD/raven-6.10.0/.eggs/coverage-3.7.1-py3.8-linux-x86_64.egg/coverage/parser.py", line 280, in _opcode
    return dis.opmap[name]
KeyError: 'BREAK_LOOP'

Closing.
It was my fault.


Movie Watch List needs angular and core

https://play.nativescript.org/?template=play-vue&id=b7Pk1Z&v=10

Here's the Angular addition, sorry it took so long, had a couple "gotchas" that took some time to work though :(
https://play.nativescript.org/?template=play-ng&id=VcX3DL&v=9

Looks good on iOS, but on Android (8.1) I just get a white screen with nothing showing up in the log. You see the same thing?

Hm yeah just noticed that, sorry about that :) Working on it now.