Kotlin DSL "classpath mode" leniency doesn't capture after evaluation exceptions

During Gradle/Idea sync, intellij will pass the org.gradle.kotlin.dsl.provider.mode=classpath option to Gradle. Now, obviously any exception happening during project configuration will not fail the configuration, but will be stored in the ClassPathModeExceptionCollector (see KotlinScriptEvaluator.withOptions in the Kotlin IntelliJ Plugin).
In such cases, plugins with after evaluation hooks now see a half-configured model. For example the Kotlin Gradle Plugin runs some “post evaluate” assertions on the Project to see if it was configured correctly. This validation then fails but the thrown exception isn't captured by the ClassPathModeExceptionCollector, thus fails the build.
The IntelliJ Kotlin Plugin sync has been changed to not use the "classpath mode" anymore during sync as it proven to be an annoyance. This can be tracked here https://youtrack.jetbrains.com/issue/KTIJ-19823. Target is 2021.3.
The "classpath mode" will still be used by the LoadConfigurationAction which is responsible of loading the script context for a single script. This can be triggered by the user by clicking the corresponding button. This leniency is useful to get a good enough content assist in the editor in face of a broken build, or when editing scripts outside the build. This issue is about making that leniency better.
Expected Behavior
When in "classpath mode" the build shouldn't fail on configuration problems, including after evaluation.
Current Behavior
When in "classpath mode" the build will fail if an exception is thrown from an after evaluate callback.
Potential solutions

not running after evaluation callbacks when in classpath mode
capturing after evaluation callbacks exceptions when in classpath mode

🎉 🎉

We decided to roll back the implementation and evaluate other options.

@donat Can you quickly reiterate what the current situation/solution is right now?

We did the first step and implemented the exception suppression for afterEvaluate callbacks. The change sparked a debate: what should happen if the one afterEvaluate callback fails, should Gradle continue configuration should it stop immediately. Continuing may drive the build to an inconsistent state as plugins expect the configuration to stop after an exception. Stopping on the other is kind of pointless considering the IntelliJ use-case. My understanding is that at least one full sync build has to be successful in IntelliJ to make the lenient mode work. So if there’s a failure later on, the IDE can capture the exception from the model building and fall back to a model loaded during the last successful sync.
On top of that, afterEvaluate is just the tip of the iceberg in terms of callbacks. We found that other callback hooks would need different handling. This would not only complicate the codebase, but would also make it really confusing for the users and plugin authors, why their build suddenly behaves differently when in the IDE and in the command line.
Right now, our stance is to deal with the problem differently. A potential solution would be for Gradle to have support for “partial model builders”. The model building should produce a model even when the project configuration fails. The returned partial model should describe the failure message, what stage the failure happened (script evaluation, plugin application, in an afterEvaluate callback, etc). And the model that is approximately correct. For example, the Kotlin DSL script model builder could return the default script classpath even when there’s a compilation error in the settings script. This would offer a general solution for all tooling vendors to deal with the problem.


Execute a interactive shell command

Hello,
Thanks for sharing this great project.
Currently, I am executing an interactive command on the connected server, this process will return some strings first after called,  then I need to use this response to generate a password  and send back the server to complete this process.
But I couldn't get the first response after execute this command...
Is it possible for NMSSH to interact with a process running, instead of waiting for the process to exit to return the response?
[session.channel setRequestPty:YES];
[session.channel setPtyTerminalType:NMSSHChannelPtyTerminalAnsi];
NSString *response = [session1.channel execute:@"interactive command" error:&error];
Kind regards,

Use the -[NMSSHChannel write:error:timeout] method with the interactive terminal. Example application here.


Handtool dataset - Cannot access the link

Hi,
I could not access to the Handtool dataset from the README.md. Could you look into this?
Thanks!

@zongmianli  :+1:  please help, by providing a correct link .


Use a regexp pattern for the Search handler

Description of the Change

We have recently introduced the regexp patterns to match queries in the URLs (or more complex patterns): pattern: "RegExp:s=\\w+".
This PR uses a regexp pattern to catch home search URLs instead of overwritting the home handler.
It doesn't capture the searches of categories or tags, which pass through and are handled by the Frontity handlers. But that hasn't changed because the previous implementation was not handling that case either.
Benefits

This approach is more solid because the handler doesn't need to do the manual fallback to the home handler, which could cause issues in complex sites.
Possible Drawbacks

None that I know of.
Verification Process

As there is no e2e tests yet, I simply added some unit tests for the RegExp and tested manually the search in the site.
Checklist:

[ ] I have read the CONTRIBUTING document.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have added tests to cover my change.
[x] All new and existing tests passed.

There is no CONTRIBUTING.md file yet 🙂
I also added the prettier configuration I think you are using (tabs and single quotes) but feel free to fix the styling is that's not right.

Changelog Entry

Fixed: Use a regexp pattern for the Search handler to avoid the home handler fallback.

@luisherranz Thanks for this PR! I did try to catch only the search query but couldn't figure out the regexp syntax :).

Yeah, sorry about that, we included the regexp option in the last release 😅
I showed it to the team and they mentioned that we could add a quickSearch setting to the twentytwenty-theme to do the search on the onChange, as you did here.
But other than that, I'm very glad to see that this package doesn't require any changes to the theme!


loadFutureTexture makes main thread hang

Hi, I'm trying to load large bitmap textures async from the local file system using the following code:
Future<GVRTexture> tex = mGVRContext.loadFutureTexture(new GVRAndroidResource(path),GVRContext.LOWEST_PRIORITY, GVRCompressedTexture.SPEED); GVRMaterial mat = new GVRMaterial(mGVRContext); mat.setMainTexture(tex);
The problem is that head tracking stops working for a second, so the image stays still. Is there a way to fix this?
Thanks in advance

When do you execute this code? From onInit or some time later?

Some time later. More specifically, right after I receive a broadcast from a background service that downloads the images and saves them to local storage.
I tried to put this code in an android AsyncTask but that didn't help much either.
Would it help to store ASTC or ETC2 compressed images on the server, download those and use them instead? If there is a way to just use bitmaps, that would be preferred of course.

We don't have anything in the framework that can help much in this case. You should definitely use one of the compressed texture formats since the process will be more efficient.

Ok I will try that then.. If I may ask, why does http://docs.gearvrf.org/org/gearvrf/GVRContext.html#loadFutureTexture(org.gearvrf.GVRAndroidResource) say that I can use this function to load a texture asynchronously if it apparently not really does? Or do I misunderstand what async loading means? Just wondering.
Thanks

The the file i/o of decoding an loading into memory is done asynchronously.  Ultimately, glTexImage2D or glCompressedTexImage2D needs to be called on the GL thread to give the image to the GPU.  It's the allocation on the GPU and upload of the texture that may be the cause of the pausing.   How many?

I was trying to load files of about 7MB which were 8k resolution. The amount doesn't really matter I think because I was mostly loading them one at a time with a few seconds between each load, but during my testing it was about 5 images.

Ok, these are pretty big so they would definitely cause stuttering. We don't have anything out of the box that will help in this case (loading them after the initial startup). We will look into it but I can't give a timeline.

Since we understand the problem but can't do anything about it right now, would be ok to close this issue? I opened https://github.com/Samsung/GearVRf/issues/809 instead. Thanks


Feature Request: Option to disable pop-up windows

I find the pop-up windows extremely annoying when in inline mode. They always end up covering code up that is being worked on or reviewed. It would be great if there was a way to disable these?

Are you using the latest version (0.2.9)? And do you have the config "betterGitLineBlame.annotateWholeLine" set to false (the default)? When that option is true, it can indeed be annoying because it shows up if you hover anywhere on the line. However, when it’s false it will only show up when hovering on the inline annotation at the end of the line.
One option is to set "editor.hover.enabled" to false. This will disable all hover popups in VS Code, not just mine. (You can still view them with the keyboard shortcut, Cmd/Ctrl K + I.)
 Is it a lot of effort to move it away? Do hover messages for documentation (which pretty much all the language extensions do by default) also bother you?
I’m not opposed to adding an option to disable them but I’d like to understand more first.

Hi @mk12, thanks for the swift response!

I do have the "whole line" setting set to false.
I can't disable all popups, because I do want code peeking when I hover over classes, methods, and variables (but that's all I use the popups for)
we do a lot of pair programming, and I move my mouse out of the way off to the right of the code when my partner is controlling my screen. This invariably throws the popup. Another instance is that I like to move my mouse to an empty line (not off to the right), which will also trigger the popup and cover up code we're working on, because the popup is on a slight delay
I think it is this extension specifically, because I don't care about the additional details in the popup, and only want to see the reference inline.
another option I would be happy with is having the details show in a popup if I click on the inline blame message

Thanks for your consideration! :)

That makes sense. I've added betterGitLineBlame.enableHoverMessages in 0.2.10. Let me know if that works!

(There was an issue publishing 0.2.10 so I had to make another. It should be available in 0.2.11 now.)


[Bug]: Getting Welcome to nginx! on deployment

Error Message and Logs
Im trying to deploy a nextjs app, first time it worked good, i changed some names here and there and suddenly my deployment start showing Welcome to nginx! home screen, after a long trial and error i deleted this deployment to deploy a new one, but this one still shows the Welcome to nginx!
this is the setting of the deployment

Steps to Reproduce

load a next repo using github app
fill env variables and deploy

Example Repository URL
No response
Coolify Version
v4.0.0-beta.360
Are you using Coolify Cloud?
No (self-hosted)
Operating System and Version (self-hosted)
Ubuntu
Additional Information
No response

if i deploy without changinganything else but the domain name and build/start commands, then it works, so the bug should be around changing name or toggling static site option, this is the config that works

in your first image you had picked static site

In the docs it say to pick static site for a nextjs app
On Sun, Oct 13, 2024, 7:29 AM Darren Sisson @.***>
wrote:

in your first image you had picked static site
—
Reply to this email directly, view it on GitHub
https://github.com/coollabsio/coolify/issues/3904#issuecomment-2408960824,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A6NKLAVYSKMI4I3RSP36FUTZ3JRUNAVCNFSM6AAAAABP27OIGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBYHE3DAOBSGQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

@AlejandroSanchez90 if it has no ssr, you can use static, but you would need to set publish directory to /out not /

Got it thanks!
On Sun, Oct 13, 2024, 11:38 AM Darren Sisson @.***>
wrote:

@AlejandroSanchez90 https://github.com/AlejandroSanchez90 if it has no
ssr, you can use static, but you would need to set publish directory to
/out not /
—
Reply to this email directly, view it on GitHub
https://github.com/coollabsio/coolify/issues/3904#issuecomment-2409044179,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A6NKLAV3BC7ZE4AZXCT6QGTZ3KOZNAVCNFSM6AAAAABP27OIGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBZGA2DIMJXHE
.
You are receiving this because you were mentioned.Message ID:
@.***>


Create unit tests for  mirna_quantification.py

Provide comprehensive unit tests for every function in the code by formalizing the generation of synthetic inputs and checking against expectation.
The unit tests must cover every single line of code.
Use pytest to write and run the unit tests, and use the pytest-cov extension to track the test coverage.
Add the unit test execution and coverage calculation to the CI pipeline.

This issue was closed in the PR #88 .


feat(integration/prefect): prefect block to emit prefect pipeline

Checklist

[ ] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[ ] Links to related issues (if applicable)
[ ] Tests for the changes have been added/updated (if applicable)
[ ] Docs related to the changes have been added/updated (if applicable). If a new feature has been added a Usage Guide has been added for the same.
[ ] For any breaking change/potential downtime/deprecation/big changes an entry has been made in Updating DataHub

Closing in favor of https://github.com/datahub-project/datahub/pull/10643


[azure-core-cpp] Update to May Release for Core Packages

Update vcpkg ports for Azure SDK release. This release may contain multiple ports.

Adding azure-core to release
cc: @rickwinter, @ahsonkhan, @antkmsft, @vhvb1989, @gearama, @LarryOsterman


Position stream not working!

I'm trying to listen to position changes using the position stream. I've checked whether the Location Manager (Android) is enabled. This is how I'm calling the position stream:
Geolocator().isLocationServiceEnabled().then((loc) {
      if(loc) {
        StreamSubscription<Position> positionStream = Geolocator().getPositionStream().listen((position) {
          // This part is never reached.
          RouteApiController().routes(position).then((response) async {
            await homeBloc.updateSinkWithLoading(false);
            setRoutes(position,response,state);
          });
        });
        positionStream.cancel();
      } else {
        // If location isn't enabled!
      }
    });

The same problem. It is not working on phone(Android 8) which i use for debug, and work on another phones, but accuracy is low regardless of settings.

Fixed in version 6.0.0


about data sysnthesis

Hi,author！I really appreciate your work, and I have been using your code to do some experiment recently. There is a little question about your code in IBCLN_model.py.
In the clip below , you use a if to filter the reflection data which may have large blank area , I can't figure out why you did this. Were there any bad cases occuring during your experiment under this condition?
if torch.mean(T) * 1 / 2 > torch.mean(R):
    self.trainFlag = False
    return

I tried to use some images with large blank area as R to synthesis I in my training procedure, so I removed this condition. The model had great performance on training data, but  worked terrible on test data. Is that any thing to do with the condition?
@JHL-HUST @yangyixiao looking forward to your reply!

Hi, I'm not the anthor, but perhaps I can answer part of your questions.
They just followed the code of prior work, which can be found at here:
https://github.com/ceciliavision/perceptual-reflection-removal/blob/8df2c5a0f7e934e9689db01b23a73568f1acaa97/main.py#L338


test.py didn't run

I ran this command, then the below error occurred.
I suppose a reason why this error occurred,
input_var array is initialized, but not appended value in test function.
-- Command
python test.py --model_path=snapshots/model_e220_v-4.700.pth.tar

-- Error
Traceback (most recent call last):
  File "test.py", line 176, in <module>
    main()
  File "test.py", line 80, in main
...
    test(test_loader, model, criterion)
  File "test.py", line 104, in test
    output = model(input_var[0],input_var[1], input_var[2], input_var[3], input_var[4])

I think that a similar issue was encountered in #6 but was fixed by @jingjing1. Perhaps they'd be willing to share their fix as a PR?

I overlooked that issue. That's good to know.


Consistency with keys/values might ask for different semantic with hasOwnProperty

As the faq why name has,  "it fills in a hole in the common operations between Object, Map, and Set."
So I assume the new API should keep the semantic consistency with keys/values methods.
Map/Set all satisfy the invariant of: collection.has(key) === [...collection.keys()].includes(key)
If we also want the invariant of Object.has(o, key) === Object.keys(o).includes(key), the semantic of has() should only return true for enumerable string keys, which is different with Object.prototype.hasOwnProperty.

Seems like a great argument dir why that invariant wouldn’t be something anyone wants.

Yeah, this seems like a bit of a stretch. Where does that stop?
set.has(value) === [...set.values()].includes(value) // >> true
map.has(value) === [...map.values()].includes(value) // >> false

Methods like .has() have to be translated to the data type they are operating on. Map.prototype.has and Set.prototype.has aren't 100% identical down to their individual operations.
Adding Object.has() has to be translated the same way. Objects have different semantics than Maps or Sets, and so we should consider those semantics. Luckily Object.prototype.hasOwnProperty() has already done a good job of that (as each new feature of objects has been considered with hasOwnProperty()), and we can see that it already provides the behavior the community wants (many libraries use hasOwnProperty() directly).

Map.prototype.has and Set.prototype.has aren't 100% identical down to their individual operations.

Not sure what that mean. As I understand, Set/Map are consistent if you consider Set as a Map which always have same value of key and value.

Objects have different semantics than Maps or Sets, and so we should consider those semantics.

My question is not Object same as Map or Set, but whether has(key) should keep consistency with keys() --- because the faq implies that.

Actually I agree that userland has suggest hasOwnProperty semantic, and they have get/safeget method which consistent with their has.

I just meant that map.has checks for keys while set.has is checking for items, but are not named map.hasKey or set.hasItem respectively.

My question is not Object same as Map or Set, but whether has(key) should keep consistency with keys() --- because the faq implies that.

That section has been removed since the method has been renamed to has() (for now?). But in case it goes back to has() I think it's okay for has() not to match keys() in regards to enumerability. Enumerability is unique to objects so it can't be informed by has() on Map/Set. But I think it can be informed by object[property] which includes non-enumerable properties.

Actually I agree that userland has suggest hasOwnProperty semantic, and they have get/safeget method which consistent with their has.

I think this agreement enough to close this issue
Thanks!

nit: renamed to hasOwn


Warning from React (V6) version 17.0.1

Got the following warning when using the library on version 17.0.1 of React:
Warning: componentWillMount has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.

* Move code with side effects to componentDidMount, and set initial state in the constructor.
* Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.

Please update the following components: ReactTable

Warning: componentWillReceiveProps has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.

* Move data fetching code or side effects to componentDidUpdate.
* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state
* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.

Please update the following components: ReactTable, ReactTablePagination

Got the following warning when using the library on version 17.0.1 of React:
Warning: componentWillMount has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.

* Move code with side effects to componentDidMount, and set initial state in the constructor.
* Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.

Please update the following components: ReactTable

Warning: componentWillReceiveProps has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.

* Move data fetching code or side effects to componentDidUpdate.
* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state
* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.

Please update the following components: ReactTable, ReactTablePagination

How did you make it work with react 17 ? while per dep is 16 ?


STDDEV() "returns" a string when bucket contains exactly one data point

System info:
InfluxDB v1.6.4
CentOS Linux release 7.5.1804 (Core)
Steps to reproduce:
In a SELECT INTO statement, use the STDDEV aggregation function over a bucket containing exactly one data point, as in the following test case:
curl -X POST 'http://localhost:8086/query' -d 'q=CREATE DATABASE test_case'
curl -X POST 'http://localhost:8086/write?db=test_case&precision=s' -d 'weather temp=10<PHONE_NUMBER>'
curl -X POST 'http://localhost:8086/query' -d 'db=test_case&q=SELECT mean(*),stddev(*) INTO weather_daily FROM weather GROUP BY time(1d), * fill(none)'
curl -X POST 'http://localhost:8086/query' -d 'db=test_case&q=SHOW FIELD KEYS'

Expected behavior:
I would expect that if the field stddev_temp in weather_daily is created at all, it should be created with a numeric type, as it would be if the number of items in the bucket was anything other than 1. (Since it seems InfluxDB includes Bessel's correction and InfluxDB does not support NaN or Infinity, not being created at all seems most natural to me.)
Actual behavior:
The field stddev_temp is created with type string, as we can see with a SHOW FIELD KEYS:
{
  "name": "weather_daily",
  "columns": [ "fieldKey", "fieldType" ],
  "values": [
    [ "mean_temp", "float" ],
    [ "stddev_temp", "string" ]
  ]
}

In more complicated cases, this issue can lead to a SELECT INTO failing due to a field type conflict if some buckets return a string and others a float:
ERR: partial write: field type conflict: input field "stddev_temp" on measurement "weather_daily" is type string, already exists as type float

...or creating fields with the same name but different types in different temporal shards:
name: weather_daily
fieldKey    fieldType
--------    ---------
mean_temp   float
stddev_temp float
stddev_temp string

Ran into this exact problem with my downsampling queries that sang the stdev()

ERR: write failed: partial write: field type conflict: input field "stddev_Active.KB" on measurement "foo" is type string, already exists as type float dropped=2

Looks like this was fixed. Running my test case on v1.7.7 results in no stddev_temp field being created:
> show field keys;
name: weather
fieldKey fieldType
-------- ---------
temp     float

name: weather_daily
fieldKey  fieldType
--------  ---------
mean_temp float


Add user setting option to always send push notifications.

Add option in user's settings for getting push notifications
even if zulip clinet is online. Default option is False.
Fixes: #1596.

Automated message from Dropbox CLA bot
@TomaszKolek, it looks like you've already signed the Dropbox CLA. Thanks!

@timabbott Not sure if Im able to test in in another way.

You should add some tests to zerver/tests/test_push_notifications.py

The implementation of the setting configuration looks good, however, I think that this will require some additional changes to work properly.  The "offline push notifications" code path that you added some if statements in goes through the missedmessage_mobile_notifications event queue.  You should grep for that identifier to trace the code path -- it only gets entered at all if the user if offline in the zerver/lib/event_queue.py piece of it.
I think instead you want to basically (1) disable the offline codepath inside zerver/lib/event_queue.py in the event that the user has this setting and (2) unconditionally publish to the missedmessage_mobile_notifications queue in the event that this setting is enabled, probably from do_send_messages.

I just noticed the always_push_notify code path, which apparently already implemented the desired behavior.  So I went and connected your work on the setting with the existing code, and merged this as 1f74e7575fedb2d581e1da0b27d630d6db1396f3.  Thanks @TomaszKolek!


[v1.7] Not syncing (0 peers)

After reading #2050 for me this problem still exists.
In the bitcoin log all starts OK (I think) and then at the end there are only lines like this:
2021-05-08T16:59:59Z connect() to <IP_ADDRESS>:9050 failed after select(): Connection refused (111)
bitcoind and lnd are running.
tor service is active (exited)
sudo netstat -tulpn shows no port 9050.

Installed it again (on a Debian amd64 VM). Same problem.
When I remove Tor (internet.tor.sh off) btc blockchain is syncing (1 peer).
Don't know about lightning. Didn't had the patience to wait.
internet.tor.sh off then internet.tor.sh on doesn't help.
Is this fixable?
Output script (the end):
use with the port: 80
or the port: 443
sudo: unknown user: sphinxrelay
sudo: unable to initialize policy plugin
Setup logrotate
Job for<EMAIL_ADDRESS>failed because the control process exited with error code.
See "systemctl status<EMAIL_ADDRESS>and "journalctl -xe" for details.
OK - Tor is now ON
needs reboot to activate new setting

I didn't install sphinx.

Bitcoin is syncing now

Sounds good. Closing issue.


az cli script failed in github action.

logs_1247.zip
attaching log here to investigate

Hi @pawan885,
I've reviewed your attachments. The error occurs when you check if the secret yy already exists in:
secretExists=$(az keyvault secret show --vault-name "$AZURE_KEYVAULT_NAME" --name "$secret" 2>/dev/null)
You've redirected the error message to /dev/null, making it impossible to see what the error is. Please remove 2>/dev/null and include the error message of az keyvault secret show.

I will close this issue since it doesn't seem to be caused by GitHub action. If you encounter any other question, please feel free to reopen it and attach the error message.


Add more command line output (verbose/debug output and -h/--help)

In trying to debug a hang (which appears to be already filed as issue #307) I was unable to see any information about what Etcher was doing internally at any step.  I expected a "-v" or "--verbose" switch (or similar) to enable this but that did not work.
Additionally, running Etcher with "-h" or "--help" to find the list of supported command line switches produced no output, which is unusual for a tool of this kind.

Hi @mccollam, what operating system are you running?
The problem with the output is that to perform elevation on startup, the app first runs without privileges, and then spawns a process to run itself again with privileges once you provide your password to the sudo dialog.
Sadly the output streams are not inherited by the children process (maybe there is a way to do it on sudo-prompt, but I wonder how that would play in Windows, or OS X because of open), so you get no output.
I'm planning to add a command line option to omit the elevation dialog, so you can take care of it yourself, and thus prevent the app from forking a new process.
There is a fix coming for the issue you linked though, if you're interested, I can ping you when it lands to master so you can check yourself.

This is on Ubuntu 15.10 x86_64.
I don't see the behavior you are describing -- if I launch as a normal user I just get a dialog box telling me to rerun as root.

I was planning to try to submit a simple patch to provide -h at least but if it's already in the works I'll hold off. :)

Hi @mccollam ,
Yeah, GNU/Linux doesn't yet have the elevation dialog (see https://github.com/resin-io/etcher/issues/277) sadly, but in GNU/Linux you should be able to see logging. Since Electron runs in two processes: the main and renderer processes, things logged in one will not appear in the other. I believe this is the issue you have, since the stream.push() after EOF only happens in the renderer process. Notice you can open DevTools by pressing Ctrl+Alt+I.

I was planning to try to submit a simple patch to provide -h at least but if it's already in the works I'll hold off. :)

Sounds great! By "working on it", I mean its planned, but work didn't start yet. I'd be awesome to see a patch :)

BTW, I just merged the stream.push() after EOF fix to master, which is actually implemented in slice-stream, which is a dependency of resin-image-write, which is a dependency of Etcher :)
The fix commit, in case you want to know more: https://github.com/jviotti/slice-stream2/commit/241680a479da497890f5dcc24221b17ec2f65356

I started hacking on this over here: https://github.com/mccollam/etcher
This adds a usage display (not super useful yet as there are no real options yet) and adds functionality to allow the user to specify an image to use on the command line.  If one is specified (and exists, etc.) it will be automatically filled in when the UI loaded.  This is really nice, as it means if you specify an image and have only one valid device to write to, everything just ticks along and is ready to start as soon as Etcher loads.
I didn't create a pull request as there are a few things I think might be iffy.  It adds a new dependency (on minimist, used for argument parsing) and is my first foray into node.js/angular/electron, so there's almost certainly a much nicer way to pass in the image name than what I am doing.  But if it's of any use or interest I'm happy to do whatever cleanup/changes you like. :)

@mccollam great to see you here :) hopefully you'll have a lot more time to
hack on resin projects soon :)
On Apr 16, 2016 3:39 AM, "Ronald McCollam"<EMAIL_ADDRESS>wrote:

I started hacking on this over here: https://github.com/mccollam/etcher
This adds a usage display (not super useful yet as there are no real
options yet) and adds functionality to allow the user to specify an image
to use on the command line. If one is specified (and exists, etc.) it will
be automatically filled in when the UI loaded. This is really nice, as it
means if you specify an image and have only one valid device to write to,
everything just ticks along and is ready to start as soon as Etcher loads.
I didn't create a pull request as there are a few things I think might be
iffy. It adds a new dependency (on minimist, used for argument parsing) and
is my first foray into node.js/angular/electron, so there's almost
certainly a much nicer way to pass in the image name than what I am doing.
But if it's of any use or interest I'm happy to do whatever cleanup/changes
you like. :)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/resin-io/etcher/issues/332#issuecomment-210698343

@mccollam Thank you very much for the PR! I'll continue discussion there :)


Webp / GIF animation flickering

When resizing an animated image, it often starts flickering even though it does not change position in the original image.
Example:
Source: https://cloudflare-ipfs.com/ipfs/Qmbiub1pBEjxTKWfw82FZ87L9p9gDsEi8K2MWdMJxQz2ZK/Kog/foil/common/1-7-3-24-1-0_front.webp
Resized: https://images.weserv.nl/?h=370&w=370&fit=inside&we&q=75&output=webp&n=-1&url=https://cloudflare-ipfs.com/ipfs/Qmbiub1pBEjxTKWfw82FZ87L9p9gDsEi8K2MWdMJxQz2ZK/Kog/foil/common/1-7-3-24-1-0_front.webp

I was able to reproduce this using the vips CLI utility.
$ vips copy 1-7-3-24-1-0_front.webp[n=-1,scale=0.308333] x.webp

It appears, for this particular image, that almost all sub-frames are positioned as (left = 200, top = 200, width = 800, height = 800), but some sub-frames are positioned differently from the rest.

Details
$ webpinfo 1-7-3-24-1-0_front.webp | grep -B 2 -A 5 "Offset_Y: 198"
Chunk ANMF at offset 702858, length 116260
  Offset_X: 200
  Offset_Y: 198
  Width: 800
  Height: 802
  Duration: 80
  Dispose: 0
  Blend: 1
--
Chunk ANMF at offset 819118, length 118152
  Offset_X: 200
  Offset_Y: 198
  Width: 800
  Height: 802
  Duration: 80
  Dispose: 0
  Blend: 1
--
Chunk ANMF at offset 937270, length 114618
  Offset_X: 200
  Offset_Y: 198
  Width: 800
  Height: 803
  Duration: 80
  Dispose: 0
  Blend: 1
--
Chunk ANMF at offset 2041856, length  81806
  Offset_X: 200
  Offset_Y: 198
  Width: 800
  Height: 802
  Duration: 80
  Dispose: 0
  Blend: 1
$ vips copy 1-7-3-24-1-0_front.webp[n=-1,scale=0.308333] x.webp | grep -B 2 -A 6 "top = 61"
webp2vips: frame_num = 8
   left = 62
   top = 61
   width = 247
   height = 247
   duration = 80
   dispose = none
   has_alpha = 1
   blend_method = don't blend
--
webp2vips: frame_num = 9
   left = 62
   top = 61
   width = 247
   height = 247
   duration = 80
   dispose = none
   has_alpha = 1
   blend_method = don't blend
--
webp2vips: frame_num = 10
   left = 62
   top = 61
   width = 247
   height = 248
   duration = 80
   dispose = none
   has_alpha = 1
   blend_method = don't blend
--
webp2vips: frame_num = 22
   left = 62
   top = 61
   width = 247
   height = 247
   duration = 80
   dispose = none
   has_alpha = 1
   blend_method = don't blend

This issue only seems to occur when libvips opens the image with the "scale-on-load" feature, which also resizes these sub-frames to its target size.
https://github.com/libvips/libvips/blob/3732751bf9d22b00ae33d6701e9a823c4d1bea87/libvips/foreign/webp2vips.c#L636-L643
You mentioned that GIF images also have this issue, do you have an example of that?
@jcupitt Do you think this can be fixed somehow in libvips?

Original: https://cloudflare-ipfs.com/ipfs/QmXe65mTMhPiBPJ1tzeYXF6btHQy2QwwxNTkjgnAHsRLmu
Resized: https://images.weserv.nl/?h=370&w=370&fit=inside&we&q=75&output=webp&n=-1&url=https://cloudflare-ipfs.com/ipfs/QmXe65mTMhPiBPJ1tzeYXF6btHQy2QwwxNTkjgnAHsRLmu

Ah sorry thats also webp

@kleisauke I tried:
vips copy 1-7-3-24-1-0_front.webp[n=-1,scale=0.308333] x.gif

To make:

I see a slight up/down jiggle on the bottom edge, is that the error?

Yes exactly, for comparison, I disabled the "scale-on-load" feature for WebP images and ran:
$ vipsthumbnail 1-7-3-24-1-0_front.webp[n=-1] -s 370x -o x.gif

To make:

Ah I see! Yes, I bet we need to round the webp shrink factor to be 1 / multiple-of-page-height. I'll have a go.

Upstream issue https://github.com/libvips/libvips/issues/2379 is now fixed and I just updated the production server to incorporate this fix (commit https://github.com/weserv/rpms/commit/fb874e6e0e17d7e2b5a1c1882a93632b5787e7af). This animated WebP image is now resized without juddering.
If you want to test this, you can use the RPMS repo from https://rpms.weserv.nl. This change in the Dockerfile is required for this:
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -33,8 +33,10 @@ RUN rpm --import https://sourceforge.net/projects/libjpeg-turbo/files/LJT-GPG-KE
     && dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm \
     && rpmkeys --import file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi.el8 \
     && dnf config-manager --set-enabled remi \
-    && dnf install -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm \
-    && rpmkeys --import file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-el-8 \
+    && dnf config-manager --set-disabled remi-safe \
+    && dnf config-manager --set-disabled remi-modular \
+    && sed -i '/^\[remi\]/a\excludepkgs=vips*' /etc/yum.repos.d/remi.repo \
+    && dnf config-manager --add-repo https://rpms.weserv.nl/weserv.repo \
     && dnf group install -y --with-optional 'Development Tools' \
     && dnf install -y --setopt=tsflags=nodocs --setopt=install_weak_deps=False \
         vips-devel \

libvips v8.12.0 has been landed on Remi's RPM repository with commit faba5a2, so a recompilation of the Docker image (or using the prebuilt ghcr.io/weserv/images:5.x image) should automatically incorporate this fix.


Fix floating service maturity progress bar labels

https://gitlab.com/jklabsinc/opslevel-bs/-/issues/2
The labels were floating out of the containing info card when the screen height was reduced and vertical scrolling happened on the service maturity page. This PR fixes that.
https://github.com/OpsLevel/backstage-plugin/assets/58182580/80176ed5-9a84-4096-9f60-87c2b9088bfa

Nice work on this!


Add findDependencies tool based on NOD

Converting to draft as I want to make a few more changes still before initial merge.


Dynamic import failures when used with bundlers like esbuild

Hi again @koskimas! I am back with another issue that has come up while trying to deploy an app with Kysely when using the recommended AWS Lambda deployment strategy of using esbuild.
Now that the Lambda is running we can't actually get Kysely to load due to dynamic imports of the database pool creation function (https://github.com/koskimas/kysely/blob/17e190b4b46af8b7363cba16e57be05d597e34a8/src/dialect/mysql/mysql-driver.ts#L122). Since esbuild is essentially throwing all referenced code into one giant JS file there is no ability to import dynamically that I know of (without of course moving to a manual bundling which we are trying hard not to do if possible).
I was able to manually modify the locally installed and bundled Kysely package to directly use the mysql2 createPool function to ensure that everything does indeed load up if it were able to be bundled directly.
I realize this isn't your problem, per se, but I was hoping you might have some thoughts and advice for folks in our scenario.

So you are using the mysql dialect directly and not something like this
We can't remove the dynamic imports. If we do, all users need to install all dialect's drivers even if they only use one.
I don't understand why esbuild doesn't know how to do dynamic imports? Even though it generates one blob, surely all imports are mapped to some data structure? Why can't that same data structure be used to figure out dynamic imports? Isn't that how webpack works?

Ok, so I did a bit of googling and it seems that esbuild would support string literal imports like:
cosnt dep = await import('dep')

but the problem is expression imports like
const s = 'dep'
cosnt dep = await import(s)

Correct, If I manually change your library to use the following code the bundler sees the import and replaces it with a function that returns the expected object instead of trying to let node load it from the filesystem.
async function importMysqlPoolFactory() {
    try {
        // return await importNamedFunction('mysql2', 'createPool');
        return (await import ('mysql2')).createPool;
    }
    catch (error) {
        throw new Error('MySQL client not installed. Please run `npm install mysql2`');
    }
}

Ok. I'll get rid of the helper then. It's not as simple as that though. Many packages produce different results when ESM is enabled for the project and when using commonjs for some reason.
The next version will be released in couple of minutes.

0.16.4 fixes this.


API review

We should review all of the public JS API in the compiler and other packages.
We should probably also review the stdlib and package Cadl.

Set of libraries to review

[ ] core
[ ] http & rest
[ ] cadl-azure-resource-manager
[ ] cadl-autorest

Will do assessment for ProviderHub ARM release. Any pending work items will be treated as fast follow after release.


Database Filter Group.

Coverage increased (+0.005%) to 43.286% when pulling 9ca7df1f89a4101d940b4b4c5453b80865a07d6d on beneroch-filtergroup into 440896511a83f3fd3dcbc6e5e6d4e4bdbba32b1f on master.


Out-of-bounds read in private_render()

dochttx crashes on Polsat's page 504:
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x565cf1cc in private_render (lines=25, pg=0xff981d44) at render.c:54
54	      attrset(dochttx_colors[ch->foreground][ch->background]);
(gdb) ptype dochttx_colors
type = int [8][8]
(gdb) print ch->foreground
$1 = 247
(gdb) print ch->background
$2 = 32
(gdb) bt
#0  0x565cf1cc in private_render (lines=25, pg=0xff981d44) at render.c:54
#1  dochttx_vbi_render (dec=0xf77e7010, pgno=1284, subno=5, lines=25) at render.c:76
#2  0x565ce586 in main (argc=<optimized out>, argv=<optimized out>) at dochttx.c:246

(gdb) print ch->foreground
$1 = 247
```

This looks really weird. A libzvbi bug?
Anyway, it's fixed in 77ef338a22dd3ab4b3412f4661fc922c6de1f4fe.

Fixed in 0.3.


Interpolation of the stiffness matrix before Update

Hi MFEM community,
Sorry for the confusing title, I failed to find the right term to describe my problem.
I am implementing a modified Crank-Nicolson solver for Schorindger Eq #2811. In pointwise form, it looks like this

where U^n is the approximated solution at timestep n and π is the projection/ interpolation from space V^{n-1} to V^{n}. Literature applied L2 projection for π.
The problem is how to compute the RHS term with π * Laplacian U^{n-1}.
By using MFEM, does it mean I will need to multiply the stiffness matrix by the solution U^{n-1} before calling Update()?
This is a short demonstration of my plan. Do you think the implementation look correct?
  // U is actually complex valued, but lets assume real here for simplicity
   K = new ParBilinearForm(&fespace);
   K->AddDomainIntegrator(new DiffusionIntegrator(KCst));
   K->Assemble();
   K->Finalize();
   Kmat = K->ParallelAssemble();

   Kmat->Mult(U,Utmp); // Laplacian U^{n-1}
   RHS_gf.SetFromTrueDofs(Utmp); // vector cant be interpolated, but gridfunction can

   // After deferinement and refinement....

   fespace.Update();
   RHSU_gf.Update(); // interpolated Laplacian U^{n-1}?
   fespace.UpdatesFinished();
   Utmp.Update(fespace.GetTrueVSize());
   RHSU_gf.GetTrueDofs(Utmp); // Utmp now is π * Laplacian U^{n-1} ?

The resulting solutions perform worse than stardard Crank-Nicolson, so i believe something is wrong with my implementation.
The projection/interpolation on the Laplacian seems to be the main problem here.
Thank you for your time.

Hi all,
I have consulted with an FE analysis expert regarding problem. I now have a better understanding of the problem
but still couldn't implement it correctly in MFEM.
In short, I want to compute the following L2 projection of ΔU from a mesh to a refined/derefined mesh (same order of FE space).

Since ΔU can be obtained by multiplying U with the stiffness matrix, it simplifies to

So we are actually solving a system of linear equations

The mass matrix M is easy to obtain, but I could not find a way to compute P the projection matrix easily,
because the basis function phi^n and phi^{n-1} are different when the mesh is refined/derefined.
Do you think there is already a built-in algorithm to compute the L2 projection?
Or else, do you know if there is a way to obtain the projection matrix using MFEM?
Thank you again.


Support editor zed.dev would be fantastic

You will love the editor from the creators of Atom editor.
https://zed.dev

We are happy to accept contributions to create a module that does it in 1 click. But the module would require a plugin to automate the below steps to make seamless.
For a manual connection, you can follow the steps below.

Run coder login coder.example.com
Run coder config-ssh
Connect to coder.<workspace-name> target from within Zed

@EdwardAngert could you add the above instructions to our docs? We already have similar instructions for Fleet(#246) at https://coder.com/docs/user-guides/workspace-access/jetbrains#jetbrains-fleet


Security of 3des

OpenSSL doesn't include 3des by default and considers it a weak cipher. Many Linux distros add enable-weak-ssl-ciphers for compatibility anyway, but I still don't think it should be encouraged. I'm not an expert, as I see 3des used a lot for encrypting the private key when generating self-signed certificates. Perhaps it would be better to change it to this:
diff --git a/README.md b/README.md
index 4704183..f5686bb 100644
--- a/README.md
+++ b/README.md
@@ -1289,8 +1289,8 @@ openssl s_client -cipher 'AES128-SHA' -connect google.com:443
 ###### Generate private key

```bash
-# _ciph: des3, aes
-( _ciph="des3" ; _fd="private.key" ; _len="2048" ; \
+# _ciph: des3, aes128
+( _ciph="aes128" ; _fd="private.key" ; _len="4096" ; \
 openssl genrsa -${_ciph} -out ${_fd} ${_len} )

N.B.: older versions of OpenSSL only support des, 3des and idea, but if somebody is using an OpenSSL that old they got bigger problems.

Which default encryption does OpenSSL use? We pass only genrsa and output file.

If you specify nothing, it uses no encryption. So that's no good.

Ohh... yes it's obvious :1st_place_medal: for me haha
Fixed.
Also good about key length: RSA Key Sizes: 2048 or 4096 bits?


Future warnings about numpy indexing changes

Unclear if these are tripped by lyman code or a dependency...
lyman/tests/test_glm.py::TestLinearModel::()::test_image_prewhitening_outputs
  /home/mwaskom/anaconda/envs/lyman-dev/lib/python3.6/site-packages/mkl_fft/_numpy_fft.py:158: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
    output = mkl_fft.fft(a, n, axis)

lyman/tests/test_glm.py::TestLinearModel::()::test_residual_autocorrelation_outputs
  /home/mwaskom/anaconda/envs/lyman-dev/lib/python3.6/site-packages/mkl_fft/_numpy_fft.py:158: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
    output = mkl_fft.fft(a, n, axis)

lyman/tests/test_glm.py::TestLinearModel::()::test_iterative_ols_fit
  /home/mwaskom/anaconda/envs/lyman-dev/lib/python3.6/site-packages/mkl_fft/_numpy_fft.py:158: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
    output = mkl_fft.fft(a, n, axis)

lyman/tests/test_glm.py::TestLinearModel::()::test_iterative_contrast_estimation
  /home/mwaskom/anaconda/envs/lyman-dev/lib/python3.6/site-packages/mkl_fft/_numpy_fft.py:158: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
    output = mkl_fft.fft(a, n, axis)

lyman/tests/test_glm.py::TestLinearModel::()::test_prewhitened_glm_against_fsl
  /home/mwaskom/anaconda/envs/lyman-dev/lib/python3.6/site-packages/mkl_fft/_numpy_fft.py:158: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
    output = mkl_fft.fft(a, n, axis)

lyman/workflows/tests/test_model.py::TestModelWorkflows::()::test_model_fit
  /home/mwaskom/anaconda/envs/lyman-dev/lib/python3.6/site-packages/mkl_fft/_numpy_fft.py:158: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
    output = mkl_fft.fft(a, n, axis)

These seem to have gone away after some updates, suggesting they were upstream issues.


Vision Torch Targets fail if the player’s screen resolution is too high

What Happened?
When trying to play a vision using a vision torch target, if the player’s resolution is too high (may depend on the power of their pc), “vision torch target” visions just display a black screen, and still play music. It is unknown what would happen if a vision was allowed to play through to the end in this state.
Watch HelloStudents’ VOD of The Vision to see the bug in action and watch us struggle to debug it in real time.
What was supposed to happen?
It was supposed to work
Platform
Steam
Mods
The Vision
NH and all required dependencies

Logs
Nothing out of the ordinary

https://www.twitch.tv/videos/1584650357

Likely cause: the black screen is caused by images not being loaded by the time the vision tries to play. Playing on lower res allows the computer to have enough resources available to load the slides on time. We currently do nothing to handle images not being loaded at time of playing. Again this is just a hypothesis.

Removing priority from this bc it happened once and i don't think anyone knows how to recreate it

appears to have not been an issue since this one time


Scaling documentation

I wrote up the beginnings of some scaling documentation. I cover horizontal scaling via clustering. Eventually it would be ideal to describe how to scale across multiple machines with a load balancer.

A bit of a semantic concern, but arguably I might consider clustering to be a vertical scaling strategy.
It's typically only applied when you're increasing RAM, # of cores ... things typically associated with vertical scale.
However, since configuring clustering is merely increasing the number of processes powering your service, it's technically more of a horizontal strategy.
But beyond this largely academics concern, I feel good about this PR.

Awesome, thank you so much! Glad to see this in, we've been meaning to get to it since forever.

Please remind me to look into why the build isn't deploying if it doesn't show up on the docs homepage in a bit (I want to tweet out the link).

@daffl Just checked, I'm not seeing these changes on docs.feathersjs.com -- it looks like there might be a deployment issue.

It's showing up now. No idea what's been going on with GitBook.


Goonto caption features

Goonto, another program similar to Edgeware, has some interesting features related to captions which could also be implemented in Edgeware. In particular:

Captions can show up in notifications
The clipboard can be filled with captions
Goonto can automatically start typing on your behalf

its so over

don't look at me I didn't have any part in this!!! 😇


Cursor disappears on Firefox when using placeholders

Describe the bug
When using the placeholder option, the cursor works fine on Edge/Chrome, but it's not visible on Firefox when the editor value is empty.
To Reproduce
Steps to reproduce the behavior:

Create a WYSIWYG editor with a placeholder option and no initial value
Click on the editor in Firefox

Expected behavior
Blinking cursor
Screenshots

(this is after clicking the editor)
Desktop (please complete the following information):

OS: Windows
Browser: Firefox
Version: 102.0

Additional context
Everything works fine if the placeholder option is not passed in.

eye~

Hello
We need also need this issue resolved, are PRs accepted?


JobResponse EndTimeUtc is DateTime MaxValue instead of null when JobStatus is Running

Type of change?

[x] Bug fix
[ ] New feature
[ ] Enhancement
[ ] Breaking change (breaks backward compatibility)

Description, Context, Motivation
The IoT Hub returns a date that is always 12/30/9999 when the job hasn't completed yet.
This fix returns null for the end time when a job hasn't yet finished running.

Related Items

PR for fix in dotnet here
Issue filed with the SDK here

Checklist:

[x] All tests passed
[x] The code follows the code style and conventions of this project
[ ] The change requires a change to the documentation
[ ] I have updated the documentation accordingly

@jillcary assigning this for the next milestone.

@jillcary was this updated for Java as well? If so, can we close?


refactor: available balance

Try out this version of the Hiro Wallet - download extension builds.

Refactor user available balance and subtract microblock txs from it

"Available balance" for send flow with new tooltip

I'd prefer do it separately


Wildcard interaction for public and individual games

Wildcard usage should be implemented, now there's a placeholder for those.
The backend routes have been already implemented, we've got 2 kinds of wildcards:

50 / 50 : take 2 wrong answers from the 4 answers
Extra time : 15 more seconds in the timer

Implemented for public multi in commit 9fc148332946f1970a219c5d7129f1c8d2f36921

Individual was also done too on commit 1c1245c, this issue can be closed


DBZ-2669 Explicitly specifying source directories for Checkstyle;

That way, any generated sources won't be parsed to begin with, instead of only discarding their violations. This saves ~30 sec. for the DDL parser module.
https://issues.redhat.com/browse/DBZ-2669

@jpechane, any thoughts? Test failures look unrelated.

@gunnarmorling Applied, thanks. I see the build time decrease too!

I see the build time decrease too!

Yeah :) Kinda obvious in hindsight, but well... . Unfortunately, the "suppress" approach is described several times on SO, so it's easy to fall into that trap. I suppose most people aren't impacted as much as we are with the large generated Antlr classes.


ESP32 would reboot after running ~3.4 days becuse of log.c (IDFGH-4707)

Environment

Module or chip used:  esp32-wrover-b
IDF version: v4.1
Build System: Make
Compiler version: esp-2020r2
Operating System: Linux
Using an IDE?: No
Power Supply: USB

Problem Description
After enabling esp log for burn-in test, all DUTs would reboot after about 3.4 days because of logging issue in log.c
After trying to disable some log in wifi and aws to reduce the log number, the log number would not affect this issue. All DUTs still would reboot after ~3.4 days.
Log Setting
In menuconfig:
Bootloader log verbosity: Info
Default baud rate: 921600 bps
'idf.py' monitor baud rate: 921600 bps
UART console baud rate: 921600
In code:
All components are set to ERROR level.
One component is set to INFO level and others are DEBUG level.
AWS is DEBUG level. (most log is from AWS component)
Expected Behavior
DUTs should not reboot during burn-in test.
Actual Behavior
DUTs reboot after ~3.4 days.
Debug Logs
DUT1
(292721597) AWS: Delta callback end
assertion "i == 0 || s_log_cache[(i - 1) / 2].generation < s_log_cache[i].generation" failed: file "/home/PC1/esp/esp-idf/components/log/log.c", line 209, function: get_cached_log_level
abort() was called at PC 0x400d7d3c on core 1

ELF file SHA256: 013e27b677f0aa2c

Backtrace: 0x400922e9:0x3ffdf7e0 0x40092685:0x3ffdf800 0x400d7d3c:0x3ffdf820 0x401d60d1:0x3ffdf850 0x40097edb:0x3ffdf880 0x401c7aed:0x3ffdf8d0 0x401c6a81:0x3ffdf900 0x401c6aca:0x3ffdf920 0x401c6d1b:0x3ffdf950 0x40094591:0x3ffdf990

Rebooting...

DUT2
(291890143) System: UTC is updated to<PHONE_NUMBER>
(291890320) AWS: no msg
assertion "i == 0 || s_log_cache[(i - 1) / 2].generation < s_log_cache[i].generation" failed: file "/home/PC1/esp/esp-idf/components/log/log.c", line 209, function: get_cached_log_level
abort() was called at PC 0x400d7cb8 on core 1

ELF file SHA256: 0614d399db9aea2d

Backtrace: 0x400922e9:0x3ffe4b40 0x40092685:0x3ffe4b60 0x400d7cb8:0x3ffe4b80 0x401d66ed:0x3ffe4bb0 0x40097edb:0x3ffe4be0 0x401c8b79:0x3ffe4c30 0x401c7a32:0x3ffe4c50 0x401c7b9d:0x3ffe4c70 0x40094591:0x3ffe4cb0

Rebooting...

DUT3
(292063665) AWS: no msg
assertion "i == 0 || s_log_cache[(i - 1) / 2].generation < s_log_cache[i].generation" failed: file "/home/PC1/esp/esp-idf/components/log/log.c", line 209, function: get_cached_log_level
abort() was called at PC 0x400d7ca0 on core 1

ELF file SHA256: 0dc1a198827db442

Backtrace: 0x400922e9:0x3ffe5b40 0x40092685:0x3ffe5b60 0x400d7ca0:0x3ffe5b80 0x401d51cd:0x3ffe5bb0 0x40097edb:0x3ffe5be0 0x400fe71b:0x3ffe5c30 0x400fe351:0x3ffe5c70 0x400fdf79:0x3ffe5ca0 0x40094591:0x3ffe5cc0

Rebooting...

I've suffered the same issue after 16h, I think It could be due to s_log_cache_max_generation overflow, I have commented this line //#define LOG_BUILTIN_CHECKS for avoiding assertion lines.

Sorry for taking forever to reply to this issue...
Given that:

s_log_cache_max_generation is a uint32_t so would have to log 100 lines a second for almost two years to overflow
Reducing the log number didnt affect the issue

it seems unlikely that it was due logging so much that it caused an overflow. Maybe there were some memory corruption that caused these variables to have an invalid value though.
If anyone is still seeing this issue, then please re-open this ticket and we will investigate that specific case.

I've suffered the same issue after 16h, I think It could be due to s_log_cache_max_generation overflow, I have commented this line //#define LOG_BUILTIN_CHECKS for avoiding assertion lines.

Hi , undefine LOG_BUILION_CHECKS  for avoiding assertion lines, will cause other problem?

Can someone please re-open this?  It is still broken even in the latest 5.2.x releases.
@ESP-Marius failed to see in the code the following circumstances:

While s_log_cache_max_generation is a uint32_t, it is ONLY stored in the cache entries as a 29-bit field! (MUCH LESS)
If VERBOSE logs are allowed, yet NOT enabled, these logs STILL cause s_log_cache_max_generation to increment if the cache is FULL; this can very quickly run up the cache counter.

Therefore, it is VERY easy to overflow this cache counter.

Here's some more information on how to reproduce:
Background
My devices panic every 4 days in the logging code when idle (cores attached).  What's important to know to reproduce this issue is that while the current global logging setting is ESP_LOG_INFO, the maximum level enabled is ESP_LOG_VERBOSE.  Therefore, any code (user or ESP) that calls the ESP_LOGV(...) API will cause the caching code to be hit (whether or not the current logging level is VERBOSE or not).
My application contains three PID loops, each one performing at least 10 ADC reads every 0.25 seconds.  Each ADC read retrieves the calculated calibration value using the adc_cali_raw_to_voltage() API.  If you look at the source code for this ESP API and it's sub-calls, it is VERY chatty, containing at least two ESP_LOGV() calls within loops.  After 4 days, so many have occurred that the log cache generation counter rolls at 2^29 power causing a cache ordering issue, causing the next cache check to fail an assert() check for coherency.  What's worse is that the comments in "\components\log\log.c" even mention this but say it'll never happen, but they didn't consider all the cases it could happen!
IDF build: v5.1-beta1-378-gea5e0ff298
Relevant sdkconfig settings
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_LOG_MAXIMUM_LEVEL=5

Coredump (always the same for every one of my devices, as expected with this bug)
==================== THREAD 1 (TCB: 0x3fcba0a8, name: 'heater2') =====================
#0  0x40375bd9 in panic_abort (details=0x3fcb9b30 "assert failed: get_cached_log_level log.c:220 (i == 0 || s_log_cache[(i - 1) / 2].generation < s_log_cache[i].generation)") at C:/Users/AB/esp/esp-idf/components/esp_system/panic.c:452
#1  0x40380c40 in esp_system_abort (details=0x3fcb9b30 "assert failed: get_cached_log_level log.c:220 (i == 0 || s_log_cache[(i - 1) / 2].generation < s_log_cache[i].generation)") at C:/Users/AB/esp/esp-idf/components/esp_system/port/esp_system_chip.c:84
#2  0x40387644 in __assert_func (file=<optimized out>, line=<optimized out>, func=<optimized out>, expr=<optimized out>) at C:/Users/AB/esp/esp-idf/components/newlib/assert.c:81
#3  0x420ce649 in get_cached_log_level (level=<synthetic pointer>, tag=0x3c0f13a2 "adc_cali") at C:/Users/AB/esp/esp-idf/components/log/log.c:220
#4  s_log_level_get_and_unlock (tag=0x3c0f13a2 "adc_cali") at C:/Users/AB/esp/esp-idf/components/log/log.c:153
#5  0x420ce815 in esp_log_writev (level=ESP_LOG_VERBOSE, tag=0x3c0f13a2 "adc_cali", format=0x3c0f147a "V (%lu) %s: term%d is %llu, error is %ld\
", args=...) at C:/Users/AB/esp/esp-idf/components/log/log.c:195
#6  0x40386960 in esp_log_write (level=ESP_LOG_VERBOSE, tag=0x3c0f13a2 "adc_cali", format=0x3c0f147a "V (%lu) %s: term%d is %llu, error is %ld\
") at C:/Users/AB/esp/esp-idf/components/log/log.c:210
#7  0x4205cc68 in get_reading_error (atten=<optimized out>, param=0x3fcb7118, v_cali_1=<optimized out>) at C:/Users/AB/esp/esp-idf/components/esp_adc/adc_cali_curve_fitting.c:227
#8  cali_raw_to_voltage (arg=0x3fcb7108, raw=<optimized out>, voltage=<optimized out>) at C:/Users/AB/esp/esp-idf/components/esp_adc/adc_cali_curve_fitting.c:142
#9  0x4205caf9 in adc_cali_raw_to_voltage (handle=<optimized out>, raw=1162, voltage=0x3fcb9e00) at C:/Users/AB/esp/esp-idf/components/esp_adc/adc_cali.c:44

Analysis & Solution
As mentioned previously, as long as VERBOSE logging is allowed, ESP_LOGV() still increments the logs.c cache generation counter causing it to wrap at 2^29 counts (that's the size of the cache storage for the counter).  Note that the counter itself is 32-bits and continues counting (this is a problem too).
What should happen is that anytime the cache counter, s_log_cache_max_generation, counts to 2^29, then the entire cache, from start to end, should be re-number from 0 to s_log_cache_entry_count entries, and variable s_log_cache_max_generation set equal to s_log_cache_entry_count.  Note that this only occurs on overflow and won't be a performance hit.

Hi @abellofiore!
Thanks for the additional info on this issue. I will try to reproduce it.

Hi @abellofiore! Thanks for the additional info on this issue. I will try to reproduce it.

I'll have test code and a fix to logs.c for your shortly.

Done.  Here's code that duplicates the issue within 116 minutes on my ESP32-S3.  The code is well documented and self-explanatory.  Just call log_panic_thread_start_test() to start the test task.
static char *PTAG = "LPT";

static void log_panic_thread(void *param)
{
	/*  Perform the intense logging.
		Since the problem should rear it's head after 2^29 counts (536,870,912), let's also print a log we can
		actually see where we stand every so often.
	*/
	int i;
	uint32_t current_count = 0;							// Current number of dropped logs performed
	uint32_t debug_log_threshold = 100000;				// How often to print a debug log
	uint32_t logs_to_try_per_loop = 3000;				// Number of dropped logs to perform between taskDelays
	uint32_t next_count_target = debug_log_threshold;	// The target count at which to print the next status log
	ESP_LOG_LEVEL_LOCAL(esp_log_default_level - 1, PTAG, "test task started!");		// We WILL see this log!
	for(;;)
	{
		for(i=0; i < logs_to_try_per_loop; i++)
		{
			// Log at the system level which is 1 greater than our local level; this log should be dropped
			ESP_LOG_LEVEL_LOCAL(esp_log_default_level, PTAG, "this log should be disabled yet trigger caching code at a crazy rate");
		}
		// Now for some debuggin every million counts
		current_count += i;
		if( current_count >= next_count_target )
		{
			ESP_LOG_LEVEL_LOCAL(esp_log_default_level - 1, PTAG, "exceeded %lu logs", next_count_target);	// We WILL see this log!
			next_count_target += debug_log_threshold;
		}
		vTaskDelay(1);
	}
}

static void log_panic_thread_start_test(void)
{
	/* Lets ensure that the log cache is filled.  In log.c, the max is #define TAG_CACHE_SIZE 31.
	   So, lets create at least that many unique bogus entries.  Having the cache filled is key to hitting this bug.
	   These tag names need to be statically defined since the log code uses pointers for cache comparisons!
	   Once the cache is filled, it's always filled.
	*/
	int i;
	static char str[32][20];
	for( i = 0; i < 32; i++ )
	{
		sprintf(str[i],"bogus%d",i);
		esp_log_level_set(str[i], esp_log_default_level);
	}

	/*	Next, set the logging level for our test task, "lpt", to 1 less than the system log level: (esp_log_default_level - 1)
		This task will perform a ton of logs using log level esp_log_default_level which will all get dropped.  However, since the log
		cache is full of entries, "lpt"'s cache entry will have its cache generation number incremented.
		Eventually, when the cache generation number exceeds 2^29 counts, the log code will assert() and the board will reboot.
	*/
	esp_log_level_set(PTAG, esp_log_default_level - 1);
	/*	Spawn the "lpt" test task.
		You may have to adjust your task priority if you cause a watchdog reset; but the task has a taskDelay so it shouldn't be a problem
	*/
	TaskHandle_t task_h;
	xTaskCreate(log_panic_thread, "lpt", 3000, NULL, 10, &task_h);
}

Also, here is my version of log.c with a few very simple proposed changes for this issue:

Whenever s_log_cache_max_generation increments to (2^29 - 1) counts, renumber the entire cache from 0 to N, then set s_log_cache_max_generation to N+1.

Please just diff my code below to the stock log.c code in your branch to see my changes:
/*
 * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/*
 * Log library implementation notes.
 *
 * Log library stores all tags provided to esp_log_level_set as a linked
 * list. See uncached_tag_entry_t structure.
 *
 * To avoid looking up log level for given tag each time message is
 * printed, this library caches pointers to tags. Because the suggested
 * way of creating tags uses one 'TAG' constant per file, this caching
 * should be effective. Cache is a binary min-heap of cached_tag_entry_t
 * items, ordering is done on 'generation' member. In this context,
 * generation is an integer which is incremented each time an operation
 * with cache is performed. When cache is full, new item is inserted in
 * place of an oldest item (that is, with smallest 'generation' value).
 * After that, bubble-down operation is performed to fix ordering in the
 * min-heap.
 *
 * The potential problem with wrap-around of cache generation counter is
 * ignored for now. This will happen if someone happens to output more
 * than 4 billion log entries, at which point wrap-around will not be
 * the biggest problem.
 *
 */

#include <stdbool.h>
#include <stdarg.h>
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include "esp_log.h"
#include "esp_log_private.h"

#ifndef NDEBUG
// Enable built-in checks in queue.h in debug builds
#define INVARIANTS
// Enable consistency checks and cache statistics in this file.
#define LOG_BUILTIN_CHECKS
#endif

#include "sys/queue.h"

// Number of tags to be cached. Must be 2**n - 1, n >= 2.
#define TAG_CACHE_SIZE 31

typedef struct {
    const char *tag;
    uint32_t level : 3;
    uint32_t generation : 29;
} cached_tag_entry_t;

typedef struct uncached_tag_entry_ {
    SLIST_ENTRY(uncached_tag_entry_) entries;
    uint8_t level;  // esp_log_level_t as uint8_t
    char tag[0];    // beginning of a zero-terminated string
} uncached_tag_entry_t;

esp_log_level_t esp_log_default_level = CONFIG_LOG_DEFAULT_LEVEL;
static SLIST_HEAD(log_tags_head, uncached_tag_entry_) s_log_tags = SLIST_HEAD_INITIALIZER(s_log_tags);
static cached_tag_entry_t s_log_cache[TAG_CACHE_SIZE];
static uint32_t s_log_cache_max_generation = 0;
static uint32_t s_log_cache_entry_count = 0;
static vprintf_like_t s_log_print_func = &vprintf;

#ifdef LOG_BUILTIN_CHECKS
static uint32_t s_log_cache_misses = 0;
#endif

static inline bool get_cached_log_level(const char *tag, esp_log_level_t *level);
static inline bool get_uncached_log_level(const char *tag, esp_log_level_t *level);
static inline void add_to_cache(const char *tag, esp_log_level_t level);
static void heap_bubble_down(int index);
static inline void heap_swap(int i, int j);
static inline bool should_output(esp_log_level_t level_for_message, esp_log_level_t level_for_tag);
static inline void clear_log_level_list(void);

vprintf_like_t esp_log_set_vprintf(vprintf_like_t func)
{
    esp_log_impl_lock();
    vprintf_like_t orig_func = s_log_print_func;
    s_log_print_func = func;
    esp_log_impl_unlock();
    return orig_func;
}

void esp_log_level_set(const char *tag, esp_log_level_t level)
{
    esp_log_impl_lock();

    // for wildcard tag, remove all linked list items and clear the cache
    if (strcmp(tag, "*") == 0) {
        esp_log_default_level = level;
        clear_log_level_list();
        esp_log_impl_unlock();
        return;
    }

    // search for existing tag
    uncached_tag_entry_t *it = NULL;
    SLIST_FOREACH(it, &s_log_tags, entries) {
        if (strcmp(it->tag, tag) == 0) {
            // one tag in the linked list matched, update the level
            it->level = level;
            // quit with it != NULL
            break;
        }
    }
    // no existing tag, append new one
    if (it == NULL) {
        // allocate new linked list entry and append it to the head of the list
        size_t tag_len = strlen(tag) + 1;
        size_t entry_size = offsetof(uncached_tag_entry_t, tag) + tag_len;
        uncached_tag_entry_t *new_entry = (uncached_tag_entry_t *) malloc(entry_size);
        if (!new_entry) {
            esp_log_impl_unlock();
            return;
        }
        new_entry->level = (uint8_t) level;
        memcpy(new_entry->tag, tag, tag_len); // we know the size and strncpy would trigger a compiler warning here
        SLIST_INSERT_HEAD(&s_log_tags, new_entry, entries);
    }

    // search in the cache and update the entry it if exists
    for (uint32_t i = 0; i < s_log_cache_entry_count; ++i) {
#ifdef LOG_BUILTIN_CHECKS
        assert(i == 0 || s_log_cache[(i - 1) / 2].generation < s_log_cache[i].generation);
#endif
        if (strcmp(s_log_cache[i].tag, tag) == 0) {
            s_log_cache[i].level = level;
            break;
        }
    }
    esp_log_impl_unlock();
}

/* Common code for getting the log level from cache, esp_log_impl_lock()
   should be called before calling this function. The function unlocks,
   as indicated in the name.
*/
static esp_log_level_t s_log_level_get_and_unlock(const char *tag)
{
    esp_log_level_t level_for_tag;
    // Look for the tag in cache first, then in the linked list of all tags
    if (!get_cached_log_level(tag, &level_for_tag)) {
        if (!get_uncached_log_level(tag, &level_for_tag)) {
            level_for_tag = esp_log_default_level;
        }
        add_to_cache(tag, level_for_tag);
#ifdef LOG_BUILTIN_CHECKS
        ++s_log_cache_misses;
#endif
    }
    esp_log_impl_unlock();

    return level_for_tag;
}

esp_log_level_t esp_log_level_get(const char *tag)
{
    esp_log_impl_lock();
    return s_log_level_get_and_unlock(tag);
}

void clear_log_level_list(void)
{
    uncached_tag_entry_t *it;
    while ((it = SLIST_FIRST(&s_log_tags)) != NULL) {
        SLIST_REMOVE_HEAD(&s_log_tags, entries);
        free(it);
    }
    s_log_cache_entry_count = 0;
    s_log_cache_max_generation = 0;
#ifdef LOG_BUILTIN_CHECKS
    s_log_cache_misses = 0;
#endif
}

void esp_log_writev(esp_log_level_t level,
                   const char *tag,
                   const char *format,
                   va_list args)
{
    if (!esp_log_impl_lock_timeout()) {
        return;
    }
    esp_log_level_t level_for_tag = s_log_level_get_and_unlock(tag);
    if (!should_output(level, level_for_tag)) {
        return;
    }

    (*s_log_print_func)(format, args);

}

void esp_log_write(esp_log_level_t level,
                   const char *tag,
                   const char *format, ...)
{
    va_list list;
    va_start(list, format);
    esp_log_writev(level, tag, format, list);
    va_end(list);
}

static inline bool get_cached_log_level(const char *tag, esp_log_level_t *level)
{
    // Look for `tag` in cache
    uint32_t i;
    for (i = 0; i < s_log_cache_entry_count; ++i) {
#ifdef LOG_BUILTIN_CHECKS
        assert(i == 0 || s_log_cache[(i - 1) / 2].generation < s_log_cache[i].generation);
#endif
        if (s_log_cache[i].tag == tag) {
            break;
        }
    }
    if (i == s_log_cache_entry_count) { // Not found in cache
        return false;
    }
    // Return level from cache
    *level = (esp_log_level_t) s_log_cache[i].level;
    // If cache has been filled, start taking ordering into account
    // (other options are: dynamically resize cache, add "dummy" entries
    //  to the cache; this option was chosen because code is much simpler,
    //  and the unfair behavior of cache will show it self at most once, when
    //  it has just been filled)
    if (s_log_cache_entry_count == TAG_CACHE_SIZE) {
        // Update item generation
        s_log_cache[i].generation = s_log_cache_max_generation++;
        // Restore heap ordering
        heap_bubble_down(i);
        // Check for generation count wrap and fix if necessary
        if( s_log_cache_max_generation == ((2<<29) - 1) )
        {
            for (i = 0; i < s_log_cache_entry_count; ++i)
                s_log_cache[i].generation = i;
            s_log_cache_max_generation = i;
        }
    }
    return true;
}

static inline void add_to_cache(const char *tag, esp_log_level_t level)
{
    uint32_t generation = s_log_cache_max_generation++;
    // First consider the case when cache is not filled yet.
    // In this case, just add new entry at the end.
    // This happens to satisfy binary min-heap ordering.
    if (s_log_cache_entry_count < TAG_CACHE_SIZE) {
        s_log_cache[s_log_cache_entry_count] = (cached_tag_entry_t) {
            .generation = generation,
            .level = level,
            .tag = tag
        };
        ++s_log_cache_entry_count;
    }
    else
    {
        // Cache is full, so we replace the oldest entry (which is at index 0
        // because this is a min-heap) with the new one, and do bubble-down
        // operation to restore min-heap ordering.
        s_log_cache[0] = (cached_tag_entry_t) {
            .tag = tag,
            .level = level,
            .generation = generation
        };
        heap_bubble_down(0);
    }
    // Check for generation count wrap and fix if necessary
    if( s_log_cache_max_generation == ((2<<29) - 1) )
    {
        uint32_t i;
        for (i = 0; i < s_log_cache_entry_count; ++i)
            s_log_cache[i].generation = i;
        s_log_cache_max_generation = i;
    }
}

static inline bool get_uncached_log_level(const char *tag, esp_log_level_t *level)
{
    // Walk the linked list of all tags and see if given tag is present in the list.
    // This is slow because tags are compared as strings.
    uncached_tag_entry_t *it;
    SLIST_FOREACH(it, &s_log_tags, entries) {
        if (strcmp(tag, it->tag) == 0) {
            *level = it->level;
            return true;
        }
    }
    return false;
}

static inline bool should_output(esp_log_level_t level_for_message, esp_log_level_t level_for_tag)
{
    return level_for_message <= level_for_tag;
}

static void heap_bubble_down(int index)
{
    while (index < TAG_CACHE_SIZE / 2) {
        int left_index = index * 2 + 1;
        int right_index = left_index + 1;
        int next = (s_log_cache[left_index].generation < s_log_cache[right_index].generation) ? left_index : right_index;
        heap_swap(index, next);
        index = next;
    }
}

static inline void heap_swap(int i, int j)
{
    cached_tag_entry_t tmp = s_log_cache[i];
    s_log_cache[i] = s_log_cache[j];
    s_log_cache[j] = tmp;
}

Hi @abellofiore!
Thanks for your fix and the example. I can reproduce it. The fix that you implemented is good. It is at the review stage now.
We will provide backports for early IDF versions too.


add missing res folder as source for Eclipse

some missing stuff for Eclipse users after #5956 changes.

Sorry I'm late. I've never needed them, but it looks OK.


Bug: Resize on pre-activated component moves it out of bounds

How to reproduce:

Open https://mauricius.github.io/vue-draggable-resizable/
Scroll to External activation
Click [Activate Component]
Try resizing the top-right corner

Expected result: Position should stay the same, but size should change
Actual result: Position jumps to an out-of-bounds negative location, and size becomes undefined? Screenshot:

Sounds like a dupe of #30, feel free to close (though I'll let you do it in case the details/screenshot are useful).

It should be fixed with https://github.com/mauricius/vue-draggable-resizable/commit/173c87b3a910b30998e9d9df91d8915f750ed107. Thanks for reporting!


Gap in California Appellate Unpublished Opinions

A user reached out about being able to find unpublished opinions in the California court of appeals.
Well... we have a small gap as illustrated from the following chart from around Dec 2016 to ~May 2020.

Thanks @grossir

This gap can also be seen on CL search, with start date 10-08-2016 and end date 08-16-2020

The Court website states that you can collect these opinions for 60 days, But the data remains available but only by searching for individual cases in the docketing system.  This normally would be a bit of a deal breaker.
Fortunately for us - the court appears to have a very regimented docketing system. Attached are 30,933 PDF links to the missing data.
missing_calctapp_u.txt
Additionally, the PDF files are clean and easy to parse.  We have the Download URL and the Docket number from the URL and the remaining information required is easily extracted from the first line of each pdf.  each document starts with Filed: DATE_FILED , CASE_NAME_short, COURT_ABBREVIATION/SUBCOURT
@mlissner we could easily ingest the entire missing gap of ~31k opinions.


Fix non informative exception text

Error always throw Stash\Driver\AbstractDriver is not available insead of point what dirver not allowed.

Thanks!


Fresh install, can't run basic commands

Describe the bug
Command Name
az group create
Errors:
The command failed with an unexpected error. Here is the traceback:
[WinError -2146893813] : ''
Traceback (most recent call last):
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 657, in execute
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 720, in _run_jobs_serially
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 691, in _run_job
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 328, in __call__
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/resource/custom.py", line 1307, in create_resource_group
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/resource/_client_factory.py", line 10, in _resource_client_factory
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/client_factory.py", line 70, in get_mgmt_service_client
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/client_factory.py", line 212, in _get_mgmt_service_client
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/_profile.py", line 335, in get_login_credentials
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/_profile.py", line 588, in _create_credential
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/auth/identity.py", line 182, in get_user_credential
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/auth/msal_authentication.py", line 41, in __init__
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal/application.py", line 872, in get_accounts
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal/application.py", line 910, in _find_msal_accounts
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal_extensions/token_cache.py", line 54, in find
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal_extensions/token_cache.py", line 35, in _reload_if_necessary
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal_extensions/persistence.py", line 172, in load
  File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal_extensions/windows.py", line 111, in unprotect
OSError: [WinError -2146893813] : ''

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Spun up a new Windows 10 VM in Azure, installed Azure CLI and ran:
az group create --name "test" --location "westeurope" --output "json"

Expected Behavior
The command to complete...
Environment Summary
Windows-10-10.0.19041-SP0
Python 3.8.9
Installer: MSI

azure-cli 2.30.0

Additional Context

ARM

File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/_profile.py", line 335, in get_login_credentials
...
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/auth/msal_authentication.py", line 41, in init
...
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal_extensions/windows.py", line 111, in unprotect

This issue seems to be related to MSAL. @jiasli please help take a look~

It seems to duplicated with issue https://github.com/Azure/azure-cli/issues/20278#issuecomment-965938701 @jiasli Please help confirm it~

@iTiamo, could you check the discussions at #20231 and let us know:

Have you copied .azure from/to another computer?
Could you share the detailed steps you followed to trigger this error?

Meanwhile, you may try to solve it by deleting ~/.azure folder and rerun az login.

Hi @jiasli, 1. No I did not, I simply spun up a VM in Azure and installed Azure CLI from MSI installer. 2. Spun up a default Windows 10 Pro VM in Azure, installed CLI from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli, logged in using az login. Ran any command, resulting in error as posted in OP.

Hi @jiasli,

...
Spun up a default Windows 10 Pro VM in Azure, installed CLI from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli, logged in using az login. Ran any command, resulting in error as posted in OP.

Hi @jiasli , in this case, since our customer @iTiamo provided clear steps, I think we could follow the steps to see if we can reproduce the issue. However, even if we could reproduce this, I don't know what else I can do in this line:

File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal_extensions/windows.py", line 111, in unprotect
OSError: [WinError -2146893813] : ''

Perhaps you can try to catch that exception in Azure CLI, and then suggest user to opt out of token encryption as a workaround?

I am not to repro with MicrosoftWindowsServer:WindowsServer:2022-datacenter-g2:latest VM:
az vm create -n $vm -g $rg --image MicrosoftWindowsServer:WindowsServer:2022-datacenter-g2:latest --size Standard_D4a_v4 --nsg-rule NONE --admin-username $username --admin-password $password --query id --output tsv

VM details
> az vm show --resource-group jl1208rg --name jl1208vm --show-details
{
  "additionalCapabilities": null,
  "applicationProfile": null,
  "availabilitySet": null,
  "billingProfile": null,
  "capacityReservation": null,
  "diagnosticsProfile": null,
  "evictionPolicy": null,
  "extendedLocation": null,
  "extensionsTimeBudget": null,
  "fqdns": "",
  "hardwareProfile": {
    "vmSize": "Standard_D4a_v4",
    "vmSizeProperties": null
  },
  "host": null,
  "hostGroup": null,
  "id": "/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/jl1208rg/providers/Microsoft.Compute/virtualMachines/jl1208vm",
  "identity": null,
  "licenseType": null,
  "location": "westus2",
  "macAddresses": "00-0D-3A-6E-4C-15",
  "name": "jl1208vm",
  "networkProfile": {
    "networkApiVersion": null,
    "networkInterfaceConfigurations": null,
    "networkInterfaces": [
      {
        "deleteOption": null,
        "id": "/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/jl1208rg/providers/Microsoft.Network/networkInterfaces/jl1208vmVMNic",
        "primary": null,
        "resourceGroup": "jl1208rg"
      }
    ]
  },
  "osProfile": {
    "adminPassword": null,
    "adminUsername": "azureuser",
    "allowExtensionOperations": true,
    "computerName": "jl1208vm",
    "customData": null,
    "linuxConfiguration": null,
    "requireGuestProvisionSignal": true,
    "secrets": [],
    "windowsConfiguration": {
      "additionalUnattendContent": null,
      "enableAutomaticUpdates": true,
      "patchSettings": {
        "assessmentMode": "ImageDefault",
        "enableHotpatching": null,
        "patchMode": "AutomaticByOS"
      },
      "provisionVmAgent": true,
      "timeZone": null,
      "winRm": null
    }
  },
  "plan": null,
  "platformFaultDomain": null,
  "powerState": "VM running",
  "priority": null,
  "privateIps": "<IP_ADDRESS>",
  "provisioningState": "Succeeded",
  "proximityPlacementGroup": null,
  "publicIps": "<IP_ADDRESS>",
  "resourceGroup": "jl1208rg",
  "resources": null,
  "scheduledEventsProfile": null,
  "securityProfile": null,
  "storageProfile": {
    "dataDisks": [],
    "imageReference": {
      "exactVersion": "20348.350.2111030009",
      "id": null,
      "offer": "WindowsServer",
      "publisher": "MicrosoftWindowsServer",
      "sharedGalleryImageId": null,
      "sku": "2022-datacenter-g2",
      "version": "latest"
    },
    "osDisk": {
      "caching": "ReadWrite",
      "createOption": "FromImage",
      "deleteOption": "Detach",
      "diffDiskSettings": null,
      "diskSizeGb": 127,
      "encryptionSettings": null,
      "image": null,
      "managedDisk": {
        "diskEncryptionSet": null,
        "id": "/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/jl1208rg/providers/Microsoft.Compute/disks/jl1208vm_OsDisk_1_36a992a476174040b6ab6eedb2027760",
        "resourceGroup": "jl1208rg",
        "storageAccountType": "Standard_LRS"
      },
      "name": "jl1208vm_OsDisk_1_36a992a476174040b6ab6eedb2027760",
      "osType": "Windows",
      "vhd": null,
      "writeAcceleratorEnabled": null
    }
  },
  "tags": {},
  "type": "Microsoft.Compute/virtualMachines",
  "userData": null,
  "virtualMachineScaleSet": null,
  "vmId": "d5bdd477-a906-4bb5-a192-b54cc5841006",
  "zones": null
}

Neither with MicrosoftWindowsDesktop:Windows-10:20h2-pro-g2:latest:

VM details
> az vm show --resource-group jl1208rg --name jl1208-win10 --show-details
{
  "additionalCapabilities": null,
  "applicationProfile": null,
  "availabilitySet": null,
  "billingProfile": null,
  "capacityReservation": null,
  "diagnosticsProfile": {
    "bootDiagnostics": {
      "enabled": true,
      "storageUri": null
    }
  },
  "evictionPolicy": null,
  "extendedLocation": null,
  "extensionsTimeBudget": null,
  "fqdns": "",
  "hardwareProfile": {
    "vmSize": "Standard_D2s_v3",
    "vmSizeProperties": null
  },
  "host": null,
  "hostGroup": null,
  "id": "/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/jl1208rg/providers/Microsoft.Compute/virtualMachines/jl1208-win10",
  "identity": null,
  "licenseType": "Windows_Client",
  "location": "centralus",
  "macAddresses": "00-22-48-47-18-82",
  "name": "jl1208-win10",
  "networkProfile": {
    "networkApiVersion": null,
    "networkInterfaceConfigurations": null,
    "networkInterfaces": [
      {
        "deleteOption": "Detach",
        "id": "/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/jl1208rg/providers/Microsoft.Network/networkInterfaces/jl1208-win10734",
        "primary": null,
        "resourceGroup": "jl1208rg"
      }
    ]
  },
  "osProfile": {
    "adminPassword": null,
    "adminUsername": "azureuser",
    "allowExtensionOperations": true,
    "computerName": "jl1208-win10",
    "customData": null,
    "linuxConfiguration": null,
    "requireGuestProvisionSignal": true,
    "secrets": [],
    "windowsConfiguration": {
      "additionalUnattendContent": null,
      "enableAutomaticUpdates": true,
      "patchSettings": {
        "assessmentMode": "ImageDefault",
        "enableHotpatching": false,
        "patchMode": "AutomaticByOS"
      },
      "provisionVmAgent": true,
      "timeZone": null,
      "winRm": null
    }
  },
  "plan": null,
  "platformFaultDomain": null,
  "powerState": "VM running",
  "priority": null,
  "privateIps": "<IP_ADDRESS>",
  "provisioningState": "Succeeded",
  "proximityPlacementGroup": null,
  "publicIps": "<IP_ADDRESS>",
  "resourceGroup": "jl1208rg",
  "resources": null,
  "scheduledEventsProfile": null,
  "securityProfile": null,
  "storageProfile": {
    "dataDisks": [],
    "imageReference": {
      "exactVersion": "19042.1348.2111032005",
      "id": null,
      "offer": "Windows-10",
      "publisher": "MicrosoftWindowsDesktop",
      "sharedGalleryImageId": null,
      "sku": "20h2-pro-g2",
      "version": "latest"
    },
    "osDisk": {
      "caching": "ReadWrite",
      "createOption": "FromImage",
      "deleteOption": "Delete",
      "diffDiskSettings": null,
      "diskSizeGb": 127,
      "encryptionSettings": null,
      "image": null,
      "managedDisk": {
        "diskEncryptionSet": null,
        "id": "/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/jl1208rg/providers/Microsoft.Compute/disks/jl1208-win10_disk1_4b01e2b0ddd743dca7393da4f45c87c9",
        "resourceGroup": "jl1208rg",
        "storageAccountType": "Premium_LRS"
      },
      "name": "jl1208-win10_disk1_4b01e2b0ddd743dca7393da4f45c87c9",
      "osType": "Windows",
      "vhd": null,
      "writeAcceleratorEnabled": null
    }
  },
  "tags": null,
  "type": "Microsoft.Compute/virtualMachines",
  "userData": null,
  "virtualMachineScaleSet": null,
  "vmId": "cd565eea-eafa-4ec4-a64a-9c644750a3e2",
  "zones": null
}

@iTiamo, could you share more information about your VM?
az vm show --resource-group <resouce_group_name> --name <vm_name> --show-details

Hi @jiasli, unfortunately I do not have the VM anymore. I tried spinning up a new VM with your details and also could not reproduce this issue. Consider it closed. 👍

@iTiamo, glad to know the issue is "solved". If you see this problem again, please kindly let us know.


system fails measured boot attestatoin created by create_mb_refstate

Is your issue a feature request? If so, please raise it as an enhancement
Environment

OS / version: RHEL-9
Processor architecture: x86_64
TPM Manufacturer: swtpm
Keylime version: current upstream 6a5f826
virt system run on guest with qemu-kvm-9.0.0

Description
I am creating a reference policy using the create_mb_refstate script on UEFI with --without-measuredboot parameter.
However, the system fails attestation with
2024-08-14 16:59:29.413 - keylime.tenant - ERROR - Failed key derivation for Agent d432fbb3-d2f1-4a97-9ef7-75bd81c00000 (<IP_ADDRESS>:9002) (expected length 96, received 0)

Aug 14 16:57:58 localhost.localdomain keylime_verifier[12058]: 2024-08-14 16:57:58.228 - keylime.measured_boot - ERROR - Boot attestation failed for agent d432fbb3-d2f1-4a97-9ef7-75bd81c00000, policy example, refstate={"has_secureboot": false, "scrtm_and_bios": [{"scrtm": {"sha256": "0x5a16d6659724873d146bdb8cf1c9f9fdb5473040107f16493fd2051ca71a1227"}, "platform_firmware": [{"sha256": "0x4421b7a2d825dd554a65ee0e2dc4239f52bcb0e1f0b241950e0484b5f77a57be"}, {"sha256": "0xb71f49a0bd6f533512b4096ec82b186139128b89b652a19e24628942eb079bc4"}]}], "pk": [], "kek": [], "db": [], "dbx": [], "mokdig": [{"sha256": "0x69bbddbe5a4480b7ab2e5632638b978bba978e66d04b677b3fd4ad2e5c7e1c5b"}], "mokxdig": [{"sha256": "0x8d8a3aae50d5d25838c95c034aadce7b548c9a952eb7925e366eda537c59c3b0"}], "kernels": [{"shim_authcode_sha256": "0x5af24fa7419a5bb4cebe934221c3155cb3918773c5b7033d59cddda344f3ebf5", "grub_authcode_sha256": "0xe0174a27260716192d6834c2fcf8ac4feb61a9a8141612fe319db9046affe0ea", "initrd_plain_sha256": "0xe86283449fb128a8abbcca60a3189aad45868efe76e72d5519d1580f1dd3aac3", "vmlinuz_plain_sha256": "0xc5a7182a2327466dcca26f8cf28bd573f9d90e92975b41fd9726efde5dcfd3c2", "kernel_cmdline": "\\(hd0,gpt2\\)/vmlinuz\\-6\\.10\\.0\\-15\\.el10\\.x86_64\\ root=UUID=8cb9bf1f\\-3760\\-4653\\-bf12\\-14ef0f2d0352\\ ro\\ resume=UUID=4233494e\\-9a02\\-41cf\\-b3e5\\-7970a0359670\\ console=ttyS0,115200\\ ima_appraise=fix\\ ima_canonical_fmt\\ ima_policy=tcb\\ ima_template=ima\\-ng"}]}, reason={'EventNum': 5, 'PCRIndex': 7, 'EventType': 'EV_EFI_VARIABLE_DRIVER_CONFIG', 'DigestCount': 1, 'Digests': [{'AlgorithmId': 'sha256', 'Digest': 'dea7b80ab53a3daaa24d5cc46c64e1fa9ffd03739f90aadbd8c0867c4a5b4890'}], 'EventSize': 36, 'Event': {'VariableName': '8be4df61-93ca-11d2-aa0d-00e098032b8c', 'UnicodeNameLength': 2, 'VariableDataLength': 0, 'UnicodeName': 'PK', 'VariableData': None}} Event VariableData [is not a list, is not a list]

Expected behavior vs. actual behavior
system should pass the attestation since the policy has been generated based on its measured boot log
Steps to reproduce problem

create a MB policy and attempt to attest a system

Relevant logs
Attached binary_bios_measurements log
binary_bios_measurements.tar.gz

@kkaarreell I think you meant --without-secureboot, right?

@kkaarreell I think you meant --without-secureboot, right?

Right. 😁


Separating plugins

This pull request separates plugins, resulting in:
Authentication:

queryauth
headerauth
basicauth

Logging:

tcplog
udplog
filelog

Other:

ratelimiting

Plugins will still be living in the main repo as they were before, this pull requests just separates them.

Coverage decreased (-2.19%) to 71.4% when pulling b69dc6db3c7d8acccb71738ec514ab4a43498fb8 on feature/auth-plugins into 3d5ccff3c13bb249757e1fc36e9b476ddc5fef01 on master.

Coverage decreased (-1.12%) to 72.46% when pulling 5b936564926649260b55f1beefd5385f0360a5ba on feature/auth-plugins into 3d5ccff3c13bb249757e1fc36e9b476ddc5fef01 on master.

Coverage decreased (-1.71%) to 71.87% when pulling 0bf47fe413839dc2bbdc63ef4cdeca5c74b50edd on feature/auth-plugins into 3d5ccff3c13bb249757e1fc36e9b476ddc5fef01 on master.

Coverage decreased (-1.34%) to 72.24% when pulling a4a3199924e7a68400071dd64d604f04ffe76cfa on feature/auth-plugins into 3d5ccff3c13bb249757e1fc36e9b476ddc5fef01 on master.

Coverage decreased (-1.27%) to 72.31% when pulling 98d32944dc1d3926cb58533c2df56ee2491e91b0 on feature/auth-plugins into 3d5ccff3c13bb249757e1fc36e9b476ddc5fef01 on master.


Support resilient values

Specifically LLDB now calls into Remote Mirrors to determine whether a
resilient value that is stored in a fixed-size buffer is stored inline
or not.
rdar://problem/48018240

@dcci  Can you give this a very thorough look please?

This update marks the first version of the patch that actually passes the entire lldb testsuite (including the REPL tests and a bunch of tests I added myself). I still haven't addressed all of @slavapestov 's feedback, I'll follow up with that as soon as I'm done with https://github.com/apple/swift/pull/23465/, which is also a prerequisite for this patch.

Added tests for nested tuples and structs.

test with https://github.com/apple/swift/pull/23425
@swift-ci test

test with https://github.com/apple/swift/pull/23425
@swift-ci test


Create wireguard.svg

#419

Looks like it is missing an eye. Any way to add that in?

Closed in #455


Number of health reports on NodeAgentService goes above MaxSuggestedNumberOfEntityHealthReports when number of nodes are more than MaxSuggestedNumberOfEntityHealthReports/2.

Maximum number of health reports on an entity can only be 500. If there are reports more than that for a single health entity a warning is posted on that entity. This does not impact the functioning of POA but it will be stay in warning state all the time.
MaxSuggestedNumberOfEntityHealthReports has default value of 500.

Quick mitigation for this issue would be to increase the MaxSuggestedNumberOfEntityHealthReports to more than twice the number of nodes.

Hello Team,
Wanted to check if there are plan on expiring this health report to avoid this scenario all together?

Latest POAv1.4.8 introduces finite TTL to the Health Reports from POA, which would make Health reports from unavailable Nodes/Services go away in a finite time.


Migrate from JCenter

JFrog just killed JCenter. I wonder how that goes. Probably a bunch of libs will become unavailable because they don't want to switch (SRC: https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/)
I created an artifcatory instance at schlaubi.jfrog.io and will migrate to that any time soon

https://schlaubi.jfrog.io/artifactory/lavakord/dev/schlaubi/lavakord/kord-jvm/1.0.0-SNAPSHOT/ There is a rolling release hosted here