Update container_resolvers_config_file option

It seems that this config option should be renamed from containers_resolvers_config_file to container_resolvers_config_file as indicated here: https://github.com/galaxyproject/galaxy/blob/b54e7a773fbb8476c24071798f648d7305051d2c/lib/galaxy/config/sample/galaxy.yml.sample#L714
Thank you for contributing to the GTN! :yellow_heart:
Please check that:

[ x ] Your pull request has a good title, e.g.

"Fix typo in ansible-galaxy tutorial"
"Add new transcriptomics tutorial covering a new sequencing technology"

[ ] Please replace this entire pull request message with a description of your changes, it will help us review your pull request faster
[ ] Check that your images are allowed to be re-hosted by the GTN

Once these are done, you're ready to go!

Consider sustainable computing with Draft Mode :green_heart:
Is your pull request finished? 100% ready to be merged? Or do you want some time to work on it first (which we encourage! It's great to have visibility)
If not, then please consider creating this pull request as a draft.
Regular pull requests will trigger automated test runs when they are created
and every time you update them.
As a small contribution to sustainable computing, we skip the most energy intensive of these tests for pull requests marked as drafts. Once your pull request is ready to go, then you can click a button saying "Ready for Review" and the tests will be run!

The test failure is relevant. Either you can re-knit the patches (somewhat complicated), or you can in this case since you are neither adding nor removing extra lines, fix the other files that mention the same variable:
$ ag containers_resolvers_config_file -l topics/admin
topics/admin/tutorials/job-destinations/tutorial.md
topics/admin/tutorials/data-library/tutorial.md
topics/admin/tutorials/apptainer/tutorial.md
topics/admin/tutorials/k8s-managing-galaxy/tutorial.md

the last one i'd skip updating since it still mentions uwsgi

the joys of diffs!


Sodiumoxide is no longer maintained (and not wasm-friendly)

Hey!
Have recently noticed that https://github.com/sodiumoxide/sodiumoxide is no longer maintained, as an alternative there is https://github.com/dalek-cryptography/ed25519-dalek
I was able to implement a custom crypto provider with it (thanks to the flexible configuration interface) and verifier worked with no issues, although signer has not passed the tests, might be something with deterministic signature options.
If you'd like, I can make a PR for replacing the default provider, or make it feature-enabled.

Thanks for raising the deprecation issue.
Hopefully, we will have some time next week to look into it. Also, feel free to submit a PR.

sodiumoxide has been replaced with ed25519-dalek in https://github.com/airgap-it/tezos-rust-sdk/commit/4af9859fb6be60028a7899723a3c9885cb834094
Thanks for the remark :+1:


feat: update amazon regexp for better matching

supersedes #88

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[9.x] Don't use locks for queue job popping for PlanetScale's MySQL-compatible Vitess engine

PlanetScale provides great serverless MySQL-compatible database and guide on how to integrate it in Laravel (https://planetscale.com/docs/tutorials/connect-laravel-app) but under hood uses Vitess.
However it looks that Vitess doesn't support "skip" queries:
SQLSTATE[HY000]: General error: 1105 syntax error at position 185 near 'SKIP' (SQL: select * from `jobs` where `queue` = default and ((`reserved_at` is null and `available_at` <=<PHONE_NUMBER>) or (`reserved_at` <=<PHONE_NUMBER>)) order by `id` asc limit 1 FOR UPDATE SKIP LOCKED)
Following https://github.com/laravel/framework/issues/31536 I've added a check for Vitess engine/version parsing so it wouldn't use locks for popping:
=> "mysql"

>>> DB::connection()->getPdo()->getAttribute(PDO::ATTR_SERVER_VERSION)
=> "8.0.23-vitess"```

<!--
Please only send a pull request to branches that are currently supported: https://laravel.com/docs/releases#support-policy

If you are unsure which branch your pull request should be sent to, please read: https://laravel.com/docs/contributions#which-branch

Pull requests without a descriptive title, thorough description, or tests will be closed.

In addition, please describe the benefit to end users; the reasons it does not break any existing features; how it makes building web applications easier, etc.
-->

@taylorotwell contacted PlanetScale support also and their response was:
`Thank you Rihards for reaching out with your question!
For the FOR UPDATE SKIP LOCKED usage within the Laravel Queue system, it seems like this may be a limitation in our Vitess layer based on this open issue over here:
https://github.com/vitessio/vitess/issues/5249
At the end of that issue it points to a pull request where some support may have been added in, but if you are experiencing that syntax error than more than likely it is not completely supported at the Vitess layer yet.
For a similar ticket related to Laravel Queues, it does seem that using Redis is generally the option that's most preferred, although the improvements for the database queue option, such as when the usage of FOR UPDATE SKIP LOCKED was added in to Laravel, has helped make the database option more viable. What is confusing for me at the moment however is that it did appear for another user that using the database queue option for Laravel appeared to be working for them, although perhaps they are using things in a slightly different way and don't have the same issue for some reason.
The team is aiming to bring up full parity support of MySQL 8 features to the Vitess layer over the coming year so this should be something that will be eventually resolved, and even though there is the existing Vitess issue shared above, I think it would be a good idea for me to submit an internal request about this as well, specifically to better support our Laravel users/community and hopefully get this resolved more quickly, so I'll be working on doing so as well, even though a solution there is not likely to be immediate.
In the meantime, I think the next best option though would be to use Redis if that is at all possible for your project.`
I guess Redis is better choice now (which I already did) than maintaining this if they plan to resolve all compatibility issues soon anyway.

Will merge this for now but note that you may experience database deadlocks if you put a lot of queue workers in place and the database doesn't support skip locked, etc.

Seems like a PR to add skip/lock support was just merged:
https://github.com/vitessio/vitess/pull/13965
This PR may be able to be reverted soon.

@rihardsgrislis, @BrandonSurowiec, @dihmeetree, and others subscribed to this issue.
This should likely work now within PlanetScale databases as most have been moved onto Vitess 18 which includes the support as part of our rollout for foreign key constraints support that arrived earlier this month.

They haven't made a release since september: https://github.com/planetscale/vitess-releases/releases

That is the wrong repo. The repo is https://github.com/vitessio/vitess/releases.

The PR was merged to main branch and is yet to be released: https://github.com/slackhq/vitess/commit/cf5f2742bee774acc3e0d7e512e8497b725c8d63

The PR was merged to main branch and is not yet released: https://github.com/vitessio/vitess/commit/29a9bf4ef4ceaf503ece831a79ca2b73d79efea1

It looks like it'll be included in Vitess 19.0.


Github Actions

Could be used to make things automatically update

How?

I made a commit in the optimisations which sets the data.json file to update at midnight in UTC I think.

Alrighty!


Error in using caracal in rails 5

I use it in my rails project but when i'm try this example i'm getting error this
undefined method `keep_if' for "Droid Serif":String do you have any idea about this?

The syntax on this project's README page is not intended to be a working example as much as an indication of how Caracal syntax works.  caracal-rails is really just a light-weight Rails shim for the caracal library.
Please try downloading and running the example project referenced in the README and see if you get the same error.  That represents an out-of-box, canonical implementation of the libraries, and as such, it is the best introduction to what caracal can and cannot do.
I just updated the Gemfile of the example project to use the latest ruby and rails versions and it ran fine for me.  I think if you give that a try, it'll be of more assistance.


Add ability to save the category filters

It would be excellent to have an option to retain the category filters between runs. In my use case I always filter on the same categories.

As it happens, I literally just added this functionality about 10 minutes ago to the source code https://github.com/character-map-uwp/Character-Map-UWP/commit/80ee75cf61498292b468d442812c7d4c756196b3
You'll have to enable it in Settings-Advanced when it makes it to the store (probably next week) as it won't be turned on by default (to avoid confusing the less tech-literate users until I can make some UI adjustments to make it more obvious a filter is applied)

Awesome Johnny
J


CSS stylesheet for printing should hide footer/toolbar

This is probably a pretty easy fix. The CSS sheet used for printable views should hide the #navigation and #drawer elements, and any other floating elements on the page so that the page prints cleanly in preview mode. Also lets browsers provide a pretty nicely-formatted PDF export "for free", enhancing the value of Prose overall.

Closing because I never did this and it has been years.


Issue connecting to a Kerberized hive metastore

Hi, I am having trouble connecting to a kerberized Hive Metastore
Starrocks 3.2.2  running in Shared Data mode on minio S3 (Only FE and CN Pods)

I have setup the kerberos  in all the FE and CN pods and the ticket is valid by doing klist command for checks.
Added hive-site.xml to fe/conf and cn/conf dirs
Created a jaas.conf and set the -Djava settings for krb5.conf and jaas.conf for JDK 11 (which the pods are using). Confirmed using jps -lvm
Created an iceberg external catalog with kerberized HMS and Minio S3
The only properties set for hive metastore in CREATE external catalog statement is "hive.metastore.uris" = "<hive_metastore_uri>"
Running any query like Eg:- SHOW DATABASES FROM iceberg;  gives hive metastore error below
The metastore is working fine and is accessible from the hosts (Eg:- trino is able to access the kerberized HMS without problem)

#hive-site.xml
<configuration>
    <property>
        <name>hive.metastore.kerberos.principal</name>
<EMAIL_ADDRESS>    </property>
    <property>
        <name>hive.metastore.sasl.enabled</name>
        <value>true</value>
    </property>
</configuration>

2024-01-26 15:01:41,223 WARN (starrocks-mysql-nio-pool-0|134) [HiveMetaStoreClient.openInternal():549] Failed to connect to the MetaStore Server...
2024-01-26 15:01:41,223 INFO (starrocks-mysql-nio-pool-0|134) [HiveMetaStoreClient.openInternal():583] Waiting 1 seconds before next connection attempt.
2024-01-26 15:01:41,251 INFO (nioEventLoopGroup-6-8|130) [RestBaseAction.handleRequest():73] receive http request. url=/api/bootstrap?cluster_id=974320758&token=82eed83d-e59d-440a-9362-5b4dd597228f
2024-01-26 15:01:41,259 INFO (replayer|91) [GlobalStateMgr.replayJournalInner():2385] replayed journal from 12701 - 12702
2024-01-26 15:01:42,223 INFO (starrocks-mysql-nio-pool-0|134) [HiveMetaStoreClient.openInternal():459] Trying to connect to metastore with URI thrift://metastoreserver:9083
2024-01-26 15:01:42,223 INFO (starrocks-mysql-nio-pool-0|134) [HiveMetaStoreClient.openInternal():511] HMSC::open(): Could not find delegation token. Creating KERBEROS-based thrift connection.
2024-01-26 15:01:42,225 DEBUG (starrocks-mysql-nio-pool-0|134) [TSaslTransport.open():255] opening transport
Caused by: org.ietf.jgss.GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)
        at sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:162) ~[java.security.jgss:?]
        at sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:126) ~[java.security.jgss:?]
        at sun.security.jgss.krb5.Krb5MechFactory.getMechanismContext(Krb5MechFactory.java:193) ~[java.security.jgss:?]

Any help is appreciated!

Update: Solved this
After a day of trial, error and research...I have it working now
The docs needed to be updated I guess for some of the items.
Kereberos config only required for FE. Not required for CN pods
In addition to doc items,  also needs JAAS config jaas.conf in any location (location needs to be mentioned in JAVA_OPTS_XXX as given below)
Needs to have the hive-site.xml to the fe/conf dir
Add other kerberos related JAVA_OPTS_JDK_11 (or appropriate JAVA opts for your JDK)
Final JAVA_OPTS in fe.conf looks like below
JAVA_OPTS_FOR_JDK_11="-Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/opt/starrocks/jaas.conf"
and here is the jaas.conf
HiveMetastoreJaas {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
useTicketCache=true
storeKey=false
renewTicket=true
debug=true;
};

and here is the hive-site.xml
<configuration>
    <property>
        <name>hive.metastore.kerberos.principal</name>
<EMAIL_ADDRESS>    </property>
    <property>
        <name>hive.metastore.sasl.enabled</name>
        <value>true</value>
    </property>
</configuration>

Done

@metalshanked i have similar issue but in my log it is looking for some ldap password file
Could not read password file: /etc/security/ldaptruststorepwd.txt
but I am trying to connect to hive metastore which is kerberised. I am able generate the valid ticket for the Kerberos . Could you please help me with this ??

Here is the log
2024-04-10 11:53:08,883 ERROR (starrocks-mysql-nio-pool-0|150) [HiveMetadata.getTable():115] Failed to get hive table [resource_mapping_inside_catalog_hive_hive_zk.opcode.tedc_ctry]
com.starrocks.connector.exception.StarRocksConnectorException: Failed to get table [opcode.tedc_ctry], msg: Could not read password file: /etc/security/cert/ldaptruststorepwd.txt


The session param is blocked, devise config doesn't solve it. ("Unpermitted parameter: session")

I added :session to the permissable params, but it doesn't seem to have any effect. I still get a "Unpermitted parameter: session" message:
Started POST "/auth/sign_in" for <IP_ADDRESS> at 2016-09-28 01:01:41 -0400
Processing by DeviseTokenAuth::SessionsController#create as JSON
  Parameters<EMAIL_ADDRESS>"password"=>"[FILTERED]"<EMAIL_ADDRESS>"password"=>"[FILTERED]"}}
Unpermitted parameter: session

My controller:
class ProfilesController < ApplicationController
  before_action :set_profile, only: [:show, :update]

  # GET /profiles/1
  def show
    render json: @profile
  end

  # POST /profiles
  def create
    @profile = Profile.new(profile_params)

    if @profile.save
      render json: @profile, status: :created, location: @profile
    else
      render json: @profile.errors, status: :unprocessable_entity
    end
  end

  # PATCH/PUT /profiles/1
  def update
    if @profile.update(profile_params)
      render json: @profile
    else
      render json: @profile.errors, status: :unprocessable_entity
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_profile
      if current_user
        @profile = Profile.find_by_user_id(current_user.id)
      else
        @profile = {}
      end
    end

    # Only allow a trusted parameter "white list" through.
    def profile_params
      params.require(:profile).permit(:session, :first_name, :last_name, :phone, :summary, :industry, :location)
    end
end

I think this is related to #28.

@gbrl could you try if the problem still persists with the latest v0.2.0-beta.4?

The solution is here!
https://github.com/lynndylanhurley/devise_token_auth/issues/130

Thanks @saruuls !


"Contribute" window not completely visible on screen

Issue Type: Bug
Issue Description: On clicking the Contribute button, the window for filling in the Curation details that pops up is not visible completely on the screen and requires re-sizing the browser's zoom.
Curation Details Window before the re-size : Browser size – 90%

Curation Details Window after the re-size : Browser size – 50 %. Only when reduced to 50%, the complete window to fill in the details is visible.

I tried again and the issue looks to be resolved. Closing this one.


[BUG] Framework not found FBLPromises

Godot version
4.2.1.stable
Plugin version
v3.1.0
Phone information
IOS Simulators
Issue description
Framework not found FBLPromises
Linker command failed with exit code 1 (use -v to see invocation)
Steps to reproduce

Create new project
Add plugin
Export
Start it in xcode

Additional context
macOS 14.4.1, M3
xcode 15.3
Video file with error
Maybe it is my bad but i do not know what can I do else
Help me please

Hi, have you add the pods into your Xcode project?
If you are still with this issue please join our discord and we will help you

Hi @gumaciel
Thank you for your answer

Hi, have you add the pods into your Xcode project?
I think yes.
I think you can see it in video file

If you are still with this issue please join our discord and we will help you

@Mefistosss this bug still happens?

@Mefistosss this bug still happens?

For now yes. I do not use simulator.
I still use godot 4.2.1.stable and old version of this plugin.
When I update I will write if this bug is still there.
Thank you.

Hey, @Mefistosss any luck with the update?


add support for SSL connection in log4net

plus corresponding changes in log4net example

I hope you tested these changes 😜

After your question I've tested last code review changes. Everything works as expected. So relax :)


Test the bandwidth of a single Listener up to about 2000Mb, is there a problem with the configuration?

server
tlsConfig := &tls.Config{
	Certificates:           []tls.Certificate{cert},
	NextProtos:             []string{"http3"},
}

quicConfig := &quic.Config{
	KeepAlive:      false,
	AcceptToken:    func(_ net.Addr, _ *quic.Token) bool { return true },
	Versions:       []quic.VersionNumber{quic.VersionDraft29},
	MaxIdleTimeout: 3 * time.Second,
}

quicListener, err := quic.ListenAddrEarly(fmt.Sprintf("<IP_ADDRESS>:%d", port), tlsConfig, quicConfig)
if err != nil {
	println("listen failed:", err.Error())
	return
}

You probably don’t need to set NextProtos and Versions manually, but that’s not something that would affect your bandwidth.

Perform a stress test: The bandwidth of a single listener can be up to 2000Mb. When multiple listeners are turned on, the bandwidth can be hit more.The machine is 64-core, 10 Gigabit network card.When testing udp, a single listener can also hit more bandwidth

Sorry, I can't help you debug your test setup. This doesn't sound like a quic-go bug.

Have you ever done a stress test?
Can the input bandwidth of a single listener be more than 3000Mb?
I tried a pressure test to <IP_ADDRESS>, and the input bandwidth can only reach 2000+Mb at most.

Sorry, I want to make sure


Add counter to cohort creation loop

Helpful to know where you are in the process

Addressed in https://github.com/ohdsi-studies/Covid19CharacterizationCharybdis/commit/2a0307553d270d849992b475ab12a7d33e2e8bf8


add squest host to metadata sent automatically to tower

So the playbook can answer the right instance of squest

Done and merged in dev branch


Use .jsx file extension instead of .js

The Problem
On my machine, prettier barfs on .js files that contain JSX syntax.
My Solution
Rename JSX-containing files to have a .jsx extension, which prettier will recognize.
Is this really necessary?
Yeah, I know, there are debates about this. I fall on the side of airbnb here: https://github.com/airbnb/javascript/issues/1235#issuecomment-428413675
But Brian, what if it's just that your prettier is configured incorrectly?
That could be. Any help would be appreciated
Is there any argument for this change outside of appeasing prettier?
When navigating a project at a high-level, you can more easily see any modules that are using JSX syntax. It's arguably the same reason we use types when we can: the extra info reflects intent.

Question: do we want to make this change anyway for other reasons, e.g. for emmet support? Or should we close this PR?

Closing and re-opening to trigger Travis build (Travis was toggled on after this PR was opened).

I'd be down to move to .jsx instead of .js solely for emmet support (and I guess also the added benefit of being able to quickly browse js/jsx files and easily tell which ones are React components and which files are "other stuff")
HOWEVER - there's the inconvenience issue I have with this being: you can no longer do import Component from './Component' unless it ends in .js. If it's .jsx, you must include that extension on your import. There's gotta be some config somewhere where you can specify "hey check for .js AND .jsx on imports" and then I'd be hella game.

@jbracht — there is a Webpack config option for that, “resolvers” or something similar.

On a separate note, while I don't (yet) see any evidence that we should choose .jsx over .js for the purpose of compatibility with Prettier, I will point out that one small advantage of .jsx is that VSC supports Emmet-expansion in JSX files by default.

I'd also say that using something like the Material theme in VS Code (https://marketplace.visualstudio.com/items?itemName=Equinusocio.vsc-material-theme)  could be used to highlight files that exclusively contain 'code' and those whose primary purpose is to render a react componet


P2 [Q4] At content creation time, set up a specific bullying and harassment (B&H) model which will run for content with high violating B&H score to determine violation and details.

Backlogged as discussed here https://docs.google.com/document/d/1jNw0qFMLzi_3xKLmKZDEINxY8omzXF5VedcXCeHh7aQ/edit


boto3.client.upload_fileobj throws http read timeout exception and also upload successfully

for side in ["NJ", "NY"]:
    # initialize a client object
    client = BCSClient(local_path, side)
    # check if bucket is ready and then try uploading
    try:
        client.checkBucket()
    except NoSuchBucketException as e:
        logger.info(e.message + ", trying to create a new one")
        client.createBucket()
    except:
        logger.error("Unexpected Error when raising NoSuchBucketException: {}".format(sys.exc_info()[0]))
    finally:
        # upload the file
        client.uploadFile()

I got the below logging info for file xxxxx: (progress is printed in callback of upload_fileobj):
Uploading file xxxx .Total sent size: 262144 / 2784334
Uploading file xxxx .Total sent size: 524288 / 2784334
Uploading file xxxx .Total sent size: 786432 / 2784334
Uploading file xxxx .Total sent size: 1048576 / 2784334
Uploading file xxxx .Total sent size: 1310720 / 2784334
Uploading file xxxx .Total sent size: 1572864 / 2784334
Uploading file xxxx .Total sent size: 1835008 / 2784334
Uploading file xxxx .Total sent size: 2097152 / 2784334
Uploading file xxxx .Total sent size: 2359296 / 2784334
Uploading file xxxx .Total sent size: 2621440 / 2784334
Uploading file xxxx .Total sent size: 2784334 / 2784334
HTTP Read Timeout Exception for xxxx: HTTPConnectionPool(host='s3.dmz.rrdc.bcs.bloomberg.com', port=80): Read timed out. (read timeout=60)

@casper666 do you remember what was the cause and how you solved it? I'm having the same issue now (upload successful but raising read timeout exception.


Issue 79

Removed one unused method.
Removed conditional compilation so now only managed version of WriteLittleEndian method will be used both for regular as well as Portable versions of code.

Did I ask why did you want to have no unsafe code?  I'm running on little sleep so forgive me.

Well, I see no reason to have a method with conditional compilation that actually does same thing. I doubt there will be performance gains, but you always can run into memory leak when using pointers. Not to mention that they are harder to understand for newer developers I believe.


pipelines: introduce declarative pipeline abstractions

The intention with this rework is to double down on the conviction that, conceptually, stages are procedural and describe a transformation of a filesystem tree, whereas pipelines are declarative and describe the contents of a filesystem tree. We already capture the stages very well with a one-to-one mapping to their osbuild representation. However, pipelines have been treated in the same, procedural, way, rather than take advantage of the higher-level we work on in the image definitions. This attempts to change that.
This PR introduces a pipeline package which contains types for each kind of pipeline we support. The aim is to keep
all knowledge of how osbuild pipelines are constructed (in particular anything about stages) isolated from the distro
definitions themselves. Conversely, the pipeline package does not know anything about configuration inheritance or user
customisations. The pipelines are instantiated with configuration that has already been resolved, and ideally the pipeline
serialisation only applies this blindly, without too many conditionals.
Going forward, we should remove the remaining layering violations, in particular we should not have types from the blueprint or osbuild2 package in the pipeline API.
For now these pipelines are extracted from the fedora package and used there. I have been working under the assumption that some but not all of these will be distro-specific, rather than fully generic. But this PR does not force us to go one way or the other.
This is based on discussions in Brno with the reviewers and others.
This pull request includes:

[x] adequate testing for the new functionality or fixed issue

Thanks for the detailed review @achilleas-k !

Required attributes are defined in the constructor
Read-only attributes are private with a method to read them
R/W attributes are public

Correct. The only open question is what should be immutable, I thus far considered properties that are used by parent pipelines to have to be immutable. Though I would probably relax that once we serialise everything in one go (follow-up PR). I think I'll explain it all in comments once the "policy" has settled down a bit. I think I would also drop the accessors for things that are only read by other pipelines (as they are in the same package. Also for a follow-up.

Would it be clearer if we moved GPG keys around as a list of strings instead of carrying the repos everywhere?

Yes! I simply didn't realise that that's all we used them for :) Proving your point ;)

Potential counter-argument: We might need repos in pipelines in the future for some reason and this change would have to be reverted.

Then we revert :) YAGNI ;)


Dragon death sound is everywhere

Spark link
https://spark.lucko.me/KLyd3BUmK6
Expected behavior
Dragon sounds should only be happening in a radius defined in the spigot.yml config
Observed/Actual behavior
Dragon sound is happening globally and ignores the settings in spigot.yml for dragon death radius sounds.
Steps/models to reproduce
kill dragon, all players can hear it everywhere on the server
Purpur version
git-Purpur-2122
Agreements

[X] I am running the latest version of Purpur available from https://purpurmc.org/downloads.
[X] I have searched for and ensured there isn't already an open issue regarding this.
[ ] I ticked all the boxes without actually reading them
[X] My version of Minecraft is supported by Purpur.

Other
No response

/gamerule globalSoundEvents false
Paper fixed a bug where vanilla gamerule was ignored. The gamerule has priority over the config setting :)

Thank you so much!


Enable termination message log in Hyper runtime

mount termination msg path as Hyper volume
add msg path info into Pod label (we don't have container level label/annotation yet)
when pod run into StatusSuccess, collect the msg from msg path

Fixes: #93
Usage:
// After the container exited
kubectl get pods/pod-w-message  -o yaml

...
 state:
      terminated:
        containerID: hyper://852a3c522c4c5e4caf0c14b20dc9ee1c24ef6a2d1d78cd1e33fe4256c2373a0d
        exitCode: 0
        finishedAt: 2016-04-22T12:24:09Z
        message: |
          Sleep expired
        reason: Succeeded
        startedAt: 2016-04-22T12:23:38Z
...

lgtm


Internal server environment usage requirements

Is your feature request related to a problem? Please describe.
When I deploy on an internal server，I noticed that the postwoman request css and icon from fonts.googleapis.com, but the internal server can not request the resources,so the layout become confusing.
Describe the solution you'd like
Wish the all resources can be used offline.
Describe alternatives you've considered
Just copy the css and icon from network ,put them into the dist and rewrite the code where import the other internet resources.
Additional context

BTW, awesome project!

Actually this request was implemented quite ago, but I had to revert that on an critical error. Since you've mentioned this again, I'll fix it today itself.

Actually this request was implemented quite a long ago, but I had to revert that on a critical error. Since you've mentioned this again, I'll fix it today itself.

And btw, it would be great if you gave credits to us or or atleast do not change the links to GitHub repo :)

Of course~

If it is convenient, can you tell me where is the external network resource reference involved in packaging?
I mean the https://fonts.googleapis.com/css?family=Poppins:500,700|Roboto+Mono:400&display=swap and https://fonts.googleapis.com/icon?family=Material+Icons&display=swap
🤣 :

I went quite busy, will make them available for offline ASAP.

Thanks a lot.
👍

@FatDoge I'm not sure if @liyasthomas has gotten around to making the resources offline, but for your own edification, the references to the resources are here:
https://github.com/liyasthomas/postwoman/blob/master/assets/css/fonts.scss


CrateConnection's getTransactionIsolation() method is not implemented per JDBC Connection contract

Current implementation of CrateConnection#getTransactionIsolation() throws SQLFeatureNotSupportedException as transactions are not supported by the Crate. However, per the java.sql.Connection.getTransactionIsolation() documentation, if Transactions are not supported, the Database Driver needs to return Connection#TRANSACTION_NONE.
This issue is blocking us from using HikariCP as a connection pool provider.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28970308-crateconnection-s-gettransactionisolation-method-is-not-implemented-per-jdbc-connection-contract?utm_campaign=plugin&utm_content=tracker%2F2398677&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F2398677&utm_medium=issues&utm_source=github).

Hi! Thanks for fixing this. I am going to investigate why Travis fails - but until then please sign our CLA: https://crate.io/community/contribute/agreements so we can merge your fix.
Again, Thanks a lot!
Cheers, Claus

Signed the CLA.

@bin01 I've added a changelog entry and updated tests so they pass also with java 7 and merged your changes into master.
I've also done a release already which is available from Bintray.


Moved tests out of run_in_graph_and_eager_mode in conditional gradient

cc @gabrieldemarmiesse

@pkan2 @lokhande-vishnu
You are owners of some files modified in this pull request.
Would you kindly review the changes whenever you have the time to?
Thank you very much.


fix: add a jx pipeline override command

so its super easy to override a step locally so you can edit any of the
values

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: jstrachan
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [jstrachan]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/approve

/approve

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: jstrachan
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [jstrachan]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


More strict SSL proxy setting fixes

Realize we had this same logic in a number of other extensions, so fixing this everywhere else...
This will currently always evaluate to true. We should be using the default value parameter of get instead for the fallback value.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 2 (0.0%)  changed or added relevant lines in 2 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage increased (+0.02%) to 42.343%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

extensions/datavirtualization/src/services/serviceClient.ts
0
1
0.0%

extensions/import/src/services/serviceClient.ts
0
1
0.0%

Files with Coverage Reduction
New Missed Lines
%

extensions/sql-bindings/src/common/azureFunctionsUtils.ts
1
80.65%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
30808

Relevant Lines:
67588

💛  - Coveralls


Avoid incorrect call to the previous reply's callback

When multiple replies are parsed from a socket in one read;
a previously found callback might get reused when the current reply has no known callback.
This case is triggered in the added testcase test_pubsub_multiple_channels(),
which unsubscribes to the subscribed channels A, B and a non-subscribed channel X.
Without this correction a callback for wrong channel is called.

For the command unsubscribe B X A, B's callback is called when handling the response for X.
Now this is not done, i.e. there is no callback called for X.

Monitoring was using this trait to repush its callback when all replies was parsed.
This is changed to repush for each message instead, which now also is tested with a new testcase.

Merged, thanks!


Multiprocessing

Pros

Faster processing
Learning opportunity
Prepares Chanjo for the future

Cons

Adds complexity
Makes code more difficult to debug
It will take time to decide on an approach (multiprocessing, ipython parallel etc.)

were are moving to sambamba people!! No need for this, they already solved it :stuck_out_tongue:


install's --keep-outdated does not seem to be respected

(Closed as duplicate, see issue at #966 and PR at #3304)
When I have outdated dependencies, installing a new package with the --keep-outdated flag still updates dependencies that have no overlap with my newly-requested dependency. Similar issues (but pre---keep-oudated, I think?): #966, #1219, #1409.
Describe your environment

OS X 10.13.2
Python version: 3.6.4
Pipenv version: 11.0.2

Expected result
Packages that have no overlap in their dependencies with my current set of dependencies should not change my current set of dependencies when --keep-outdated is specified.
Actual result
My existing packages are updated as if I had not specified the flag.
Steps to replicate
> mkdir foo && cd foo
> pipenv shell
Creating a virtualenv for this project…
Using base prefix '/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/seankelley/.virtualenvs/foo-9CvoEbl5/bin/python3.6
Also creating executable in /Users/seankelley/.virtualenvs/foo-9CvoEbl5/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/seankelley/.virtualenvs/foo-9CvoEbl5
Creating a Pipfile for this project…
Spawning environment shell (/usr/local/bin/zsh). Use 'exit' to leave.
. /Users/seankelley/.virtualenvs/foo-9CvoEbl5/bin/activate
> pipenv install boto3==1.6.2
Installing boto3==1.6.2…
Collecting boto3==1.6.2
  Using cached boto3-1.6.2-py2.py3-none-any.whl
Collecting jmespath<1.0.0,>=0.7.1 (from boto3==1.6.2)
  Using cached jmespath-0.9.3-py2.py3-none-any.whl
Collecting botocore<1.10.0,>=1.9.2 (from boto3==1.6.2)
  Using cached botocore-1.9.3-py2.py3-none-any.whl
Collecting s3transfer<0.2.0,>=0.1.10 (from boto3==1.6.2)
  Using cached s3transfer-0.1.13-py2.py3-none-any.whl
Collecting docutils>=0.10 (from botocore<1.10.0,>=1.9.2->boto3==1.6.2)
  Using cached docutils-0.14-py3-none-any.whl
Collecting python-dateutil<3.0.0,>=2.1 (from botocore<1.10.0,>=1.9.2->boto3==1.6.2)
  Using cached python_dateutil-2.6.1-py2.py3-none-any.whl
Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1->botocore<1.10.0,>=1.9.2->boto3==1.6.2)
  Using cached six-1.11.0-py2.py3-none-any.whl
Installing collected packages: jmespath, docutils, six, python-dateutil, botocore, s3transfer, boto3
Successfully installed boto3-1.6.2 botocore-1.9.3 docutils-0.14 jmespath-0.9.3 python-dateutil-2.6.1 s3transfer-0.1.13 six-1.11.0

Adding boto3==1.6.2 to Pipfile's [packages]…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (1faca3)!
Installing dependencies from Pipfile.lock (1faca3)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 7/7 — 00:00

... and here I edit the Pipfile, replacing boto3's `==1.6.2` specification with `*` in order to recreate the environment where I first discovered this issue ...

> pipenv install --keep-outdated coverage
Installing coverage…
Collecting coverage
  Using cached coverage-4.5.1-cp36-cp36m-macosx_10_12_x86_64.whl
Installing collected packages: coverage
Successfully installed coverage-4.5.1

Adding coverage to Pipfile's [packages]…
Pipfile.lock (1faca3) out of date, updating to (63af11)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (63af11)!
Installing dependencies from Pipfile.lock (63af11)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 8/8 — 0

Pipfile pre-coverage, pre-editing
[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]

"boto3" = "==1.6.2"

[dev-packages]

[requires]

python_version = "3.6"

Pipfile pre-coverage, post-editing
[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]

"boto3" = "*"

[dev-packages]

[requires]

python_version = "3.6"

Pipfile.lock pre-coverage
{
    "_meta": {
        "hash": {
            "sha256": "8d7dcd28948fa28543f1ad7b866b5c37c583afe5a78a010ab3213e9bec1faca3"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.6"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.python.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "boto3": {
            "hashes": [
                "sha256:0537aa3c840b2a6c9cdc53704b1ca27c19f1850e16056db1f6241917a5eee648",
                "sha256:1576a72dd1a6435b29b41d541411fcabcef2777de9abebc50d01046ca24447f9"
            ],
            "version": "==1.6.2"
        },
        "botocore": {
            "hashes": [
                "sha256:8a8c59f4c7b4e3521d82aee4b8cba55e80de44617649c2320823505bfebbcaa4",
                "sha256:d5b892ab86cd3e8d6cb570dd5275bf1c600cbbf9f07a40a22bcdd9023c0e844f"
            ],
            "version": "==1.9.3"
        },
        "docutils": {
            "hashes": [
                "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6",
                "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274",
                "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6"
            ],
            "version": "==0.14"
        },
        "jmespath": {
            "hashes": [
                "sha256:6a81d4c9aa62caf061cb517b4d9ad1dd300374cd4706997aff9cd6aedd61fc64",
                "sha256:f11b4461f425740a1d908e9a3f7365c3d2e569f6ca68a2ff8bc5bcd9676edd63"
            ],
            "version": "==0.9.3"
        },
        "python-dateutil": {
            "hashes": [
                "sha256:891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca",
                "sha256:95511bae634d69bc7329ba55e646499a842bc4ec342ad54a8cdb65645a0aad3c"
            ],
            "version": "==2.6.1"
        },
        "s3transfer": {
            "hashes": [
                "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1",
                "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f"
            ],
            "version": "==0.1.13"
        },
        "six": {
            "hashes": [
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
            ],
            "version": "==1.11.0"
        }
    },
    "develop": {}
}

Pipfile post-coverage
[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]

"boto3" = "*"
coverage = "*"

[dev-packages]

[requires]

python_version = "3.6"

[pipenv]

keep_outdated = true

Pipfile.lock post-coverage
{
    "_meta": {
        "hash": {
            "sha256": "68b45659b8e63d966f0ad9bd96550a54c0b87ef67baef31d132042e90d63af11"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.6"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.python.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "boto3": {
            "hashes": [
                "sha256:cf5768f1b9f26d5f82369ef97e11eee0010d10f8723b081c61ff17a1cd199bea",
                "sha256:d817c21abcb41f390cec28e444d180db7d40ec2786ff5f54813af52e53598362"
            ],
            "version": "==1.6.3"
        },
        "botocore": {
            "hashes": [
                "sha256:8a8c59f4c7b4e3521d82aee4b8cba55e80de44617649c2320823505bfebbcaa4",
                "sha256:d5b892ab86cd3e8d6cb570dd5275bf1c600cbbf9f07a40a22bcdd9023c0e844f"
            ],
            "version": "==1.9.3"
        },
        "coverage": {
            "hashes": [
                "sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba",
                "sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed",
                "sha256:198626739a79b09fa0a2f06e083ffd12eb55449b5f8bfdbeed1df4910b2ca640",
                "sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162",
                "sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508",
                "sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249",
                "sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694",
                "sha256:3c79a6f7b95751cdebcd9037e4d06f8d5a9b60e4ed0cd231342aa8ad7124882a",
                "sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287",
                "sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1",
                "sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000",
                "sha256:56e448f051a201c5ebbaa86a5efd0ca90d327204d8b059ab25ad0f35fbfd79f1",
                "sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e",
                "sha256:69bf008a06b76619d3c3f3b1983f5145c75a305a0fea513aca094cae5c40a8f5",
                "sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062",
                "sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba",
                "sha256:7608a3dd5d73cb06c531b8925e0ef8d3de31fed2544a7de6c63960a1e73ea4bc",
                "sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc",
                "sha256:7aa36d2b844a3e4a4b356708d79fd2c260281a7390d678a10b91ca595ddc9e99",
                "sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653",
                "sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c",
                "sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558",
                "sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f",
                "sha256:be6cfcd8053d13f5f5eeb284aa8a814220c3da1b0078fa859011c7fffd86dab9",
                "sha256:c1bb572fab8208c400adaf06a8133ac0712179a334c09224fb11393e920abcdd",
                "sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d",
                "sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6",
                "sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80"
            ],
            "version": "==4.5.1"
        },
        "docutils": {
            "hashes": [
                "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6",
                "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274",
                "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6"
            ],
            "version": "==0.14"
        },
        "jmespath": {
            "hashes": [
                "sha256:6a81d4c9aa62caf061cb517b4d9ad1dd300374cd4706997aff9cd6aedd61fc64",
                "sha256:f11b4461f425740a1d908e9a3f7365c3d2e569f6ca68a2ff8bc5bcd9676edd63"
            ],
            "version": "==0.9.3"
        },
        "python-dateutil": {
            "hashes": [
                "sha256:891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca",
                "sha256:95511bae634d69bc7329ba55e646499a842bc4ec342ad54a8cdb65645a0aad3c"
            ],
            "version": "==2.6.1"
        },
        "s3transfer": {
            "hashes": [
                "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1",
                "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f"
            ],
            "version": "==0.1.13"
        },
        "six": {
            "hashes": [
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
            ],
            "version": "==1.11.0"
        }
    },
    "develop": {}
}

the lockfile will always get re-generated if it is out-of-date.

@kennethreitz Can you clarify what the intent of --keep-outdated is? The only documentation for it is "Keep out–dated dependencies from being updated in Pipfile.lock.", which seems pretty clear about not changing those parts of the lockfile.
My goal here is to find a method to install a new dependency without updating the world, which is what it looked like this flag was for based on the discussion at #1255.

use pipenv update depname

That doesn't work. If I do the same repro steps as above except substituting pipenv update --keep-outdated coverage in place of pipenv install --keep-outdated coverage, the result is the same: boto3 and some of its dependencies are still updated.

Ping @kennethreitz, what is the expected behavior here? The flag doesn't seem to do anything and the docs don't say much.

Have tried pipenv install --selective-upgrade <packages> and it seems still update the whole Pipfile.lock .

This is still an issue -- can we reopen?
I just converted my git links from https:// to ssh:// (still pinned to the same ref = <sha>) then ran $ pipenv install --keep-outdated, but all of my unpinned dependences got updated in Pipfile.lock.
IMO, --keep-outdated needs to be the default (and work as described) to avoid inadvertently pulling in a security venerability. We can't expect every project to have the resources to test every new version of every dependency.

@jacebrowning the specific issue with VCS repos is tracked in #2180, #1690, #1611, #2096 and has a PR open (#2209)

and we have another issue open tracking --keep-outdated with a separate pr

@techalchemy which issue/PR is that? Nothing open I see now seems appropriate.

I'm running into the same issue, install --keep-outdated updating unrelated packages. None of my packages are installed from git, everything is just fetched from pypi (just like with @seansfkelley AFAICS), so none of the issues linked by @techalchemy seem to  apply here.

For those following along at home, it seems like this flag is indeed legitimately broken. From https://github.com/pypa/pipenv/issues/966#issuecomment-416784883:

--selective-upgrade is supposed to selectively upgrade only things that are dependencies of the new package, while --keep-outdated would hold back anything that satisfied the dependencies required by a new package. Slightly different, but I am fairly sure neither works correctly right now.

Also looking for solution for more selective upgrade, not doing the .lock stuff by hand after each update :/
I think this issue should be re-opened, --selective-upgrade and --keep-outdated don't work yet

Why is this closed? The issue is still present... It isn't possible to update one package without updating all packages. If you have lots of dependencies, you'll wait a few minutes just to see that pipenv upgraded packages and introduced a conflict.

#966 #3304

kennethreitz is an bigoted man, hope some cool guys take over this project, or just let it die out


Compilation failure - E0761

Describe the bug
Compilation fails with
[  165s] error[E0761]: file for module `expr` found at both "/home/abuild/rpmbuild/BUILD/helvum-0.3.0~git0.2ee7bca/vendor/cfg-expr/src/expr.rs" and "/home/abuild/rpmbuild/BUILD/helvum-0.3.0~git0.2ee7bca/vendor/cfg-expr/src/expr/mod.rs"
[  165s]    --> /home/abuild/rpmbuild/BUILD/helvum-0.3.0~git0.2ee7bca/vendor/cfg-expr/src/lib.rs:129:1
[  165s]     |
[  165s] 129 | pub mod expr;
[  165s]     | ^^^^^^^^^^^^^
[  165s]     |
[  165s]     = help: delete or rename one of them to remove the ambiguity
[  165s]
[  165s] error[E0761]: file for module `targets` found at both "/home/abuild/rpmbuild/BUILD/helvum-0.3.0~git0.2ee7bca/vendor/cfg-expr/src/targets.rs" and "/home/abuild/rpmbuild/BUILD/helvum-0.3.0~git0.2ee7bca/vendor/cfg-expr/src/targets/mod.rs"
[  165s]    --> /home/abuild/rpmbuild/BUILD/helvum-0.3.0~git0.2ee7bca/vendor/cfg-expr/src/lib.rs:131:1
[  165s]     |
[  165s] 131 | pub mod targets;
[  165s]     | ^^^^^^^^^^^^^^^^
[  165s]     |
[  165s]     = help: delete or rename one of them to remove the ambiguity
[  165s]
[  165s] error[E0432]: unresolved imports `expr::Expression`, `expr::Predicate`, `expr::TargetPredicate`
[  165s]    --> /home/abuild/rpmbuild/BUILD/helvum-0.3.0~git0.2ee7bca/vendor/cfg-expr/src/lib.rs:134:16
[  165s]     |
[  165s] 134 | pub use expr::{Expression, Predicate, TargetPredicate};
[  165s]     |                ^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^ no `TargetPredicate` in `expr`
[  165s]     |                |           |
[  165s]     |                |           no `Predicate` in `expr`
[  165s]     |                no `Expression` in `expr`
[  165s]
[  165s] error: aborting due to 3 previous errors

To Reproduce
Steps to reproduce the behavior:

Build helvum 0.3.0, which indirectly requires cfg-expr.

Device:

OS: Linux
cfg-expr version: 0.8.1
rustc 1.52.1 (9bc8c42bb 2021-05-09)

Additional context
https://doc.rust-lang.org/error-index.html#E0761

I can compile the 0.3.0 tag in that repository both with normally and with flatpak-builder, so I am unable to reproduce this issue. Given the paths that it is complaining about, my guess is that /home/abuild/rpmbuild/BUILD/helvum-0.3.0~git0.2ee7bca/vendor is not clean and has both a version of cfg-expr that is <0.8.0, and version 0.8.1 at the same path, causing the cargo error.

You're right. This seems to be some problem with cargo vendor (or obs-service-cargo_vendor), which didn't delete src/*/mod.rs files when updating.
Sorry for bothering you. I'll report it elsewhere.


AutoFarm keeps farming even though storage is full

As title says : I have to manually stop the autofarm so it doesn't farm while my storage is full
Don't know if it's relevant but I selected the 5 minutes timer, 100% storage (haven't tried with 90% or less yet) and Gui on
I can confirm it keeps farming from the banner "ressources have been successfully collected" that appears (very short interval too) and from the fact that my ruralfarm are at half their max potential ressources (y'know the cap of daily ressource you can ask for) while the storage spent the night maxed

Gonna check that as soon as I have time...writing my thesis right now


streaming data

hi , does the latest version still not support streaming data

it does support streaming, please see the README

it does support streaming, please see the README

I mean chatgpt support stram?

Yes, https://github.com/sashabaranov/go-openai/blob/a8acb5f63bcb4d5966d1a57709a32315eeff1ff9/chat_stream_test.go#L53

Yes,here's an example in the test
https://github.com/sashabaranov/go-openai/blob/a8acb5f63bcb4d5966d1a57709a32315eeff1ff9/chat_stream_test.go#L53

fine,thank you


firefox

In firefox, when the content is long, the entire page scrolls, not just the content (like in chome), and the menu is not fixed, but moves with the scroll and leaves an empty white space.

Indeed, it seems the modern height: -moz-available is not working as intended
i reverted to a more tested and proven method ;)
https://github.com/lekoala/admini/releases/tag/1.4.2


How to put() within a callback?

There have been a few instances where I've wanted to put within a callback to realize that the action never gets reduced on.  Is it possible to do the following with sagas?
function* hideNotification() {
  let clearTimer = null;
  const { SET_NOTIFICATION, CLEAR_NOTIFICATION } = NotificationActions.actionTypes;

  while(true) {
    const action = yield take([SET_NOTIFICATION, CLEAR_NOTIFICATION]);
    if (clearTimer) {
      clearTimeout(clearTimer);
      clearTimer = null;
    }

    if (action.type === SET_NOTIFICATION) {
      clearTimer = setTimeout(() => put(NotificationActions.clearNotification()), 300);
    }
  }
}

Not sure what you want to do but it seems what you want is:

after a notification gets set, it gets cleared after 300ms
if a new notification gets set but the old one is not cleared yet, then the old timer should not mess up with the new notification

Maybe something like this will work fine:
function* hideNotification() {
  while(true) {
    const {action, wait} = yield race({
        action : yield take(SET_NOTIFICATION);
        wait : call(wait, 300);
    });
    if ( !action ) {
        yield put(NotificationActions.clearNotification()
    }
  }
}

Thanks for the reply, @slorber.  I wound up using task cancellation to achieve the same thing.  You pointed me in a just-do-it-another-way direction.

I have the same question pointed out by @bgerm, but here's a different scenario where a callback might be convenient to have: dialogs. If I want a generic dialog service, I would like to just say "open the dialog, use this view, use this model, use these callbacks when the dialog is closed/confirmed/cancelled" instead of having to repeat myself for different dialogs throughout an app.
function* listener() {
    yield take(OPEN_DIALOG)

    // notify the dialog service
    yield put({
        type: 'CREATE_DIALOG'
        , onConfirm: specialPut({ type: 'CONFIRM' })
        , onCancel: specialPut({ type: 'CANCEL' })
        , model: { ... }
    })

    // wait for close or confirm
    yield race({
       cancel: take(CANCEL)
       , confirm: take(CONFIRM)
    })

   ....
}

// this doesn't work for a variety of reasons
// 1) coroutine belongs to another lib and is promise based; redux saga doesn't handle promises
// 2) even with an adapter that allows for resolving non-promise values, the put never seems
// to resolve... the EFFECT_TRIGGERED shows up in dev tools, but never `EFFECT_RESOLVE`
function specialPut(action) {
    return Promise.coroutine(function* putter() {
        yield io.put(action)
    })
}

// this does seem to work but is also heavy-handed
function aDifferentPut(action) {
  return function() {
    runSaga(function* putter() {
      yield put(action)
    }())
  }
}

@aft-luke what you want to achieve seems a bit far-fetched. Instead of trying to abstract over redux-saga you could simply create a reusable React component that you customize in different places.
An idiomatic way of using Redux is to keep a serializable event log. In means you are not supposed to dispatch actions with callbacks, generators, functions, promises or observables as payload.
It is also my personal opinion (not really followed by the rest of the community atm) that the dispatched actions should always represent something that HAS happened (past tense) and not be used to do remove procedure calls. This is how event-sourcing works in the first place.
You can see how I remove, with redux-saga, an idiomatic redux-thunk rpc call here by a simple event dispatch: http://stackoverflow.com/a/34623840/82609
Flux/Redux is heavily close to event-sourcing, but a lot of confusion comes from the word "action" because people now think the "dispatcher" is supposed to dispatch both commands (rpc / user intent) and events (descriptors of what happened).

Thanks for the input @slorber . This issue is probably not the best place to discuss, but here it goes anyways.
Having used redux for a few months now across a large project, my biggest pain point is the reusability/composability of components. I think the mentioned use case is another example.
App-level architecture flows relatively naturally, but building a single encapsulated unit is really difficult. I feel like it's too simple for the "api surface" of a redux app to grow very large, and that makes refactors or redesigns rather difficult.
For example, if I have a component concerned with EVENT_HAPPENED, and that component is made up of a handful of reducers (each managing a relatively complex unit of state), do I pipe EVENT_HAPPENED from the root of the component all the way down the reducer hierarchy? Do I translate EVENT_HAPPENED in the root to an internal API call? In the former case it feels like I'm pouring concrete, and the latter case results in a lot of boilerplate.
A domain driven design approach would translate any event that is external to the component's domain into an internal representation, at which point the root of the reducer hierarchy becomes an aggregate root. This, unfortunately, means a very large reducer at the top of the hierarchy that must capture and translate every single event used by any component below.
function rootComponentReducer(state, action) {
    switch (action.type) {
        case 'child_a_1':
            childAReducer(state, { type: 'internal_a_1' })
            ...
        case 'child_a_2':
            childAReducer(state, { type: 'internal_a_2' })
            ...
        case 'child_b_1':
            childBReducer(state, { type: 'internal_b_1' })
            ...
        case 'child_b_2':
            childBReducer(state, { type: 'internal_b_2' })
            ...
            ...
            ...
        case 'child_z_2':
            ...

    }
}

On one hand this is a very explicit contract between a component and the rest of the world (good), but on the other it results in an enormous reducer (bad) where a lot of the capture world event -> translate aggregate event is duplicated effort that grows with the number of reusable components nested inside a particular root.
I would be interested in your thoughts on this. Maybe I'm coming at it from the wrong angle?
I agree with you that this is (mostly) classical event sourcing. I haven't been very disciplined about maintaining "has happened" events and have fallen into the "action trap" which may be at the root of some issues I'm having.

For those interested, here's a not-great solution to "how do I put from a callback". It's not great because this really isn't the way things should be structured, as @slorber mentions above.
// because of the way "call" works, if we want to "put" an action
// after a callback is invoked, we can return a promise that is
// bound to resolve when the callback is invoked
function bindCallbackToPromise() {
    let _resolve
    const promise = () => {
        return new Promise((resolve) => {
            _resolve = resolve
        })
    }
    const cb = (args) => _resolve(args)

    return {
        promise
        , cb
    }
}

function* watchForDialog() {
    yield take(DIALOG_REQUESTED)

    const cancel = bindCallbackToPromise()
    const confirm = bindCallbackToPromise()

    yield put({
        type: DIALOG_OPENED
        , cancel: call(cancel.cb)
        , confirm: call(confirm.cb)
    })

    // the race will wait for either the cancel or confirm callback to be invoked - which skirts
    // around the problem of trying to "put" from within a callback: don't put an event, instead
    // rely strictly on the resolution of a promise
    const race = yield race({
        cancel: call(cancel.promise)
        , confirm: call(confirm.promise)
    })

    ...

}

@aft-luke

A domain driven design approach would translate any event that is external to the component's domain into an internal representation, at which point the root of the reducer hierarchy becomes an aggregate root. This, unfortunately, means a very large reducer at the top of the hierarchy that must capture and translate every single event used by any component below.

Instead of doing this translation into reducers you should do it inside a saga. This is why I wanted something like redux-saga in the first place.
I don't think there is something close to an aggregate root in UIs because of the synchronous nature of interactions (while backend receive commands async). There's no need to validate commands because actually in the UI word everything has happened. You can notice this subtility because DOM events are always in the past tense, and the DOM does not send you commands that you can refuse. Even if there is a form error or whatever it's still an event, and the display of the error message has happened ;)

Thank you @slorber. Sorry for the very late response. I spent the last weeks with the Elm architecture and have been investigating CSP/core.async and the feasibility of clojurescript. Lots to think about on many different fronts.

Instead of doing this translation into reducers you should do it inside a saga

This is the key. In order to keep modules decoupled, communication should be as limited as possible. If module A is interested in something about module B, it should setup a saga to listen for B.SOME_EVENT. A module's reducer(s) can then respond exclusively to that module's actions. Following this pattern is a great way to stay away from "action creep" where the api surface of a particular reducer has to handle events from all across the app.

@aft-luke we agree on that :)
you may be interested by this discussion: https://github.com/jarvisaoieong/redux-architecture/issues/1

Sorry, a bit late to the party but running into something similar that I'm trying to wrap my head around.
Is it a good idea for a component to specify the actions that have taken place after an async call?
In this case, FormContainer gets its state from Redux Store and needs to know when an async call was successful in order to navigate away or show an error. Reducers know how to handle the success or error actions and update the state (not shown)
function* callApi(){
  while(true) {
    const action = yield take(CALL_API)
    const {success, error} = fetch(action.url)
    if (success) {
       yield action.successActions.map( successAction => put(successAction, success.data) )
   }
   if (error) {
       yield action.errorActions.map( errorAction => put(errorAction, error.data) )
   }
}

import {formSubmitted, formFailed} from './actions'

const mapStateToProps = (state) => {
 return {
  formStatus: state.form.status
 }
}

@connect(mapStateToProps)
class FormContainer extends Component {
 componentWillReceiveProps(nextProps){
    if (nextProps.formStatus.success) push('/success')
  }
 handleSubmit(){
   dispatch({
     type: CALL_API,
     successActions: [formSubmitted],
     successError: [formFailed],
   }
 }

 render(){
   <Form onSubmit={handleSubmit} error={this.props.formStatus.error.message} />
 }
}

@savethefails not sure it's related to "put within a callback", but here's my opinion.
It looks like you want to navigate away from current page, after form save is successful. I guess your push is something like HistoryJS/ReactRouter push. Instead of letting your component do the push, which seems not their responsability, I would rather use a saga for that.
function * redirectToSuccessPageAfterSuccessfulFormSubmit(){
  while(true) {
    const action = yield take(SUCCESS_FORM_SUBMIT)

    // Option1:
    yield call(() => window.location.href = "/success");

    // Option2: HistoryJS
    yield call(() => history.push("/success"));

    // Option3: React-router-redux:
    yield put(push('/foo'))

  }
}

Does it make sense?

Thanks for the response @slorber!
Sorry if this veered off topic. This thread came up while trying to search for the answer and since I know your work thought I'd interject.
There are two things which I'm unsure about:

how many Sagas are too many? Every 'flow' through an app (in my case signing up, confirming signing up, signing in, signing out...) should they each get their own Saga? Should I dynamically mount Sagas when they're  needed for a specific flow? For example, Sign up is used once throughout the app, but the Saga would be there forever waiting to TAKE its action.
I think the code I presented is a bit too generic. My components get their state injected as props from the Redux store. Where a component's specific state can be found in the store dynamic and depends on lineage. This is also passed in by props (stateKey in the below example), so actions need the path in order to update a component.

{
 "components": {
  "SignUpController": {
   "state": {},
   "children": {
    "SignUpLayout": {
     "state": {},
      "children": {
       "SignUpFormContainer": {
        "state": {
         "email"<EMAIL_ADDRESS>        }
      }
     }
    }
   }
  }
 }
}

The issue is more like the below. Can a component dictate the story of a Saga when the specifics of how to respond to async actions can't be known by the Saga itself?
The example is therefore more like:
import { componentStateChangedActionCreator } from './actions'

const mapStateToProps = (state, ownProps) => {
 const { stateKey } = ownProps  /* "Map/City/NorthWest/SnorgleTank15" */
 const componentState = stateKeyToComponentState(stateKey, state)
 return componentState /* { "lat": "-44", "long": "-77" } */
}

@connect(mapStateToProps)
class SnorgleTank extends Component {
 handleClick(){
   const orderSucceeded = componentStateChangedActionCreator(
         this.props.stateKey,
         { snorgleBlaster: 'fire' }
      )
   const orderFailed = componentStateChangedActionCreator(
        this.props.stateKey,
        {retreatTo: 'basecamp'}
     )
   dispatch({
     type: FIRE_OR_RETREAT,
     current: { lat: this.props.lat, long: this.props.long },
     successActions: [orderSucceeded],
     errorActions: [orderFailed],
   }
 }
 render(){
  <button onClick={handleClick} />
 }
}

@savethefails

how many Sagas are too many?

I don't know if there are performance limits but sagas are just listeners so if they don't take it's not more costly than a connected component I guess. It is ok to not keep alive your sagas during the whole app process. For example if you build an onboarding saga, you can spawn it after signup, and cancel/end it at the end of the onboarding. A saga itself can track onboarding_start/cancel/end events to manage that onboarding saga. You likely don't want to congratulate the user everytime he creates a todo, but only during the TodoMVC onboarding.

Can a component dictate the story of a Saga when the specifics of how to respond to async actions can't be known by the Saga itself?

I'm trying to understand your example but it's quite complicated so I'm unsure...
It looks to like you have components that can be arbitrarily nested and that you need to validate asynchronously the data that these components need to set somehow. For me it's fine to emit an event with a path to the state you want to update so that the saga can do the call and reuse that path in the reponse. You can even tell the saga which success/fail actions you want after async call, so that you have a very generic and reusable saga.
However I think it's not good to emit actions creators inside your events so that the saga can call them. It reduces your boilerplate but it a bad idea for me. Are these actionCreators simples (I mean no thunks?). For me it would be better to do something like that:
dispatch({
     type: CALL_API,
     current: { lat: this.props.lat, long: this.props.long },
     successActionTypes: ["ORDER_SUCCEEDED"],
     errorActionTypes: ["ORDER_FAILED"]
});

function* callApi(){
  while(true) {
    const action = yield take(CALL_API)
    const {success, error} = fetch(action.url)
    if (success) {
       yield action.successActionTypes.map(type => put({type: type, data: success.data}))
   }
   if (error) {
       yield action.errorActionTypes.map(type => put({type: type, data: error.data}))
   }
}

This won't work if you have complex actionCreators, but you can probably rework these existing action creators by using sagas as well.

Perfect! I will look into cancelling Sagas and maybe even dynamically creating them for a specific flow. My action creators return only objects, but they should be run before being passed to the Saga action instead of being produced by the Saga action so that the log is serializable. Thank you very much!

I ran into the same issue with the following scenario:
function* _subscribeFlow() {
  while (true) {
    var action = yield take('SUBSCRIBE');

    var fn = (x) => {
      if (x.id === action.eventId) {
        ... dispatch other action to refresh here...
      }
    };

    socket.on('x:changed', fn);

    action = yield take('UNSUBSCRIBE');
    socket.off('x:changed', fn);
  }
}

This uses socket.io, and I need to dispatch an action from the callback.
I could wrap the socket.on function in a promise but that seems wrong, because it can be called multiple times, and a promise is only supposed to resolve once.
Any suggestions?

Alright, I came up with the following (with help of some stackoverflow answers):
function createHandler(event) {
  let deferred;

  socket.on(event, e => {
    if (deferred) {
      deferred.resolve(e);
      deferred = null;
    }
  });

  return {
    nextMessage() {
      if (!deferred) {
        deferred = {
          promise: new Promise(resolve => deferred.resolve = resolve),
        };
      }

      return deferred.promise;
    },
  };
}

function* watchMessages(msgSource, filterId) {
  let message = yield call(msgSource.nextMessage);
  while (message) {
    if (message.id === filterId) {
      yield put({
        type: GET_ITEM,
        eventId: message.id,
      });
    }

    message = yield call(msgSource.nextMessage);
  }
}

function* _subscribeFlow() {
  var subscriptions = {};
  while (true) {
    var action = yield take('SUBSCRIBE');

    var msgSource = yield call(createHandler, 'x:changed');
    var task = yield fork(watchMessages, msgSource, action.eventId);

    action = yield take('UNSUBSCRIBE');
    task.cancel();
  }
}

Seems to work, but it's a lot of boilerplate.

Hey @andreialecu, would this help?
runSaga(iterator, {subscribe, dispatch, getState}, [monitor]): Allows starting sagas outside the Redux middleware environment. Useful if you want to connect a Saga to external input/output, other than store actions.

Hey @andreialecu and @savethefails ,
I had the same Issue. As runSage misses the connection to redux, which I also required an EventChannel does exactly what I need: http://yelouafi.github.io/redux-saga/docs/advanced/Channels.html

@mhoffmanniseki Thanks! Can you explain what you mean by "misses the connection to redux"?

@savethefails By my opinion runSaga(iterator, {subscribe, dispatch, getState}, [monitor]) is a way to use saga without redux. So it is an separat running instance without an connection to an redux instance. I've never tried this and my guessing is based on the documentation.
For me event channels are a clean solution to listen for async events. In my case I am using this to connect redux to firebase events.

@mhoffmanniseki yes you can run redux-saga without redux, as long as you an API so that take/put/select can work
See https://gist.github.com/slorber/c095671a14b2eccf8ad665a97a7b8ad1

I still don't get it. I've read several issues and other texts about this topic... Mostly they solve complex problems and not a simple thing like mine. Can someone point me to a tutorial or something else that shows me how to pass a simple "yield put" within a callback?
In my scenario i have to place a callback to receive the progress of a download-task and i want to put it into the redux-store with "yield put".
All i want to do is something like this:
function onDownloadFileProgress(data) {
  yield put({type: ACTIONS.S_PROGRESS, progress})
}

How to achieve that simple case? And why is it so difficult?

Its 'difficult' because the callback needs to be run in generator/saga context.
Aint sure how would you like to use yours onDownloadFileProgress, please post an example usage and ill explain how you should approach it.

Thx @Andarist  :) I'll give more context:
I have a saga that downloads files from the internet using react-native-fs. There i have to pass a plain javascript function to receive the progress of current file download.
And there we go (or not, because yield isnt working here and i need to do some fancy stuff):
function onProgress(progress) {
  yield put({type: ACTIONS.S_DOWNLOAD_PROGRESS, progress})
}

export function * loadMedia(id) {
  let url = `media/files/${id}`;

  const filename = RNFS.CachesDirectoryPath + '/' + id;

  const download = RNFS.downloadFile( {
    fromUrl: url,
    toFile: filename,
    background: false,
    progressDivider: 10,
    progress: onProgress,
  })

  yield download.promise;
}

thx @Andarist, will provide more context/code:
function onProgress(progress) {
  // this isn't allowed here:
  yield put({type: ACTIONS.S_DOWNLOAD_PROGRESS, progress})
}

export function * loadFile(id) {
  let url = `media/${id}`;

  const tmpFilename = RNFS.CachesDirectoryPath + '/' + id;

  const download = RNFS.downloadFile( {
    fromUrl: url,
    toFile:tmpFilename,
    background: false,
    progressDivider: 5,
    progress: onProgress,
  })

  yield download.promise;
}

Oh, yeah - its kinda cumbersome with generators in javascript, nothing really which could be simplified in the library itself.
I think the most idiomatic way to do this in saga is to use eventChannel. Its exactly for such uses cases - connecting external event sources (other than redux / redux-saga) through the channel to the redux-saga context.
More can be read in the docs - but basically you need to wrap your source (RNFS.downloadFile in your case) with eventChannel. And from there you can use emit argument to put things on the created channel. And from there you can easily just take and put events

If you just look for a simple workaround this certainly is not the way it's supposed to be done but it still works:
function onProgress(progress) {
  store.dispatch({type: ACTIONS.S_DOWNLOAD_PROGRESS, progress})
}

You won't have the testability/analysis benefits of a yielded effect, but for this kind of usecase it may be fine

@aft-luke your bindCallbackToPromise is a very slick temporary solution in my case. In the medium-to-long-term I expect we'll be able to eliminate the callback but our system uses a separate middleware which expects callbacks on certain actions. Appreciate the ingenuity. 😉

Hey @MrsBookik did you find a solution? I'm trying to do the exact same thing.

https://decembersoft.com/posts/file-upload-progress-with-redux-saga/

@Andarist thank you!

@Andarist Thanks!

I used an eventChannel to dispatch an action from a callback within the generator function
import {eventChannel} from 'redux-saga';
import {call, take} from 'redux-saga/effects';

function createEventChannel(setEmitter) {
    return eventChannel(emitter => {
        setEmitter(emitter)
        return () => {

        }
      }
    )
}

function* YourSaga(){
    let emitter;
    const internalEvents = yield call(createEventChannel, em => emitter = em)

    const scopedCallback = () => {
        emitter({type, payload})
    }

    while(true){
        const action = yield take(internalEvents)
        yield put(action)
    }
}

Here's what I ended up doing. I was trying to send a datagram message using node.js. This is pretty straight forward to me, with only a tiny extra work. I admittedly had to stop and google a bit at first, as the solution, though simple, isn't obvious.
const createChannel = fn => eventChannel(fn);

function* sendMessage({ payload }) {
  if (!socket) {
    yield put({ type: SOCKET.SEND_FAILURE, payload: 'socket is undefined' });
  }

  const { address, port, msg } = payload;

  const resultChannel = yield call(createChannel, emitter => {
    socket.send(JSON.stringify(msg), port, address, err => {
      emitter({ error: err });
    });
  });

  const { error } = yield take(resultChannel);

  if (error) {
    yield put({ type: SOCKET.SEND_FAILURE, payload: error });
  }
}

If you just look for a simple workaround this certainly is not the way it's supposed to be done but it still works:
function onProgress(progress) {
  store.dispatch({type: ACTIONS.S_DOWNLOAD_PROGRESS, progress})
}

You won't have the testability/analysis benefits of a yielded effect, but for this kind of usecase it may be fine

How do you access store within a saga?

If you just look for a simple workaround this certainly is not the way it's supposed to be done but it still works:
function onProgress(progress) {
  store.dispatch({type: ACTIONS.S_DOWNLOAD_PROGRESS, progress})
}

You won't have the testability/analysis benefits of a yielded effect, but for this kind of usecase it may be fine

This is the approach I took. Because all advanced solutions mentioned in this thread are beyond my knowledge to apply them to my case (I want to dispatch/put action in the moment when modal shows up)


speck stuck

column "sn" of relation "nft_entity" contains null valuesALTER TABLE "nft_entity" ADD "sn" numeric NOT NULL

QueryFailedError: column "sn" of relation "nft_entity" contains null values at PostgresQueryRunner.query (/squid/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:211:19) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async Data1704901579526.up (/squid/db/migrations/1704901579526-Data.js:7:9) at async MigrationExecutor.executePendingMigrations (/squid/node_modules/typeorm/migration/MigrationExecutor.js:225:17) at async DataSource.runMigrations (/squid/node_modules/typeorm/data-source/DataSource.js:260:35) at async /squid/node_modules/@subsquid/typeorm-migration/lib/apply.js:44:9 {

nvm restarted it now work fine

:D time to hard reset squid

Indeed https://squid.subsquid.io/speck/v/v10/graphql does work and show right schema

lmk what action you're going to do

As mentioned in #190
You need to kill squid and reindex again

Noted!


Update A3 mega blueprint to use Slurm-GCP 6.5.12

This PR updates the A3 Mega slurm image building solution in 2 ways:

it will build from the latest tag of GoogleCloudPlatform/slurm-gcp
it will "hold" several google custom packages at their version in the base Debian-12 image

The first change aids alignment of Terraform code with the Python autoscaling code added during image building. We previously (#2746) re-enabled enable_devel: true which should avoid any problems, but alignment is good.
The second change is critical to address problems introduced by GoogleCloudPlatform/guest-agent#401, which perfectly describes the A3 Mega solution: an ethernet device naming problem stemming from building an image on a Packer VM without local SSD and then provisioning A3 Mega VMs (with local SSD) using the image. The resulting compute nodes that cannot join the network or the cluster.
Before the PR, we observe <10% of nodes joining initially and rarely managing to succeed after every ~1000s retry cycle.  After the PR, we see 100% of nodes joining on the first try.
Future work can be done to update the base debian-12 image (from April 2024) to one that includes the fix to GoogleCloudPlatform/guest-agent#401.
Submission Checklist
Please take the following actions before submitting this pull request.

Fork your PR branch from the Toolkit "develop" branch (not main)
Test all changes with pre-commit in a local branch #
Confirm that "make tests" passes all tests
Add or modify unit tests to cover code changes
Ensure that unit test coverage remains above 80%
Update all applicable documentation
Follow Cloud HPC Toolkit Contribution guidelines #

Ran NCCL tests and verified performance is as per our expectations.


timeOut not working as expected programmatically

TestNG Version
Built from source 2017-01-19, occurs in earlier builds
Expected behavior
TestNG kills unit tests that exceed the timeout.
Actual behavior
Infinite loops continue running, TestNG won't kill the running thread. This happens when invoking TestNG from custom code.
Is the issue reproductible on runner?

[x] Shell
[ ] Maven
[ ] Gradle
[ ] Ant
[ ] Eclipse
[ ] IntelliJ
[ ] NetBeans

Test case sample
import org.testng.TestNG;
import org.testng.annotations.Test;

public class TestNGHangTest {
	private class ExampleTest {
		@Test(timeOut = 500)
		private void iHangHorribly() {
			while (true) {
				System.out.println(System.currentTimeMillis());
			}
		}
	}
	public static void main(String[] args) {
		TestNG testng = new TestNG();
		testng.setTestClasses(new Class[] { ExampleTest.class });
		testng.run();
	}
}

It's a common concurrent exception that you can reproduce easily:
    public static void main(String... args) throws InterruptedException, ExecutionException {
        ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1, 0L,
                TimeUnit.MILLISECONDS,
                new LinkedBlockingQueue<Runnable>());
        Future<?> f = executor.submit(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    System.out.println("Run");
                    try {
                        Thread.sleep(2_000);
                    } catch (InterruptedException e) {
                        System.out.println("Please, stop!");
                    }
                }
            }
        });
        executor.shutdown();
        try {
            f.get(500, TimeUnit.MILLISECONDS);
        } catch (TimeoutException e) {
            f.cancel(true);
        }
    }

TestNG is using a ThreadPoolExecutor for its timeout feature and has no way to stop the run of the method.
But a test is not supposed to loop forever, isn't it?
If you really really want it, check status with Thread.currentThread().isInterrupted().

Extending what @juherr  said, here's what you should be altering your test method to
import org.testng.TestNG;
import org.testng.annotations.Test;

public class TestNGHangTest {
    private class ExampleTest {
        @Test (timeOut = 500)
        private void iHangHorribly() {
            while (true && (! Thread.currentThread().isInterrupted())) {
                System.out.println(System.currentTimeMillis());
            }
        }
    }

    public static void main(String[] args) {
        TestNG testng = new TestNG();
        testng.setTestClasses(new Class[] {ExampleTest.class});
        testng.run();
    }
}


tweaks to make grepping a file easier

Don't grep if the grep query param is empty
Add optional nextOffset field to MesosFileChunkObject, and if grepping, relay what the next file offset should be (needed for the UI). If nextOffset is not set, it's safe to assume the next offset you should grab is offset + data.length.

/cc @kwm4385

:dancer:


Generate projects using the new Android embedding

Description
Generate projects using the new Android embedding.  This feature is under a flag, so to generate new projects, run:
flutter config --enable-new-android-embedding
flutter create -t <project-type> <destination>

Pending feature: https://github.com/flutter/flutter/issues/41757
Related Issues
Fixes #33161
Fixes #35509
Tests
Unit tests
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I signed the CLA.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I updated/added relevant documentation (doc comments with ///).
[x] All existing and new tests are passing.
[x] The analyzer (flutter analyze --flutter-repo) does not report any problems on my PR.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require Flutter developers to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (Please read Handling breaking changes). Replace this with a link to the e-mail where you asked for input on this proposed change.
[x] No, this is not a breaking change.

@matthew-carroll I reworked the detection mechanism using <meta-data> instead of a comment. Please take another look when you get a chance.


whenever error "Bundler::GemNotFound: Your bundle is locked to aasm"

I got message in cron_log.log
Bundler::GemNotFound: Your bundle is locked to aasm (4.11.1), but that version could not be found in any of the sources listed in your Gemfile. If you haven't changed sources, that means the author of aasm (4.11.1) has removed it. You'll need to update your bundle to a different version of aasm (4.11.1) that hasn't been removed in order to install.
  /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.2/lib/bundler/definition.rb:179:in `rescue in specs'
  /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.2/lib/bundler/definition.rb:173:in `specs'
  /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.2/lib/bundler/definition.rb:233:in `specs_for'
  /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.2/lib/bundler/definition.rb:222:in `requested_specs'
  /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.2/lib/bundler/runtime.rb:118:in `block in definition_method'
  /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.2/lib/bundler/runtime.rb:19:in `setup'
  /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.2/lib/bundler.rb:99:in `setup'
  /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.2/lib/bundler/setup.rb:20:in `<top (required)>'
  /usr/local/Cellar/ruby/2.3.1_2/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  /usr/local/Cellar/ruby/2.3.1_2/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'

my code
set :output, "./cron_log.log"

every '* * * * *' do
  runner 'User.send_maill'
end

How do I fix this ?

bundle install

@benlangfeld  I tired to bundle install but I still got error

You got the error when running bundle install?

@benlangfeld success to install

have the same issue.
Bundle install completes, but at error.log i have this error. I've changed versions of aasm gem, but it did not help

Please provide a minimal reproduction app to debug since I can't reproduce this.

I fixed that by adding this env variable in my config:
env :BUNDLE_PATH, ENV['BUNDLE_PATH']
My entire config file looks like this:
set :output, "log/cron.log"

env :BUNDLE_PATH, ENV['BUNDLE_PATH']

every 1.minute do
  rake 'rebuild_redis_rank'
end

In my docker container I use this to publish the schedule to cron:
whenever --set environment=$RAILS_ENV --update-crontab

I believe this has had a solution (given the last answer). So maybe we can close out this issue
cc @benlangfeld


npm is not pulling the latest validator package

I see in the<EMAIL_ADDRESS>rules---> have been updated so that there wont be any issue with date on line@18.
But the package npm is pulling when I try to install the latest v of validatorjs still have
var mo = testDate.getMonth() + 1;----> which might be some older version,
which is resulting in unexpected results.
How could I resolve this issue.?

@harry46nv the latest version of validatorjs is now available with npm
$ npm install -S validatorjs


Rarely occurring error "duplicate key error collection" while uploading a file

Give an expressive description of what is went wrong
I got told by a test-user that he wasn't able to upload files and started investigating on it. This was while he was testing an application which was running in developer-mode. It looked that the server was quite busy at the time he tried it, but what wondered me the most was this stack-trace I found in the server-log:
Exception while invoking method '_FilesCollectionStart_imports' WriteError({"code":11000,"index":0,"errmsg":"E11000 duplicate key error collection: meteor.__pre_imports index: _id_ dup key: { : \"echv4XieGSspQcKMx\" }","op":{"file":{"size":38750000,"type":"text/plain","name":"artikelstamm1020_7.txt","meta":{"projectId":"9vxGNLmcaMwkMr5dd","importId":"63129d9f-a76d-46cd-abd1-acf6e17ecdb0","uploaded_at":"2018-06-20T16:30:16.365Z","autoCreateJob":true},"ext":"txt","extension":"txt","extensionWithDot":".txt","mime":"text/plain","mime-type":"text/plain","_id":"echv4XieGSspQcKMx","userId":"yMv6ubhv8WkzkHeEN","path":"/tmp/imports/echv4XieGSspQcKMx.txt","versions":{"original":{"path":"/tmp/imports/echv4XieGSspQcKMx.txt","size":38750000,"type":"text/plain","extension":"txt"}},"_downloadRoute":"/cdn/storage","_collectionName":"imports","isVideo":false,"isAudio":false,"isImage":false,"isText":true,"isJSON":false,"isPDF":false,"_storagePath":"/tmp/imports"},"fileId":"echv4XieGSspQcKMx","chunkSize":327680,"fileLength":119,"_id":"echv4XieGSspQcKMx","createdAt":"2018-06-20T16:35:21.482Z","maxLength":119}})
    at Function.MongoError.create (/Users/simon/.meteor/packages/npm-mongo/.<IP_ADDRESS>x467hb.o59m++os+web.browser+web.cordova/npm/node_modules/mongodb-core/lib/error.js:31:11)
    at toError (/Users/simon/.meteor/packages/npm-mongo/.<IP_ADDRESS>x467hb.o59m++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/utils.js:139:22)
    at /Users/simon/.meteor/packages/npm-mongo/.<IP_ADDRESS>x467hb.o59m++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/collection.js:668:23
    at handleCallback (/Users/simon/.meteor/packages/npm-mongo/.<IP_ADDRESS>x467hb.o59m++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/utils.js:120:56)
    at resultHandler (/Users/simon/.meteor/packages/npm-mongo/.<IP_ADDRESS>x467hb.o59m++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/bulk/ordered.js:421:14)
    at /Users/simon/.meteor/packages/npm-mongo/.<IP_ADDRESS>x467hb.o59m++os+web.browser+web.cordova/npm/node_modules/mongodb-core/lib/connection/pool.js:469:18
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickDomainCallback (internal/process/next_tick.js:218:9)
Exception in callback of async function: Error: [FilesCollection] [writeStream] [ensureFile] [open] [Error:] [500]
    at bound (packages/ostrio:files/write-stream.js:49:25)
    at Meteor.bindEnvironment.callback (packages/ostrio:files/write-stream.js:10:52)
    at runWithEnvironment (packages/meteor.js:1240:24)

I have to further investigate it and first wanted to ask if you guys have a clue how this could occur ...
If you ask me, this very much sounds like the method used here isn't idempotent: https://guide.meteor.com/methods.html#retries
Version of Meteor-Files you're experiencing this issue
I'm using 1.9.11
Version of Meteor you're experiencing this issue
I'm using <IP_ADDRESS>
Where this issue appears? OS (Mac/Win/Linux)? Browser name and its version?
The server was running on a Mac OS X 10.13.5 and the browser was Google Chrome version 67.0.3396.87
Is it Client or Server issue?
I guess a server issue, since I found the exception-stack in the server logs and the client just showed that the upload was unsuccessful.
Post Client and/or Server logs with enabled debug option, you can enable "debug" mode in Constructor
This is something I have give you when the error get's reproducible - or at least happens once more. I just got the report by a user after it already was not reproducible and found the posted excerpt which occurred at the time he faced the problem.

Hello @SimonSimCity ,
I'm very sorry for being silent for a month.
Fix released in v1.10.0.
Let me know if it solves the issue.
Feel free to reopen it in case if the issue is still persists on your end.


do we need both opencv 2 and 3 in windows

Do we need both opencv 2 and 3 to build the yolo_mark in windows?
Because I only have opencv 3 and updated the paths as you mentioned but got errors related to opencv2 library in c++ code.

issue resolved I needed to first build it with CMake the copy paste yolo_mark.exe from release folder to x64/release also put there opencv_worldxxx.dll then I am good to go,one issue is still there for closing the GUI I have to press ctrl-c in command line,the cross not working.
OS windows 10
Visual studio 2019.
And thanks for this tool.


nobrowser.txt not preventing sign in page from opening

Installed GYB on a remote Linux server via SSH from Terminal in macOS using bash <(curl -s -S -L https://gyb-shortn.jaylee.us/gyb-install)
When the setup helper asked for Y or N browser, I entered N. nobrowser.txt is confirmed to be in ~/bin/gyb along with gyb, LICENSE, and lastcheck.txt.
The prompt successfully loads with Go to the following link in your browser: https://gyb-shortn.jaylee.us/XXXXX, but additionally the Google sign in webpage tries to load within the terminal as well, making it impossible to paste the URL in and continue the project creation. The same behavior is seen when running gyb --action create-project --email<EMAIL_ADDRESS>Thanks!

Same here on a Debian 64bit:
Linux <hostname> 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) x86_64 GNU/Linux
I switched to a Raspbian OS Lite (64bit) on an rpi5, which worked better:
Linux <hostname> 6.6.62+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.62-1+rpt1 (2024-11-25) aarch64 GNU/Linux
I then copied the json-files to the machine I want as a backup-location.
But install is tricky, a flag for non-Workspace users with instructions might be good. --action check-service-account for example fails entirely, even though I selected 3and also tried 0 for permissions. But backup works anyway.
In the end, because nobrowser.txt isn't respected it's causing issues.


Add Formula support to XLSX

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

6 of 6 (100.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.008%) to 96.618%

Totals

Change from base Build<PHONE_NUMBER>:
0.008%

Covered Lines:
2457

Relevant Lines:
2543

💛  - Coveralls


How can I switch to a different version of reflex-platform?

I tried already to check out a local copy of obelisk and then I manipulated dep/reflex-platform/github.json ... re-installed that local profile via nix-env -f . -iA command, but to know avail. It isn't clear to me, at what point in the process reflex-platform gets built or anything. ob run does not seem to that, either.

The installed ob will quickly handoff control to your project's obelisk - you probably want to change the reflex-platform version in .obelisk/impl - see https://github.com/obsidiansystems/obelisk/blob/master/CONTRIBUTING.md#hacking-on-obelisk-from-within-an-obelisk-project

You can override the reflex-platform that obelisk uses by passing reflex-platform-func to import ./.obelisk/impl { ... }.

Indeed, this is well documented already. I failed to find .obelisk. Thanks


Update: An update to KaiaScan SDK Go

Description

It's an SDK that helps developers easily integrate with the Kaia blockchain.

Reference issue

#237

Category

developer tool

GitHub repo: https://github.com/PaulElisha/kaiascan-sdk-go

Approved for 850 KAIA

closing


FAN ONLY Mode Fails with RECOVAIR

Hi firends,
I have installed a VRC 700 system that controls The hotwater, heating, cooling, and a RECOVAIR.
The recovair appears as a FAN, which I can chose the running mode, but not the speed.
By mistake this night I pressed the FAN ONLY mode on the heating card, and the RECOVAIR start to run at full throttle.
When I stopped the FAN ONLY mode on the heating card the RECOVAIR has not stopped, and It did not appear as working on full throttle on the Vaillant APP.
Thank you all.

Hello

The recovair appears as a FAN, which I can chose the running mode, but not the speed.
From HA point of view, speed is deprecated, it has been replaced by percentage. I decided to not allow to set speed (nor percentage) because of the "incoherence" between HA and vaillant:

from HA point of view, set_speed (or set_percentage) service means: I want my fan to operate right now at X speed/percetange
from vaillant point of view, this is a bit different since you cannot directly set the speed, but rather set the speed for a given mode (DAY/NIGHT AUTO). So it can lead to awkward situation: the fan is in DAY mode and you set the speed. Which speed should it change ? DAY or NIGHT mode ?

Also, there are multimatic services to do so:

multimatic.set_ventilation_day_level
multimatic.set_ventilation_night_level

When I stopped the FAN ONLY mode on the heating card the RECOVAIR has not stopped, and It did not appear as working on full throttle on the Vaillant APP.

So, setting FAN ONLY mode sounds to work as expected (fan at full throttle and it stops the heating).
Now, how did you stop the FAN ONLY ? Which mode did you select on the heating card ? It sounds like mutimatic app understood what the integration ask (to stop FAN ONLY mode).
How did you eventually stop the fan ?
Do you have any error in the log ?
Thomas


The steam file location

it tells me that the game file or the steam file has to be in a specific place but but my steam is somewhere else and i cant change it to the wanted location how do i change from where the steam file has to be?

Steam can be in any location. However you must put the YgoMaster inside the Yu-Gi-Oh!  Master Duel under steam. Do not put the contents of the YgoMaster folder into that target folder. Put the YgoMaster folder itself into the target folder.