Multiple server support

As Meteor begins to deploy in a distributed fashion, this package will need to work across multiple servers. At a minimum, we'll need to do the following:

move UserConnections into the database from an in-memory collection
Have servers track their connections so as not to step on each other
Remove connections from servers that have gone down (i.e. what we do in Meteor.startup right now after a HCR)

A more extensive discussion of this is in dburles/meteor-presence#7.

I am planning to improve the current user presence packages to work properly with multiple meteor app instances. The first issue I need to resolve is that I need to track all connections each users has to the app, and to which instance of the app each connection belongs to, so in case an instance goes down/crash, I can remove all orphan connections.
The initial idea is for each instance to auto generate an InstanceID on startup and save it in an "instances" collections, with a "createdAt", plus some more useful info, like app version, hostname, etc and a "heartbeat".
We will create a timer to set all instances with an expired "heartbeat" to {active: false} and subsequently pull all connections $nin instances.find({active: true}).
Does anyone know of any existing packages that may help or be used for that? Or have any suggestions at all?
Cheers!

You can just use the connection ID. thats a unique identifier of a client.
Meteor currently only works with sticky servers (so that a single user is allways routed to the same server for the complete connection lifetime) so there cannot be an issue that the same client is connected to more than one server.
you could store the server hostname in the user profile and nin all users on startup that has been connected to that server.

I don't think this a 100% reliable... at least for our use case, a Web Chat App, the same user may be connected on the desktop and on the mobile at the same time. Or like I said above, the user may be connected to different apps running in different servers that share the same DB, users and status.
So I think each user may have multiple connection IDs on multiple servers, or am I missing something?

Okay, so you mean logged in users....
Then make a array of active connections. an entry has the connection id and the hostname.
and if you empty the array, then you set the user offline.

Thats exactly what I am doing, but instead of the "hostname" I am keeping a InstanceID, as we have 1 meteor instance per CPU on each host. So I need to know what instances are still alive, so I can pull from the array all the connections that belong to a crashed/non-responding server.

This is just the package to track the servers:
https://github.com/Konecty/meteor-multiple-instances-status
Next we will adapt the user status package to use this information

Hi all, with the following goals

Supporting presence in projects with multiple instances.
Handle server crash/restart gracefully.
Allow user to set its preferred status: Online, Away, Busy, Offline
Allow user to have the same presence across tabs, browsers or devices.

We created 2 packages:
The first, if you have multiple instances of your app running (on same server or not) we need to keep track of them all, so it handle orphan sessions.
https://atmospherejs.com/konecty/multiple-instances-status
The second is the user-presence package itself:
https://atmospherejs.com/konecty/user-presence
Checkout out the source code of the chat example at:
https://github.com/Konecty/meteor-user-presence-example-chat
And finally, you can see it all working together at:
http://user-presence-example.meteor.com/
We will be added a full manual on the readme.md tomorrow, but initial comments are welcome.

@engelgabriel I've been traveling lately, but it seems like you are on the right track.
The most tricky part going from single servers to multiple servers is the clearing of sessions associated with dead servers. It seems you've already gotten several suggestions for that, but there are definitely efficient vs. less efficient ways to do that (and I don't think you'll need to use heartbeats.)
Good luck with your packages!

We are doing the heartbeats only on the "instance" level.. so it is pretty harmless. I can't think of any other way of being 100% sure that an instance is still running or not. When instance is consider dead by the others, they will elect an instance to pull the connections with that instance id from all sessions at once.
We've tested it in our production environment, with 8 instance and over 100 online users distributed across all instances. All seem to be working just fine, even during deployment of new versions of the app! :smiley:

Yep, that sounds like the right way to do it. The devil is in the details for such a distributed system - "considered dead by the others" can be tricky if a server's connection is temporarily interrupted to some but not others. Most things will work just fine in normal operation, but you may see strange results under high traffic load or network hiccups.

@mizzao
I stumbled across this when considering implementing meteorhacks:cluster.
It seems like some of the API will not work when using multiple servers but for me it seems like online, offline, and idle still work for me even with multiple servers because I am using the status keys on the users profile.
The package updates the users document with it's status. Since all my meteor servers are connected to the same database, the same user document is being updated. So once this updated user information arrives at any client who is subscribed to receive it, they can show the appropriate offline / online status.
Even if I am using multiple servers. So please correct me if I am wrong, but the features of this package that update the user's document will still work even if using multiple meteor servers.

@sferoze: I don't think the status fields will multiplex properly because currently it assumes that the connections in memory are the only ones the users have to the server. If users are only making single connections then it will mostly work, but if they are logging on through multiple locations (and through different servers) the state will be wrong.
Also, note that the server clears all user statuses when it starts up. This will clearly break things if servers are being added and removed with load balancing.

ahh i see the issue now.

@mizzao what about one server running an instance on each core using meteorhacks:cluster?
Since it's just one server upon restart clearing everything is ok.
But I guess the issue comes up if one user is connected the the instance on the first core, and on another device the user is connected to an instance on the second core?

Yes.
I think the aforementioned https://github.com/Konecty/meteor-multiple-instances-status is supposed to handle this, but I've never used it. You may want to try that.


Adding FZF fuzzy find tool

added fo function to homeDir/.shellfn and added fzf install to config.js (brew installs)


Added sample Code for an issue

Added Sample Code for https://github.com/dotnet/AspNetCore.Docs/issues/26346 and #26370
@Rick-Anderson EDIT:
Fixes #26346 Fixes #26370

@Rick-Anderson @RickAndMSFT

Added sample code for this issue #26370
@Rick-Anderson and @wadepickett

@sammychinedu2ky  testing the  sample, it's great. Works perfect from Postman but from curl I get the following error:
c:>curl --request POST https://localhost:54535/register --header 'Content-Type: application/json' --data-raw '{ "Name":"Samson", "Age": 23, "Country":"Nigeria" }'
registeredcurl: (6) Could not resolve host: application
curl: (3) URL using bad/illegal format or missing URL
curl: (3) URL using bad/illegal format or missing URL
curl: (6) Could not resolve host: 23,
curl: (3) URL using bad/illegal format or missing URL
curl: (3) unmatched close brace/bracket in URL position 1:
}'
^
And the output window shows
info: PipeStreamToBackgroundQueue[0]
Reading the stream from the request body.
fail: BackGroundQueueService.BackGroundQueue[0]
''' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
BTW, Reading the stream from the request body. comes from logging I put in program.cs.

ok, would try it out again. I'm making a new pull request soon on this

you'll also have to reset the position of the stream after reading from the body. Because it was designed to be read once.

This fixes it
curl --request POST https://localhost:54535/register --header "Content-Type: application/json" --data-raw "{ "Name":"Samson", "Age": 23, "Country":"Nigeria" }"
Can't use single quotes, must be double quotes. You must be on a macboook

ooh, Thanks would use this in the pull request. I'm on windows 😅

I used GitBash to try out the curl. Your update also worked there as well. So I just stuck to the fix you made since it also worked there.

Made a new pull request here https://github.com/dotnet/AspNetCore.Docs/pull/26437

I just added them and it seems to be working. I'll look at the code now.

Opened a pull request for this last one here https://github.com/dotnet/AspNetCore.Docs/pull/26438


Entity Templates Refactor

Addresses these issues:

#28: [Client.TrackableExtensions] Update Clone Method to Configure Serializer to Handle Cycles
#29: [VS Project Templates] Update Entity T4 templates

Closing this PR for now.  Will re-create it after PR #40 has been completed.


Build problems on Windows when downloading openfast/dev as a zip instead of a git clone

I receive fatal build error:
Not a git repository (or any parent up to mount point /cygdrive/c)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
At this point I have not investigated any further.  Should test a non-Windows cmake build under the same conditions: zip download instead of git clone

@ghaymanNREL Is this an issue that we should fix? Since the GitHub zip download feature does not include the .git directory, its distributing an unversioned openfast.
If that's deemed acceptable, then the build scripts for all platforms could set the version string to "UNVERSIONED" when necessary.
@bjonkman brings up a good point which the suggestion above does not fix. Sharing a legitimately versioned copy of openfast does not guarantee a versioned build. I think we need to add a requirement for git in the required software section of the documentation for all platforms.

Fixed by #194.


Is the validation set same as the training set?

Hi
Are the validation examples taken from the training data itself? I could not spot any differences in how you handle training vs validation data, except for the total number of examples used in each case. Because you just randomly sample a pair of videos in audioVisual_dataset.py, and the data loaders for training and validation use the same file paths, isn't it possible that some training videos are re-used for validation?
Thanks for the great work.

The training data and validation data are specified with differect hdf5 file (which contains file paths).
h5f_path = os.path.join(opt.hdf5_path, opt.mode+'.h5')
For training, opt.mode = 'train'
For validation, opt.mode = 'validataion'
Training data and validation data are loaded using different data loaders.

Got it, thanks!


Added LeapYearChecker and BubbleSort

https://user-images.githubusercontent.com/43691873/135965000-a3019b12-c089-4a61-bae3-81f915ec39a5.png
Pls read the readme file again. Your PR will be excluded by system. Pls submit genuine PR.


Implement API version in client and server

retest this please

retest this please

retest this please

I've updated this pr. pls review. This depends on https://github.com/Commonjava/jhttpc/pull/35 . pls review too.

retest this please

Yeah, I think it'll require a bit more thinking. Not for this PR then.

Yep. We keep the version info with the deprecated method or resource class, and this alos removes any 404 problems. A correction: we still use produces anno rather that consumes.
I need to clear some test issues. It seems when I add some alternatives to ftests/META-INF/beans.xml the ftest passes in IDEA but not mvn with some weld error; while I remove it from beans.xml it passes on mvn but not IDEA. :-(

retest this please


[Feature Request]support edit connection from right-click action

With issues:

Use the search tool before opening a new issue.
Please provide source code and commit sha if you found a bug.
Review existing issues and provide feedback or react to them.

Description

How to reproduce
Steps to reproduce
Expectations
Actual result
Environment

idea version:
operating system:

Merged in #53


Add new edit history settings and functionality

Related to #20

@alangrainger any chance we can see this integrated to your plugin, would be nice to have the settings in the UI. @craigcent , is there anyway of adding this to obsidian before it gets merged, I had a look at BRAT, but it seems that this repo doesn't have the right format, needs compiling or something similar?

This was used as a reference for the new settings added in 1.4.0 - thank you :+1:
I have opted not to include the "Update after X seconds of inactivity" as I feel that letting people easily configure it will end up with a lot of issues created, since lowering that setting will cause many conflicts with Obsidian.


Upgrade to framework v1.4

This is an attempt to move the tf framework forward from 0.5 to 1.4.
Todo list

[x] provider
Resources

[ ] cluster
[ ] cluster_rosa_classic
[ ] group_membership
[ ] identity_provider
[ ] machine_pool
[x] cluster_wait
[ ] rosa_oidc_config_input
[ ] rosa_oidc_conifg
[x] dns_domain

Data sources

[x] cloud_providers
[ ] rosa_operator_roles
[ ] policies
[ ] groups
[ ] machine_types
[ ] versions

[ ] unit tests
[ ] subsystem tests

So far, it's tedious, but fairly straightforward.
ValueCannotBeChangedModifier() is going to need some work though. There's probably some type trickery that can make it work w/o separate implementations for each type, but I haven't figured it out.


Provider does not format date/time when moving into Trips

Should reformat all date/time columns

Different bug, but should strip time from date/time rather than using cell formatting


Read config.yaml from XDG standard paths

As more CLI apps are adopting the path conventions laid out by the XDG Base Directory Specification, it would be nice if config.yaml and other generated files like thread history are placed in these standard paths—or at least look for them in these paths before using ~/.chatgpt-cli/:

config.yaml — use $XDG_CONFIG_HOME/chatgpt-cli/config.yaml (if XDG_CONFIG_HOME is NOT explicitly defined, use ~/.config/chatgpt-cli/config.yaml)
history/default.json etc. — use $XDG_DATA_HOME/chatgpt-cli/history/default.json (if XDG_DATA_HOME is NOT explicitly defined, use ~/.local/share/chatgpt-cli/history/default.json)

Hi @erhhung, I think this makes a lot of sense. I did not know about the XDG standard paths concept when I created the CLI.
It will take me a minute to implement this feature: I will need to create a migration script that moves your current config over to the appropriate directory. However, this migration should work from any version of the CLI (there is a migration script that runs already to account for an earlier change). So it's a little tricky :).
There are also some complications around the case in which the directory does not exist. It seems like most other CLIs try to create the directory in that case.

@erhhung I finally fixed this. It took me forever because I didn't see the simple solution until just now. I was going to migrate everyone over with a backwards compatible migration script. It would require a minor bump in the versioning and it would be tedious and so I kept pushing it forward.
Then I realized I could just make the config directory path configurable and have the users do it themselves :)
So I did!

Commit: https://github.com/kardolus/chatgpt-cli/commit/918331699580829858b54a202b85aab0990d49f7
Release: https://github.com/kardolus/chatgpt-cli/releases/tag/v1.6.7


Ameerul / FEQ-2432 Add test coverage for useP2PSettings

Added test cases for useP2PSettings
Updated snake case values to camel case

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

9 of 11 (81.82%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.4%) to 78.157%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/hooks/custom-hooks/useFloatingRate.ts
0
2
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.4%

Covered Lines:
4824

Relevant Lines:
5623

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

9 of 11 (81.82%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.4%) to 78.157%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/hooks/custom-hooks/useFloatingRate.ts
0
2
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.4%

Covered Lines:
4824

Relevant Lines:
5623

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

9 of 11 (81.82%)  changed or added relevant lines in 3 files are covered.
30 unchanged lines in 3 files lost coverage.
Overall coverage increased (+3.9%) to 81.655%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/hooks/custom-hooks/useFloatingRate.ts
0
2
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/pages/my-ads/components/OrderTimeSelection/OrderTimeSelection.tsx
2
91.11%

src/pages/my-ads/components/AdWizard/AdWizard.tsx
2
76.0%

src/pages/my-ads/screens/CreateEditAd/CreateEditAd.tsx
26
41.79%

Totals

Change from base Build<PHONE_NUMBER>:
3.9%

Covered Lines:
4956

Relevant Lines:
5638

💛  - Coveralls


Discord doesn't open links in Firefox

See nixpkgs#78961 (potential fix in nixpkgs#186603). For now, overriding discord with nss = nss_latest works.

Using Discord again...


"no-misspelled-properties" rule treats certain nested properties preceded by control directives as spelling errors

This is a simplified description of an issue I ran across in wet-boew/theme-gcwu-fegc#251.
What version of Sass Lint are you using?
1.12.1 (via grunt-sass-lint 0.2.4)
Please include any relevant parts of your configuration
rules:
  indentation:
    - 1
    - size: tab
  no-misspelled-properties: 1

What did you do? Please include the actual source code causing the issue.
.test {
	background: {
		@if true {
			color: inherit;
		}
		image: inherit;
	}
}

What did you expect to happen?
I expected to not get any linting errors, since the aforementioned source code is valid SCSS.
What actually happened? Please include any error messages given to you by Sass Lint.
test.scss
  6:3  warning  Property `image` appears to be spelled incorrectly  no-misspelled-properties

Other comments:
I noticed that the warning only occurs when certain properties belonging to the background namespace are used in place of image in my source code. In case it helps, I've provided an outline below of valid properties that don't cause warnings and other valid ones that do cause warnings.
The following properties don't produce any warnings:

clip
color
size

The following properties produce warnings:

attachment
blend-mode
image
origin
position
position-x
position-y
repeat

Thanks @EricDunsworth I'll take a look, it seems to me that maybe the @if being present is causing some issues here. I will investigate.


Update Posts “gibson”

Automatically generated by Netlify CMS

👷 Deploy Preview for determined-meninsky-f29d45 processing.
🔨 Explore the source changes: c952d51fda012ab69f06883ee1ef053b40dfa7a7
🔍 Inspect the deploy log: https://app.netlify.com/sites/determined-meninsky-f29d45/deploys/613a0d3d2e67d7000787f3c9


protocolParams returning null

Running Git commit https://github.com/input-output-hk/cardano-graphql/commit/6f20487ed6969bb7df057e3794fd57741d420349
Platform

[X] Linux / Ubuntu
[ ] Linux / Other
[ ] macOS
[ ] Windows

Platform version:
Runtime

[ ] Node.js
[X] Docker

Steps to reproduce the bug
Something "interesting" has happened with the epoch change over. The protocolParams in the epoch for 231 is empty. This bug seems to be similar to what has caused https://github.com/input-output-hk/cardano-graphql/issues/375.
This occurred at the moment of the epoch change over:

Running this command usually pulls this epochs stats but as you can see it's null:
{cardano{tip{hash slotNo slotInEpoch number forgedAt epochNo epoch{protocolParams{a0 decentralisationParam nOpt rho tau}}}}}

Next Steps
I'm currently doing a full db and cardano-node rebuild on another server to see if it does anything.

This fixes itself after a full DB and node re-sync.

This fixes itself after a full DB and node re-sync.

When checking the rebuilt instance, was 231 still the current epoch ?

Yes, at that point it was still 231. From what I've seen, transitioning from 230 to 231 wasn't populating the records (protocolParams and activeStake) for 231 but I could still lookup records in 230. This only happened when the node was running live during the epoch transition. When doing a DB rebuild, the data is then populated for epoch 231 while 231 was the current active epoch.
During the last transition from epoch 231 to 232 I did not have this issue and I wasn't impacted by the cardano-db-sync epoch bug at all while running the graphql 3.0.0 release.
I do notice that when running { cardanoDbMeta { initialized syncPercentage }} at the start of a new epoch, a few minutes after 'initialized' turns to 'false'. Then about 5 or 10 minutes later it then returns to 'true'.
Am I correct in understanding that at the start of an epoch, protocolParams and activeStake are calculated and then populated into the table which can cause the 'initialized' to turn to 'false' during this calculation? If this is the case, is it possible that if there's a system glitch during that time that it could cause both of these to fail and therefore not populate the tables?

Just an update. No issues with this bug during the epoch transition to 233.

Thanks for the additional info @CyberCyclone.

I do notice that when running { cardanoDbMeta { initialized syncPercentage }} at the start of a new epoch, a few minutes after 'initialized' turns to 'false'. Then about 5 or 10 minutes later it then returns to 'true'.

Am I correct in understanding that at the start of an epoch, protocolParams and activeStake are calculated and then populated into the table which can cause the 'initialized' to turn to 'false' during this calculation?

cardano-db-sync must be falling behind the network performing the epoch-rollover operations. I'll be adjusting the determination of initialized in an upcoming release, as the current design is quite limited, and the intent of that property is to guard against inconsistent state on an initial build. This will also fix the syncPercentage value which you may have noticed is invalid in the Shelley-era. Follow https://github.com/input-output-hk/cardano-graphql/issues/248 for updates on this.

... If this is the case, is it possible that if there's a system glitch during that time that it could cause both of these to fail and therefore not populate the tables?

Yes it's possible. Feel free to reopen if you think there's more to be done here.
Here's a simplified query too:
{
  cardano {
    currentEpoch {
      protocolParams {
          a0
          decentralisationParam
          nOpt
          rho
          tau
        }
    }
  }
}


DDC-1879: Provide failing test case

Provides a failing test case as requested in https://github.com/doctrine/doctrine2/issues/2542#issuecomment-347041145 by @lcobucci for Ticket DDC-1879.

@MatthiasKuehneEllerhold thanks a lot for sending the test case, we'll investigate what we're going to do about this since EntityManager#merge() is being deprecated in v2.7 (and was already removed in develop). Maybe @guilhermeblanco can help us here.


feat: implement Prettier & several improvements

Implement Prettier in pair with ESLint for faster and painless code formatting and styling
.vscode/extensions.json serves as a recommendation for the extensions to install which makes code formatting an automatic and seamless process.

 Few configurations needed for the desired effect
After installing the recommended extensions there are 2 settings that needs to be changed if not already:

Change the default formatter to Prettier:

Enable Format on Save (or Format on Paste if needed) which will automatically format code every time file is saved:

Patches the Hide Upgrade Button snippet (resolves #196 )

So changing the line length to 80 seems to help in some cases, but make it cause newlines on a ton of function calls etc, which isn't my favourite. 80 is very small. I'm not sure what's best, but I don't think I'm a huge fan of how little customization is available with Prettier vs ESLint.

So changing the line length to 80 seems to help in some cases, but make it cause newlines on a ton of function calls etc, which isn't my favourite. 80 is very small. I'm not sure what's best, but I don't think I'm a huge fan of how little customization is available with Prettier vs ESLint.

80 is the default & recommended value but you're completely fine extending it, have you tried using 100 or omitting the field to see if it fits your taste?

Prettier itself is a code style, it is mostly opinionated and is meant to unify the same code styles across all projects that uses it. But if that is not our goal here then I can scratch this PR if you want.

I like having standards across the project, but I guess I like having more control and don't agree with the way that Prettier does everything. I've seen something similar done before, I believe using ESLint and Husky with pre-commit hooks that formats before commit. Maybe that's more what I'm looking for?

I think this looks more like what I'd like. Thoughts @CharlieS1103 @kyrie25 ? It would run eslint on staged files before commit, and auto-fix anything it can, or abort the commit if not able to resolve. We could probably change it to not abort commit, but just auto-fix what it can.

It would run eslint on staged files before commit, and auto-fix anything it can, or abort the commit if not able to resolve. We could probably change it to not abort commit, but just auto-fix what it can.

I've had experiences with Husky pre-commit hooks for linters and there were 2 things I've noticed from:

If files were inconsistent with the linting rulesets, running Git hooks for linting would potentially make changes in files that were not meant to be changed, creating unwanted diffs here and there. It wouldn't be too much of a problem over time since files are already linted then.
We will probably need to have lint as a workflow action for every PR to keep things tidy before they are merged to avoid the aforementioned point.

But I'm all aboard with the proposal, if @CharlieS1103 is also then I'll scrape this PR and look closer into integrating Husky and ESLint into commits.

But I'm all aboard with the proposal, if @CharlieS1103 is also then I'll scrape this PR and look closer into integrating Husky and ESLint into commits.

Yeah, sorry you put so much work into it, but I think I'd rather use ESLint. I don't think it should cause any extra files being added that shouldn't be, if we use lint-staged to just lint the staged files. I did add a linting action a while ago as well, but idk if it's working right tbh.

Nah it's fine, I enjoy the work. I'll split the patches from this PR into another one and closing this as of now.


Improve look of mocked out service and instance component

Rather than hiding the service and instance component, this allows the service name to be configured via a index.html head attribute.

To clarify, my intention for the nav widget is for the first button to be the universal 'Back/Up' button, and the second to do double-duty as the page title and the navigation to page siblings. So it won't always be Service + Instance, if that makes a difference.


export $(dotenvx get --format=shell) doesn't handle values with spaces well

If I have .env
A="one two three"

and I run
export $(dotenvx get --format=shell)
echo $A

I get one and I expect one two three

yeah I would too. i'm starting to regret adding these shell formatters because shells are very tricky here.
here's what is happening:
$ dotenvx get --format=shell
A=one two three

that equates to this:
$ A=one two three echo $A
bash: two: command not found

obviously, I'd never write it like that and expect it to work, instead I'd write it like the following:
$ A="one two three" echo $A
one two three

so why doesn't $ dotenvx get --format=shell return with quotes? because then it breaks env by including the quotes! it's very frustrating! first how it works currently with env:
$ env $(dotenvx get --format=shell)
...
A=one two three

^ this correctly prints one two three
but if quotes are returned in the subshell command, env preserves the quotes! here's the equivalent example:
$ env 'A="one two three"'
...
A="one two three"

the only truly reliable solution right now is to use eval with --format=eval.
eval $(dotenvx get --format=eval)

i'm open to ideas and conversation around this though. it's probably the most frustrating part of this library.

related

https://github.com/dotenvx/dotenvx/pull/393
https://github.com/dotenvx/dotenvx/issues/392
https://github.com/dotenvx/dotenvx/pull/366

ok, if eval works reliably then im fine just using that

actually for now Im using jq to do it like this
secrets_json="$(dotenvx get --format json -f ".env")"
for x in $(echo "$secrets_json" | jq -r 'keys[]'); do
    [ -z "$x" ] && continue
    VALUE=$(echo "$secrets_json" | jq -r ".$x")
    export "$x"="$VALUE"
done

yeah probably a good move to use jq since json is going to be serialized correctly
can I ask, why not use dotenvx run though as a simple wrapper on your processes? what's your context or preference for using export ?

$ env $(dotenvx get --format=shell)
...
A=one two three

^ this correctly prints one two three

Does it? Because in my zsh it seems not to, but perhaps that is because of what i do.
Given:
test ! -f .env && <<'EOF' >.env
T=some with space without quotes in dotenv
T2=" and more with spaces with double quotes in dotenv"
T3=' and w/ single quotes in dotenv'
T4=" and \" escaped double quote in double quote"
T5= and \" escaped double without quotes
T6= and \' escaped single without quotes
TEST2=4
AW=H
EOF

When: \env -i $( dotenvx get --format shell ) \env
Then: env: ‘with’: No such file or directory
When: \env -i "$( dotenvx get --format shell )" \env
Then: T=some with space without quotes in dotenv T2= and more with spaces with double quotes in dotenv T3= and w/ single quotis in dotenv T4= and \" escaped double quote in double quote T5=and \" escaped double without quotes T6=and \' escaped single without quotes TEST2=4 AW=H

Setting IFS to $'\n' (or $'\0' ), and using that in dotenvx' output (or perhaps support something like --csv=$'\0' so the (shell) word separator character (IFS) can be provided by the dotenvx user.
(
  export IFS=$'\n'
  \env -i A=4 $(
    export IFS=$'\n'
    for i in $( cat .env )
    do
      printf '%s=%s\n' "${i%%=*}" "${i#*=}"
    done
  ) Z=12 sh -c ' echo -e "\n.>T3:$T{3?}<_\n_>T5:${T5?}<.\n" ; \env ; '
)


Fix typo for Network docs CI

Description
A small typo was preventing the Hydra job to succeed.

bors r+


Access Database Engine 2010

@lauxjpn Microsoft have removed the page for downloading the 2010 version of the access database engine.
Thus our CI system fails on all 2010 workflows

Have a temp fix but we might want to have a local copy

Note for future reference. Best 2010 version is: 14.0.6119.5000
Do not use version from CNet (14.0.4730.1010). This has issues with DAO (creating database - cannot create IClassFactory) and certain queries (invalid field in index or relationship)


enhancement: ignore with build_*

Proposed changes
Issue Number: close #xxx
Problem Summary:
ignore with build_*
Checklist(Required)

Does it affect the original behavior: (No)
Has unit tests been added: (No Need)
Has document been added or modified: (No Need)
Does it need to update dependencies: (No)
Are there any changes that cannot be rolled back: (No)

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

be/build_Release/

Remove be/build_Release/
be/ut_build*/
be/build_*/

Better to have a consistent style here.

LGTM

be/build_Release/

Remove be/build_Release/
be/ut_build*/
be/build_*/

Better to have a consistent style here.

Fixed


Trying to set PathMaps

How should I put the paths in the config? (remote and local)

Me also is looking into this.
Without remote debugging is impossible and extension not very useful.
Anyway keep up the good work

I believe the real problem is in Atom core. I made an issue there: https://github.com/atom/atom:10345

Is this an issue with a specific version of Atom? Can I get round it by using an older version?

Is this an issue with a specific version of Atom? Can I get round it by using an older version?

Not that I'm aware of. For now, I switched back to PHPStorm for debugging. I don't prefer developing in PHPStorm, but it's debugger is amazing.

This has been adjusted with the latest release. The new format is "remotepath;localpath". This should fix remote debugging


Can't run audit on authenticated pages

Maybe I am missing something, but I tried two approaches and none works: audit opens the session which is not authenticated even when logs show cookies passed into the page object passed into audit.
So, approach 1:
Logging in the test
import { test, expect } from "@playwright/test";
import { playAudit } from "playwright-lighthouse";

test("Run lighthouse audit", async () => {
  const url = process.env.STAGING_URL ?? "";
  const user = process.env.USER_NAME ?? "";
  const password = process.env.PASSWORD ?? "";
  const playwright = await import("playwright");
  const browser = await playwright["chromium"].launch({
    args: ["--remote-debugging-port=9222"],
  });
  // const context = await browser.newContext();
  const page = await browser.newPage();

  await test.step("Log in ", async () => {
    console.log(`Authenticating ON STAGING ${url} with user: ${user}`);
    await page.goto(url);
    await page.getByPlaceholder("Username").fill(user);
    await page.getByPlaceholder("Password").fill(password);
    await page.getByRole("button", { name: "Log In" }).click();
    await page.waitForLoadState("load");
    await expect(
      page.getByRole("heading", { name: "Welcome" }).isVisible()
    ).toBeTruthy();
    const cookies = await page.context().cookies();
    console.log("Cookies when logged : ", cookies);
  });

  await test.step("Run lighthouse audit", async () => {
    const cookies = await page.context().cookies();
    console.log("Cookies before audit : ", cookies);
    await playAudit({
      page: page,
      port: 9222,
      thresholds: {
        performance: 0,
        accessibility: 0,
        "best-practices": 0,
        seo: 0,
        pwa: 0,
      },
      reports: {
        formats: {
          html: true,
          json: false,
          csv: false,
        },
        directory: "litghthouse-reports-" + Date(),
      },
    });
  });

  await browser.close();
});

Cookies are logged in both steps, but audit is ran on the non-authorized page.
Approach 2:
setting up configurations to auth before running test
Config:
mport { chromium, test as base } from "@playwright/test";
import type { BrowserContext, Page } from "@playwright/test";
import getPort from "get-port";
import os from "os";
import path from "path";
import authState from "./.auth/user.json";
import fs from "fs";

type LocalStorage = Array<{ name: string; value: string }>;

type AuthState = {
  origins: Array<{
    origin: string;
    localStorage: Array<{
      name: string;
      value: string;
    }>;
  }>;
};

export const lighthouseTest = test.extend<
  {
    lighthouseAuthenticatedPage: Page;
    lighthousePage: Page;
    context: BrowserContext;
  },
  {
    port: number;
    storage: LocalStorage;
  }
>({
  port: [
    async ({}, use) => {
      // Assign a unique port for each playwright worker to support parallel tests
      const port = await getPort();
      await use(port);
    },
    { scope: "worker" },
  ],

// As there's currently no way to insert auth-state into a PersistentContext we
 // need to explicity load and insert the auth storage. In our case we only care
 // about localStorage for auth.
 storage: [
   async ({}, use) => {
     const rootUrl = process.env.STAGING_URL || "";
     const localhostStorage = (authState as AuthState).origins.find(
       ({ origin }) => {
         return origin === new URL(rootUrl).origin;
       }
     );
     if (!localhostStorage) {
       throw new Error(`No storage state found in ${authState}`);
     }
     if (!localhostStorage.localStorage.length) {
       throw new Error(`No localStorage state found in ${authState}`);
     }
     await use(localhostStorage.localStorage);
   },
   { scope: "worker" },
 ],

 context: [
   async ({ port, launchOptions }, use) => {
     const userDataDir = path.join(os.tmpdir(), "pw", String(Math.random()));
     const cookies = require(path.resolve(
       __dirname,
       "./.auth/user.json"
     )).cookies;

     // Convert cookies to the correct format for the header
     const cookieHeader = cookies
       .map((cookie) => `${cookie.name}=${cookie.value}`)
       .join("; ");

     const context = await chromium.launchPersistentContext(userDataDir, {
       args: [
         ...(launchOptions.args || []),
         `--remote-debugging-port=${port}`,
       ],
       extraHTTPHeaders: {
         cookie: cookieHeader,
       },
     });

    // apply state previously saved in the the `globalSetup`
     await context.addCookies(require("./.auth/user.json").cookies);
     await context.storageState({ path: "./.auth/user.json" });
     await use(context);
     await context.close();
   },
   { scope: "test" },
 ],

   lighthousePage: [
     async ({ context: context }, use) => {
        const page = await context.newPage();
        await use(page);
      },
      { scope: "test" },
    ],

    lighthouseAuthenticatedPage: [
      async ({ context: context, lighthousePage: page, storage }, use) => {
        const hostname = new URL(process.env.STAGING_URL || "").hostname;
        await page.goto("dashboard");
        await insertAuthStorage(page);
        type AuthState = {
        cookies: Array<{
            name: string;
            value: string;
            domain: string;
            path: string;
           expires: number;
            httpOnly: boolean;
           secure: boolean;
          sameSite: "Strict" | "Lax" | "None";
          }>;
          origins: Array<{
            origin: string;
           localStorage: Array<{
              name: string;
             value: string;
            }>;
          }>;
       };

//       async function insertAuthStorage(page: Page): Promise<void> {
 //         const authState: AuthState = JSON.parse(
 //           fs.readFileSync(
 //             // getAuthArtifactFilePath("state", "storageState.json"),
 //             path.resolve(__dirname, "./.auth/user.json"),
 //             "utf8"
 //           )
 //         );
 //         // Set cookies
 //         for (let cookie of authState.cookies) {
 //           if (cookie.domain === hostname) {
 //             const cookieValue = `${cookie.name}=${
 //               cookie.value
 //             };expires=${new Date(cookie.expires * 1000).toUTCString()};path=${
 //               cookie.path
 //             };domain=${cookie.domain};secure=${cookie.secure};httponly=${
 //               cookie.httpOnly
 //             };samesite=${cookie.sameSite}`;

 //             await page.evaluate(
 //               (cookieValue) => (document.cookie = cookieValue),
 //               cookieValue
 //             );
 //           }
 //         }

 //         // Set local storage
 //         const origin = "https://" + hostname;
 //         console.log("ORIGIN: ", origin);
 //         const localStorageKVPs = authState.origins.find((o) => {
 //           return o.origin === origin;
 //         });
 //         if (localStorageKVPs) {
 //           for (let kvp of localStorageKVPs.localStorage) {
 //             await page.evaluate(
 //               (kvp) => localStorage.setItem(kvp[0], kvp[1]),
 //               [kvp.name, kvp.value]
 //             );
 //           }
 //         }
 //       }
 //       await use(page);
 //     },
 //     { scope: "test" },
 //   ],
});

export async function lighthouseAudit(
  page: Page,
  port: number,
  pageName: string
  // thresholds?: LighthouseThresholds,
  // config = lighthouseMobileConfig
): Promise<void> {
  const { playAudit } = await import("playwright-lighthouse");
  const fileName = `performance-scan-results-${pageName}-${new Date().getDate()}`;
  await playAudit({
    page,
    // config,
    port,
    reports: {
      formats: {
        html: true,
        json: true,
        csv: false,
      },
      name: fileName,
      directory: "./lighthouse",
    },
    thresholds: {
      performance: 0, //70,
      accessibility: 0, // 95,
      pwa: 0, // 50,
      "best-practices": 0, // 95,
      // ...thresholds,
    },
    opts: {
      logLevel: "error",
    },
  });
}

Commented code was also tested and did not influence anything.
Test:
import { lighthouseTest, lighthouseAudit, expect } from "../../../my-test";

lighthouseTest.describe("Authenticated route after globalSetup", () => {
  lighthouseTest.use({
    storageState: ".auth/user.json", // Load the authenticated state
  });
  lighthouseTest(
    "should pass lighthouse tests",
    async ({ port, dashboardPage, page }, testInfo) => {
      const pageName = "dashboard";
      const fileName = `performance-scan-results-${pageName}-${new Date().getDate()}`;
      await dashboardPage.goto();
      expect(await dashboardPage.header.isVisible()).toBeTruthy();
      await lighthouseAudit(dashboardPage.page, port, pageName);
      await testInfo.attach(`performance-scan-results-${pageName}`, {
        body: fileName,
        contentType: "csv",
      });
    }
  );
});

Used info from here:
https://github.com/abhinaba-ghosh/playwright-lighthouse/issues/14
And here:
https://github.com/microsoft/playwright/issues/7447#issuecomment-879803423

Hi @alionatudan
Did you found a way to solve the above issue? Even i have the same issue, for me when i'm passing the page object to playaudit, it is opening a new window which doesn't have auth info so while accessing the it is again redirected to auth service which shouldn't be the case as testcases are working fine.

Hi @alionatudan
Did you found a way to solve the above issue? Even i have the same issue, for me when i'm passing the page object to playaudit, it is opening a new window which doesn't have auth info so while accessing the it is again redirected to auth service which shouldn't be the case as testcases are working fine.

No, I could not resolve this.
Switched to Artillery.

Even I have found the same issue when tried to login via cookies. Kindly mention if any solution comes up


Output ": syntax error" when input contains cuesheet file

When a cuesheet file is passed that ends with a newline, there is a line "<integer>: syntax error" printed to stderr. When the processing proceeds without exception, the message is safe to ignore. The cause is in a library used by libarcsdec, the issue there is crf8472/libarcsdec#7 and the issue about the cause is lipnitsk/libcue#52. The issue cannot be solved in arcs-tools.

While this is not actually resolved, a workaround is introduced with 0.1.1-alpha.1: just use the new internal cuesheet parser by issuing --parser=cuesheet.


Wish to publish an EXE file

Dear developer, I hope you can compile the exe file that can run on windows

yes,we need an exe file

yes,we need an exe file

please do not post any executable (especially for windows), in this way we can prevent the new plotter from spreading accross non technical people.

Indeed, I am also aware of this problem, let's just a few of us party


Help menu report issue: output config directly

Hi I'm new.
@chabou comments in issue #2213 about updating  the "Report issue" in Hyper Menu by outputting the config directly. This pr does that.
I wrapped the config in a dropdown b/c the config output kinda dominates the message. The pr includes a bit of code duplication from app/menus/menu.js. I could use some help with figuring out how to export the variable updateChannel value, otherwise it's ready to go.
I wanted to make additional changes to the message itself but I'll save that for another pr some other day. I still want to squash my commits.

😱
Thank you so much for this PR!
Amazing in terms of both form and contents.
I'll review it ASAP.

Can you rebase this PR towards the canary branch?

closing in favor of #2293 on canary branch


Remove drand48() usage in jtest

Fix #1907

Minors in jtest:
We have duplicated #include <stdlib.h>, not sure if this is intentional.
MAX_FILE_ARGUMENTS is not used in this file any more. It was introduced in e8ad2978176e62da929c4343db89b26f100b1353. And the usage was removed in 25cd96dcf882afb4d4306982c17181b27bb8ae54.
Please let me know if you have any questions. Thanks in advance.

Thanks for the cleanup! Looks reasonable.

We have duplicated #include <stdlib.h>, not sure if this is intentional.
MAX_FILE_ARGUMENTS is not used in this file any more. It was introduced in e8ad297. And the usage was removed in 25cd96d.

It looks like these are other cleanups we need to do. Let's do it on other PRs.
@bneradt please fire up CI jobs for this.

[approve ci]

@v1siuol : Thank you for the PR. It looks like the clang-format build is failing. You can see the output from the run here:
https://ci.trafficserver.apache.org/job/Github_Builds/job/clang-format/476/console
This can most easily be addressed by running make clang-format in your local build tree. That will apply the fixes in place, allowing you to commit them and re-push your branch. The CI should re-run automatically then. @ mention me if it doesn't and I'll kick it off again.

Thanks @masaori335. I notice that there are a few more drand48() usages in the following files.  Should I remove them as well?
trafficserver/example/plugins/c-api/thread_pool/test/SDKTest/psi_server.c
trafficserver/iocore/aio/test_AIO.cc
trafficserver/iocore/cache/CacheDir.cc
trafficserver/iocore/cache/CacheTest.cc
trafficserver/plugins/cache_promote/policy.cc
trafficserver/proxy/hdrs/unit_tests/test_Hdrs.cc
trafficserver/src/tscore/unit_tests/test_MMH.cc

Yes, ts::Random is introduced to replace it ( #7859 ). Either is fine to continue on this PR or make another PR.


LSIF spec could use some extra clarity around embedded contents

The LSIF spec states that the contents of a file included in an LSIF index is encoded base64:

It can be valuable to embed the contents of a document or project file into the dump as well. For example, if the content of the document is a virtual document generated from program meta data. The index format, therefore, supports an optional contents property on the document and project vertex. If used the content needs to be base64 encoded.

Given base64 is a encoding of a binary stream, this implies that there's a text encoding question. So some questions:

Should the binary stream be the raw file on disk, in whatever text encoded form it is? This then means it's the responsibility of any consumer to do encoding sniffing which may come to a different conclusion (and therefore different contents) than the indexer. The alternative is the indexer re-encodes in some preferred/specified text encoding prior to the base64 encoding, although that still creates other fun questions around binary file inputs to compilers.
For files that have no "native" encoding because the indexer generated them directly in memory, which encoding should be chosen as a preferred choice?

And to be very clear: this is not a question about the encoding of the LSIF text stream itself (which could be encoded any number of ways), but rather the string that is being put into the base64 encoding that is then further embedded.

We have seen problems with escaping and other things if we put the string content into the JSON. So the idea here is to have the content in utf8 but then encode it in base64 to make sure the JSON stays valid.
Does that make sense to you?


(c.json) small usability improvements

Doxygen documentation placeholders now make more sence if unchanged.

@OkelleyDevelopment , are my answers sound reasonable to you?  Should I press Resolve conversation buttons?


Jobs run 2x as often

We have an issue with Sidekiq 4 and Sidekiq-Scheduler where our jobs are running 2x as often as they should.

I'm using sidekiq-scheduler and haven't noticed that issue. Maybe you can provide some additional information that would help. For example, you can provide the schedule that you're using, and/or a sample of how you're configuring it. Maybe some information about the architecture/environment where you are noticing this issue.

The ones in red I can confirm run 2x the amount but the others I haven't checked yet. In sidekiq 3 using sidekiq-cron all works well. In sidekiq 4 using sidekiq-cron jobs run half as often where as this gem runs them twice as often.

@andrewhavens how do you initialize your schedule out of curiosity?

I have my recurring jobs listed in my sidekiq.yml file:
# ...standard sidekiq config here...

:schedule:
  daily_digests:
    description: Generate daily digest emails
    cron: "0 8 * * * America/Los_Angeles" # Top of the hour, 8am, every day
    class: DigestsJob
    args: daily

@andrewhavens but which way are you loading it.

@jclusso I experienced this issue on 2.0.0, but I do not see it on 2.0.4, fyi

@erichummel I'll try upgrading to 2.0.4. Thanks

No luck with 2.0.4 @erichummel

@jclusso My sidekiq.yml is loaded automatically. There is no additional code required.

I have code in an initializer that loads the schedules for a given environment, I will post it here as soon as I'm back at my home machine ~1 hr. I definitely saw the double scheduling issue, and it was definitely fixed in 2.0.4 for me, hopefully it will help you out

this is how we load our schedules:
Sidekiq.configure_server do |config|
  config.redis = redis_config

  config.on(:startup) do
    schedule_file = "#{Rails.root}/config/cron.#{Rails.env}.yml"

    if File.exists?(schedule_file)
      Sidekiq.schedule = YAML.load_file(schedule_file)
      Sidekiq::Scheduler.load_schedule!
    end
  end

end

^ that is a snippet from our config/initializers/sidekiq.rb file

Our code is very similar... it's just modified slightly so we can specify different schedules based on the environment.
`ruby
host = ENV['redis_host']
port = ENV['redis_port']
db = ENV['redis_db_sidekiq']
namespace = ENV['redis_namespace']
if Rails.env.development? || Rails.env.test?
redis_url = "redis://#{host}:#{port}/#{db}"
else
password = ENV['redis_password']
redis_url = "redis://:#{password}@#{host}:#{port}/#{db}"
end
Sidekiq.configure_server do |config|
config.redis = { url: redis_url, namespace: namespace }
schedule_file = 'config/schedule.yml'
config.on(:startup) do
Sidekiq.schedule = YAML.load_file(schedule_file)[Rails.env]
Sidekiq::Scheduler.reload_schedule!
end
end
Sidekiq.configure_client do |config|
config.redis = { url: redis_url, namespace: namespace }
end
`

Tried running with load_schedule! and even with the GitHub version of this gem with no luck. This is our schedule.
default: &default
  name_of_worker:
    cron: '*/10 * * * *'
    class: 'CleanupPostsWorker'
    queue: low

  name_of_worker:
    cron: '*/1 * * * *'
    class: 'ScheduleLikesWorker'
    queue: slow

  name_of_worker:
    cron: '*/1 * * * *'
    class: 'ScheduleFollowsWorker'
    queue: slow

  name_of_worker:
    cron: '*/1 * * * *'
    class: 'ScheduleUnfollowsWorker'
    queue: slow

  name_of_worker:
    cron: '*/5 * * * *'
    class: 'SchedulePostsWorker'
    queue: low

  name_of_worker:
    cron: '0 * * * *'
    class: 'Fabric::TrialsWorker'
    queue: slow

  name_of_worker:
    cron: '0 0 */1 * *'
    class: 'InactiveAccountsWorker'
    queue: slow

  name_of_worker:
    cron: '0 */1 * * *'
    class: 'ScheduleIGAccountsSyncWorker'
    queue:  slow

  name_of_worker:
    cron: '0 */1 * * *'
    class: 'AdminDashboardStatsWorker'
    queue: low
development: &development
  << : *default

test: *development

staging: &staging
  << : *default

production: &production
  << : *default
  name_of_worker:
    cron: '*/5 * * * *'
    class: 'ProxyServers::CreateWorker'
    queue: low

  name_of_worker:
    cron: '*/5 * * * *'
    class: 'ProxyServers::MaintenanceWorker'
    queue: low

Hi @jclusso.
Are you still experiencing this problem?
Are you sure you don't have 2 or more running sidekiq process?
It would be great if you could isolate the jobs that are being run twice, post the YAML config having only those jobs, and provide a sample scaffold of one of your worker classes.

@snmgian yes, we are still experiencing this problem. No other code has changed between trying to upgrade from sidekiq 3 to 4 and we don't have these issues. We are experiencing half as many jobs with the sidekiq-cron gem and twice as many jobs with this gem. Something must have changed that is affecting these scheduling gems in an odd way....

I see you posted this code snippet:
Sidekiq.configure_server do |config|
  config.redis = { url: redis_url, namespace: namespace }
  schedule_file = 'config/schedule.yml'

  config.on(:startup) do
    Sidekiq.schedule = YAML.load_file(schedule_file)[Rails.env]
    Sidekiq::Scheduler.reload_schedule!
  end
end

Sidekiq.configure_client do |config|
  config.redis = { url: redis_url, namespace: namespace }
end```

That code is in `config/initializers/sidekiq.rb`? It's part of a Rails app?

@snmgian yes and yes.

I can't see anything strange in your setup, so I have an extra questions for you :)

Which command do you use to start sidekiq?
How many sidekiq processes are you running?
The .yml config you provided is a bit shadowed, I would bet that it is because of some confidentiality policy. Could you provide a more realistic one while keeping the required confidentiality? I see that all of your workers are named the same.

we use bundle exec sidekiq -q slow -c 20
anywhere from 1-30+ depending on our autoscaler. we are on Heroku and scale up and down all day
yes it is because we don't want to expose certain information that is confidential. rest assured that all of the classes are unique and we are not running multiple schedules for a single class or something.

The thing is that each of your sidekiq instances will schedule the jobs. So, if you have 30 instances, each having a sidekiq.yml containing this schedule:
  name_of_worker:
    cron: '* * * * *'
    class: 'ClassName'
    queue: slow

the job will be scheduled 30 times, once per instance.
You could have on sidekiq process responsible only for scheduling the jobs, and then a group of sidekiq processes that dequeue jobs and executes them.

I'm sure heroku is handling this properly and it what you were saying was the case we wouldn't have exactly 2x of the jobs. We'd have like random amounts from 2-30x+

Hi @jclusso,
Is it possible for you to include the Procfile you are using?
That could help us a lot on the resolution of this issue.
Thanks

web: bundle exec puma -C ./config/puma.rb
default_worker: bundle exec sidekiq -c $default_worker
low_worker: bundle exec sidekiq -q low -c $low_worker
slow_worker: bundle exec sidekiq -q slow -c $slow_worker
post_worker: bundle exec sidekiq -q post -c $post_worker
fabric_worker: bundle exec sidekiq -q fabric -c $fabric_worker
elasticsearch_worker: bundle exec sidekiq -q elasticsearch -c $elasticsearch_worker

Hi @jclusso,
Seems that you have different config files for each worker.
Does each config file have different schedule configurations aimed at the queue specified with -q option?
If you have the same schedules across all those config files you have two options:

Have different config files with schedules that push jobs into the specific queue

Point your Gemfile to github. A code change that only schedule jobs for queues that sidekiq is listening on was merged some days ago. This feature is still experimental.
  gem 'sidekiq-scheduler', git: 'https://github.com/moove-it/sidekiq-scheduler.git'

@jclusso, if you point your Gemfile to github, add this to your sidekiq.yml
:scheduler:
  :listened_queues_only: true

listened_queues_only flag set to true will tell the scheduler to not push jobs whose queues are not being fetched by the local sidekiq process.

Will give it a try shortly @snmgian

@snmgian we don't even have a sidekiq.yml....

@jclusso I see you are configuring Sidekiq within a initializer:
  config.on(:startup) do
    Sidekiq.schedule = YAML.load_file(schedule_file)[Rails.env]
    Sidekiq::Scheduler.reload_schedule!
  end

Try adding Sidekiq::Scheduler.listened_queues_only = true before reloading the schedule. That will have the same effect as reading the config from sidekiq.yml

Adding this line made nothing run...

@snmgian, adding this line made no scheduled workers run

Do you have the following entry in your Gemfile?
gem 'sidekiq-scheduler', git: 'https://github.com/moove-it/sidekiq-scheduler.git'

If still throws NoMethodError, try executing bundle update sidekiq-scheduler

Yes and I've done that already.

I just tested it in a fresh project and didn't face the NoMethodError problem, these method has been added recently.
Your Gemfile.lock should have the following (bundle update sidekiq-scheduler should have cared about that)
GIT
  remote: https://github.com/moove-it/sidekiq-scheduler.git
  revision: fc87e6358141b98bde51c74afe119abf441a740a
  specs:
    sidekiq-scheduler (2.0.5)
      multi_json (~> 1)
      redis (~> 3)
      rufus-scheduler (~> 3.1.8)
      sidekiq (>= 3)
      tilt (>= 1.4.0)

Also, make sure that you don't have some other version of sidekiq-scheduler installed. Verify it with gem list, and remove it if it appears in the list.

@snmgian I just noticed that you told @jclusso to add this to the sidekiq.yml file:
:scheduler:
  :listened_queues_only: true

...but isn't the config namespaced under schedule?
:schedule:
  :listened_queues_only: true

This appears to possibly be working now that I got it updated @snmgian. I had to force it to use 2.0.5 because it wouldn't update just by running bundle update sidekiq-scheduler.

@jclusso, it's nice to hear that! Please give it some more runs, a new release is planned for next week.

@andrewhavens the namespace, it's a new one, is scheduler
I didn't want to put the new flag under schedule just to not mix up different things like config flags and the proper cron schedule.

@snmgian actually after testing further it appears jobs run far more often than 2x sometimes. Jobs run more depending on dynos now I think.

If the number of times a job is scheduled depends on the number of dynos, then the problem could be solved by having only one sidekiq process responsible of scheduling jobs, and then several other sidekiq process that will take the jobs and perform it.
Those sidekiqs could be scaled up and down depending on your needs, but the scheduler will need to remain as only one instance.
If you need help setting up that scenario, please let me know.

@snmgian yes, how would you go about setting up that scenario?

I think you should have an initializer named scheduler.rb with the following:
require 'sidekiq-scheduler'

Sidekiq.configure_server do |config|
  schedule_file = 'config/schedule.yml'

  config.on(:startup) do
    if ENV['SCHEDULER'] == 'yes'
      Sidekiq.schedule = YAML.load_file(schedule_file)

      Sidekiq::Scheduler.listened_queues_only = false
      Sidekiq::Scheduler.load_schedule!
    end
  end
end

You'll need to add your specific configuration for rails env, redis, and the like ...
Then, your Procfile should be something like:
scheduler: SCHEDULER=yes bundle exec sidekiq
low_worker: bundle exec sidekiq -q low -c $low_worker
slow_worker: bundle exec sidekiq -q slow -c $slow_worker

That would do the trick.

@snmgian on heroku that would do the same thing on every server....

I think that it will work if you don't scale up scheduler process type. The other workers can be scaled up depending on your processing needs.

@jclusso Did you try having the scheduler on a separate process?

We haven't yet but will soon.

I am also facing this problem. I have a heroku app using 3x sidekiq instances and every single instance ran my hourly job at the scheduled time while I was expecting only one job to be scheduled.

To be honest @snmgian I really don't like that solution. It doesn't seem like the proper way this should work. It does seem like a potential work around though.

By default, within each sidekiq instance there is a sidekiq-scheduler 'instance', that's the reason why jobs are ran more than once.
The solution is to have a sidekiq instance that only runs the scheduler responsible of enqueueing jobs, and then have as many sidekiq instances as needed, running without any schedule configuration, that execute those jobs enqueued by the scheduler instance.
I agree that this is not the behaviour that most people would expect, and having an extra sidekiq instance could not be cheap in some scenarios, so I'll work on this.
It seems that checking if the job has been already enqueued for a particular time execution will be the way to go. I have a working draft, but need some more testing.

Maybe some inspiration for how it can be done could be gotten from the sidekiq-cron gem. That gem however has it's own set of issues where it schedules half as often on Sidekiq 4 :(.

Sure. Actually, I took a look at the source code of that gem when I was evaluating options to handle this issue.

An idea: leverage redis to record the leader of the schedule, so when you have X instances, only one instance is the leader and has the responsibility of scheduling the jobs.
You would need the leader to perform a heartbeat and keep redis up to date, if there is no leader the another sidekiq instance would take over.
... maybe I am overthinking this.

The other thing I noticed after installing sidekiq-scheduler is that the number of threads increased by an unknown factor.

@cabello Those threads are fired up by rufus-scheduler (https://github.com/jmettraux/rufus-scheduler), it has a thread-pool from which selects a thread and executes a job. That job's only purpose is to push the worker into sidekiq, so they're not doing too much work. You can open a new issue if you think it's appropriate.

@jclusso, @cabello In master branch is avaiable a ... that should solve the problem of duplicated cron and at jobs. Within this approach, it won't be necessary to have a separate process responsible only of jobs scheduling.
As it's not part of a release you should modify your Gemfile to having this:
gem 'sidekiq-scheduler', git: 'https://github.com/moove-it/sidekiq-scheduler.git'

And then run bundle update sidekiq-scheduler. Your resulting Gemfile.lock should have smth like:
GIT
  remote: https://github.com/moove-it/sidekiq-scheduler.git
  revision: ee317fd427bf600ba2562f9ae3cc64b9880d0e68
  specs:
    sidekiq-scheduler (2.0.6)
       ...

As there's no a generic solution without making the best effort of not increasing the number of Redis operations, we are working on solutions for interval, in and every jobs.

@snmgian, Awesome! We'll test this out in our staging environment shortly and let you know how it runs.

@snmgian we tested this in our staging environment and it appears to be working fine with multiple dynos. I'll keep you posted how it handles our production environment.

We're running this in production with no issues so far.

All is running fine in production now!

Thanks guys for testing this.
@cabello did you have any chance to give it some testing?

@snmgian I would assume the new code on master would work in a situation where you horizontally scale on Elastic Beanstalk or Cloud66 with sidekiq being loaded on each web server?

@polysaturate we're running it in parallel on several VMs on amazon, and @jclusso is running it on an autoscaling group on heroku, so I think it's safe to assume that any other implementation of a similar cloud stack will work without issues, assuming everything's talking to the same redis server/cluster (we've processed about 100k jobs on it, well only about 5k were scheduled, since we deployed to production, so it definitely works).

Thanks for the support guys! I will be trying it again soon.

@erichummel Thanks. It was more of a "Pretty sure I followed the whole issue thread and wanted to verify my assumption after reading the code". @snmgian Awesome work on the code!

@polysaturate no problem. I've been watching it run for the past 30 hours or so and I'm confident it's working properly. Our biggest traffic day (probably 1000-5000x our normal daily traffic in the space of a few hours) of the year is coming up next Saturday, and I'm not nervous about sidekiq-scheduler; just everything else ;)

Hi @polysaturate. It's worth mentioning what @erichummel said, all of your sidekiq-scheduler instances should be talking to the same Redis.
Some state that tracks scheduling timestamps is being stored in Redis, so to prevent duplicates you'll need to point all your instances to the same Redis. It will work if you have Redis Cluster as well because it's handled transparently by Redis.
In general, the code has spots in which its quality could be improved, so we'll go in that direction soon.

@snmgian, I was wondering if this could be related to sidekiq-scheduler. We have one worker that gets a very large number (thousands per minute sometimes) scheduled on it. We noticed we started getting some memory issues on Heroku once we upgraded. When digging deaper it appears to be using more memory on the first instance. For example the instances each have 1GB of memory and the first one is using 1GB, but the rest are only using around 360MB. Is this because the scheduler is running on that first instance?
After thinking about this should we maybe be running a separate dyno which you mentioned above to handle the scheduling?

@jclusso, The scheduler runs on every instance.
All of the instances you mentioned, the one with 1 GB of used memory, and the rest using 360 MB, are running the same process type? (a process type is what you specify in the Procfile)
Could you verify if there's a substantial difference on the number of processed jobs accross different instances?
sidekiq-scheduler only stores the Hash of schedules (the parsed YAML) in memory, and the internal does not handle too much data. So, it doesn't seem to be possibly using hundreds of MB of memory. It also runs on all the instances, so, if it is suffering some memory leak it would affect all of your instances.

@snmgian yes, they are running the same processes. I'm not sure of a good way to verify the processes jobs across instances... any suggestions?
Also, after yesterdays comment I tried the schedule on it's own dyno which made no difference. I'm not sure if this issue is related to the scheduler or just Sidekiq 4. Just seems odd since Sidekiq 4 mentions all sorts of improvements in memory and CPU usage.

Sidekiq writes a log message when a job starts and ends processing, so you could filter those log entries to get the number of processed jobs.
One cause of such difference in memory usage could be due to the first instance processing a much more jobs than the other instances.
I don't know which type of processing are your workers doing, neither how much running jobs at the same time you have, so I'll have to ask if you think that a 360 MB memory usage is reasonable or not.
I'm just looking through some of the instances we have, it seems that differences in memory usage are more related to (all other things being equal) the number of processed jobs  (Sidekiq side) in a given timeframe.

I'll check into our logs and see if we can come up with a clear idea of that. I'm not sure why it wouldn't be pretty equal. Most of our jobs on the queue we are discussing are making a single API request and updating some models in our database. The majority take about 1-2s and are fairly similar.
As for what is high memory usage 360MB is not high. We try and optimize our concurrency to hit just under 1GB since our dyno size is 1GB and we want to use as much memory as possible without exceeding. With the older version of Sidekiq and the other scheduling gem we used we were able to hit a concurrency of 45. With the updates I've decreased concurrency all the way to 5 and still saw the memory errors.
What's interesting to note is that the performance impact isn't drastic. We see maybe a 20-30% increase in speed to execute a job by lowering the concurrency from 45 to 5, but changing it from 45 to 30 or even like 45 to 25 barely has an impact.

Hi @jclusso, do you have any updates on this. I'm heading to close this issue. You can open a new issue if you think is appropriate :)

Still haven't solved the issues full on our end. We are digging through the code in our workers to see if we can track down what is causing this.


Make turbolift ignore empty lines from repos.txt

This PR fixes #46

Thank you for your contribution @kevinrobayna !


pass variables into sql img build for sbom generation

With this change, sbom generation on sql server workflows would not yet happen. However, it would allow us to add sbom variables to the build_publish workflows, and then sbom generation would happen.

/cc dorileo

/lgtm


Add automatic registry.json file creation to bvm.land

This would automatically create registry.json files on bvm.land based on the github repositories that have bvm.json files in them. An endpoint would be added so CI pipelines can ping the site to cause the recreation of a registry.json file or deletion (basically a refresh method that would check the status on github of a release).

This is pretty cool IMO. Implemented and updated the docs.


use image as background

Hello. I'd like to use gravatar images as background. Is there any way to do this currently? I've replaced this line (line no 423):
element.attr('src', gravatarService.url(newVal, opts));
with this:
element.css({'background-image': gravatarService.url(newVal, opts)});
I had to move this library out from bower to libs folder for this simple task. But I'm sure I'm missing out something! Any help would be appreciated. Thanks in advance.

Hi, yes, you'll have to specify the background image url using the url(...) keyword (http://www.w3schools.com/cssref/pr_background-image.asp)
So: element.css({'background-image': 'url(' + gravatarService.url(newVal, opts) + ')'});
Settings background images from Gravatar is a very reasonable use-case, I'm gonna see if I can add this as a built in feature.

Thanks for the prompt response! I'll look forward for this feature!


#17521 typo [skip ci]

Q
A

Is bugfix?
❌

New feature?
❌

Breaks BC?
❌

Tests pass?
❌

Fixed issues
#17521

Sorry, the translator I used put random spaces in the text :( Next time I'll be more attentive.

Merged. Thanks!


new code example and formatting

no samples exist for this
#sign-off @TomArcher

@johnpapa,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

@johnpapa merged

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-services/search.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Fix test_scala_import_source_jar.sh

Description

It fixes the issue that test_scala_import_source_jar_should_not_be_fetched_when_env_bazel_jvm_fetch_sources_is_set_to_non_true is not testing correctly.
Fixes https://github.com/bazelbuild/rules_scala/issues/856

Motivation

Intermediate step for test refactoring.

Thank you!


PR for document save() solution for the PATCH request issue

This pull request makes the following changes

Fixes code-collabo/node-mongo#45

it shows the implementation of the document save() of solving the patch request successful when ID does not exist issue. it also offers ability to manipulate the document before updating.

Ping @code-collabo/node-mongo-api-boilerplate-templates

@Ifycode I've just done the document save() solution for the TS template.


Language Request for Powershell

What programming language should we add?
Powershell
What is the official website for the language?
https://docs.microsoft.com/en-us/powershell/
Is this a language that comes in many variants? If so, which variant should we support?
At the moment Powershell 5 is the default shell on Windows 10, but soon Powershell-core will replace Powershell 5. In addition to this, Powershell-core is a cross-platfrom that can be installed on Linux and Mac.
Does the language have an official logo? If so

please include a link to an example
https://upload.wikimedia.org/wikipedia/commons/2/2f/PowerShell_5.0_icon.png
please list the attribution rights of that logo

Does the language have an unofficial logo? If so

please explain the ways in which people use the unofficial logo
please include a link to an example
please list the attribution rights of that logo

Is there a testing framework available for the language?
There are many testing frameworks available for Powershell, but I would recommend using : https://github.com/pester/Pester
Is this language listed as 'supported' by Prism.js? If so

what is Prism's canonical spelling for the language?
Powershell

what file extensions should be highlighted?
.ps1

If it is not supported by Prism.js, what is the closest supported language it maps to?
N/A
Who will be leading the effort to launch the track?
As a Microsoft Student Partner, I work closely with the Microsoft community from all around the world and I believe that I can lead a team of passionate young people, in order to launch the track and build the Powershell for Exercism.

Hi Hani.
There is actually already a powershell track. It's just currently unmaintained and unlaunched. So if you'd like to pick that up and move it towards launch, that'd be great.
If you email<EMAIL_ADDRESS>he can set you up! (cc @ErikSchierboom)

P.S. You might need to work with some old people as well as young people though ;)

I'm going to close this issue, since we already have a repo for the track.
Thanks so much for offering to jump in! I've been hoping we could breathe some life into the powershell track on Exercism!

Thank you @kytrinyx for inviting me to Powershell team.
I will contact erik for further questions to setup my development enviroment.

The work to launch this track was never completed, and there has been no activity on the track for a long time.
We are therefore archiving the track repository.
If someone wants to actively build and launch this track, please open an issue in https://forum.exercism.org/c/exercism/building-exercism/125 to discuss it.


Could not load file or assembly

Hi!
I have a wpf project target on .net framework 4.6.1 and it 's using Microsoft.AspNetCore.WebUtilities.
After using obfuscar, it has this error:
 An unhandled exception: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.AspNetCore.Http.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies
And this is my config.xml:
<?xml version='1.0'?>
<Obfuscator>
  <Var name="InPath" value="."
My exe file is in the same folder with dll file, so I try to use
<AssemblySearchPath path="." />
and
<AssemblySearchPath path=".\Microsoft.AspNetCore.Http.Abstractions.dll" />
but it still has that error


[0.8.0] Scales shows as offline.

Hello,
My scales instance shows offline in the panel, even though it is running. Ports are open, and scales is running. I have no idea what is going on. Could using an IP for the FQDN and IP be a problem?
[root@s1 scales]# npm start

<EMAIL_ADDRESS>start /srv/scales
forever start lib/scales.js

warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: lib/scales.js

Can you access https://whatever.yourip.com:5656 in your browser?

@DaneEveritt it returns "Scales management daemon"

Possible duplicate of #504, but I need more specific information about where the error is occurring.
Can you also provide logs from src/logs/info.log and exception.log (if there is anything in that one that is relevant).

@DaneEveritt it shows as offline in the panel.
Info Log: [2015-04-29 20-24-34] Exception: Peer's certificate issuer has been marked as not trusted by the user. in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/mashape/unirest-php/src/Unirest/Request.php:427  @  http://cp.minewrath.com/admin/server/new  @@  exception-2015-04-29-20-24-34-0b00e688b4c923ba69c00b2a891e0265.html
Exception Log: [2015-04-29 20-05-28] Klein\Exceptions\UnhandledException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'node' in 'field list' in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/klein/klein/src/Klein/Klein.php:925 caused by PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'node' in 'field list' in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/j4mie/idiorm/idiorm.php:429  @  http://cp.minewrath.com/admin/node/view/1/settings  @@  exception-2015-04-29-20-05-28-64274d4ac3bc16ee6ddd4c32099ee94c.html
[2015-04-29 20-05-33] Klein\Exceptions\UnhandledException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'node' in 'field list' in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/klein/klein/src/Klein/Klein.php:925 caused by PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'node' in 'field list' in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/j4mie/idiorm/idiorm.php:429  @  http://cp.minewrath.com/admin/node/view/1/settings  @@  exception-2015-04-29-20-05-28-64274d4ac3bc16ee6ddd4c32099ee94c.html

It appears that you have an issue with your SSL certificate. Peer's certificate issuer has been marked as not trusted by the user.
Those errors in the exception log appear to be something else that we need to look into.

Okay, any ideas?

So the biggest problem with using SSL certificates and IPs is that it doesn't work well. I would suggest setting up a subdomain to point to your Scales instance IP which you can use when making the SSL certificate. When you are running that command there is a point at which you reach the following:
Common Name (eg, your name or your server's hostname) []:
You can try putting your IP there and see if that works, if not you probably need to use a domain there.

@DaneEveritt Okay, It doesn't let me use a subdomain, The node Fully Qualified Domain Name is not valid. Domains must resolve to a non-reserved IP.
I only have one IP.

You are probably entering something wrong. Make sure you enter node.example.com or similar, don't include www. or http://. Also make sure that it is a real domain.

@DaneEveritt SSL didn't help. I tried to use s1.minewrath.com, which resolves to <IP_ADDRESS>. Same error.

Did you update your certificate? You need to make a new one to match that domain.

@DaneEveritt yes.

Try using a certificate from https://www.startssl.com and see if it fixes and problems.

@DaneEveritt that is a bit of a hassle. Anything else I could try, like force changing it in PHPMyAdmin?

There isn't anything we can do to fix an invalid SSL certificate, it isn't working because the libraries can't validate the certificate, and even ignoring errors doesn't fix this.

@DaneEveritt just curious, what directory do I make the SSLs in?

Hang on, currently investigating a possible issue that is causing this error.

Yey! @DaneEveritt. I'll be waiting!

Can you name something in the panel that is saying Scales is offline for me?

@DaneEveritt the red indicator light.

Can you add the line below above this line for me and tell me what happens?
Unirest\Request::verifyPeer(false);

@DaneEveritt added, restarted scales also. Didn't do anything.
daemon.php:

Ok, sounds like it is an issue with your SSL certificate that can't even be overridden in the program. Let me know if using a StartSSL certificate fixes it, otherwise there isn't much that I can do.

@DaneEveritt Okay, using a third party SSL. Still shows offline and won't let me add subdomain.

@DaneEveritt anyway to bypass SSL completely?

Nope, no way to disable SSL. I've honestly never seen that error before, and it doesn't make sense to me why it is being thrown. Are you absolutely positive that you have configured the certificates correctly (i.e. browsing to https://domain:5656 doesn't display any notifications about SSL)?

I completely bypassed something. I get prompted with not trusted cert. See for your self (https://s1.minewrath.com:5656)

You are still using a self-signed certificate.

Is that a problem? Does it need to be verified by someone else?

Like I said earlier in the conversation, self-signed certificates are notoriously problematic. Please get a signed certificate from StartSSL (they are free, and work) and set that up for Scales.

@DaneEveritt could I use a CloudFlare free trusted ssl?

Yeah, that should work too.

@Dylan3304 — No. CloudFlare SSL is through the website itself, and handled by them, Scales needs raw access to the certificates.

@DaneEveritt You'll never guess what happened! My StartSSL was declined.

You can try https://ssl.comodo.com/free-ssl-certificate.php

@DaneEveritt just bought a positive SSL. Hope this works!

It should, just make sure you get it configured correctly in Scales. When you visit https://s1.minewrath.com:5656 it should show as a signed certificate when you view the info (by clicking the little https/lock icon).

@DaneEveritt, I've got my files from Namecheap (Like 3 certs). Which ones to I install for PP? The root CA, the domain verfication? I'm confused.

There should be a file called domainname.crt and you should have one on your server somewhere named domainname.key. Put both of those files in the base scales directory, and edit config.json to look for those.
Also, do a git pull on Scales since I just fixed a little bug.

@DaneEveritt I've install the certificate, everything seems valid in the browser like you said. However, node is still offline. :(

@DaneEveritt I installed the SSL like you said, and it shows up valid in the browser. However, the node still shows up offline. I'm running Ubunutu 14.04 LTS, if that is any help.

@DaneEveritt, if you want future access to my server, shoot me an email to the address in my GitHub account. I'd really like some input here...

(you don't need to tag my name every time on this, I receive notifications for everything in these repos)
Anyways, what is being thrown into the PufferPanel logs, can you provide those again? This is a really strange issue, and I cannot reproduce it anywhere. Lets see what the PufferPanel logs say.

Exception Log:
[2015-04-29 20-05-28] Klein\Exceptions\UnhandledException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'node' in 'field list' in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/klein/klein/src/Klein/Klein.php:925 caused by PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'node' in 'field list' in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/j4mie/idiorm/idiorm.php:429  @  http://cp.minewrath.com/admin/node/view/1/settings  @@  exception-2015-04-29-20-05-28-64274d4ac3bc16ee6ddd4c32099ee94c.html
[2015-04-29 20-05-33] Klein\Exceptions\UnhandledException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'node' in 'field list' in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/klein/klein/src/Klein/Klein.php:925 caused by PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'node' in 'field list' in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/j4mie/idiorm/idiorm.php:429  @  http://cp.minewrath.com/admin/node/view/1/settings  @@  exception-2015-04-29-20-05-28-64274d4ac3bc16ee6ddd4c32099ee94c.html
Info Log:
[2015-04-29 20-24-34] Exception: Peer's certificate issuer has been marked as not trusted by the user. in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/mashape/unirest-php/src/Unirest/Request.php:427  @  http://cp.minewrath.com/admin/server/new  @@  exception-2015-04-29-20-24-34-0b00e688b4c923ba69c00b2a891e0265.html
[2015-04-30 06-17-31] Exception: Could not resolve host: s1.minewrath.com; Name or service not known in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/mashape/unirest-php/src/Unirest/Request.php:427  @  http://cp.minewrath.com/admin/server/new  @@  exception-2015-04-30-06-17-31-fff4e56fee00084829b43145941df7aa.html
[2015-04-30 17-03-00] Exception: Peer's Certificate issuer is not recognized. in /var/sentora/hostdata/dseidt/public_html/cp_minewrath_com/vendor/mashape/unirest-php/src/Unirest/Request.php:427  @  http://cp.minewrath.com/admin/server/new  @@  exception-2015-04-30-17-03-00-9ab5271984c641f6f013ce4d4c977843.html
Some of these are old, and the ssl works fine if you visit https://s1.minewrath.com.

It almost looks like PHP isn't accepting your certificate, let me try something on my end real quick.

Ok, if that doesn't work at all, I think I found a fix. Turns out curl no longer ships with the CA Certificates already, so we need to add them all:
cd /etc/php5
curl -O http://curl.haxx.se/ca/cacert.pem

Then you need to edit your php.ini file, which is probably somewhere in /etc/php5 (I don't remember exactly where) and add this to the file: curl.cainfo = "/etc/php5/cacert.pem"

Is it possible to trust a self signed certifcate?

That returned an internal server error.
That helped nothing what so ever.

I'm starting to think the Panel/My VPS is blocking a connection to the node.


Small issues with the installation instructions

I followed the instructions on a Mac (El Capitan), some comments:

Add to docs that you need to install TTX/FontTools
(On Mac) pip install fontmake works as well
python env/lib/python2.7/site-packages/fontTools/varLib/__init__.py path-to-your-designspace-file is python /usr/local/lib/python2.7/site-packages/fontTools/varLib/__init__.py path-to-your-designspace-file on (my?) Mac
"with -GX in the name" → "with -VF in the name"

Thanks for these notes. Looks like things have changed a bit since I put these together. I added these changes.
A few notes though, in case you still had questions:

Your item 2, using pip to install fontmake, should automatically install fonttools as well.
Nice!
This command has changed to be much shorter: fonttools varLib your-designspace-file, as noted here https://github.com/scribbletone/i-can-variable-font/issues/9
thanks

Cheers! Thanks for sharing your notes, this was really helpful in creating my first variable font!


Toast without timeout and reason for onClose (user or timeout)

If duration is equal to 0 disable the toast timeout to close.
Added the reason that toast was closed: "user" when user press the button or "timeout" where duration ends.

Fix #1706

Any updates?

any updates on this?

@danieloprado onClose is called twice with reason user and timeout, when duration is specified.

@akhil-geekyants the whole Toast component needs rethinking really. there's a few issues surrounding this


Incorporate memlock rlimit check into SEV-readiness

Related: #14
Looks like this:
$ cargo run info
[..]
 ✔ MEMLOCK rlimit allows for: ~1638 keeps (soft limit =<PHONE_NUMBER> bytes, hard limit =<PHONE_NUMBER> bytes)

Or on a machine that can't meet this requirement:
$ cargo run info
[..]
 ✗ MEMLOCK rlimit allows for: 0 keeps (soft limit = 65536 bytes, hard limit = 65536 bytes)

Signed-off-by: Connor Kuehl<EMAIL_ADDRESS>

Does that mean, it will automatically silently fallback to plain kvm, if the memlock rlimit is too low?
I am thinking of the testsuite.

Does that mean, it will automatically silently fallback to plain kvm, if the memlock rlimit is too low?
I am thinking of the testsuite.

For CI, no, because the CI sets the ENARX_BACKEND variable which will fail if the backend checks fail.
For a regular developer workflow running cargo test on their own machine, yes, this will silently switch to kvm if the developer doesn't set ENARX_BACKEND.

The tool should probably be verbose about running a non TEE backend.

Emitting this information on stdout/stderr will spuriously break our integration tests for test runs on a non-TEE backend.

Isn't the backend specified and there is no fallback then?

Isn't the backend specified and there is no fallback then?

Not if you're just running cargo test without ENARX_BACKEND set. This is pretty common in my workflow.
Silently switching to a supported backend when ENARX_BACKEND is not set is how this has always behaved; it isn't introduced by this PR.


Am I testing the model correctly?

Hello, I am training this model on an animated image dataset.
During training, train.py saves some images called train_x.png - see here https://github.com/tnquang1416/FI-DUSGAN/blob/master/train.py#L148. Based on inspection of the code and output images I believe that train_x.png show generated images, not training data. See an example here (the figure I've circled in white makes me thing that these are generated images):

These images generally show very high-quality images, which is great! However, when I then test my trained model with python test.py --path_gen=net_gen.pt, the resulting images are much lower in quality. I wonder if I am not testing the model correctly, or not saving the weights correctly after training.
Is there anything you recommend I try?

Hi,
Your image is the training output, not the input data. According to it, I
assume that the training is running well.
Normally, the testing output will have lower quality than the ones in the
training process. Because the input data are different, and the testing
ones are also more complicated. How different is the performance of your
test and validation? In my case, the model archiving the best PSNR on
validation dataset is usually the best version.
Vào Th 2, 27 thg 3, 2023 vào lúc 01:56 kierad @.***>
đã viết:

Hello, I am training this model on an animated image dataset.
During training, train.py saves some images called train_x.png - see here
https://github.com/tnquang1416/FI-DUSGAN/blob/master/train.py#L148. Based
on inspection of the code and output images I believe that train_x.png
show generated images, not training data. See an example here (the figure
I've circled in white makes me thing that these are generated images):
[image: train_9000]
https://user-images.githubusercontent.com/39412393/227797455-6a5b821b-d145-4334-8eeb-658fd3590510.png
These images generally show very high-quality images, which is great!
However, when I then test my trained model with python test.py --path_gen=
net_gen.pt, the resulting images are much lower in quality. I wonder if I
am not testing the model correctly, or not saving the weights correctly
after training.
Is there anything you recommend I try?
—
Reply to this email directly, view it on GitHub
https://github.com/tnquang1416/FI-DUSGAN/issues/3, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACRSHDLN3HE4DXOMPXG5SOTW6CNOBANCNFSM6AAAAAAWILA6RQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

--
Best regards,
Quang

Hello,
We're seeing a PSNR of about 37 during both training and testing, but the visual quality is visibly poorer for testing (which shows an interesting limitation of PSNR!).
It makes sense that the output quality is lower during testing - thank you for confirming that everything else looks fine.


The timm library is throwing an error.

from timm.layers import use_fused_attn, apply_rot_embed_cat
from timm.models.layers import to_2tuple,trunc_normal_, Mlp
from timm.models.vision_transformer import Attention, LayerScale, DropPath
The functions use_fused_attn, apply_rot_embed_cat, Mlp, and LayerScale cannot be found in the library.
How to solve the problem.
thanks

Sorry for the late reply.
This issue seems to be related to the timm version.
I made some adjustments to the ast source code to accommodate the latest version of timm at that time. I've checked my environment, and I'm using version timm==0.9.12.
I will update the requirements.txt when I have some free time.
Hope this helps.

from timm.layers import use_fused_attn, apply_rot_embed_cat from timm.models.layers import to_2tuple,trunc_normal_, Mlp from timm.models.vision_transformer import Attention, LayerScale, DropPath The functions use_fused_attn, apply_rot_embed_cat, Mlp, and LayerScale cannot be found in the library. How to solve the problem. thanks

Sorry for the late reply.
This issue seems to be related to the timm version.
I made some adjustments to the ast source code to accommodate the latest version of timm at that time. I've checked my environment, and I'm using version timm==0.9.12.
I will update the requirements.txt when I have some free time.
Hope this helps.

I have successfully replaced and solved the problem. Thank you very much for your response


Endpoint Aliases allow user-defined endpoints that don't exist in consumer CDs

Not sure if this something that we need to address but reporting the behavior anyway. Let's discuss whether or not this is a bug.
You can currently type in a user-defined endpoint and save it to sys def:

This is the easiest way you can get empty strings in the Endpoint column. The only other way is to add an empty string to the list of string selections. We can do that, it just looks a little weird.

The other option is you always have to have a selection that is valid (i.e. that column can never be empty.

The fix would likely be needed at config time letting the user know that endpoint is invalid/non-existent. This is a minor issue and the deployment and run-time experience is acceptable. Closing it has low ROI.


Use high level API bpf_map__update_elem in Update()

In libbpf 1.0 we have new bpf_map__update_elem which we should use instead in bpfmap.Update() and probably bpfmap.UpdateFlags()

related: https://github.com/aquasecurity/libbpfgo/issues/180


7.0.0

The next major release of karma-rollup-preprocessor in response to Rollup 1.0 🎉
Pre-release
Added

Support for Rollup 1.0.0 #42

Changed

Breaking: Dropped support for Rollup < 1.0.0
Breaking: Dropped support for Node < 8.0.0
Watcher no longer relies on Karma’s run_start event. #41
Upgraded dependencies.

Fixed

Watcher only rebundles changed files and their dependents. #28
Bundle cache now properly maps each entry to its bundle cache.

Hey all! 👋🏽
@isidrok @tatey @niksy @thisconnect @calebdwilliams @abaksha-sc @Paulskit @LvChengbin
@ckbo3hrk @pantosha @MartijnR @fengyuanchen @givanse @wifilinker @danielnaab
You all have participated in issues addressed in this release — if you don't mind, please help test by installing the pre-release (under the next tag):
npm install karma-rollup-preprocessor@next

Thanks for the feedback everyone! 7.0.0 is live! 🎉


FactSet Connector

When submitting a connector, please make sure that you follow the requirements below, otherwise your PR might be rejected. We want to make you have a well-built connector, a smooth certification experience, and your users are happy :)
If this is your first time submitting to GitHub and you need some help, please sign up for this session.
Please note that we are experiencing a significant delay due to a high volume of connector submissions. It may take 1-2 weeks for us to provide comments for your connector.

[ ] I attest that the connector works and I verified by deploying and testing all the operations.
[ ] I attest that I have added detailed descriptions for all operations and parameters in the swagger file.
[ ] I attest that I have added response schemas to my actions, unless the response schema is dynamic.
[ ] I validated the swagger file, apiDefinition.swagger.json, by running paconn validate command.
[ ] If this is a certified connector, I confirm that apiProperties.json has a valid brand color and doesn't use an invalid brand color, #007ee5 or #ffffff. If this is an independent publisher connector, I confirm that I am not submitting a connector icon.

If you are an Independent Publisher, you must also attest to the following to ensure a smooth publishing process:

[ ] I have named this PR after the pattern of "Connector Name (Independent Publisher)" ex: HubSpot Marketing (Independent Publisher)
[ ] Within this PR markdown file, I have pasted screenshots that show: 3 unique operations (actions/triggers) working within a Flow. This can be in one flow or part of multiple flows. For each one of those flows, I have pasted in screenshots of the Flow succeeding.
[ ] Within this PR markdown file, I have pasted in a screenshot from the Test operations section within the Custom Connector UI.
[ ] If the connector uses OAuth, I have provided detailed steps on how to create an app in the readme.md.

 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.❌ krithsai sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

@krithsai Please sign the CLA to get your PR reviewed next time, approved and merged.

@krithsai Please address and resolve the comments to get your PR reviewed and approved PR.

Hi @krithsai I hope you are doing well. I am following up with you to see how things are going with updating your connector artifacts.
Please let us know if you have any questions.
We look forward to getting your connector certified.
Thank you very much.

Hi @krithsai may I ask you please to sign our CLA. Thank you very much.