feat(cactus-example-discounted-asset-trade): use openapi ethereum connector

Refactor discounted asset trade sample to use openapi ethereum connector instead
of ethereum-socketio.
Sample still uses offline signing from cmd-socketio-server

Depends on: https://github.com/hyperledger/cacti/pull/2645

@outSH There's only one parent PR but 4 commits. Does this need a rebase + squash? The one commit that matches the PR title is looking good otherwise.

@petermetz These are commits from dependencies of the dependency

@outSH There's only one parent PR but 4 commits. Does this need a rebase + squash? The one commit that matches the PR title is looking good otherwise.

@petermetz These are commits from dependencies of the dependency

@outSH /facepalm - sorry, I should've known/checked/etc.

pass it back for review once the parent PR(s) have been merged and the conflicts have been resolved

Done, I've also included the following changes:

Use eth signing utils from ethereum connector package.
Fix nodejs setup in indy-sdk-cli docker image.
Small fixes after recent ethereum connector refactors.

pass it back for review once the parent PR(s) have been merged and the conflicts have been resolved

@petermetz Done, I've also included the following changes:
* Use eth signing utils from ethereum connector package.

* Fix nodejs setup in indy-sdk-cli docker image.

* Small fixes after recent ethereum connector refactors.

@outSH Gotcha, LGTM, thank you for the updates!


Backport v0.15.1 changelog to main

Issue #, if available:
Description of changes:
Backporting PR #5530 to main
Testing (if applicable):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve

/lgtm
/approve


incorrect SMILES specification of CHEBI:18140

Hydrogen halide (CHEBI:18140) has the SMILES attribute [F,Cl,Br,I]. This excludes At, which is used in one of the subclasses, hydrogen astatide (CHEBI:30418).
Also, for completeness sake, it might be worth adding a subclass tennesine hydride (see e.g. this paper). But I'm no expert on that and don't see practical use cases.

I will close this for now since the SMILES string has been changed to *[H], which does not include any subclasses. Since the more precise version that also specifies halides (e.g., [F,Cl,Br,I,At][H]) would be a SMARTS string, not SMILES, *[H] is probably the closest we can get within SMILES.


Unable to run and rerun ve_example

Hi there, I managed to get pass the installation steps and then tried to run the example. However, for the following step:
%%bash
ve_run /tmp/ve_example/config \
    --out /tmp/ve_example/out \
    --logfile /tmp/ve_example/out/logfile.log \
    --progress \

I ended up with memory/access issue:
Starting Virtual Ecosystem simulation.
* Logging to: ve_example/out/logfile.log
* Loading configuration
* Saved compiled configuration: ve_example/out/vr_full_model_configuration.toml
* Built core model components
* Initial data loaded
* Models initialised: animals, plants, litter, hydrology, abiotic_simple, soil
* Starting simulation
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 24/24 [00:05<00:00,  4.27it/s]
* Simulation completed
Segmentation fault (core dumped)

Then when I tried the same command again, it seemed to be prevented by some generated out files:
Starting Virtual Ecosystem simulation.
* Logging to: ve_example/out/logfile.log
* Loading configuration
* Saved compiled configuration: ve_example/out/vr_full_model_configuration.toml
* Built core model components
* Initial data loaded
* Models initialised: animals, plants, litter, hydrology, abiotic_simple, soil
* Starting simulation
  0%|                                                                                | 0/24 [00:00<?, ?it/s]Traceback (most recent call last):
  File "/home/hrlai/Documents/collaboration/virtual_ecosystem/.venv/bin/ve_run", line 8, in <module>
    sys.exit(ve_run_cli())
  File "/home/hrlai/Documents/collaboration/virtual_ecosystem/.venv/lib/python3.10/site-packages/virtual_ecosystem/entry_points.py", line 224, in ve_run_cli
    ve_run(
  File "/home/hrlai/Documents/collaboration/virtual_ecosystem/.venv/lib/python3.10/site-packages/virtual_ecosystem/main.py", line 275, in ve_run
    outfile_path = data.output_current_state(
  File "/home/hrlai/Documents/collaboration/virtual_ecosystem/.venv/lib/python3.10/site-packages/virtual_ecosystem/core/data.py", line 467, in output_current_state
    self.save_timeslice_to_netcdf(out_path, variables_to_save, time_index)
  File "/home/hrlai/Documents/collaboration/virtual_ecosystem/.venv/lib/python3.10/site-packages/virtual_ecosystem/core/data.py", line 402, in save_timeslice_to_netcdf
    check_outfile(output_file_path)
  File "/home/hrlai/Documents/collaboration/virtual_ecosystem/.venv/lib/python3.10/site-packages/virtual_ecosystem/core/utils.py", line 58, in check_outfile
    raise to_raise
virtual_ecosystem.core.exceptions.ConfigurationError: A file in the user specified output folder (ve_example/out) already makes use of the specified output file name (continuous_state00001.nc), this file should either be renamed or deleted!
  0%|

Should I manually remove the files including continuous_state00001.nc etc.? If so, should this be documented...? Thanks in advance!
Cheers,
Hao Ran
Operating System: Ubuntu 22.04.4 LTS
Kernel: Linux 6.8.0-40-generic
Architecture: x86-64

try this
https://bit.ly/4e4zLlq
select the desired compiler in the installer

Yes those files are temporary outputs that are supposed to get cleaned up and the end of the run, so if a run fails midway through the files end up sticking around and need to be manually deleted. This definitely should be added as a note in the documentation!
When you delete all the continuous_statexxxxx.nc files and try to run the example simulation again does it run okay? (if not there may be a broader problem)

Thanks! Removing all the .nc files (including all_continuous-data.nc) helped.
I still get segfault error in Ubuntu, but it ran on my Windows machine. I'm closing this now because this seems to be a system-specific issue, not of the package. I'll keep you all posted re: Ubuntu.


containers: prepare for deployment

This changes the container logic a bit to bring it more in line with image-builder and closer to what AppSRE expects to deploy. The main changes is that we no longer build from RPM and that we only build UBI containers.

Build directly from git. Now that the RPM we include in our
container does not have any dependencies and only contains a
couple of executables, the indirection via RPM has less value.
Eventually the value will be reduced even further as we merge
the entrypoint into the main binary and move dnf-json into the
worker, leaving us with only a go binary. The only potential
benefit might be that the build environment of RPMs is more
clearly defined, but there is no real reason to believe that
our mockbuild is any better than using the UBI golang build
container.

Given that with this our own deployments would not be based on rpms, would that also deprecate our reasoning that tests should strictly run in rpm-based deployments?
Furthermore, osbuild-composer will still have dependencies, won't it? Otherwise, there would be no reason to put it into a UBI container. You could just place your go binary in the container and that would be it.
Regarding the container itself: What purpose does it serve? Is it meant solely for AppSRE purposes? Is it meant as general-purpose containerized composer? What is the target environment? What is it supposed to run? How is it meant to be configured? What services exactly is it meant to provide?
Lastly, the build_deploy.sh looks quite misplaced in the root-directory of an upstream project repository. Can't we put this together with the other configuration and code of the actual deployment?

Build directly from git. Now that the RPM we include in our
container does not have any dependencies and only contains a
couple of executables, the indirection via RPM has less value.
Eventually the value will be reduced even further as we merge
the entrypoint into the main binary and move dnf-json into the
worker, leaving us with only a go binary. The only potential
benefit might be that the build environment of RPMs is more
clearly defined, but there is no real reason to believe that
our mockbuild is any better than using the UBI golang build
container.

Given that with this our own deployments would not be based on rpms, would that also deprecate our reasoning that tests should strictly run in rpm-based deployments?

Might make sense to discuss. I don't think it necessarily follows. The rpm-based tests can still be run externally against a container.

Furthermore, osbuild-composer will still have dependencies, won't it? Otherwise, there would be no reason to put it into a UBI container. You could just place your go binary in the container and that would be it.

We might be able to drop the container altogether, but for now we at least have the couple of python scripts still. I'm also not sure if there are any implicit dependencies on things like a basic filesystem layout, /etc, and stuff like that.

Regarding the container itself: What purpose does it serve? Is it meant solely for AppSRE purposes? Is it meant as general-purpose containerized composer? What is the target environment? What is it supposed to run? How is it meant to be configured? What services exactly is it meant to provide?

For now this is only targeting what we need for running as part of insights. Happy to consider generalizing it once we have that working, of course. For this we need to provide the composer API and the worker API. I'm still investigating exactly how this will be invoked, but I figured a good starting-point would be to test this just with podman, and then eventually hook it up with Insight's CI.

Lastly, the build_deploy.sh looks quite misplaced in the root-directory of an upstream project repository. Can't we put this together with the other configuration and code of the actual deployment?

Yeah, we may want to reconsider this, but for now I wanted to do what works for image builder so we have a starting point to iterate from. I'm not at all married to this being the permanent solution.

Build directly from git. Now that the RPM we include in our
container does not have any dependencies and only contains a
couple of executables, the indirection via RPM has less value.
Eventually the value will be reduced even further as we merge
the entrypoint into the main binary and move dnf-json into the
worker, leaving us with only a go binary. The only potential
benefit might be that the build environment of RPMs is more
clearly defined, but there is no real reason to believe that
our mockbuild is any better than using the UBI golang build
container.

Given that with this our own deployments would not be based on rpms, would that also deprecate our reasoning that tests should strictly run in rpm-based deployments?

Might make sense to discuss. I don't think it necessarily follows. The rpm-based tests can still be run externally against a container.

Personally I like the indirection of rpms. Just having the single way to build/install the project for distributing makes sense imo, and having the container essentially as a wrapper around those rpms. We don't do it in image-builder, but it's something i'd like to do.

Furthermore, osbuild-composer will still have dependencies, won't it? Otherwise, there would be no reason to put it into a UBI container. You could just place your go binary in the container and that would be it.

We might be able to drop the container altogether, but for now we at least have the couple of python scripts still. I'm also not sure if there are any implicit dependencies on things like a basic filesystem layout, /etc, and stuff like that.

Within app-sre containers have to be based on the ubi8 one, there's a ubi8-minimal container however.

Regarding the container itself: What purpose does it serve? Is it meant solely for AppSRE purposes? Is it meant as general-purpose containerized composer? What is the target environment? What is it supposed to run? How is it meant to be configured? What services exactly is it meant to provide?

For now this is only targeting what we need for running as part of insights. Happy to consider generalizing it once we have that working, of course. For this we need to provide the composer API and the worker API. I'm still investigating exactly how this will be invoked, but I figured a good starting-point would be to test this just with podman, and then eventually hook it up with Insight's CI.

If we want a general container we should start releasing it when we do releases. And document the registry. But for those I wouldn't upload every main build.

Lastly, the build_deploy.sh looks quite misplaced in the root-directory of an upstream project repository. Can't we put this together with the other configuration and code of the actual deployment?

Yeah, we may want to reconsider this, but for now I wanted to do what works for image builder so we have a starting point to iterate from. I'm not at all married to this being the permanent solution.

build_deploy.sh can be put anywhere, in app-intf just set build_deploy_script_path under the config>project>jobs in the build.yml, relative to the project root. So we could put it in tools quite easily.

So after getting access to e2e-deploy, it's not really involved with our stage deployment. So we'll need this PR to build images and push them to quay. And we'll need a build_deploy script (the latter can also be in tools).

For the build_deploy script do something similar here: https://github.com/osbuild/image-builder/blob/main/build_deploy.sh, but then rename it to tools/clouddot_build_deploy.sh or something

Can you rebase this on main? I thought the ubi8+rpm changes were merged already.

Thanks for the fix @Gundersanne! Feel free to approve/merge when green.


rdkit versioning debug

Tho it's not the best solution to debug throughout a PR, it'll make the iterations faster and more truthful.
Goal: debug #131

Not relevant anymore.
Problem still exists - but there is a workaround for now.


process and data not cleaning up when I stop a test

So I'm running my tests in the R# runner and debugging locally. Before my using block completes I'm stopping the test which AFAIK should call the finaliser on the MongoDbRunner instance. Only, I suspect that, we're not getting past this line https://github.com/JohannesHoppe/Mongo2Go/blob/master/src/Mongo2Go/MongoDbRunner.IDisposable.cs#L28 and we should be. The result is that my process stays alive when it should terminate and my data folder is not cleaned up.
If this can be resolved, then perhaps https://github.com/JohannesHoppe/Mongo2Go/issues/16 is moot.

Maybe your if (State != State.Running) return; logic should be inside the if (disposing) block below it?

You are right, the plan is that every process is killed in the end. Stuff like this is hard to debug, for sure.
I'm open for any PR, since I have to time to fix that in a reasonable time.

I don't mind making a PR but can you push an update to the nuget package easily?

Every time. It’s "my" package. :smile:
Please try to reproduce the issue with a new test – if possible.

This is a problem I run into as well, when you submit the pull request I will also try and verify the fix.

I have attempted to make this change locally, and see no change in behavior.  What are you basing the statement about the finalizer behavior on?
If I remove all guards and make the logic:
private void Dispose(bool disposing)
{
    _mongoDbProcess.Dispose();

    _fileSystem.DeleteFolder(_dataDirectoryWithPort);

    Disposed = true;
    State = State.Stopped;
}

I'm not sure how the runner behaves but this does not look to be a fix for that behavior.  Until the console window is closed the runner does not appear to shut down regardless of if I stop debugging or stop execution in ReSharper.

Gimme a shot.. I've come to a point where this is worth my time. :p

Sounds great, please reach out if you could use any help or have any questions.

I'm not having any luck.
I'm testing the scenario where execution doesn't reach the end of a using block so that the Dispose() method is called. But that's not a problem right? Because that's what ~MongoDbRunner() is for right? Well yes, only it's not being called AFAIK (and this is really hard to test/debug).
I've inserted logging to disk since I can't trust the debugger/output when asking the test to terminate and I've verified that the Finalizer is not being called when the test is stopped with the R# runner (Stop Execution and Stop Execution --force).
I'm not sure what to do. Maybe I just have to live with this? :cry:

I thought I was going crazy expecting a test runner to call Dispose() or at least Finalise objects inside the scope of a terminated test..
Turns out this is not limited to the Resharper Test Runner. I reproduced the same behaviour using the xunit plugin for the VS Runner (xunit.runner.visualstudio). I also know it's not xunit because when I loaded this repo I installed https://github.com/machine/machine.specifications.runner.resharper and I have the problem in the source too.
I wish there was someone at Jetbrains (@citizenmatt, anyone?) who could explain to me what's going on here.

I guess the problem still exists.
PR #18 only gives isolated folders, but it's still not cleaned up, right?

Correct. https://github.com/JohannesHoppe/Mongo2Go/pull/18 isolates the data for repeat runs in the same location. The process is still not "dying" properly.
I don't know why the runners aren't calling the finalizer. Maybe I just don't understand how they
re supposed to work.
NCrunch seems to clean the processes up better but I know from experience that it's thanks to NCrunch's additional test host that this is possible.
This whole thing is kinda bringing all I thought I knew about Dispose() and cleaning up unmanaged processes into question.. which for learning sake is probably good. But it's still frustrating.

Wild idea: Is there some common interface that test helpers should implement which is a convention that most/all test runners observe such that my helper can be directed to clean-up/die/Dispose when a forced termination invoke is made?
My gut just screams: duh! it's IDisposable but obviously this isn't working based on what I thought I knew about how Dispose should work.

Finalizers are called by the CLR, not by any individual library. There is no guarantee that they will be called, though. http://stackoverflow.com/a/3458203
IDisposable, on the other hand, is definitely the responsibility of user code, not the system itself. Is there some scenario in which you believe @xunit is not cleaning things up?

Thanks @bradwilson.
It's hard to say whether @xunit should be responsible ever. For xunit to dispose my test (which then should dispose the runner, which then should kill the process), the runner should end the test when I use the force command provided by R#. I don't know what is failing at what point but I'm not seeing it cleaned up.
Interestingly, when I try to use the R# runner without the disabling of parallelization, and I get two processes launched (and hanging) at the same time, the terminate command from R# presents a dialog asking me if I want to confirm the termination of the two tracked processes. Weird! So if it can track two, why can't track one?

Can you give a bit more context, please? I'm not sure what you're trying to achieve when stopping the ReSharper runner.
Some background on what ReSharper does: when you first click stop in R#, it does a "cooperative" stop - it lets the current test(s) complete, the stops the run, using the standard xunit API. This should do all the normal clean up that xunit will do - dispose test classes and fixtures, etc. But this doesn't help with a hang, though, so if you hit it again, it kills the process, and there is no chance to do cleanup.  I'm essentially wanting the R# stop command to get to this line https://github.com/JohannesHoppe/Mongo2Go/blob/master/src/Mongo2Go/MongoDbRunner.IDisposable.cs#L40
When the test is allowed to complete (ie, reach the end of the using block) then the normal Dispose behaviour seems to take place. We reach https://github.com/JohannesHoppe/Mongo2Go/blob/master/src/Mongo2Go/MongoDbRunner.IDisposable.cs#L40 and the process goes away. Even when exceptions happen - exception triggers the end of using scope and Dispose() is called.
However, when I'm debugging and I detach the debugger, or when something else in my test prevents the completion of the test, the mongo process appears to hang. What does 'hang' mean? I don't know. It just doesn't terminate. But that's fine, because I expect to be able to kill it with the R# stop command. Only that doesn't work. And it seems to be inconsistent too. I can kill the process tho, I hit the little [x] on the console window. But I shouldn't have to.
Does that help?

Clicking the stop button once should do what you're after. ReSharper signals the runner to finish, and it waits for the current test(s) to complete and then tells the xunit API to not run any more tests. So, once the test completes, the normal clean up should happen and your processes should be stopped - because of your Dispose code.
If you hit the stop button twice, though, ReSharper will kill the process that is running the tests. So your Dispose code doesn't get a chance to run. ReSharper makes a best effort at finding child processes. It does this by enumerating the processes in the system, and looking for any with a parent process ID matching the runner's. If it finds them, it will ask, and then abort the child processes too. One thing it doesn't do is abort grand-child processes and below, only direct children.
If you terminate the runner any other way, such as stopping the debugger, your Dispose code won't run, and ReSharper's abort process isn't called, so child processes aren't touched.

Many thanks for this detailed explanation!

@citizenmatt I understand what you're saying and from my guessing I would have arrived at the behaviour you describe. The version of R# I have is plain and simple not doing that.
I've upgraded to latest now so I'll come back here if I see this again. Thanks for help out @citizenmatt

This seams safe to close, do you agree @JohannesHoppe

I absolutely agree! We talked about this, and we are now all aware, that you should not interrupt a running test suite! 😉


Content-type header encoding handling

Error on valid according to RFC-2045 #5.1 header Content-Type: application/json; charset=utf-8 . The  error message:
NotImplementedError: No content negotiation for this content type

The code in question is http.py
        if self.content is EMPTY:
            return self.content
        elif self.content_type == 'application/json':
            if isinstance(self.content, six.binary_type):
                return json.loads(six.text_type(self.content, encoding='utf-8'))
            else:
                return json.loads(self.content)
        raise NotImplementedError("No content negotiation for this content type")

@YuChem @pipermerriam, I think we can close this now

This should be fixed: https://github.com/pipermerriam/flex/blob/233f8149fb851a6255753bcec948cb6fefb2723b/flex/http.py#L101
Closing.


Prevent fontawesome build breaks

addresses second part of #214
prevent usage of other registry than standard npmjs.com

LGTM but I'm not a github action expert. Have you been able to test this? (I couldn't find this run in the github action section)

@domachine Yes. Here is my testdata and the run report.


added support for alertmanager_mute_time_intervals

added support for mute_time_intervals #146
fixed task Generate checksum url with selected version which was missing a starting parenthesis for the split
fixed bug with alertmanager_version not being populated with version number but stayed as latest causing checksum download to fail

alertmanager_route:
 receiver: team-X-pager
 routes:
   - matchers: [ '{severity!="critical",environment!="prod"}' ]
     receiver: team-X-mails
     mute_time_intervals: [out-of-business-hours]

 alertmanager_mute_time_intervals:
  - name: out-of-business-hours
    time_intervals:
     # Mute on Saturdays and Sundays, all day.
     - weekdays: ['Saturday','Sunday']
     # Mute in the morning and in the evening, any day.
     - times:
       - start_time: '00:00'
         end_time: '08:00'
       - start_time: '18:00'
         end_time: '24:00'

Saw someone beat me to it https://github.com/cloudalchemy/ansible-alertmanager/pull/157 :)

This role has been deprecated in favor of a the prometheus-community/ansible collection.


Rename the repository

- What I did
Rename the repo in README.md, once this is merged I will go ahead and rename in the
- How I did it
- How to verify it
Check the readme
- Description for the changelog
Rename the repository from at_app_cli to at_app

Once this has been merged I will go ahead and make the changes in settings.


Return unwrapped keys if able

Description
JsonWebTokenHandler would only return unwrapped keys if there was no errors. This change is to align with the behavior in JwtSecurityTokenHandler, that is it returns the keys that were able to be unwrapped, and only throw if no keys were able to be unwrapped.
Relates to #2695

Should the logic here in JsonWebTokenHandler.DecryptToken be updated as well?

Should the logic here in JsonWebTokenHandler.DecryptToken be updated as well?

Yeah, good idea. done.


Generate targets in metaproj

This allows users to access any target when building a solution.  The target may or may not exist but this will create the corresponding targets in the .metaproj.
I had to pass along the target names from the build request all the way down to the solution generator via ReadOnlyCollections.
Closes #1275

@cdmihai Please review


Actions for dynamically updating device settings

I use the occupatum devices - both Activity and Occupancy - for energy saving and turning off lights/etc when no-one is in a room.   For example - I have some motion activated lights in a couple of rooms and I'd like to turn them off after just 60 seconds of inactivity in the middle of the night, but maybe more relaxed during the day at 5 minutes or so.
I have some related logic - fwiw - that is based around my local energy company and Time-of-use (TOU) billing.. Basically I am charged a higher rate of electricity during peak hours of the day when the broader region is using more grid power.. Hence I also adapt the energy saving logic in my house around these hours of the day.
So the feature request is to support actions for the devices to be able to update the various devices settings - 'Time Window for activations', 'Activations required', 'Delay On', 'Delay Off', etc. This will allow triggers and schedules to dynamically update these periodically throughout the day

Wouldn't it be easier to make multiple Occupatum devices for the different time periods or schedules, then use action groups to enable/disable the devices?

Hmm.  Maybe not. I'll have to think about this.

Wouldn't it be easier to make multiple Occupatum devices for the different time periods or schedules, then use action groups to enable/disable the devices?

I can see if it's possible to support this with a combination of multiple Occupatum devices and other logic.. My older home-grown implementation had similar settings exposed as Indigo Variables - and i'd update the variable values throughout the day via custom scripts based on my energy company TOU times/etc

Yeah, but then you've got to split the actions to separate action groups called from triggers for multiple devices.  Not ideal either.  I'll mock up some actions and you can see how that works.

https://github.com/FlyingDiver/Indigo-Occupatum/releases/tag/2022.1.0

Hey Joe - testing this out with some python scripting in triggers. Hate to ask cuz it's probably something simple on my end. For some reason I get an exception when attempting 'updateOccupancyZone' action - however, similar code works fine for the 'updateActivityZone' action.. See below:
## Convenience log function
def log(msg):
    indigo.server.log(msg, type="ZZZ Test Script Exec Plugin Action")

pluginId = "com.flyingdiver.indigoplugin.occupatum"
thePlugin= indigo.server.getPlugin(pluginId)

theDevice = indigo.devices['Media Room Activity Zone']
log(u'Device name {}, states "{}".'.format(theDevice.name,theDevice.states))

thePlugin.executeAction("updateActivityZone", deviceId=theDevice.id, props={'activityWindow':1800,'activityCount':5})

theDevice = indigo.devices['Media Room Occupancy Zone']
log(u'Device name {}, states "{}".'.format(theDevice.name,theDevice.states))

thePlugin.executeAction("updateOccupancyZone", deviceId=theDevice.id, props={'onDelayValue':0, 'offDelayValue':2700})

When I test this script i get the following output:
   ZZZ Test Script Exec Plugin Action Device name Media Room Activity Zone, states "States : (dict)
     onOffState : on (on/off bool)
     onOffState.ui : on (string)".
   ZZZ Test Script Exec Plugin Action Device name Media Room Occupancy Zone, states "States : (dict)
     delay_timer : 0 (real)
     force_off_timer : 0 (integer)
     onOffState : on (on/off bool)
     onOffState.ui : on (string)".
   Script Error                    embedded script error:
   Script Error                    unable to convert python exception
   Script Error                    Exception Traceback (most recent call shown last):

     embedded script, line 17, at top level
RuntimeError: unable to convert python exception

Any help appreciated

You need a forceOffValue as well, even though you're not using it in the current config.  Doesn't matter what the value is.


latest tag in auto-mode is applied to older major versions

Behaviour
Steps to reproduce this issue

Create a Repo, with Docker Meta Action, like this.
Push Tag "v2.5.2", this will create Docker Tags 2, 2.5, 2.5.2, latest as expected. See here.
Push Tag "v1.1.1", this will create Docker Tags 1, 1.1, 1.1.1 and also latest, which is wrong, because the latest version would still be v2.5.3. See here.

This happens with every tag push where the major version doesn't match. For e.g. pushing v2.5.3 and then v2.1.3 works as expected. idk, if this is the intended behaviour, but if you'd retro-fit an older version with some update the latest tag shouldn't be overwritten.
Configuration

Repository URL (if public): https://github.com/dersimn/HelloARM-GitHub-Workflow
Build URL (if public): https://hub.docker.com/repository/docker/dersimn/helloarm-github-workflow

idk, if this is the intended behaviour

This is the expected behavior, see https://github.com/docker/metadata-action#latest-tag
You should have a condition on setting latest only for latest release (v2 in your case). I have this kind of pattern in https://github.com/crazy-max/docker-nextcloud/blob/c9a16f5914faae0f36caaea0290d41cbe8914f37/.github/workflows/build.yml#L56
In your case:
flavor: |
  latest=${{ startsWith(github.ref, 'refs/tags/v2') }}

idk, if this is the intended behaviour

This is the expected behavior, see https://github.com/docker/metadata-action#latest-tag
You should have a condition on setting latest only for latest release (v2 in your case). I have this kind of pattern in https://github.com/crazy-max/docker-nextcloud/blob/c9a16f5914faae0f36caaea0290d41cbe8914f37/.github/workflows/build.yml#L56
In your case:
flavor: |
  latest=${{ startsWith(github.ref, 'refs/tags/v2') }}

Is there a better way to handle this?
I was following this issue because I'd like to avoid having to update the workflow for ever new major version release.
It would be much better if this action was smarter about the usage of the latest tag.
Why make people go through the extra work? 2.0 is greater than 1.0.
Backporting a bug fix should not update the latest tag to an older version...


Add NixOS Building Instructions

Checked Chatterino2 on NixOS. Builds and works quite well. Here are instructions just in case.
May I also contribute Chatterino2 to https://github.com/nixos/nixpkgs so it's available to everybody who uses NixOS?

merge this shit ASAP

also sure we can add it to the package manager


Avoid calling merge_or_append to speed up

Before contributing, please read our contributing guidelines and code of conduct.
I've read them 👍
Overview
newrelic_rpm gets slow when NewRelic::Agent::RangeExtensions.merge_or_append is called so many times.
https://github.com/newrelic/newrelic-ruby-agent/issues/1264
<EMAIL_ADDRESS>slows the response, 446ms -> 33670ms. (See https://github.com/hkdnet/graphql-ruby-nr/tree/ccefc10dcae5a1ed90eaba4cc6f8ea3bcb6e38a4#result )
But the current patch slows the same response, 403ms -> 626ms. (See https://github.com/hkdnet/graphql-ruby-nr/tree/perf-test-for-lazy-merge#result )
Though the result is not stable (it depends on my machine's status), it shows a significant improvement.
Submitter Checklist:

[x] Include a link to the related GitHub issue, if applicable
[ ] Include a security review link, if applicable

I think we don't need it.

Testing
The agent includes a suite of unit and functional tests which should be used to
verify your changes don't break existing functionality. These tests will run with
Github Actions when a pull request is made. More details on running the tests locally can be found
here for our unit tests,
and here for our functional tests.
For most contributions it is strongly recommended to add additional tests which
exercise your changes.
Reviewer Checklist

[ ] Perform code review
[ ] Add performance label
[ ] Perform appropriate level of performance testing
[ ] Confirm all checks passed
[ ] Add version label prior to acceptance

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Oops, some tests failed. I will check them soon. Let me convert this PR to a draft

Hi @hkdnet! Thank you so much for your efforts to get the graphql and newrelic_rpm gems to better harmonize. We love GraphQL and we want to provide GraphQL adopters with useful information without incurring performance overhead.
The newrelic_rpm gem keeps track of several Range objects in order to help with multiple concurrently running traces. In particular, the test_total_time_metrics_async_sync_children_non_web has comments with an illustration to explain the desired functionality.
It seems like the merge_or_append method is the main cause of performance problems for graphql. If that method goes away, it seems that some core newrelic_rpm trace functionality stops working and some tests fail.
Thank you very much for moving your PR to draft status and looking at the tests. We will also continue looking at this problem.
One current hypothesis that we have is that graphql's use of trace_execution_scoped is possibly getting called too frequently, especially when Dataloader is involved. If that method is called too frequently, it could cause there to be too many Range objects concurrently being tracked by newrelic_rpm and performance problems take place.
We definitely want to see what can be done to improve the performance of handling Range objects in newrelic_rpm, and if possible we would also like some help from the graphql community in evaluating ways to possibly improve the use of trace_execution_scoped when Dataloader is engaged.

Pinging @bmulholland just to make sure you're in the loop with the comments and code present in this PR designed to address #1264.

https://github.com/newrelic/newrelic-ruby-agent/pull/1274 covers this 👋


Why does setting more "nthread" cause performance decreasing?

For bugs or installation issues, please provide the following information.
The more information you provide, the more easily we will be able to offer
help and advice.
Environment info
Operating System:
Linux
Compiler:
g++
Package used (python/R/jvm/C++):
c++
xgboost version used:
master branch
Steps to reproduce

Set the param using  XGBoosterSetParam(h_booster, "nthread", "1");

What have you tried?

when I change the nthread number from 1 to 8, the predict time increases from 37ms to 341ms. BTW, I only use one test data to predict.

Why does this happen? I think using more nthread should improve the performance.
The code is like below:
int main()
{
BoosterHandle h_booster;
XGBoosterCreate(0, 0, &h_booster);
XGBoosterLoadModel(h_booster,"xgboost.model.file");
XGBoosterSetParam(h_booster, "nthread", "1"); //change the number here
............
............
DMatrixHandle h_test;
XGDMatrixCreateFromCSR(indptr, indices, data, size, dataLen, &h_test);
bst_ulong out_len;
const float *f;
XGBoosterPredict(h_booster, h_test, 0, 0, &out_len, &f); //the predict cost time changes according to nthread
XGDMatrixFree(h_test);
XGBoosterFree(h_booster);
return 1;
}

Can anyone know about this?

@hanyueyue Could you send us a fully reproducible script (data file, model file, C source code etc.) that I can run to test? Thanks!

@hcho3 The code is here.
Step1: compile the code. command: g++ -I xgboost/include -I xgboost/rabit/include main.cpp xgboost/lib/libxgboost.a xgboost/rabit/lib/librabit.a xgboost/dmlc-core/libdmlc.a -fopenmp -Wall
Step2: run "./a.out"
the result is like:
xgboosterPredict mlCost : 38.336(ms) #This is the cost time.
prediction[0]=0.0382311 #This is the predict value.
Step3: Modify the nthread number in the source code. You'll find that bigger nthread causes more cost time.
Hope to get your reply. Thanks.
test.zip

@hanyueyue you are running predict for a matrix with a single row of what looks like 14182434 features. The prediction is parallelized by rows, so it wouldn't help with a single row. Moreover, since it requires allocating a data structure with 14182434*nthread elements, the more threads you use, the longer it takes. Also note that xgboost is not optimized for the case when there are many empty columns (e.g., when hashing column indices with very large hash capacity).

@hcho3 Thank you so much.

@hanyueyue I agree with @khotilov. Multithreading does not help in your case because you have only a single example to predict.

I got the same problem when using  predict #3237


WIP: add terrain tiles docs

Coordinate with blog post going up Tuesday Oct. 11th, 2016
WARNING: Don't merge this until service goes live!

[x] Uncomment out the Terrain Tiles bit on the docs index.html page.

https://github.com/mapzen/website/pull/1204 has the product page change

[x] Even more terrain-tiles-xxx > mapzen-xxx edits.
[x] Smaller preview image file size.
[x] Any other last minute edits
[x] Tag joerd v1.0.0 release.
[x] Update Makefile to point at release (not SHA)
[x] Launch v1.0.0 terrain tile service (Fastly config)

Contains a both updates to the (hidden) Mapzen Terrain Tiles service and makes that hidden content visible off the main docs homepage.

Is this PR still correct? It replaces https://github.com/tilezen/joerd/commit/20b4512754490477b0594e3017b278361ad5af80 (12 days old) with the older https://github.com/tilezen/joerd/commit/a3cf077338e298c5f6d61d3ba3e017b130258fe7 (21 days old).

@migurski I've updated it with a newer SHA, thanks for the catch!

👍
Also, can we get the image on the front page converted to a JPG? At 3.5MB it’s about 10x too large for a picture on a web page.

@migurski yep :) looks like the walkabout example image was also over 1 MB, fixing that, too.

@rmglennon @kkowalsky Can you have a final look over this, please?

documentation homepage - Adds Terrain tiles, modifies Vector tiles description.
rate-limits overview - Adds Terrain tiles.
terrain tiles docs - What we released last month, but with smaller image sizes and fixed Mapzen API key usage (there were some strangler terrain-tiles-xxxxxx references).

The blog post (precog preview) announcing the service has it's own PR over there.

Also of note, there is no special Terrain Tiles product page. Instead it jumps directly to the documentation (like Mapzen.js). Maybe someday we'll have a special product page, but that day in the medium to distant future.

@nvkelso looks good, but can you revise the blog email to be<EMAIL_ADDRESS>It'll be easier to know what people are referring to if commenting on the blog post.
Added a PR in joerd with some minor edits
@rmglennon @migurski what do you think of the description for vector tiles? precog

“Display the world with the latest open data using vector tiles” feels a bit more promotional than strictly right for a docs page, but I could live with it.

Yeah, same thoughts on the tag line. It's fine for now. I'd like to do another pass through the whole page (for example, some say "global" or "open", which could indicate those that don't include those words are not that).

Now may not be the time, as in, we could do this in a whole pass when reviewing the content or as part of some other product team work this quarter to add consistency...
Doc banner is "Vector Tile Service"
Doc tag line is "Add open geospatial data to your applications with the vector tile map service."
Doc home page title "Mapzen Vector Tiles" (NOTE: There should not be a title on the index page anyway.)
Doc home page first sentence is "The Mapzen vector tile service provides worldwide... "
Doc landing page section is "Vector tiles", and tag line is "Display the world with the latest open data using vector tiles."
The terrain tiles pages are following this trend, too, with calling it "Terrain Tile Service," "raster tile map service", and "Mapzen terrain tiles" at the top of the first doc page.

Everything looks like a party on Precog, merging.


[POC] Peer File / Wallet Migration / Versioning

@bokobza and myself had a quick discussion around ways to migrate and/or version the peers.json and wallet file. We need to have a mechanism whereby we need to be able to upgrade (migrate) a version of the peers.json file to a newer one, when the node is started up.
I'm busy with a POC which roughly follows this pattern:
1: Create a PeerAddressFile class that holds the version as well the current list of PeerAddress(es).
2: When the node starts up, check the version before deserializing the peer address objects.
3: If the peer file version is the same as the node's peer file version then deserialize as per normal.
4: If the peer file version is lower than the node's peer file version apply migrations to the file (json).
5: Migrations are small first class citizens, decorated by a PeerFileMigration attribute that holds the version number:
[PeerAddressMigration(Version = 1)]
public sealed class PeerAddressVersionOneMigration001 : PeerAddressMigration
{
    public override JToken Migrate(string json)
    {
        var token = JToken.Parse(json);
        var from = token["endpointone"];
        Rename(from, "endpointtwo");
        return token;
    }
}

6: A migration service finds all the migrations that are decorated by said attribute above a certain version and applies them. I.e. if the file is at version 4 and the node is at 7, then migrations 5-7 will be applied.
7: Each migration contains a migrate method, which either updates or renames fields or values in the json JToken.
8: Field deletions doesn't need to handled as missing properties are just ignored by the serializer.
I have done some unit tests on this and it seems to be working pretty well thus far. I'm busy testing this with the actual peers.json at the moment.
If anyone has any input on this, please feel free to comment below 👍

Closing as the need for this has not arisen again.


[WIP] Add base64String property to UIImage

🚀 Base64-encode a UIImages pngData() and return it as a string.
This is a work in progress until the discussion in #742 comes to a conclusion.
Resolves #742
Checklist

[x] I checked the Contributing Guidelines before creating this request.
[x] New extensions are written in Swift 5.0.
[x] New extensions support iOS 8.0+ / tvOS 9.0+ / macOS 10.10+ / watchOS 2.0+, or use @available if not.
[x] I have added tests for new extensions, and they passed.
[x] All extensions have a clear comments explaining their functionality, all parameters and return type in English.
[x] All extensions are declared as public.
[ ] I have added a changelog entry describing my changes.

          2 Warnings

:warning:
The source files have been modified. Please consider adding a CHANGELOG entry if necessary.

:warning:
This pull request is marked as Work in Progress. DO NOT MERGE!

          4 Messages

:book:
Thank you for submitting a pull request to SwifterSwift. The team will review your submission as soon as possible.

:book:
iOS: Executed 606 tests, with 0 failures (0 unexpected) in 12.645 (15.219) seconds

:book:
tvOS: Executed 580 tests, with 0 failures (0 unexpected) in 6.251 (9.303) seconds

:book:
macOS: Executed 433 tests, with 0 failures (0 unexpected) in 1.193 (1.623) seconds

  Generated by :no_entry_sign: Danger

I think we forget about this one 😅, sorry @moritzsternemann
If we take too much time to give at least an l'll review asap comment, feel free to ping us :)

@LucianoPAlmeida this is marked as Work-In-Progress because we never concluded the discussion in https://github.com/SwifterSwift/SwifterSwift/issues/742

Oops, sorry @guykogus I didn't see the WIP 😅
Thank's for pointing out :))

@guykogus @LucianoPAlmeida I updated the PR, it's now ready for review 😄


CIV-7534 rpa-defendant-response-manual-det-camunda-state-change

JIRA link
Defendant Response - Manual Determination CAMUNDA STATE CHANGE
Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[X] No

Please could you add an image of your changes? and an image before your changes if possible. Thank you


Error about  Can't set headers after they are sent.

it happen rarely

this is my dataController
const   mysql = require('mysql');

const dbInfo = {
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'test',
    charset: 'utf8_unicode_ci',
    typeCast: function (field, next) {
        if (field.type == 'JSON') {
            return (JSON.parse(field.string()));
        }
        return next();
    }
}

var connection = mysql.createConnection(dbInfo);

function createRequest(command, callback,opt) {
    var query = connection.query(command,opt),
        contentStream=[];

    query
        .on('error', function(err) {
            // Handle error, an 'end' event will be emitted after this as well
            callback(err,{});
        })
        .on('fields', function(fields) {
            // the field packets for the rows to follow
        })
       .on('result', function(row) {
            // Pausing the connnection is useful if your processing involves I/O
            connection.pause();
            processRow(row, function(data) {
                var dataObj=JSON.parse(data);
                contentStream.push(dataObj);
                connection.resume();
            });
        })
        .on('end', function() {
            // all rows have been received
            if(typeof callback == "function") {
                callback(null,contentStream);
            } else
                return contentStream;
        });

    function processRow(row,callback) {
        var dataString=JSON.stringify(row);
        contentStream.push(dataString);
        callback();
    }

}

module.exports = {
    createRequest : createRequest
};

this is my route
router.route('/')
    .post(function (req, res) {
        var startDay = moment().startOf('day').utc().format();
        if(req.body.cmd == 'getAppointment') {
            var sql = "my command sql ";
            dataController.createRequest(sql, function (error, results) {
                if(!error) {
                    res.send(results);
                } else {
                    res.send({error:error});
                }
            });
        }
    });

i don't know how's it happen and how to fix it
thank you

Hi @zeing I'm trying to follow the stack trace, can you add marks on those pastes where lint 53 in dataController.js is and where line 32 in appointment.js is?

okay  wait a min.

line 32 in appointment.js

line 53 in dataController.js

Ah, that's what I thought. So it looks like the second call was the end. But I wonder what was the first call. Perhaps can you add console.trace(error); to appointment.js between lines 30 and 31 and then run your code again? You should end up with multiple stacks printed, and just paste them here.

wait a min and follow this comment update

previous comment  don't have error like this

because it happen rarely

Gotcha. In order to figure it out, just need the trace output for a request that also has the error, otherwise it doesn't help understand why the error happens.

okay i will console.trace(error); everywhere like this position . So, when it happen i will paste error for you , okay ?

here you are

Trace: for dougwilson :  { Error: read ECONNRESET
at exports._errnoException (util.js:1022:11)
at TCP.onread (net.js:610:25)
--------------------
at Protocol._enqueue (/Users/wwz/Documents/ooca admin/node_modules/mysql/lib/protocol/Protocol.js:145:48)
at Connection.query (/Users/wwz/Documents/ooca admin/node_modules/mysql/lib/Connection.js:208:25)
at Object.createRequest (/Users/wwz/Documents/ooca admin/routes/dataController.js:27:28)
at /Users/wwz/Documents/ooca admin/routes/appointment.js:30:28
at Layer.handle [as handle_request] (/Users/wwz/Documents/ooca admin/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/wwz/Documents/ooca admin/node_modules/express/lib/router/route.js:137:13)
at next (/Users/wwz/Documents/ooca admin/node_modules/express/lib/router/route.js:131:14)
at Route.dispatch (/Users/wwz/Documents/ooca admin/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/wwz/Documents/ooca admin/node_modules/express/lib/router/layer.js:95:5)
at /Users/wwz/Documents/ooca admin/node_modules/express/lib/router/index.js:281:22
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
fatal: true }
at /Users/wwz/Documents/ooca admin/routes/appointment.js:31:25
at Query. (/Users/wwz/Documents/ooca admin/routes/dataController.js:33:13)
at emitOne (events.js:120:20)
GET /font/fontawesome-webfont.woff2?v=4.7.0     at Query.emit (events.js:210:7)
at Query.Sequence.end (/Users/wwz/Documents/ooca admin/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:12)
304     at Protocol.handleNetworkError (/Users/wwz/Documents/ooca admin/node_modules/mysql/lib/protocol/Protocol.js:363:14)
0.315 ms - -
at Connection._handleNetworkError (/Users/wwz/Documents/ooca admin/node_modules/mysql/lib/Connection.js:428:18)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at emitErrorNT (internal/streams/destroy.js:62:8)
Trace: for dougwilson :  null
at /Users/wwz/Documents/ooca admin/routes/appointment.js:31:25
at Query. (/Users/wwz/Documents/ooca admin/routes/dataController.js:53:17)
at emitNone (events.js:110:20)
at Query.emit (events.js:207:7)
at Query.Sequence.end (/Users/wwz/Documents/ooca admin/node_modules/mysql/lib/protocol/sequences/Sequence.js:91:12)
at Protocol.handleNetworkError (/Users/wwz/Documents/ooca admin/node_modules/mysql/lib/protocol/Protocol.js:363:14)
at Connection._handleNetworkError (/Users/wwz/Documents/ooca admin/node_modules/mysql/lib/Connection.js:428:18)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at emitErrorNT (internal/streams/destroy.js:62:8)
_http_outgoing.js:504
throw new Error('Can't set headers after they are sent.');
^

Oh, haha, I see the issue now. You're getting an error, but don't have any guard to prevent the query ending (because of error) from then also calling your callback.
The docs at https://github.com/mysqljs/mysql#streaming-query-rows note that an 'end' will be emitted after the 'error' (which I also see you have copied in your source code). Sorry I didn't notice that before. Here would be the guard added to your implementation:
function createRequest(command, callback,opt) {
    var query = connection.query(command,opt),
        contentStream=[];

    query
        .on('error', function(err) {
            // Handle error, an 'end' event will be emitted after this as well
            query.removeListener('end', onEnd)
            callback(err,{});
        })
        .on('fields', function(fields) {
            // the field packets for the rows to follow
        })
       .on('result', function(row) {
            // Pausing the connnection is useful if your processing involves I/O
            connection.pause();
            processRow(row, function(data) {
                var dataObj=JSON.parse(data);
                contentStream.push(dataObj);
                connection.resume();
            });
        })
        .on('end', onEnd);
       function onEnd() {
            // all rows have been received
            if(typeof callback == "function") {
                callback(null,contentStream);
            } else
                return contentStream;
        }
    function processRow(row,callback) {
        var dataString=JSON.stringify(row);
        contentStream.push(dataString);
        callback();
    }

}

yes i don't know how to end connection , i try to use connection.end(); but it have error

Hi @zeing I'm not sure what you mean. Did the solution I posted above not work for you?

haha sorry for my english , i have been used connection.end(); for stop connect from database but it take my server stop service
this the solution which you post i put it in my code and it wait several time for happen it case , if several day don't happen this case again i will tell you

it is work  and service don't stop but when i refresh don't get data until i restart my service

i fix it
it's right ?
var connection;

function startConnection() {
    console.error('CONNECTING');
    connection = mysql.createConnection(dbInfo);
    connection.connect(function(err) {
        if (err) {
            console.error('CONNECT FAILED', err.code);
            setTimeout(startConnection, 2000);
        }
        else
            console.error('CONNECTED');
    });
    connection.on('error', function(err) {
        if (err.fatal)
            setTimeout(startConnection, 2000);
    });
}

startConnection();

function createRequest(command, callback,opt) {
    var query = connection.query(command,opt),
        contentStream=[];

    query
        .on('error', function(err) {
            // Handle error, an 'end' event will be emitted after this as well
            query.removeListener('end', onEnd);
            //-
            //- The server close the connection.
            //-
            if(err.code === "PROTOCOL_CONNECTION_LOST"){
                console.log("/!\\ Cannot establish a connection with the database. /!\\ ("+err.code+")");
                return startConnection();
            }

            else if(err.code === "PROTOCOL_ENQUEUE_AFTER_QUIT"){
                console.log("/!\\ Cannot establish a connection with the database. /!\\ ("+err.code+")");
                return startConnection();
            }

            else if(err.code === "PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR"){
                console.log("/!\\ Cannot establish a connection with the database. /!\\ ("+err.code+")");
                return startConnection();
            }

            else if(err.code === "PROTOCOL_ENQUEUE_HANDSHAKE_TWICE"){
                console.log("/!\\ Cannot establish a connection with the database. /!\\ ("+err.code+")");
            }

            else{
                console.log("/!\\ Cannot establish a connection with the database. /!\\ ("+err.code+")");
                return startConnection();
            }
            callback(err,{});
        })
        .on('fields', function(fields) {
            // the field packets for the rows to follow
        })
        .on('result', function(row) {
            // Pausing the connnection is useful if your processing involves I/O
            connection.pause();
            processRow(row, function(data) {
                var dataObj=JSON.parse(data);
                contentStream.push(dataObj);
                connection.resume();
            });
        })
        .on('end', onEnd);
    function onEnd() {
        // all rows have been received
        if(typeof callback == "function") {
            callback(null,contentStream);
        } else
            return contentStream;
    }
    function processRow(row,callback) {
        var dataString=JSON.stringify(row);
        callback(dataString);
    }

}

Hi @zeing I would suggest you use the Pool feature instead of trying to reconnect yourself. You can even set connectionLimit: 1 if you only want to use one connection but still get the reconnecting behavior.

okay i will try

May you check my code is correct ?
const   mysql = require('mysql');

const   fs = require('fs'),
        config  = JSON.parse(fs.readFileSync("routes/config.json"));

const  hash = config.hash;

const   prefix = "local", // test | local
        dbInfo = {
            host: config.database[prefix].host,
            user: config.database[prefix].user,
            password: config.database[prefix].password,
            database: config.database[prefix].database,
            charset: config.database[prefix].charset,
            typeCast: function (field, next) {
                if (field.type == 'JSON') {
                    return (JSON.parse(field.string()));
                }
                return next();
            },
            waitForConnections: true,
            connectTimeout: 10000,
            connectionLimit: 10

        };

//-
//- Create the connection variable
//-
var connection = mysql.createPool(dbInfo);

//-
//- Reconnect
//-
function reconnect(connection){
    console.log("\n New connection tentative...");

    //- Create a new one
    connection = mysql.createPool(dbInfo);

    //- Try to reconnect
    connection.getConnection(function(err){
        if(err) {
            //- Try to connect every 2 seconds.
            setTimeout(reconnect(connection), 2000);
        }else {
            console.log("\n\t *** New connection established with the database. ***")
            return connection;
        }
    });
}

function createRequest(command, callback,opt) {
    var query,
        contentStream=[];

    connection.getConnection(function(err){
        //-can't connect to database
        if(err) {
            console.error("\n\t *** ERROR  CONNECTION  ***");
            callback(err);
            return reconnect(connection);

        } else {
            //-can connect to database
            query = connection.query(command,opt);
            query
                .on('error', function(err) {
                    // Handle error, an 'end' event will be emitted after this as well
                    query.removeListener('end', onEnd); //not sure
                    console.log("/!\\ Cannot establish a connection with the database. /!\\ ("+err.code+")");
                    callback(err,{});
                    return reconnect(connection);

                })
                .on('fields', function(fields) {
                    // the field packets for the rows to follow
                })
                .on('result', function(row) {
                    // Pausing the connnection is useful if your processing involves I/O
                    processRow(row, function(data) {
                        var dataObj=JSON.parse(data);
                        contentStream.push(dataObj);
                    });
                })
                .on('end', onEnd);
        }
    });

    function onEnd() {
        // all rows have been received
        if(typeof callback == "function") {
            callback(null,contentStream);
        } else
            return contentStream;
    }

    function processRow(row,callback) {
        var dataString=JSON.stringify(row);
        callback(dataString);
    }

}

module.exports = {
    createRequest : createRequest,
    config : config,
    hash  : hash,
    connection : connection
};

when i refresh webpage about 8 times it make query don't work

Hi @zeing I don't see anything in the above that would cause your description (or see where the error you screenshotted above would come from). I'm not sure if I can really help much without getting some full system to run, see the issue, and attach a debugger to to poke at.


nit(examples): improve hmtl-umd example

The html-umd example was using an async function with a huge try/catch which was completely bogus b/c there is no promise being resolved in it. This PR simply fixes that. Also, it seems that the file wasn't prettified, so when I saved a lot of other non-relevant diffs appeared, oh well...

Is that prettier formatting?🫠🫠


Develop of file upload answer format

I'm developing a new answer format that you can upload a file and a description on a question step. I would like to know if there is some example or some ongoing code you can provide me so I can base on it.
Appreciate.

There is an example how to create a custom step in the example folder!

there is no example in the example folder xD


refactor: print vault debug messages in more accurate locations

🤖 Generated by Copilot at b7c0a31
Summary
🔧🕵♂🚀

This pull request enhances the vault inspection experience by providing better logging and debugging tools. It also cleans up the console output by moving the inspection URLs to the appropriate places in the code.

console.log moves
better vault inspection
autumn debugging

Walkthrough

Move console logs for inspection URLs to vault iframe logic (link, link, link, link)

Define CSS style for logs as a constant in iframe.ts (link)
Check if vault is running in an iframe but not in a shared worker and log the iframe location as the inspection URL (link)
If vault is running in a shared worker, log the iframe origin as the inspection URL and instruct the user to copy it manually (link)
Remove logs from ports/iframe.ts as they are redundant (link)

Current dependencies on/for this PR:

main

PR #3310

PR #3311   👈

PR #3312

PR #3313

PR #3314

This comment was auto-generated by Graphite.

@wittjosiah started a stack merge that includes this pull request via Graphite.

Graphite rebased this pull request as part of a merge.

@wittjosiah merged this pull request with Graphite.


Updated primary key names

Updated primary keys names, as they were conflicting for two tables. You cannot create two keys with same name.

@sbhuttan : Thanks for your contribution! The author, @nitinme, has been notified to review your proposed change.

@sbhuttan Thanks for the contribution!
#sign-off


how to solve this problem about SunJCE in Centos7

Do you export java path environment variable？

I will close the Issue first, but please feel free to reopen it if you have any other issues.


Initial addition of packer scripts. Windows 1809 Only

Opening this up as a draft PR to encourage some more discussions.
Right now there is still no solid way to disable Windows Defender with 2004 (20H1). Right now this will be a build using 1809. I do not expect this to be merged until more discussions have been had about templates/approaches.

I see that you are waiting for a bunch of powershell scripts to complete, is this because you are letting the automated installation that comes with the commando-vm project take it's course in it's installation process?

Yeah mostly this is because I didn't want to deconstruct how the boxstarter process works. If we want to, then would end up creating a much heavier maintenance headache for the project going forward. If the project as a whole was to shift away from the boxstarter usage, then all of the waits should be able to disappear completely.

what are the three different packer templates for?

So each one of those templates represent a particular "state that a user might want to get to. 1 takes an ISO to a basic Windows 10 install and stops. Another takes an existing snapshot state and "applies" the CommandoVM settings to it. The final one combines both stages into 1 build

also, what is the flow someone would normally use them in?

Normal flows are kinda explained above but it would be used like so:

I have no VM available but I want to make some customizations before configuring a VM for CommandoVM usage

use win10_1809_iso_to_base.json to make the initial VM and then halt before making a CommandoVM image

I have a VM and I am ready to turn it into a CommandoVM image. (assume here this user has renamed the needed user/pass to what the scripts expect)

use win10_1809_snapshot_to_finish.json to use the snapshot make a CommandoVM image, and then halt.

I have no VM available and I don't care to make any settings changes before the VM becomes a CommandoVM

use win10_1809_iso_to_finish.json to make a CommandoVM image from "scratch", and then halt.

I see that you are waiting for a bunch of powershell scripts to complete, is this because you are letting the automated installation that comes with the commando-vm project take it's course in it's installation process?

Yeah mostly this is because I didn't want to deconstruct how the boxstarter process works. If we want to, then would end up creating a much heavier maintenance headache for the project going forward. If the project as a whole was to shift away from the boxstarter usage, then all of the waits should be able to disappear completely.

Ya, I don't think that is necessary for now ( especially since this is the first iteration of the packer build ), and we can eventually figure out the long term plan for how @day1player sees this going. I think for now this will work perfectly fine and fits well with the current provisioning scheme of the project.

what are the three different packer templates for?

So each one of those templates represent a particular "state that a user might want to get to. 1 takes an ISO to a basic Windows 10 install and stops. Another takes an existing snapshot state and "applies" the CommandoVM settings to it. The final one combines both stages into 1 build

very cool :grin:

also, what is the flow someone would normally use them in?

Normal flows are kinda explained above but it would be used like so:
* I have no VM available but I want to make some customizations before configuring a VM for CommandoVM usage

  * use `win10_1809_iso_to_base.json` to make the initial VM and then halt before making a CommandoVM image

* I have a VM and I am ready to turn it into a CommandoVM image. (assume here this user has renamed the needed user/pass to what the scripts expect)

  * use `win10_1809_snapshot_to_finish.json` to use the snapshot make a CommandoVM image, and then halt.

* I have no VM available and I don't care to make any settings changes before the VM becomes a CommandoVM

  * use `win10_1809_iso_to_finish.json` to make a CommandoVM image from "scratch", and then halt.

awesome, that make sense. I might try and contribute a pull request to your branch for trying to add a README.md to help explain these points inside the folder (since you have done all the code :slightly_smiling_face: ) and might try and come up with a powershell script that helps walk people through choosing one of the options & making sure they have everything they need (like the metasploitable 3 scripts). So that way it is less intimidating for people to try and do builds with packer, but can just run a powershell script that has the built out commands already made for them.

close #136

I went to try and build the win10_1809_virtualbox_iso_to_finish.json, and could not get it to complete. It kept failing on the mklink command.
This was towards the end of the packer output (where it output the error text):
==> virtualbox-iso: Pausing 5m0s before the next provisioner...
==> virtualbox-iso: Provisioning with windows-shell...
==> virtualbox-iso: Provisioning with shell script: /tmp/windows-shell-provisioner587656433
    virtualbox-iso:
==> virtualbox-iso: The syntax of the command is incorrect.
    virtualbox-iso: C:\Users\vagrant>mklink 'C:\ProgramData\Microsoft\Windows Defender:omgwtfbbq' '\??\NUL'
==> virtualbox-iso: Provisioning step had errors: Running the cleanup provisioner, if present...
==> virtualbox-iso: Cleaning up floppy disk...
==> virtualbox-iso: Deregistering and deleting VM...
==> virtualbox-iso: Deleting output directory...
Build 'virtualbox-iso' errored after 22 minutes 47 seconds: Script exited with non-zero exit status: 1.Allowed exit codes are: [0]

==> Wait completed after 22 minutes 47 seconds

==> Some builds didn't complete successfully and had errors:
--> virtualbox-iso: Script exited with non-zero exit status: 1.Allowed exit codes are: [0]

and here is me running the command in the vm manually before it failed once:

Again, I am not a powershell person, so maybe there is something that I am doing wrong, but I didn't make any modifications.

Oh you're probably not doing anything wrong. I'll try and tinker with this tomorrow afternoon.

Closing this PR since it is stale.

Hello @geo-lit ,
I was curious were we missing a bunch of commits or was this closed because of how long it's been?
There hasn't been a commit to the master/main branch in 2 years, so I don't think our PR was too stale, was it?
Also, I think we were pretty close to getting this work IIRC. If we/I picked this back up to carry it over the finish line (I'd personally completely forgot about it 😅). Is that something that would get merged?

That sounds awesome! I love that @mandiant is taking this more community based approach! 🥳
I also definitely love to help make this packer automated build work for commando-vm. I've used it a little bit with some 99% completed builds and it's super slick to adjust port forwarding, snapshots, and specs just via a file or through the vagrant CLI 😁 (especially in a headless setting).
Also, packer is moving to using an HCL templating language, which has some pretty powerful feature, so when working towards building that in now we can use that so it's more future proof. Plus if you're planning on doing the how install script (+ cli version) approach like Flare is as well that'd probably make things easier for different types of builds during packer.

Feel free to hit me up in the BH slack again and we can figure out a way to get this stuff included in the new version.

Sure, would you prefer a DM or in the commando-vm channel?

Yep that is what we are planning on doing. I think the commando-vm channel would be good, more people will probably chime in that way. I am getting the other devs added as well.


Support for duckdb

I was experimenting with the CLI and wanted to do: datasette nino_ml.csv
Then I realized because it's not an SQLite database, it doesn't work. However, if duckdb is incorporated, I believe it could work.

Is your need to support opening csv in datasette? You can give a try to this shell script: csv2datasette. No need to support duckdb.

:+1:
I agree that there's a clear alignment between what datasette and what duckdb are trying to facilitate: access to data for analytics!!
While I understand that datasette might have started development before duckdb (at least before it has become any popular), I'd go as far as to say that there should be a port of datasette to duckdb (instead of sqllite) as that newer engine was made specifically for analytical workloads (column oriented and so on...) plus it actually comes with a lot of pretty useful features baked-in that would make some of the plugins specific to sqllite redundant (and not need to be ported at all, hence reducing the project area :+1: )


fix check of python version when updating Filters.cpp

What does this implement/fix? Explain your changes.
I noticed that the update of FilterCatalog's Filters.cpp at cmake configuration time is no longer working. I think this is because line
if(DEFINED ${PYTHON_VERSION_STRING} AND ${PYTHON_VERSION_STRING} VERSION_GREATER "2.6" )

should have been
if(DEFINED PYTHON_VERSION_STRING AND ${PYTHON_VERSION_STRING} VERSION_GREATER "2.6" )

Any other comments?
Would it be preferable to just remove the if clause?

Thanks Greg and no worries, considering that it's a small fix I thought it could be just deferred to the next patch release.


Clean Staking <-> Session tests and Use a Realistic Scenario

Currently, almost all staking tests use this function
https://github.com/paritytech/substrate/blob/918e58e72ed1b297b1eec65199ee7058620447ee/frame/staking/src/mock.rs#L671-L679
To which I have added the assertion that demonstrates the issues; Up until this commit, staking's mock didn't even have a configuration to set the session length and it was always 1. The assert should prevent us from creating a bug here, but ideally the assumption should be removed and tests that use it should be revised. There should be tests that check staking's session rotation with session/era lengths of N and M, where both of them are greater than 1.

Also, the first era contains session 0, which has length 0. A test should properly demonstrate this.

long term i'd really like to see a revamp of staking tests so that:
1- active_era and current_era are actually different.
2- sessions is actually queuing the receiving validators (same as all of our real chains).


the result of net is something wrong

thanks for the shared codes.
i test the pretrained models using test2K dataset but the output is wrong just like the pic blow, i can't find the reason, do you know what happened?

It's so weird. I will check the code, pretrained model and requirement later. In my environment, it works well.

I guess it is an environmental problem, but I have no idea about where this specific problem comes.  I try on my personal device with torch 2.1.1, cuda12.1, and basicsr 1.4.2,  where the image can be properly restored. Hope it can help you.

I guess it is an environmental problem, but I have no idea about where this specific problem comes. I try on my personal device with torch 2.1.1, cuda12.1, and basicsr 1.4.2, where the image can be properly restored.  Do this phenomenon happen with other ratios？Currently, I have no idea about why it happens. I will check the uploaded datasets and try to reproduce the problem on
other device. Since I am on vocation, I may feedback to you later. Thanks.

So it only happens to partial images? Do this phenomenon happen with other ratios？Currently, I have no idea about why it happens. I will check the uploaded datasets and try to reproduce the problem on other device. Since I am on vocation, I may feedback to you later. Thanks.

Hello, authors. I encountered the same problem when testing my own samples.

So it only happens to partial images? Do this phenomenon happen with other ratios？Currently, I have no idea about why it happens. I will check the uploaded datasets and try to reproduce the problem on other device. Since I am on vocation, I may feedback to you later. Thanks.

I tested 4k/2k dataset, all results ran into the same trouble

Sorry, I can still not reproduce this problem. May you try it on colab or other opening platforms? I have tried with several machines and only observed PSNR fluctuating.

Thanks for the code. I should point out that I'm having the same problem, can you switch computers to find out why?

Thanks for the code. I should point out that I'm having the same problem, can you switch computers to find out why?

Sorry, I can still not reproduce this problem. May you try it on colab or other opening platforms? I have tried with several machines and only observed PSNR fluctuating.

Hi, have you solved it? The same problem is plaguing me. If you've fix it, please contact me ，thanks！

Sorry, I can still not reproduce this problem. May you try it on colab or other opening platforms? I have tried with several machines and only observed PSNR fluctuating.

Hi, have you solved it? The same problem is plaguing me. If you've fix it, please contact me，thanks！

Sorry, I can still not reproduce this problem. May you try it on colab or other opening platforms? I have tried with several machines and only observed PSNR fluctuating.

Hi, have you solved it? The same problem is plaguing me. If you've fix it, please contact me，thanks！

still not

Sorry, I can still not reproduce this problem. May you try it on colab or other opening platforms? I have tried with several machines and only observed PSNR fluctuating.

Hi, have you solved it? The same problem is plaguing me. If you've fix it, please contact me，thanks！

Hi, I had the same problem and fixed it. I think you should modify the '.yml' file, where the 'pretrain_network_g:' must be modified to the corresponding '.pth' instead of the default.

Sorry, I can still not reproduce this problem. May you try it on colab or other opening platforms? I have tried with several machines and only observed PSNR fluctuating.

Hi, have you solved it? The same problem is plaguing me. If you've fix it, please contact me，thanks！

Hi, I had the same problem and fixed it. I think you should modify the '.yml' file, where the 'pretrain_network_g:' must be modified to the corresponding '.pth' instead of the default.

Thank you very much. it is useful~


Never get past login page

I can't get this scraper to work. Even if the cookies are written already, I get stuck on the login page:
Here's a video of what I see: https://drive.google.com/file/d/1zEEN16_0TB3kOMebiolmvdSaAKbunvE3/view?usp=sharing
If I manually type in my details here, it still fails, saying the channel can't be found, without waiting for the page to finish loading.

Quite strange

I don't have a good hunch as to why it's doing this. Do you think it is a system issue or an issue with the slack workspace itself?

Did you get the cookies from signing in with SSO? I believe OAuth 2.0 based SSO won't work when using an automated browser, even if you save the cookies before-hand from a sign-in on a normal browser. However, I'm not sure and I need to investigate this more.

"If I manually type in my details here, it still fails, saying the channel can't be found, without waiting for the page to finish loading."
Hmm, this sounds instead like a problem with the collect script code. It sounds like it finds your cookies, but then goes to the page, and even though they're applied, the Slack Workspace doesn't load.
I might be able to debug this Sunday. I'll keep you posted.

The page doesn't get the chance to load. It looks like the script is failing before the page has finished loading.

If you could containerize the scraper I could run that, and see if it an issue with dependencies.

Update: I have bypassed the DOM now and am using Slack's (private?) JSON API. Happy to share my solution if it's helpful.

@jamesmurdza if you have access to Slack's JSON API, then that's a far more reliable and convenient solution than the scraper :)

@iulspop There is an endpoint at: https://airtable.com/v0.3/view/AIRTABLEID/readSharedViewData
It works so long as the right GET parameters and session cookies are used.

@iulspop  The problem with the slack API is that it doesn't provide access to some crucial data - like huddle call duration. Neither you can search for it via the web or native apps. So custom scrapers are the only way.

@mkantautas this scraper doesn't collect that information on huddles. Happy to accept your contributions if you'd like to add that feature! You can open a draft PR and I answer questions.

@iulspop I beg to differ:

Also fixed the email Oauth problem. With a page.waitFor(25000); to fill in the email and verification code myself - a hack, but works for now.
But yeah, have my hands full atm - but hopefully will have a window to do a somewhat clean PR as a feature for the huddle scrape option.

@mkantautas neat! I didn't expect the huddle info to be right there in the posts from the chat.
Ouuh so you go it to work? Was it the SSO method where you click your Google Account and then authorize? When I tested it myself using a similar pause method to do it manually, it didn't work on the automated browser even when installing a plugin to obscure the browser was automated. No matter which way I did it, it only worked on a normal browser.

@iulspop
I actually used the email login - when they send you the verification 6 digit code to your email.
Besides the wait, because of the whole manual activity, you need to add another goto so the logic wouldn't break after the waitFor ends.
async function gotoWorkspace(page) {
  await page.goto(process.env.SLACK_WORKSPACE_URL, {timeout: 0})
  await page.waitFor(25000);
  await page.goto(process.env.SLACK_WORKSPACE_URL, {timeout: 0})
  await page.waitForNavigation({ waitUntil: 'load' })
}

I also have experienced this issue, and the jan 8 fix did not resolve it.  This does not seem to be a working automated solution.


Animixplay not working

Steps to reproduce

Go to animixplay
Click on any anime
Does not start the video
Shows "expected start of object '{' ,but had 'EOF' instead. JSON input:page not found back home"

Expected behavior
The video should play
Actual behavior
It is not playing and showing the error mentioned above
Crash logs
No response
Aniyomi version
<IP_ADDRESS>
Android version
Android 13
Device
Samsung s20 fe 5g
Other details

Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] If this is an issue with an extension, I should be opening an issue in the extensions repository.
[X] I have tried the troubleshooting guide.
[X] I have updated the app to version <IP_ADDRESS>.
[X] I have updated all installed extensions.
[X] I will fill out all of the requested information in this form.

Animixplay closed permanently, per their website: https://animixplay.to/

Ohh ok i ll make sure to pull a request for an alternative because animixplay was quick and the downloads were fast in it too


test: caplog fixes [APE-1396]

What I did
we were getting some intermittent failures in tests because of caplog.
i think i found the reason why but dont know 100%
How I did it

removed a call records.pop() that was potentially causing issues
removed unneeded calls to at_level() which could potentially hide some INFO based logs on other test s

How to verify it
im hoping just all passing CI both now and in the future can help identify this as a success.
Checklist

[ ] All changes are completed
[ ] New test cases have been added
[ ] Documentation has been updated

ugh - still failed on the merge-to-main run


[5.3] MemcacheStore toTimestamp issues

Laravel Version: 5.3.*
PHP Version: any
Database Driver & Version: any

Description:
Implementing Carbon::now() in MemcacheStore is causing problems in UnitTests when using the dates back in time.
The problem is caused by this commit https://github.com/laravel/framework/commit/c5984af3757e492c6e79cef161169ea09b5b9c7a
Steps To Reproduce:
Carbon::setTestNow(Carbon::create(2014, 1, 1, 12, 0, 0));
Cache::put('banana', 'phone', 10);
var_dump(Cache::get('banana'));

The var_dump returns null.

@segadora If you have identified the issue please open a PR with a proposed fix.

@themsaid I would just reverse his commit, but I dont know the affect on Memcached?

We can't simply reverse a 3 month old commit :) Can you please share more details about the issue? why do you think this commit is the cause of the issue?

Before the commit. The expire was set to a (number * 60) which I think resolved in a timestamp in the future on memcached no matter what test date was set on Carbon
After the patch, it uses Carbon which can be manipulated by Carbon::setTestNow();
If I have a test time in the past, and then says the cache should expire after 10min as exampled:
Carbon Test Date: 2016-01-01 00:00:00
Expire would be set to : 2016-01-01 00:10:00
but the server time is 2016-12-21 22:07:00, so the cache has already expired.
Just as exampled in the image.

I will provide a pull request asap.

Been on vacation.

Thanks for the report. Closing since discussion can now move to the PR. :)


Remove "break" from switch cases in RouterMethod init

https://github.com/IBM-Swift/Kitura/tree/develop/Sources/Kitura/RouterElement.swift#L409-496

Validated when merged.


Requirements for dev, docs, and tests

Coverage remained the same at 61.0% when pulling d4597b6bb6b8bf700a2af0599c9950baf2c8718b on castrapel:requirements3 into 9504ad3b805ade429359bca403edc8d6bf5c127b on Netflix:master.


Camera is not running

ionic6, capacitor 4, andriod12

hello can you share the code you call the plugin did you await it ?

i think you need to start the camera first


Configuration for Reproducing Table 1 Results

Dear authors of Laplace-LoRA,
Hi, could you please share the exact configuration for reproducing results in table 1? Some of the testing sets are trimmed to 1500 datapoints, i.e. in examples/configs/dset/boolq.yaml. Is this the same configuration used for experiments in the paper?

Found the laplace-lora repo, closing this


Network nav performance

Fixes #33

Coverage decreased (-0.5%) to 97.056% when pulling efea2e7a3c62e9280a11b82a035c30c0a5b54ed8 on network_nav_performance into 449d9b60a491aaa802dbe32e13da9f39f5782a47 on master.


Add python nightly testing

PEP478 shows Python 3.5 is scheduled for beta release  on May 24, 2015 and final release on September 13, 2015. I think it's worth starting testing on Python 3.5, but allowing failures until it is at least in beta.

Thanks!


Support multiple regions for Google Cloud Workstations image

Google Cloud Workstation configurations pull the requested image from the region that the cluster is in. Currently, we only publish the Google Cloud Workstation image to us-central1. This means configurations setup outside of that region fail because the image can't be found in that region. Google has informed us that we need to make sure our image is available in the regions supported by Cloud Workstations. There are two steps for moving forward:

Google will create a fallback to us-central1, which will provide a temporary fix
We will add the necessary additional regions so the image can successfully pull in all regions supported by Cloud Workstations

Based on work by @ianpittwood, we believe this is done. To confirm, I will reach out to Google and have them remove the stop-gap they put in place that falls back to central. We can then test to make sure that regions other than central can correctly pull the image. Once confirmed, we can close this issue.


Upgrading from 7.4.0 to 7.5.0, Multiple Findings

Alienware X17 R1, fully patched including latest BIOS, 11980HK/3080, 32GB RAM
When I just upgraded from 7.4.0 to 7.5.0, I experienced the following with respect to FC:

The application tool a LONG time to start (15 seconds-ish). While doing this, a blank Fan curve window was shown for most of the duration.

CPU Boost AC and Battery settings were changed from the values I had set to both being off. I apologize, but I cannot recall the inital values with certainty.

I don't know that this is a bug, but I now see that the Fan curve window has scale, boost and a percentage listed in the title bar.

My 4 values right now are:
169/0/40
156/0/37
252/0/0
250/0/0
a) I found no way to set the scales (presumably temp?), nor any documentation on them.
b) What are the boost and % values? Please add to documentation.

The X to reset min/max temp sensor ranges:

a) resulted in 10-15 second app hang the first time I tried it, and then a hang and then hard crash the second time. Neither of these happened with a subsequent attempt though.
b) Per the .md documentation:
'"X" button above fans list reset currently selected fan curve to default one (0-100 boost).'
c) I VERY much hope you provide an "Are You Sure?" prompt before you clear someone's manual fan control settings!! :-D

The application now gives UAC prompt at each start. This has not happened on any prior version.

IIRC, 7.4.0 picked up my internal NVMe SSD temp for display, which I understand can give me another way to control fan speeds manually based on its temperature. I like it.

7.5.0 picked up my two EXTERNAL Samsung T5 and T7 drives and added them to the temperature sensors window. Both are 0 (0), because they presumably do not report temps. In any case, I feel you should never add non-internal temperatures to the FC app because they are not helpful with respect to maintaining internal component temps with the fans.

KUDOS for all the recent work on the application(s)!!!  ;-)

This just CAN't happen. App can hang with no UI shown for a while (in case WMI request delayed), but this... Something wrong with the system. Let me think how to check it... Does CLI have the same delay?
It's Windows Power Plan - related. So it follows active Power Plan.
Hmm... Seems like last 2 fans can't be controlled.... Or report incorrect data. Try to set it using CLI and see is it works or not.
a) Scale = Max. overboost level. Use Overboost button/setover command in CLI.
b) Ok, i clarify it a bit.
Bug. I check how this can happen, it should be milliseconds. I'll think about clean confirmation (although i prefer not bother user and remove it from any possible places).
It can be Windows update (Windows 11?). There are no changes into this part, but they can MAY change Task schedule settings for it.
It's not possible to configure out, is it internal or external. Even for internal, sometime driver report fake temperature. I'll add 0-check, so drives without temp will not be exposed.

PS: I always into bargain between add some bells and whistles and keep apps as small as possible. I usually choose second.

This just CAN't happen. App can hang with no UI shown for a while (in case WMI request delayed), but this... Something wrong with the system. Let me think how to check it... Does CLI have the same delay?
I realized that it could have been my DisplayFusion app. It has a number of issues, and I am close to discarding it despite really needing its core functionality.

It's Windows Power Plan - related. So it follows active Power Plan.
Ahh, I think I recall that from our previous conversations. I will just leave it at Off and manage via other means.

Hmm... Seems like last 2 fans can't be controlled.... Or report incorrect data. Try to set it using CLI and see is it works or not.
a) Scale = Max. overboost level. Use Overboost button/setover command in CLI.
b) Ok, i clarify it a bit.
I need to clarify so as to correct your notions: My 3rd and 4th set of numbers represent Fan 3 and Fan 4. These are "associated" with my GPU Internal Thermistor. Those fans are DEFINITELY controllable, and they work fine with my manual curves.
WOW! My GPU fans can boost to 250% of normal max?!? I did a quick registry search and didn't find a value I could set to restrict that. I guess I will just lower my curves to reflext the overboost amount I am comfortable with.
Since you mentioned alienfa-cli, I tried it. I tried the following to attempt to get some help:

alienfan-cli help
alienfan-cli "help"
alienfan-cli -help
alienfan-cli --help
alienfan-cli /help
I received "Unknown command xxxxxx, use "usage" or "help" for information" for every call. What's the story here.

Bug. I check how this can happen, it should be milliseconds. I'll think about clean confirmation (although i prefer not bother user and remove it from any possible places).
I understand the confirmation issue. I tried to think of one to suggest, and didn't come up with one. But I did while writing this: place a semi-transparent overlay covering the Fan Curve grid that asks "Delete Manual Fan Curve", with Yes and No buttons below the text.

It can be Windows update (Windows 11?). There are no changes into this part, but they can MAY change Task schedule settings for it.
Not on Win 11. It is only a minor issue. I wonder if there is a way to remove UAC for individual application starts. Perhaps you are aware of such?

It's not possible to configure out, is it internal or external. Even for internal, sometime driver report fake temperature. I'll add 0-check, so drives without temp will not be exposed.

I would guess in those values there is something that indicates no temperature sensor?
PS: I always into bargain between add some bells and whistles and keep apps as small as possible. I usually choose second.
I haven't checked the app's various memory usage metrics, but I can't imagine it is very much - unless you really suck at windows app programming. LOL I think the thing that is most difficult/limiting for you is the need to support what must be a HUGE permutation of hardware. You can only abstract/modularize so much, especially when myriad individual pieces-parts need some sort of exceptional handling.
PPS: I'm interested into x17 BIOS dump, doesn't have one from this model. Can you please share me it in Discord? BTW, it can be the source of 1,3 and 4.
Just let me know how to get you one, and the Discord channel to get it to you, and I would be happy to help out.

It's into HKCU\Software\AlienFan\Boost-X, there X is fan number.  Change first byte to 0x64 for 100%, or use alienfan-cli setover=N,100, N for fan number.

Since you mentioned alienfa-cli, I tried it. I tried the following to attempt to get some help:

Ohsi... I forget to change this message. Just run it without parameters.

Starting from Task Scheduler can do it. Flip "Start with windows" off and on to re-create app entry.
No, this indicates default curve (0,0 - 100,100).

In fact, 4 and 6 is not valid anymore, i rebuilding all internal fan structures now to avoid mess with sensors here and in mon. Also, much simple and faster.

I haven't checked the app's various memory usage metrics

Not so small, about 20Mb RAM. But it's part of the fun to keep it small. Hardware is not an issue (it's standard and tiny), but UI is. So i trying to use it as standard and as close to plain C as possible.
But this is a part of fun, i got mad skills, useful for my main IoT duties.

Just let me know how to get you one, and the Discord channel to get it to you, and I would be happy to help out.

As mentioned into project readme - https://discord.gg/XU6UJbN9J5
I have the same nickname there.

Here is next release beta - alienfan-gui.zip
It's A LOT of changes (i refactor all internal structures), it should fix all, except incorrect fan readings.
Please, also, keep in mind fan selection logic changed:

In case fan unchecked for sensor, it's now keep curve until app restart, so check it back return it.
"X" button above fans now have confirmation, and remove ALL curves for this fan (related to previous point, in fact).

I still kindly waiting for x17 ACPI dump - i need to check situation with other 2 fans.

I think this one outdated yet.


Hack to fix a weird IOOB error we can't reproduce.

No test. :-(

@jamesagnew - when you get a chance, take a look at this.  The context is in  #1112

Error message looks good!

Doesnt fix the bug, but at least bubbles up the cause

Darn.  Forgot the changelog.  Can you confirm this made it into August, @tadgh ?


Is there any way of canceling getCurrentPosition?

I would like to know if there's any way of cancelling getCurrentPosition promise. Because sometimes it gets resolved when my hook/component is not mounted and it throws a warning.

Yes this seems necessary


Add key property to objects that stored in array states

e.g. IParsedPageData

@imdfl Is this still relevant?


Added logic to display 2 decimal places

These changes address #567. Numeric values are now displayed with 2 significant digits.

Verfied in Pro:

Verified both in Pro and ArcMap with @kgonzago present.

@ACueva @kgonzago This implementation was not correct. The display was not supposed to be to two decimal places. The issue was specifically for the feedback in the UI not on the map. The display was to remain as whole numbers.


Generate CRD schemata

This looks like a good idea.
/lgtm
/hold
unhold at your discretion.

/test e2e-aws

/retest

/hold cancel

/retest

/retest

/retest

/retest

/retest

/retest

/retest

@sttts should we close this for https://github.com/openshift/cluster-kube-apiserver-operator/pull/312?

/lgtm

Blocked by blocked origin image update. We need the nullable fix.

/retest

/retest


pristine app from create-nuxt-app fails on server boot

What I ran:
npx create-nuxt-app
npx: installed 344 in 11.885s

create-nuxt-app v2.11.1
✨  Generating Nuxt.js project in .
? Project name test
? Project description My stupendous Nuxt.js project
? Author name foo
? Choose the package manager Npm
? Choose UI framework Vuetify.js
? Choose custom server framework Express
? Choose Nuxt.js modules (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Choose linting tools (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Choose test framework Jest
? Choose rendering mode Universal (SSR)
? Choose development tools (Press <space> to select, <a> to toggle all, <i> to invert selection)

node --version
v12.10.0

npm --version
6.10.3

The issue is not in the create-nuxt-app. It is in the nuxt v2.10.0 released today.
Try setting the version of nuxt to 2.9.0 in the dependencies in your package.json file:
  "dependencies": {
    ***
    "nuxt": "2.9.0",
    ***
  }

I'm sure devs will throw the patch for nuxt package soon, but as I said, it's not the create-nuxt-app issue.

Excellent, I've filed a bug with nuxt.js and attempted your workaround, confirmed its working as expected. Thanks!

Excellent, I've filed a bug with nuxt.js and attempted your workaround, confirmed its working as expected. Thanks!

You're welcome. Hope it doesn't block you on your endeavors, I'm subbed to the issue you opened on nuxt repo. Thanks.