Implement staging and runtime hooks

The buildpack team tried to implement pre- and post-staging hooks as an
experiment:
https://www.pivotaltracker.com/n/projects/1042066/stories/96592310
That approach didn't really work out because it requires the
functionality to be implemented in each buildpack.
This change implements the change directly inside the buildpackrunner,
making the functionality available even to buildpacks not based on
"compile-extensions".
The run-hook.sh adds similar functionality to the launcher.  If the
pre-hook.sh installs additional OS packages, then similar packages
might be needed before launching because the OS packages are not
persisted inside the droplet.

Thanks, @jandubois! Since these hooks would be a significant expansion of the compilation and execution contract with buildpack apps on CF, I'd like @Dannyzen and @flavorjones to weigh in with their thoughts about it.
Best,
Eric, CF Runtime Diego PM

It just occurred to me that I should have made it more explicit in the tests that all the hooks are expected to be run with the current directory being the app dir.  The staging hook tests will fail if this isn't the case, but it should be explicitly be part of the contract.
I'll wait for further feedback before making changes. Do you prefer additional commits on top of the initial PR, or a cleaned up/rebased replacement?

@jandubois, thanks for the pull request.
The buildpack contract is really solid, so introducing behaviours like this need to be really well documented, discoverable, and have specific use cases. Changes to it are backwards incompatible with other versions of cf-releases.
That being said, I've got the following notes.

The use case stated (installs additional OS packages ) is not possible because the staging container does not have the correct privileges to do apt-get install.
The buildpacks within the staging process are designed to be very define behaviour -- install a runtime (ruby) and run the package manager (bundle install). Allowing an app to extend that functionality can provide an inconsistent user experience as there can be implicit behaviour between each app's staging.

An app developer can provide the run-hook.sh functionality currently via the start command in their manifest.yml or the cf push.
For example, cf push my-app -c run-hook.sh.

I'm hesitant to accept this pull request based on the following reasons. Let me know if you have any questions/comments.

Thank you for your feedback @jtarchie. I hope @flavorjones can chime in as well!

The buildpack contract is really solid, so introducing behaviours like this need to be really well documented, discoverable, and have specific use cases.

I totally agree.  I would be happy to provide at least a first pass of a documentation patch if you could point me to the appropriate repo!

Changes to it are backwards incompatible with other versions of cf-releases.

I don't understand what you are saying.  New features are always backwards incompatible with releases that don't have them.  Can you clarify your concerns?
The one problem I can see is that when an app using hooks is being staged on an older CF instance, then the app will not stage/run properly.  But that is no different from an app making use of newer buildpack features, that may not be available on that instance either.

That being said, I've got the following notes.
The use case stated (installs additional OS packages) is not possible because the staging container does not have the correct privileges to do apt-get install.

That particular use case was actually copied from the previous experiment ("install .deb package").  I believe this is only impossible using the default cflinuxfs2 stack; a user-provided custom stack could include a sudo wrapper for apt-get.
For general background, these kind of hooks have been implemented in Stackato since the CF v1 days. One reason for this PR is to make it easier for existing users of these hooks to migrate their applications to a stock CF installation.
I'm going to point to a couple of sample applications for different usage scenarios, but I know that there are users that use them for similar purposes in their production setups:

post-staging hooks

Use a post-staging hook to configure WordPress to store documents on a shared filesystem: stackato-setup.sh.

pre-running hooks

Update static HTML pages with the actual application URL: update_baseurl.rb

Update $DATABASE_URL from "mysql" to "mysql2" schema: manifest.yml.

Update the port number in the server.config file: update_server_properties.sh

Of course there are alternatives: the applications could be modified, and/or the buildpacks could be forked to implement the required functionality.
Both activities have significant downsides: they require a lot more effort, and more importantly, they create a fork of external sources, making future version updates of either the buildpack or the application much more difficult.
In general writing the deployment manifests and hook scripts does not require the same deep knowledge of either the application or the buildpack, which is a big advantage when the app packaging is done independent of the app development.
As an example of the power of simple hooks, please take a quick look at the Minecraft server manifest.yml. The app is almost completely implemented in a couple lines of hooks:
      pre-staging:
      - wget https://s3.amazonaws.com/Minecraft.Download/versions/1.8.1/minecraft_server.1.8.1.jar
      post-staging:
      # Move the minecraft world to the Fileystem for storage
      - mkdir -p $STACKATO_FILESYSTEM/world
      - ln -s $STACKATO_FILESYSTEM/world world
      pre-running:
      # Sets Harbor's port as server-port
      - sh update_server_properties.sh
      - java -Xmx1024M -Xms1024M -jar minecraft_server.1.8.1.jar nogui &

These kinds of customizations and initializations are quite common in legacy (non-cloud-native) apps, and having these of hooks available makes it possible to package them into an application store, where end-users can deploy an app from a web catalog.

The buildpacks within the staging process are designed to be very define behaviour -- install a runtime (ruby) and run the package manager (bundle install). Allowing an app to extend that functionality can provide an inconsistent user experience as there can be implicit behaviour between each app's staging.

I'm confused by this objection; it directly contradicts the "goal of easily allowing extension to a large-ish body of existing work" of the earlier experiment. Is that goal no longer desirable?

An app developer can provide the run-hook.sh functionality currently via the start command in their manifest.yml or the cf push.
For example, cf push my-app -c run-hook.sh.

I don't think that is correct; that just specifies an alternate start command, similar to what a Procfile would do.  So to run both the customization of the hook and the actual application, you would have to embed the buildpack-generated run command inside that run-hook.sh.
Which means that if the buildpack changes, you may have to update the script.  If you switch to a different buildpack, you may have to update the script. Isolating just the customization changes into a hook script and using the default mechanism for the start command should be more robust.
Also, once one-off tasks are implemented in CF you would want the run-hook.sh to be executed for all possible tasks automatically, as conceptually it is part of the droplet (delayed customization for anything outside the app dir tree).

I'm hesitant to accept this pull request based on the following reasons. Let me know if you have any questions/comments.

I hope I provided sufficient information above for you to reconsider!

I haven't looked through this a lot, but I second the request for some sort of staging based hooks.  This is not something that I find myself needing a lot, but there are occasionally times where from a support and troubleshooting perspective it would be nice if the system supported this.  If you're looking for more specific use cases, let me know and I'll try to dig up a few that I've come across.

The run-hook.sh adds similar functionality to the launcher.

How is the run hook different from .profile.d scripts?  While I've not found documentation for it (in CF), CF supports Heroku style .profile.d scripts, which sound similar to the run hook.
https://devcenter.heroku.com/articles/buildpack-api#profile-d-scripts

How is the run hook different from .profile.d scripts?

Thank you for bringing that up; this is also something that should be covered by the tests:
The problem with .profile.d/ scripts is that they are executed in arbitrary order. So even if we include a .profile.d/run-hook.sh script in a Python app, we still can't invoke any Python scripts from that hook because we don't know if .profile.d/python.sh has been sourced yet or not.
The run-hook.sh hook implemented by this PR is guaranteed to be executed after all .profile.d/ scripts have been sourced, so whatever runtime environment has been setup by the buildpack is now fully initialized and ready for use.
Another (maybe minor) point is that .profile.d/ is a hidden directory. This is appropriate for scripts that are auto-generated by the buildpack, but not really for any script that is explicitly part of the application definition. We don't hide requirements.txt, package.json, manifest.yml, or any other user-created app setup file, so hiding the hook scripts would feel wrong to me.

If you're looking for more specific use cases, let me know and I'll try to dig up a few that I've come across.

I think that would be useful, both for this discussion, and potentially for the documentation.

Just as another datapoint, the python-buildpack already has (experimental) support for staging hooks built in:
https://github.com/cloudfoundry/python-buildpack/commit/7af5175942f625d07e5ff610308b0c452dcdb0e8
Its use of bin/pre_compile and bin/post_compile is almost identical to how pre-hook.sh and post-hook.sh will work for any buildpack.

The PHP build pack has staging hooks as well.  They're implemented different though.
https://github.com/cloudfoundry/php-buildpack/blob/master/docs/development.md#extensions

@jandubois, .profile.d is an already supported mechanism with buildpacks. The order is guaranteed because the source of the files within .profile.d happens in lexical order, so 001_my_script.sh would happen before ruby.sh, thus resolving the arbitrary order problem.
The use cases that you've provided are based upon Stackato. As this functionality is not provided by Cloud Foundry, additional use cases would be helpful to understand the value this PR provides to end users.
The Python and PHP staging hooks are contracts that those buildpack creators have provided and maintain for those ecosystems. This change is over arching and will affect all current and future buildpacks.

I know I’m on the outside a bit…
One of the things I talk to PCF operators about is the clear separation of responsibility the buildpacks provide, allowing operators to have clear control over the runtime environment for applications, to know exactly how those containers are built-out, and to avoid common variance/snowflake issues that arise with other container building systems.
To that end, app developers can rely on a consistent operating environment for their app which behaves the same way every time. This feature request, as the suggested implementation, allows developers to reach over that interface and, I worry, break this (admittedly social) contract.
It _feels_ like a way to give developers more flexibility but I fear this type of increased flexibility limits the platform’s ability to keep promises about the consistency and reliability of the runtime environments.
I see value in this type of pluggability, however, from my perspective I'd want to offer it to platform operators to hook into staging apps, not developers during cf push.

@jtarchie wrote:

.profile.d is an already supported mechanism with buildpacks. The order is guaranteed because the source of the files within .profile.d happens in lexical order, so 001_my_script.sh would happen before ruby.sh, thus resolving the arbitrary order problem.

Yes, the order is guaranteed by a side-effect of the implementation. The Heroku buildpack documentation) for .profile.d/ however says:

Like the standard Linux /etc/profile.d shell startup files, these must be bash scripts, and their filenames must end in .sh. No guarantee is made regarding the order in which the scripts are sourced.

However, more interestingly, it also notes:

Scripts in .profile.d/ should only be written by buildpacks. Customers intending to perform application specific initialization tasks at the time a dyno boots should use .profile scripts, which are guaranteed to run after the scripts in profile.d/.

https://devcenter.heroku.com/articles/buildpack-api#profile-d-scripts
So this is actually a part of the buildpack contract not yet implemented by CF. So I think run-hook.sh should be renamed to .profile. As I wrote earlier, I would have preferred a non-hidden name, but it is obviously more important to follow the buildpack spec.

@jtarchie wrote:

The use cases that you've provided are based upon Stackato. As this functionality is not provided by Cloud Foundry, additional use cases would be helpful to understand the value this PR provides to end users.

Stackato is just a version of Cloud Foundry with some extensions (and some changes), and it happens to already have the functionality that would be added by this PR (albeit implemented differently).
The use cases show what becomes possible once the functionality is also available in standard Cloud Foundry. If the functionality was already available in CF then there would be no need to have this whole discussion, so I don't know why you are pointing that out.
But I'll try to find more use cases for the staging hooks (I assume we agree that the .profile runtime hook is part of the buildpack contract and should be implemented). I also hope @dmikusa-pivotal posts his use cases as well.

The Python and PHP staging hooks are contracts that those buildpack creators have provided and maintain for those ecosystems. This change is over arching and will affect all current and future buildpacks.

Again, it is the point of this implementation to provide a feature in a consistent manner across all current and future buildpacks. I'm at a loss to understand why you seem to consider this as a problem.
Yes, supporting staging hooks is an extension to the buildpack contract from Heroku, but so is the use of $VCAP_APPLICATION and $VCAP_SERVICES. Not all Cloud Foundry features are available on Heroku.

I also hope @dmikusa-pivotal posts his use cases as well.

I haven't had a chance to go back through my notes, but here's what I can think of off the top of my head.
1.) Augmenting build pack behavior without requiring a fork.  Most customers are loathe to fork a build pack because it's a maintenance problem.  That said, they often want the ability to make minor adjustments.  Things like adjusting the JVM's keystore or installing a custom APM agent.  Pre and post scripts would help accomplish small tasks like this.
2.) Debugging and troubleshooting.  I'm a little biased her since support is my day job, but I would strongly urge us to provide facilities that make debugging and troubleshooting apps easier.  Adding staging hooks would be a big help.  Being able to add scripts to run before and after the build pack would provide a convenient way to inject behavior and inspect the staging environment.  You can do it other ways, but it's by no means convenient.
Hope that helps!

@cwest wrote:

It feels like a way to give developers more flexibility but I fear this type of increased flexibility limits the platform’s ability to keep promises about the consistency and reliability of the runtime environments.

Sorry, but "feels" and "fear" are a lot of handwaving; which promises do you think would be put in jeopardy that are currently enforced?  There is nothing you can do with these hooks that you couldn't do with a custom buildpack, just with more effort.
That said, if there was e.g. a feature flag that would disallow anything but the use of admin buildpacks, then I think staging hooks should be gated too.

I see value in this type of pluggability, however, from my perspective I'd want to offer it to platform operators to hook into staging apps, not developers during cf push.

That would be a completely independent feature (called "Admin Hooks" in Stackato), so please let's keep  it out of this discussion.

That said, if there was e.g. a feature flag that would disallow anything but the use of admin buildpacks, then I think staging hooks should be gated too.

Alright, so there is already a disable_custom_buildpacks global option (not feature flag) on the CC. Given that staging hooks are conceptually just light-weight forks of buildpacks I think it makes sense to piggy-back on that setting and not create an addition config variable.
A naïve implementation could just remove pre-hook.sh and post-hook.sh from the package bits before uploading them to the blob store. I will work on this once/if we get consensus on this feature otherwise.
I also assume this does not affect the .profile runtime hook, as anything done there could just as well be done by the app itself. Preventing custom buildpacks should just prevent app code from being executed during staging.

A naïve implementation could just remove pre-hook.sh and post-hook.sh from the package bits before uploading them to the blob store.

Actually, that feels wrong. Staging should be aborted if an app uses staging hooks and the hooks are disabled.

I will work on this once/if we get consensus on this feature otherwise.

I did implement a proof-of-concept already (it is on top of v224, so quite a bit out-of-date, but it is what I had already setup):
https://github.com/jandubois/diego-release/commit/43ab002
https://github.com/jandubois/stager/commit/ceef27a
https://github.com/jandubois/buildpack_app_lifecycle/commit/f91470c4
When the diego.stager.buildpack_disable_staging_hooks property is set to true then staging will fail if the app includes either a pre-hook.sh or post-hook.sh file (or both):
$ cf push
...
Staging...
Staging hooks are disabled
Exit status 225
Staging failed: Exited with status 225

FAILED
StagingError

Unfortunately adding the flag adds a lot more code than the feature itself...
BTW, I only used the names pre-hook.sh and post-hook.sh because they were used in the previous story; I don't have any strong feelings about using alternate names.

Hi @jandubois last we left off you were preparing a feature narrative to share with the broader community. I was hoping you could update us on where you were with that work. Thank you.

Here's the Feature Narrative https://docs.google.com/document/d/1YKQJbnyv26Dx90CPFYVDkKDvlCQMMxKYVm_xys9KN0c/edit#heading=h.bzs0r7srsnt

Withdrawing pull request; there may be better ways to implement this functionality in the future.


include  for access to C-string operations

GCC 12 (libstdc++12) no longer provides strlen() via <string>; these files must #include <cstring> to build on Fedora 36 and later.
Also, hello!  I am planning to be the Fedora/EPEL package maintainer for ATS.  I'll introduce myself on the mailing list once I have a successfully building Copr repo.

Marking this for 9.2.x to address GCC 12 build issues there. These files do not exist in 8.1.x, so not marking for that release.


Include the TTLs used to generate the diagrams.

One of these is duplicated in the online examples, but the others are not.

Maybe I should put a README.md in the examples directory? This could potentially also be linked from the main README.


Doesn't display password in CLI on connection

Thanks @apoydence -- this is a good idea. However, it would be better if your code was a method on the Client type. For example, func (c *Client) DisplayURL() -- that would be neater. Then call that method from here.
Can you do that? And perhaps add a unit test (it would go in https://github.com/influxdb/influxdb/blob/master/client/influxdb_test.go) to test the new method. Don't forget to sign the CLA too.

I moved it to a method and added two unit tests.

@apoydence -- 1 final change is required. Our coding style dictates that stuff like "URL" should always be capitalized, so can you change the function to DisplayURL?
https://github.com/golang/go/wiki/CodeReviewComments#initialisms

@corylanou

I intentionally didn't encode the username/password into the url I store in the client struct as I didn't want them to be able to echo out the credentials.  This raises a question about security in general on how the client handles authentication.  To be even more secure, we shouldn't use url.UserPassword at all.  We are currently passing the credentials from the client over clear text.  We should, instead, really pass them over the authorization header.
That being said, I would rather change the client library to send authentication over the headers per RFC 2617.  I don't want to expose the password from the cli ever, as this is a security risk.

@corylanou -- does this mean you don't want to merge this, and would rather work the issue another way?

@otoolep I think we need to merge it for now as it's blocking a client.  @benbjohnson is also aware of this discussion.  We probably need to address this post 0.9.0.

@otoolep I would rather fix the issue I talked about in another PR, and then close this one.  I don't think we want to send out the password do we?

No, we don't want to send it out.
Thanks @apoydence -- we want to fix this in another way, we'll take a stab at it, or your contribution along the lines of @corylanou 's is more than welcome.


update dependencies

My main reason for this is for updating vinyl-fs, which use the latest glob-stream, which uses the latest glob, which allows for the ignore option to be passed into gulp.src.
Went ahead and updated all the latest other dependencies as well

Some of this will be done in Gulp 4, not master: check the 4.0 branch

Yep looks like vinyl-fs was updated in the 0.4 branch, and the semver dependency was removed. The devDependencies weren't updated but thats not important. How soon is 0.4 scheduled to be released?

No schedule, it'll be released when it's done.
Check these issues if you want to contribute to speed the process up: https://github.com/gulpjs/gulp/issues?q=is%3Aopen+is%3Aissue+label%3Agulp4

Any chance this could be merged then and have 3.9.1 release?

No, there are breaking changes in vinyl-fs.  Sorry, but that's not how semver works.  The semver range for vinyl-fs will be restored in the 4.0 branch before release


Add support for text snippets

From<EMAIL_ADDRESS>on 2011-03-16T11:31:10Z
Spyder absolutely rocks but it has one glaring omission -- no support for text snippets.  Please, please, please add this functionality.
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=588

From<EMAIL_ADDRESS>on 2011-03-16T10:56:52Z
You assume everyone knows what a text snippet is.  Can you link to a definition of this functionality?

From<EMAIL_ADDRESS>on 2011-03-16T11:27:32Z
Thank you for pointing that out to me.  What I mean by code snippets is the functionality included by both gEdit and TextMate where you can type a short string and then hit tab (or some other keyboard shortcut) which will replace the string with some user defined text.  For example, in my TextMate I have the following snippet:
pdb ==> hit tab (cursor is at the end of "pdb") ==> pdb replaced with import pdb; pdb.set_trace();
Another example from TextMate (or gEdit for that matter) is when you type "class" and hit tab, an outline of a generic class will be created:
class ==> hitting tab (cursor is at the end of "class") results in,
class MyClass(object):
"""docstring"""
def init(self, arg):
pass
I think the TextMate/gEdit model is really good -- a user creates a small template or outline of the text they want to insert and sets an option specifying the input text and a keyboard trigger.  Just like TextMate/gEdit there should be a way of navigating through the various parts of a snippet via the keyboard, specifying some transformation to occur as the user types.  To give an example of what this would look like, in gEdit, the template for the "class" example is:
class ${1:ClassName}(${2:object}):
def init(self${3:,}):
${4:pass}
$0
Without knowing any of the particulars, it is reasonably clear what the above template is trying to accomplish.  For a more detailed explanation of what I mean by snippets, check out gEdit or TextMate.  A good link is for an introduction to gEdit snippets is http://www.tuxradar.com/content/save-time-gedit-snippets If its not already apparent TextMate (on the mac) and gEdit (on linux) are my two primary editors.  I think Spyder has a lot of promise and would like to switch to it, but without some of the basic, indispensable tools of modern text editors (like snippets) I am hesitant to make the switch.  Please add in this functionality.  Thank you all in the Spyder community for your time.

From<EMAIL_ADDRESS>on 2011-03-16T13:37:53Z
I'm not a dev on this project, but that does seem like a handy feature.  It gets my vote!

From pierre.raybaut on 2011-03-16T15:11:26Z
That is an interesting idea indeed.
But note that implementing such feature requires some work.
I'll think about it.
Summary: Add support for text snippets
Status: Accepted
Labels: -Type-Defect Type-Enhancement

From<EMAIL_ADDRESS>on 2011-03-18T00:15:49Z
I posted a similar issue with the same idea some time ago https://code.google.com/p/spyderlib/issues/detail?id=235

From pierre.raybaut on 2011-03-18T02:08:35Z
issue #235 has been merged into this issue.

From pierre.raybaut on 2011-05-16T01:29:31Z
Labels: Cat-Editor

From<EMAIL_ADDRESS>on 2011-03-28T08:35:28Z
Definitely a must have feature; it is boring having to repeat the same code over and over again when you want to define new functions, classes, methods, etc.
This way, you don't need to worry about typos, when you're typing in a hurry or when you are not focused; it saves time.

From pierre.raybaut on 2011-05-18T00:31:48Z
Status: ContributorNeeded

From<EMAIL_ADDRESS>on 2012-02-19T17:04:07Z
Would love to see the feature in this IDE ... really usefull and time saver.

From<EMAIL_ADDRESS>on 2012-01-01T17:47:48Z
Why re-implement the same functionality in every text editor when you can just implement it for ALL text inputs with something like AutoHotkey?

From<EMAIL_ADDRESS>on 2012-07-26T21:43:03Z
or even as komodo-edit does with a tools menu, that you can create/edit your own snippets that can be clicked to insert that text snippet (or dialog script getting some variables for the text) at the cursor's current location. and "built-in" variables could be called on in the snippets (such as current time/date, username, ect) for filling out your shebang/title/comments/license
i think clickable snippets (even of complex scripts) would be easier to program in without needing to monitor every typed character and matching to a dictionary... (although, i like that functionality too...
a tip to perhaps help development, parts of autokey (automation for linux desktops) has examples of matching text-typed and trigger characters to insert snippets (it uses Xlib, but only because it must interact with other windows)...
for now, anyone else looking to add such functionality themselves (using software outside the IDE) can use snippet/automation scripts such as:
for windows:
texter http://lifehacker.com/software/texter/lifehacker-code-texter-windows-238306.php autohotkey (texter is written in this lang) http://www.autohotkey.com/ autoit (similar split project. free but not open source.) http://www.autoitscript.com/site/autoit/ for linux - there are a few, but the best i have seen is autokey: https://code.google.com/p/autokey/ mac - sorry, i dont know a free version but there is the following commercial ones: http://www.ettoresoftware.com/products/typeit4me/ http://www.ergonis.com/products/typinator/

From<EMAIL_ADDRESS>on 2014-02-27T04:32:01Z
I'd also love to see this feature and have implemented a simple hacked editor such that widgets.editor.trigger_code_completion will also look through a dict of snippets.
In principle the dict can be loaded from a separate .py, .json, .xml or whatever format is deemed most suitable for storing snippets...
It seems to work well for me though it's probably a bit rough around the edges.

From pierre.raybaut on 2012-03-18T14:12:23Z
Status: HelpNeeded
Labels: -Type-Enhancement Type-Enh

From ccordoba12 on 2014-02-28T05:16:03Z
I'm very interested to see this in Spyder, It'd be really cool to have it! :)
Please send us a pull request against our bitbucket repo https://bitbucket.org/spyder-ide/spyderlib/ so we can what you've done and start give you feedback.
By the way, what format are using for snippets, texmate one?

From<EMAIL_ADDRESS>on 2014-02-27T04:33:36Z
This issue is over a year old - is there any interest in this functionality or has it been superseded?

From<EMAIL_ADDRESS>on 2014-02-28T14:32:05Z
Hi I just submitted my pull request - as I mentioned the approach is still
very rough and seems hackish to me, so all feedback and suggestions on how
to fit in better with the current spyderlib framework are much appreciated.
My pull request has two commits; the first is the very simple snippet
functionality such that pressing tab after entering a snippet keyword
expands the snippet at that point.
Today I worked on adding in simple token support (using basic vim snipmate
i.e.~ texmate syntax), such that e.g. {1:some text} will be replaced by
some text by default, but the editor will also be in "snippet mode" that
allows the user to cycle through tokens in the snippet and change the
default values.

@rlaverde do you have some ideas here?

You can take a look at this old PR to start with:
https://bitbucket.org/spyder-ide/spyderlib/pull-requests/23/added-snippet-functionality-solves-588/diff


ARROW-17933: [C++] SparseCOOTensor raises error when created with zero elements

This is to resolve ARROW-17933.

@pitrou I added c++ tests for a case where we create a sparse tensor from a dense one filled with zeros.

@pitrou is there something left to address here?

Closing because it has been untouched for a while, in case it's still relevant feel free to reopen and move it forward 👍

This is waiting for review.

We are actively using the sparse tensor classes and would greatly appreciate the fix.  Thanks!

@rok who are you waiting review from? Only @AlenkaF ? @pitrou is probably unable to review this one on a short term, but maybe @westonpace can take a look

I was waiting for @pitrou. I suppose @AlenkaF, @westonpace or @jorisvandenbossche would be good candidates.


Revert default in-memory for small datasets

Close #2458

Thank you for this welcome change guys!


Remove nightly Rust clippy test

Description of changes:
All PRs currently fail due to a Clippy lint:
warning: assigning the result of `Clone::clone()` may be inefficient
   --> mls-rs/src/tree_kem/tree_hash.rs:193:13
    |
193 |             filtered_sets[n] = filtered_sets[p as usize].clone();
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `clone_from()`: `filtered_sets[n].clone_from(&filtered_sets[p as usize])`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assigning_clones
    = note: `#[warn(clippy::assigning_clones)]` on by default

Trying to fix this as recommended results in a compilation error since we cannot call a mutating method on filtered_sets while we also read from it…
In general, Nightly Rust is a moving target (moving faster much than stable) and as such, it’s inconvenient to have Clippy fail builds due to new (experimental) lints being enabled there.
There are already two Clippy runs (using stable Rust) in the native_build.yml file, so I simply removed the unstable Rust run from no_std__build.yml.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT license.

I fully agree that running nightly causes problems -- but why remove clippy altogether? We can run stable clippy

Closing since #108 covered this

I fully agree that running nightly causes problems -- but why remove clippy altogether? We can run stable clippy

It looked like the Clippy checks here were redundant with the ones in the normal build (I might be wrong, but I don't think a no_std build will trigger other lint warnings than a regular build).
But I'm glad it's fixed now!


Remove RangeAddress from Config

The RangeAddress is duplicate information.
This should be removed from the configuration and instead computed based on the address bits.
Probably the easiest thing is to simply compute it in the getter:
https://github.com/relab/bandwidth-incentive-simulation/blob/72d820360bff351cba876005db3ae23a8d90e5bc/config/get_variables.go#L108

fixed here 2a193be


Only one running ballot

Feature Description
Currently multiple ballots are allowed to be running.
Create and Edit endpoints should be edited so that only one ballot is running at a time.
Is this feature valuable for other users as well and why?
Only affects admins

This can be closed right?


Syntax sugar for prefix-style type parameter lists.

This is a proposal for type parameter lists that come well before the
actual generic items. Example:
type <T: Unwieldy+Traits+Go+Here,
      U: Even+More+Traits> {
  fn foo(t: T) -> U { ... }
  fn bar(u: U) -> T { ... }
}

Tracking issue for postponed PR #122

Where clauses have been pretty successful, and so I don't think there is quite the motivation for this feature any more. I propose we close this issue, any objections?


Auto Redirect if from login page if user is Logged in

Core Library
MSAL.js v1 (@azure/msal or msal)
Core Library Version
2.21.0
Wrapper Library
MSAL React (@azure/msal-react)
Wrapper Library Version
None
Description
1.Whenever I see my output after saving by writing something wrong in my code and then I fix it and then see output so our login page is shown sometimes.
2.Whenever I change the tab then our login page is shown sometimes.
I login or refresh to remove it so then it goes away
It would be great if someone can help here?
MSAL Configuration
No response
Relevant Code Snippets
No response
Identity Provider
No response
Source
External (Customer)

@Mohdaqib1 I unfortunately don't understand your question, can you please provide more details? Code snippets showing how you are using the library and a brief explanation of what is happening vs what you expect to happen and steps to reproduce would help clarify. Thanks!

Even after being logged in if someone writes a login inside the url, it redirects to the login page.

@Mohdaqib1 I'm sorry but I still don't understand. Can you please provide the following:

Code snippets showing how you are using the library
Steps to reproduce the issue and/or a short video showing the behavior


Reporting framework

Self-contained reports (reportlets) - html generation functions built into interfaces (such as AntsRegistration, BET etc.)
InputSpec mixin
generate_report - Boolean
OutputSpec mixin
html_report - File
Interface mixin
_generate_report()
Report aggregator:

Takes two inputs: list of headers (["T1w preprocessing", "task: N-back, run: 0 preprocessing"]) and a list of lists of reportlets (html files).
Concatenates all reportlets prefixing each list with a header.
Outputs a single HTML file.

In the functional workflow:

aggregate all reportlets from each workflows using a Merge node
generate section header using the input file

Before feeding to the aggregator:

aggregate lists of reportlets from all tasks/runs using a JoinNode; do the same for section headers; itersource should be set tot epi (see: https://github.com/poldracklab/fmriprep/blob/78424b0facc2a102e75d87c828574e22fbb5b66e/fmriprep/workflows/base.py#L83)
combine with the list of reportlets from the anatomical workflow; add a header for it

If this works well we will merge this into Nipype master.

Will need to add the overloaded input/output specs and interfaces to niworkflows and update imports accordingly.

@rwblair - actually, that is potentially the best entry point for us to implement and test this. niworkflows is still very small, we can set very simple smoke tests, etc.

Moved to niworkflows


Objective-C: BoringSSL build error ('openssl/arm_arch.h' file not found)

When I build a gRPC client for an iOS device, I get the following build error:
Lexical or Preprocessor Issue
'openssl/arm_arch.h' file not found'
crypto.c
This error does not occur for simulator builds.

Do you have https://github.com/grpc/grpc/pull/7264 ?
On Saturday, July 9, 2016, Tim Burks<EMAIL_ADDRESS>wrote:

When I build a gRPC client for an iOS device, I get the following build
error:
Lexical or Preprocessor Issue
'openssl/arm_arch.h' file not found'
crypto.c
This error does not occur for simulator builds.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/grpc/grpc/issues/7299, or mute the thread
https://github.com/notifications/unsubscribe/AQhcKpslBcni0m5Nbf7iZKTF0Wj5DDmNks5qT_QpgaJpZM4JIrtK
.

I don't think so.
I was pulling from your protobuf_import_issue7219 branch, which doesn't appear to have @jcanizales'  commit: https://github.com/grpc/grpc/pull/7264/commits/ccb184068d21758f905ecc3bfd42a2f9626dd5ee

Yeah you'll need to add this to your Podfile for the moment :( https://github.com/grpc/grpc/issues/7262#issuecomment-231508328

BoringSSL 5.0 is pushed now with the fix.


[ENHANCEMENT] - Add a Loader while api call is made for a movie

There is nothing visible on the site currently to let the user know that a process is happening, so need to add a loader for that.

Completed by #15

When Movie Name is not found, the loader keeps showing


Day widget: set text color to white for colored boxes.

check the color of the box, if activity is not null and color is not default then text color should be white.

I have fixed the color thing, now it shows white color for the boxes with activity!

I have fixed this issue with PR #43


Fix compilation errors

Build fails with  "Command SwiftEmitModule failed with a nonzero exit code" error
1.	Apple Swift version 5.7.1 (swiftlang-<IP_ADDRESS>.3 clang-14<IP_ADDRESS>)
2.	Compiling with the current language version
3.	While evaluating request TypeCheckSourceFileRequest(source_file "/Users/danil/Downloads/swift-url-routing-swift-5-7/Sources/URLRouting/Body.swift")
4.	While type-checking 'Body' (at /Users/danil/Downloads/swift-url-routing-swift-5-7/Sources/URLRouting/Body.swift:4:8)
5.	While type-checking 'init(_:)' (at /Users/danil/Downloads/swift-url-routing-swift-5-7/Sources/URLRouting/Body.swift:28:10)
6.	While evaluating request InterfaceTypeRequest(URLRouting.(file).Body.init(_:)@/Users/danil/Downloads/swift-url-routing-swift-5-7/Sources/URLRouting/Body.swift:28:10)
7.	While evaluating request GenericSignatureRequest(URLRouting.(file).Body.init(_:)@/Users/danil/Downloads/swift-url-routing-swift-5-7/Sources/URLRouting/Body.swift:28:10)
8.	While evaluating request InferredGenericSignatureRequest(URLRouting, <Bytes where Bytes : Parser, Bytes.Input == Data>, <C>, URLRouting.(file).Body.init(_:)@/Users/danil/Downloads/swift-url-routing-swift-5-7/Sources/URLRouting/Body.swift:28:10, {}, {(C, C)}, 0)
9.	While evaluating request InferredGenericSignatureRequestRQM(<Bytes where Bytes : Parser, Bytes.Input == Data>, <C>, URLRouting.(file).Body.init(_:)@/Users/danil/Downloads/swift-url-routing-swift-5-7/Sources/URLRouting/Body.swift:28:10, {}, {(C, C)}, 0)

Hi @dankinsoid! Thanks for the PR. Could you take some time to update its description with what it intends to fix, i.e. what the problem you were seeing was and how to reproduce it?

@stephencelis done

@dankinsoid Sorry, can you also provide steps to reproduce and the environment you're in (macOS, targeted OS, Xcode, etc.)? Might be easy for me to figure out when I look into this but just in case it isn't. 😅

@stephencelis I reproduce it on two computers, iMac M1 macOS Ventura 13.0 and macbook Intel macOS 12
Xcode 14.1, swift 5.7.1, just trying to build the package brach swift-5-7

Ah gotcha, I missed this was for the unreleased 5.7 branch. Will try to take a look soon, thanks!

@stephencelis yes, I want to use swift-url-routing in VDFlow so I'm interested in 5.7 version

@dankinsoid Sorry this lingered. Did you find the updated swift-5-8 branch? That should be building well right now.

@stephencelis yes now it builds, thank you


REFACTOR: rewrite CMakeLists.txt for better inlcude and reuse

The rewrite uses more cmake build-in functions and build-in automaticly generated
variables to allow better generic reuse.
This is based on the cmake example project package-example

cmake  files are installed to
<install_prefix>/lib/cmake/nlohmann_json/ for best support on
most systems
include path is set to include  for usage as #include <nlohmann/json.hpp>

Motivation
The motivation is the reintegration of nlohmann_json into the cmake package-manager hunter
and to avoid possible naming collissions with other packages( e.g. jsoncpp, etc)
compile install and run with unit tests
dan@kay ~/git/json/build (git)-[change_installed_cmake_include_path] % rm -rf ./* && rm -rf ../test_install/* && cmake ..  -DCMAKE_INSTALL_PREFIX=../test_install -DJSON_BuildTests=ON && make -j8  && make install
zsh: sure you want to delete all 8 files in /home/dan/git/json/build/. [yn]? y
zsh: sure you want to delete all 2 files in /home/dan/git/json/build/../test_install [yn]? y
-- The C compiler identification is GNU 7.1.1
-- The CXX compiler identification is GNU 7.1.1
[....]
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dan/git/json/build
Scanning dependencies of target catch_main
[  2%] Building CXX object test/CMakeFiles/catch_main.dir/src/unit.cpp.o
[...]
[100%] Built target json_unit
make -j8  157.98s user 5.96s system 580% cpu 28.240 total
[  2%] Built target catch_main
[100%] Built target json_unit
Install the project...
-- Install configuration: ""
-- Installing: /home/dan/git/json/test_install/include/nlohmann
-- Installing: /home/dan/git/json/test_install/include/nlohmann/json.hpp
-- Installing: /home/dan/git/json/test_install/lib/cmake/nlohmann_json/nlohmann_jsonConfig.cmake
-- Installing: /home/dan/git/json/test_install/lib/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake
-- Installing: /home/dan/git/json/test_install/lib/cmake/nlohmann_json/nlohmann_jsonTargets.cmake
dan@kay ~/git/json/build (git)-[change_installed_cmake_include_path] % ctest -j2
Test project /home/dan/git/json/build
    Start 1: json_unit_default
    Start 2: json_unit_all
1/2 Test #1: json_unit_default ................   Passed   12.12 sec
2/2 Test #2: json_unit_all ....................   Passed  223.00 sec

100% tests passed, 0 tests failed out of 2

Total Test time (real) = 223.01 sec
ctest -j2  234.59s user 0.52s system 105% cpu 3:43.01 total

Usage on an external project after installation
CMakeLists.txt
cmake_minimum_required (VERSION 3.0)
project(test_json)
find_package(nlohmann_json CONFIG REQUIRED PATHS /home/dan/git/json/test_install/)
add_executable(main main.cpp)
target_link_libraries(main nlohmann_json)

main.cpp
#include <iostream>
#include <nlohmann/json.hpp>
int main (int argc, char** argv) {
  nlohmann::json j2 = {
    {"pi", 3.141},
  };
  std::cout << j2 << std::endl;
  return 0;
}

I'm looking forward on comments and thoughts about the changes.
Many thanks in advance

Coverage remained the same at 100.0% when pulling f434942371c2da33dc7f1f263e5c377cb6932d13 on dan-42:change_installed_cmake_include_path into c819a2d732cf5ae4baea883164d78cdfc2b3931a on nlohmann:develop.

Thanks a lot!

awesome thank you


CIP-0015 - Map keys are unsigned int values not strings

My suggestion (https://github.com/cardano-foundation/CIPs/pull/329#pullrequestreview-1111493718) was to include this with #329, but maybe I didn't suggest it literally enough.  Anyway now that we have two PR's for the same purpose please let me suggest that all discussion of this PR continue in https://github.com/cardano-foundation/CIPs/pull/329... since we would implement either both these changes or neither, and the considerations are identical for both.


Adding official support for Fedora

Hello,
The installer already works fine for Fedora as it is already detected as a redhat installation (through /etc/redhat-release). And when using it, it just works fine. No error or tweaks to do, just the script trying to installing epel, failing to do so, but, because all needed packages are already in the official repo, continuing with no issue whatsoever!
So, hey, why not just making it official and having this script officially support Fedora?
¯\_(ツ)_/¯

The only reason why Fedora has not been officially supported is because of its fast release cycle compared to the small number of users running the distro.
So I "support" the distro in the sense that I've even submitted Fedora-specific commits but I don't advertise Fedora support. Just no promises are made. For other distros (Debian, Ubuntu, CentOS), support is very proactive and I always aim to have the script working with their next major releases even before they officially release the stable version.
I just don't want to commit to the same level of support for less popular distributions like Fedora or Amazon Linux and I don't want users to expect it. That of course will not prevent you or anyone else from using my work in Fedora or elsewhere.
That said, Fedora is probably the most popular distribution of those officially not supported. Global statistics don't look very convincing, but maybe is
Fedora more popular with small users running their own servers, users which are not included in those statistics?
There are nearly 500 users watching this issue tracker. If you run Fedora and would like official support for your distribution, please reply to this issue and let me know. If a reasonable amount of people reply to this message, I'll reconsider it.

It's ok, I was just asking and I just thought that you weren't aware of the fact that it worked well and that it saved me a whole afternoon of configuration (Thanks for that btw :D)!
Also, I do agree that Global Statistics isn't really a good source as no one would use Fedora for hosting production websites, that would be awful. But for me and other small users as you cited who use it for their private server for hosting things like VPNs and making some tasks remotely or deploying development websites, it surely is more popular than RHEL for example.
I immediately thought of this image released by Matthew Miller, the head of the Fedora Project, in this conference in 2016 about the ISO download's metrics of Fedora "Flavours", where Servers and Clouds (red (dark & light) and yellow (dark)) do represent a pretty big portion of the cake (~20% of all Fedora ISO's downloads):


Feature: Add support for MQTT

Hi there,
in a lot of my projects in the IoT space I tend to work with RabbitMQ and Kafka but also MQTT. I would really appreciate a framework such as yours, that combine these protocols into one.
Thank you very much for your work!

Thank you for your kind words! We'll support for MQTT for sure in the future, but we should finish with the brokers already in backlog at first 😞

@Timtam94 what lib are you currently using for MQTT?

Thanks for your reply! I am currently using paho-mqtt

How stable it is? It looks not well maintained

As I know, this is the only one lib for MQTT in python
Probably, it has no commits last time cuz MQTT has no changes for decades

Indeed, I am not aware of another library than that. So far I had no issues with it.
In the industrial sector, MQTT is one of the major protocols, despite it's age.

There's also an async wrapper for paho: https://github.com/sbtinstruments/aiomqtt

There's also an async wrapper for paho: https://github.com/sbtinstruments/aiomqtt

Yep, I known about it But I am not sure about using extra dependencie... Probably, we should (and can) wrap paho by ourselves the same way

aiomqtt's dependencies are minimal. Here they are from pyproject.toml
[tool.poetry.dependencies]
python = "^3.8"
paho-mqtt = "^2.1.0"
typing-extensions = {version = "^4.4.0", markers = "python_version < '3.10'"}

Paho recently had a v2 release which aiomqtt is using.  The aiomqtt team is careful not to couple too deep into paho client as to ensure aiomqtt remains easy to maintain. The wrapper is light but non trivial. aiomqtt is likely worth coupling for this reason.

I know, it's not native mqtt, but you can already use mqtt via the RabbitMQ MQTT Plugin.

This looks great too.
https://github.com/agronholm/mqttproto

This looks great too. https://github.com/agronholm/mqttproto

Yeah, but it is still imperative syntax
Is it really maintained by the man, created anyio and aspcheduler? I think, we can contact with him and use this project as an underline client this case


THRIFT-4448: Golang: do something with context.Context

This patch wires through context.Context such that it can be used in in http.Request's WithContext method. This allows Thrift HTTP requests to canceled or timed out via the context.
This patch breaks support for go<1.7 so it's not ready to ship, but I'm hoping to get some direction on this. When does Thrift expect to drop support of go1.7? It looks like the current solution is to duplicate files that need to use golang.org/x/net/context and add a // +build !go1.7 but duplication seems unsustainable as the context package is imported more places.
Go 1.7 was released 15 August 2016. Given Golang has had significant performance improvements in most dot releases, I suspect most production services stay reasonably up to date. Here at Periscope/Twitter we're on go1.9.1, and we're a fairly large organization.

It would be nice to add a client test using e.g context.WithTimeout(). Something like:

In the handler function, sleep for 100ms before returning
In the client, call the RPC with context.WithTimeout(context.Background(), 50*time.Millisecond)
Check if ctx.Err() == context.Canceled

Otherwise LGTM.

@dcelasun I'm happy to do that. Though in my experience, tests that depend on timing will find a way to be flakey, especially in CI.
If you think the value of testing this is worth the risk of introducing a flakey test, I'm happy to write it.

I think it's worth it. The context passes through most parts of the stack and having a test to ensure it's propagated properly feels imporant.
Also, we can at least reduce the flakiness with longer timers, say 2s sleep and 1s timeout. The test suite already takes quite a bit of time to run, an additional second should be fine.

@dcelasun: done, could you take another look?

The test fails with:

src/common/context_test.go:45: server.Close undefined (type *http.Server has no field or method Close)

Server.Close() was added in 1.8 but the test uses 1.7. You can just remove that line since it's not a long running process, or you can make it conditional with runtime.Version.

@dcelasun I don't think I can do a runtime.Version check since the code is failing at compilation time. I'll just remove that line.

That’s what I get for reviewing code before fully waking up :)

A different failure this time:
--- FAIL: TestHttpContextTimeout (0.00s)
	context_test.go:74: Unexpected error: dial tcp <IP_ADDRESS>:9096: getsockopt: connection refused

Hmm yeah must be a race condition with the test server starting in the go routine. Any thoughts on how to wait for it to start up? I guess I could use a wait group to wait at least until goroutine code begins to execute. Or I could have some retry logic that tries to contact the server for a second before failing

I think the only one-liner fix is a 500ms sleep before client.TestVoid(). Retry logic would work as well.

It's not clear to me what went wrong in the Travis build. Trusty, for example, seems to have stack overflow'd while installing ocaml. Is there a way to retrigger a build without pushing another commit?
[default] synchronized from https://opam.ocaml.org
Stack overflow
[ERROR] Initialisation failed
Fatal error:
Stack overflow
The command '/bin/sh -c apt-get install -y --no-install-recommends `# OCaml dependencies`       ocaml       opam &&     opam init --yes &&     opam install --yes oasis' returned a non-zero code: 1

The only other way is for someone with Travis crendentials to manually trigger it. I think it's faster if you push something trivial (whitespace etc.)
Thrift's CI builds are unfortunately very hit and miss :/

It bugged me to have a time.Sleep in the test so I wrote the retry logic :)

Looks much cleaner!

Would you mind squashing this into a single commit?

@jeking3 done


Mark failing test as xfail

The Dashboard is showing a greater than 10% activity count disparity with the Datastore.
Marking as xfail until discussed.
https://travis-ci.org/IATI/IATI-Website-Tests/builds/304614064
=================================== FAILURES ===================================

____________ TestGlobalConsistency.test_activity_count_consistency _____________

self = <test_global_consistency.TestGlobalConsistency object at 0x7fce5e163d68>

datastore_api_activity_count = 729676, dash_home_unique_activity_count = 625831

    def test_activity_count_consistency(self, datastore_api_activity_count, dash_home_unique_activity_count):

        """

            Test to ensure the activity count is consistent, within a margin of error,

            between the datastore and dashboard.

            """

        max_datastore_disparity = 0.1

        assert datastore_api_activity_count >= dash_home_unique_activity_count * (1 - max_datastore_disparity)

>       assert datastore_api_activity_count <= dash_home_unique_activity_count * (1 + max_datastore_disparity)

E       assert 729676 <= (625831 * (1 + 0.1))

tests/test_global_consistency.py:146: AssertionError

==================== 1 failed, 271 passed in 57.01 seconds =====================

Merging since it's an xfail change for something that isn't going to be fixed immediately.

This is caused by the number of activities in the Dashboard suddenly dropping by ~100k
http://dashboard.iatistandard.org/activities.html

This looks to have been caused by Sweden's ~80k activities not being included for some reason.


Suggest flex: 1 for embedded navigator

In the documentation for Nesting a Navigator in a Component suggest using flex: 1 if the navigator  renders as blank.
The tutorial might be used by beginners who don't fully understand React render.
This is a modified version of PR #2224 by  https://github.com/benoitclaveau

Thanks!


Error when exporting the tasks as geojson

I get the following error when I try to export tasks from my challenge as geojson:
ERROR: missing FROM-clause entry for table \"tr\"\n  Position: 3157
https://maproulette.org/api/v2/challenge/view/4208?status=1,2,3,4,5,6&priority=0,1,2&reviewStatus=0,1,2,3,4,-1

This issue will be resolved by checkin for the API https://github.com/maproulette/maproulette2/pull/596. Once it is merged and deployed which will be a little later today then this will be resolved.

This should now be resolved. Please reopen the issue if you continue to experience problems.

thanks!


Add auto-update workflow

which runs go-makefile-maker.
In combination with renovate this allows us to do less Ops and more Dev.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 7.763%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
34

Relevant Lines:
438

💛  - Coveralls


[Quest] Sync-Up records to HAPI not working

Describe the bug
Newly created resources in app are not being synced to HAPI
To Reproduce
Steps to reproduce the behaviour:

Go to Family register
Add a new family with new members
Press sync
On Sync complete , reinstall app and search for newly previously created family plus members

Expected behavior
All new resources should be synced to HAPI and synced back to the app
Screenshots
N/A
Smartphone (please complete the following information):
Check both on Emulator and Physical Device
Additional context

Newly created patients (family members) in Household and ANC register also applicable to this bug issue

@f-odhiambo is this for Family entities only or any type of data collected?

I think this one is specific for Patient resources. I think it will extend to CarePlans and Tasks, given these resources are only generated to be attached to an existing patient or group(household). Might be a tricked dow effect that also neds to be validated

I think this one is specific for Patient resources. I think it will extend to CarePlans and Tasks, given these resources are only generated to be attached to an existing patient or group(household). Might be a tricked dow effect that also neds to be validated

Do we have any errors thrown by the app?

I think this one is specific for Patient resources. I think it will extend to CarePlans and Tasks, given these resources are only generated to be attached to an existing patient or group(household). Might be a tricked dow effect that also neds to be validated

Do we have any errors thrown by the app?

At the moment, the app syncs, gives a correct success message but on interrogation the resources are not resident in HAPI FHIR server  in use

@f-odhiambo According to my findings on this, once we are downloading the data from sync, we are filtering households on the basis of their managing entity but in our current flow when we are creating a new household, we don't have any household members assigned and hence no managing entity.
Later on, I tested by creating a household and then adding a member inside that household and making that member the family head as well, however on inspection of the database, I can see that even though we created a member for that household and made it the family, our Group is not updated and our group has no Patient or Managing entity assigned to it.
Here is our Group after I've added a member  to it as well
{"resourceType":"Group","id":"7a7ce3b8-6b3c-4867-a989-ee1cc1f26e62","meta":{"lastUpdated":"2022-09-02T15:55:14.094+05:00"},"identifier":[{"use":"official","value":"12345","period":{"start":"2022-09-02T15:54:59+05:00"}},{"use":"secondary","value":"948fa815-92de-4e5f-96cd-60f194a90136","period":{"start":"2022-09-02T15:54:59+05:00"}}],"active":true,"type":"person","code":{"coding":[{"system":"https://www.snomed.org","code":"35359004","display":"Family"}]},"name":"Jim"}
We can notice that it is not saving any information of the newly added member, the json for the newly added patient is as follows:
{"resourceType":"Patient","id":"0e57d831-0b95-470d-a5b0-aafd467b18ca","meta":{"lastUpdated":"2022-09-02T15:56:58.550+05:00"},"identifier":[{"use":"official","value":"1122","period":{"start":"2022-09-02T15:56:58+05:00"}},{"use":"usual","value":"2211","period":{"start":"2022-09-02T15:56:58+05:00"}},{"use":"secondary","value":"02fe36cf-91f1-4fa7-89d2-50cd233304d9","period":{"start":"2022-09-02T15:56:58+05:00"}}],"active":true,"name":[{"use":"official","text":"A","family":"B","given":["JIm Head"]}],"gender":"male","birthDate":"1994-09-23","address":[{"use":"home","type":"physical"}]}
I think @Rkareko worked on fixing a related issue in this PR where we needed to refresh the household profile with the newly added member but I'm not sure how much progress we made on that so far.
So with these recent finding it looks like our Group resource is not updating once we are assigning it a new member and managing entity, and on sync download, we are filtering groups based on the their managing entities

@qaziabubakar-vd this is interesting. I think what you just described above is a bug.  Does the app UI display the Family members?

@f-odhiambo am I right to assume that this is on main?

@dubdabasoduba this issue is on main. Also, @Rkareko was working on the issue on refresh the family profile once a new member is created


❇ : Add checks for workflow action pinning

Please check if the PR fulfills these requirements

[X] Tests for the changes have been added (for bug fixes / features)
[X] PR title follows the guidelines defined in  https://github.com/ossf/scorecard/blob/main/CONTRIBUTING.md#pr-process

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
feature

What is the current behavior? (You can also link to an open issue here)
We don't check for dependency pinning in github workflows

What is the new behavior (if this is a feature change)?
Check for dependency pinning in github workflows

Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)
no

Other information:

Thanks, I am going to take a look at it.

Completely forgot. Any new check requires docs to be updated.
https://github.com/ossf/scorecard/blob/main/checks/checks.yaml


The sidebar did not collapse automatically after clicking on a SidebarItem.

Describe the bug
On narrow screen devices, the sidebar did not collapse automatically after clicking on a SidebarItem.

Reproduction
See: https://codesandbox.io/p/sandbox/ancient-tdd-zlh9qn?file=%2Fisland-app%2Fdocs%2F.island%2Fconfig.ts%3A44%2C7
Expected behavior
On narrow screen devices, the sidebar collapses automatically after clicking on a SidebarItem.
System Info
-

Additional context
No response
Validations

[X] Read the docs
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.

Yes, we optimize this behavior by closing the sidebar after clicking other sidebar item. PR welcome!


[SQA]-THREAD Lock-Door Command throws the Failure Response for the PINCODE Argument.

Problem:
While Executing TC-DL-2.2, The lock-door command Throws FAILURE response for the  PinCode Argument.
Expected behavior - Command should get SUCCESS response .
Actual behavior - Command  gets Failure response .
Steps to reproduce -./chip-tool doorlock lock-door 71 1 --timedInteractionTimeoutMs 1000 --PinCode 7896
Commit used :   11587f5bf0bb9e621edd4c867c0bc942d804d1ce
Platform : THREAD- LOCK-APP
Reference:
https://github.com/CHIP-Specifications/chip-test-plans/blob/master/src/cluster/door_lock_Cluster.adoc
Logs:

[1652341619.526828][29934:29939] CHIP:EM: Removed CHIP MessageCounter:5057605 from RetransTable on exchange 7996i
[1652341619.526885][29934:29939] CHIP:DMG: ICR moving to [ResponseRe]
[1652341619.526964][29934:29939] CHIP:DMG: InvokeResponseMessage =
[1652341619.527009][29934:29939] CHIP:DMG: {
[1652341619.527053][29934:29939] CHIP:DMG: 	suppressResponse = false,
[1652341619.527100][29934:29939] CHIP:DMG: 	InvokeResponseIBs =
[1652341619.527157][29934:29939] CHIP:DMG: 	[
[1652341619.527201][29934:29939] CHIP:DMG: 		InvokeResponseIB =
[1652341619.527272][29934:29939] CHIP:DMG: 		{
[1652341619.527320][29934:29939] CHIP:DMG: 			CommandStatusIB =
[1652341619.527379][29934:29939] CHIP:DMG: 			{
[1652341619.527433][29934:29939] CHIP:DMG: 				CommandPathIB =
[1652341619.527500][29934:29939] CHIP:DMG: 				{
[1652341619.527562][29934:29939] CHIP:DMG: 					EndpointId = 0x1,
[1652341619.527632][29934:29939] CHIP:DMG: 					ClusterId = 0x101,
[1652341619.527737][29934:29939] CHIP:DMG: 					CommandId = 0x0,
[1652341619.527794][29934:29939] CHIP:DMG: 				},
[1652341619.527870][29934:29939] CHIP:DMG:
[1652341619.527939][29934:29939] CHIP:DMG: 				StatusIB =
[1652341619.528032][29934:29939] CHIP:DMG: 				{
[1652341619.528117][29934:29939] CHIP:DMG: 					status = 0x01 (FAILURE),
[1652341619.528201][29934:29939] CHIP:DMG: 				},
[1652341619.528293][29934:29939] CHIP:DMG:
[1652341619.528367][29934:29939] CHIP:DMG: 			},
[1652341619.528447][29934:29939] CHIP:DMG:
[1652341619.528514][29934:29939] CHIP:DMG: 		},
[1652341619.528592][29934:29939] CHIP:DMG:
[1652341619.528650][29934:29939] CHIP:DMG: 	],
[1652341619.528722][29934:29939] CHIP:DMG:
[1652341619.528781][29934:29939] CHIP:DMG: 	InteractionModelRevision = 1
[1652341619.528839][29934:29939] CHIP:DMG: },
[1652341619.528974][29934:29939] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_0000 Status=0x1
[1652341619.529051][29934:29939] CHIP:TOO: Error: IM Error 0x00000501: General error: 0x01 (FAILURE)
[1652341619.529135][29934:29939] CHIP:DMG: ICR moving to [AwaitingDe]

DUT LOG :
ubuntu@ubuntu:~/apps$ ./chip-tool doorlock lock-door 1 1 --timedInteractionTimeoutMs 1000 --PinCode 7896
[1652703038.246901][3318:3318] CHIP:DIS: Broadcasting mDns reply for query from fd01::e65f:1ff:fe0f:3a64
[1652703038.249128][3318:3318] CHIP:DIS: Broadcasting mDns reply for query from fd01::e65f:1ff:fe0f:3a64
[1652703038.342709][3318:3318] CHIP:EM: Received message of type 0x30 with protocolId (0, 0) and MessageCounter:445819419 on exchange 47861r
[1652703038.342829][3318:3318] CHIP:EM: Handling via exchange: 47861r, Delegate: 0xaaaadcf57860
[1652703038.342921][3318:3318] CHIP:IN: CASE Server received Sigma1 message. Starting handshake. EC 0xaaaadcf58190
[1652703038.343014][3318:3318] CHIP:DIS: CASE handshake initiated, closing all BLE Connections
[1652703038.343176][3318:3318] CHIP:SC: Waiting for Sigma1 msg
[1652703038.343233][3318:3318] CHIP:IN: CASE Server disabling CASE session setups
[1652703038.343292][3318:3318] CHIP:SC: Received Sigma1 msg
[1652703038.343392][3318:3318] CHIP:SC: Found MRP parameters in the message
[1652703038.343458][3318:3318] CHIP:SC: Peer assigned session key ID 5463
[1652703038.344290][3318:3318] CHIP:SC: CASE matched destination ID: fabricIndex 1, NodeID 0x0000000000000001
[1652703038.346700][3318:3318] CHIP:SC: Including MRP parameters
[1652703038.346829][3318:3318] CHIP:EM: Piggybacking Ack for MessageCounter:445819419 on exchange: 47861r
[1652703038.346919][3318:3318] CHIP:IN: Prepared unauthenticated message 0xaaaadcf57e58 to 0x0000000000000000 (0)  of type 0x31 and protocolId (0, 0) on exchange 47861r with MessageCounter:2411602807.
[1652703038.347199][3318:3318] CHIP:IN: Sending unauthenticated msg 0xaaaadcf57e58 with MessageCounter:2411602807 to 0x0000000000000000 at monotonic time:<PHONE_NUMBER>B882B0 msec
[1652703038.347539][3318:3318] CHIP:SC: Sent Sigma2 msg
[1652703038.354784][3318:3318] CHIP:EM: Received message of type 0x32 with protocolId (0, 0) and MessageCounter:445819420 on exchange 47861r
[1652703038.354838][3318:3318] CHIP:EM: Found matching exchange: 47861r, Delegate: 0xaaaadcf57880
[1652703038.354896][3318:3318] CHIP:EM: Rxd Ack; Removing MessageCounter:2411602807 from Retrans Table on exchange 47861r
[1652703038.354931][3318:3318] CHIP:EM: Removed CHIP MessageCounter:2411602807 from RetransTable on exchange 47861r
[1652703038.355006][3318:3318] CHIP:SC: Received Sigma3 msg
[1652703038.355178][3318:3318] CHIP:SC: The device does not support GetClock_RealTimeMS() API. This will eventually result in CASE session setup failures.
[1652703038.359149][3318:3318] CHIP:SC: Unable to save session resumption state: ../../examples/door-lock-app/linux/third_party/connectedhomeip/src/platform/Linux/KeyValueStoreManagerImpl.cpp:53: CHIP Error 0x000000A0: Value not found in the persisted storage
[1652703038.359204][3318:3318] CHIP:SC: Sending status report. Protocol code 0, exchange 47861
[1652703038.359255][3318:3318] CHIP:EM: Piggybacking Ack for MessageCounter:445819420 on exchange: 47861r
[1652703038.359311][3318:3318] CHIP:IN: Prepared unauthenticated message 0xaaaadcf57e58 to 0x0000000000000000 (0)  of type 0x40 and protocolId (0, 0) on exchange 47861r with MessageCounter:2411602808.
[1652703038.359365][3318:3318] CHIP:IN: Sending unauthenticated msg 0xaaaadcf57e58 with MessageCounter:2411602808 to 0x0000000000000000 at monotonic time:<PHONE_NUMBER>B882BC msec
[1652703038.359585][3318:3318] CHIP:IN: CASE Session established. Setting up the secure channel.
[1652703038.359640][3318:3318] CHIP:IN: New secure session created for device 0x000000000001B669, LSID:24572 PSID:5463!
[1652703038.359737][3318:3318] CHIP:IN: CASE secure channel is available now.
[1652703038.359771][3318:3318] CHIP:IN: CASE Server enabling CASE session setups
[1652703038.360666][3318:3318] CHIP:EM: Received message of type 0xa with protocolId (0, 1) and MessageCounter:40791 on exchange 47862r
[1652703038.360723][3318:3318] CHIP:EM: Handling via exchange: 47862r, Delegate: 0xaaaadcf51d38
[1652703038.360800][3318:3318] CHIP:DMG: TimedRequestMessage =
[1652703038.360841][3318:3318] CHIP:DMG: {
[1652703038.360876][3318:3318] CHIP:DMG:        TimeoutMs = 0x3e8,
[1652703038.360914][3318:3318] CHIP:DMG:        InteractionModelRevision = 1
[1652703038.360949][3318:3318] CHIP:DMG: }
[1652703038.360988][3318:3318] CHIP:DMG: Got Timed Request with timeout 1000: handler 0xaaab1789baf0 exchange 47862r
[1652703038.361047][3318:3318] CHIP:EM: Piggybacking Ack for MessageCounter:40791 on exchange: 47862r
[1652703038.361121][3318:3318] CHIP:IN: Prepared secure message 0xaaaadcf57e78 to 0x000000000001B669 (1)  of type 0x1 and protocolId (0, 1) on exchange 47862r with MessageCounter:4008880.
[1652703038.361170][3318:3318] CHIP:IN: Sending encrypted msg 0xaaaadcf57e78 with MessageCounter:4008880 to 0x000000000001B669 (1) at monotonic time:<PHONE_NUMBER>B882BE msec
[1652703038.361338][3318:3318] CHIP:DMG: Timed Request time limit 0x0000000000B886A6: handler 0xaaab1789baf0 exchange 47862r
[1652703038.361509][3318:3318] CHIP:EM: Received message of type 0x10 with protocolId (0, 0) and MessageCounter:445819421 on exchange 47861r
[1652703038.361551][3318:3318] CHIP:EM: Found matching exchange: 47861r, Delegate: (nil)
[1652703038.361602][3318:3318] CHIP:EM: Rxd Ack; Removing MessageCounter:2411602808 from Retrans Table on exchange 47861r
[1652703038.361638][3318:3318] CHIP:EM: Removed CHIP MessageCounter:2411602808 from RetransTable on exchange 47861r
[1652703038.362243][3318:3318] CHIP:EM: Received message of type 0x8 with protocolId (0, 1) and MessageCounter:40792 on exchange 47862r
[1652703038.362286][3318:3318] CHIP:EM: Found matching exchange: 47862r, Delegate: 0xaaab1789baf0
[1652703038.362331][3318:3318] CHIP:EM: Rxd Ack; Removing MessageCounter:4008880 from Retrans Table on exchange 47862r
[1652703038.362366][3318:3318] CHIP:EM: Removed CHIP MessageCounter:4008880 from RetransTable on exchange 47862r
[1652703038.362409][3318:3318] CHIP:DMG: Timed following action arrived at 0x0000000000B882BF: handler 0xaaab1789baf0 exchange 47862r
[1652703038.362445][3318:3318] CHIP:DMG: Handing timed invoke to IM engine: handler 0xaaab1789baf0 exchange 47862r
[1652703038.362506][3318:3318] CHIP:DMG: InvokeRequestMessage =
[1652703038.362542][3318:3318] CHIP:DMG: {
[1652703038.362576][3318:3318] CHIP:DMG:        suppressResponse = false,

[1652703038.362616][3318:3318] CHIP:DMG:        timedRequest = true,
[1652703038.362653][3318:3318] CHIP:DMG:        InvokeRequests =
[1652703038.362699][3318:3318] CHIP:DMG:        [
[1652703038.362735][3318:3318] CHIP:DMG:                CommandDataIB =
[1652703038.362785][3318:3318] CHIP:DMG:                {
[1652703038.362825][3318:3318] CHIP:DMG:                        CommandPathIB =
[1652703038.362876][3318:3318] CHIP:DMG:                        {
[1652703038.362928][3318:3318] CHIP:DMG:                                EndpointId = 0x1,
[1652703038.363011][3318:3318] CHIP:DMG:                                ClusterId = 0x101,
[1652703038.363064][3318:3318] CHIP:DMG:                                CommandId = 0x0,
[1652703038.363111][3318:3318] CHIP:DMG:                        },
[1652703038.363161][3318:3318] CHIP:DMG:
[1652703038.363202][3318:3318] CHIP:DMG:                        CommandData =
[1652703038.363249][3318:3318] CHIP:DMG:                        {
[1652703038.363296][3318:3318] CHIP:DMG:                                0x0 = [
[1652703038.363349][3318:3318] CHIP:DMG:                                0x37, 0x38, 0x39, 0x36,
[1652703038.363403][3318:3318] CHIP:DMG:                        ]
[1652703038.363453][3318:3318] CHIP:DMG:                        },
[1652703038.363500][3318:3318] CHIP:DMG:                },
[1652703038.363547][3318:3318] CHIP:DMG:
[1652703038.363583][3318:3318] CHIP:DMG:        ],
[1652703038.363627][3318:3318] CHIP:DMG:
[1652703038.363662][3318:3318] CHIP:DMG:        InteractionModelRevision = 1
[1652703038.363696][3318:3318] CHIP:DMG: },
[1652703038.363780][3318:3318] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=o
[1652703038.363830][3318:3318] CHIP:DMG: AccessControl: allowed
[1652703038.363871][3318:3318] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_0000
[1652703038.363917][3318:3318] CHIP:ZCL: Received command: LockDoor
[1652703038.363967][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=1]
[1652703038.364000][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=0]
[1652703038.364031][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=2]
[1652703038.364061][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=1]
[1652703038.364092][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=3]
[1652703038.364121][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=2]
[1652703038.364150][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=4]
[1652703038.364180][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=3]
[1652703038.364209][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=5]
[1652703038.364239][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=4]
[1652703038.364268][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=6]
[1652703038.364298][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=5]
[1652703038.364328][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=7]
[1652703038.364358][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=6]
[1652703038.364388][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=8]
[1652703038.364417][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=7]
[1652703038.364447][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=9]
[1652703038.364476][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=8]
[1652703038.364506][3318:3318] CHIP:ZCL: Door Lock App: LockEndpoint::GetUser [endpoint=1,userIndex=10]
[1652703038.364536][3318:3318] CHIP:ZCL: Found unoccupied user [endpoint=1,adjustedIndex=9]
[1652703038.364566][3318:3318] CHIP:ZCL: Door Lock App: door is already locked, ignoring command to set lock state to "Locked" [endpointId=1]
[1652703038.364607][3318:3318] CHIP:DMG: Endpoint 1, Cluster 0x0000_0101 update version to c7258d56
[1652703038.364649][3318:3318] CHIP:ZCL: Door Lock attribute changed
[1652703038.364695][3318:3318] CHIP:DMG: ICR moving to [ Preparing]
[1652703038.364737][3318:3318] CHIP:DMG: ICR moving to [AddingComm]
[1652703038.364774][3318:3318] CHIP:DMG: ICR moving to [AddedComma]
[1652703038.364865][3318:3318] CHIP:EVL: LogEvent event number: 0x0000000000000003 priority: 2, endpoint id:  0x1 cluster id: 0x0000_0101 event id: 0x2 Sys timestamp: 0x0000000000B882C1
[1652703038.364934][3318:3318] CHIP:DMG: Decreasing reference count for CommandHandler, remaining 0
[1652703038.364977][3318:3318] CHIP:EM: Piggybacking Ack for MessageCounter:40792 on exchange: 47862r
[1652703038.365053][3318:3318] CHIP:IN: Prepared secure message 0xaaaadcf57e58 to 0x000000000001B669 (1)  of type 0x9 and protocolId (0, 1) on exchange 47862r with MessageCounter:4008881.
[1652703038.365104][3318:3318] CHIP:IN: Sending encrypted msg 0xaaaadcf57e58 with MessageCounter:4008881 to 0x000000000001B669 (1) at monotonic time:<PHONE_NUMBER>B882C2 msec
[1652703038.365296][3318:3318] CHIP:DMG: ICR moving to [CommandSen]
[1652703038.365334][3318:3318] CHIP:DMG: ICR moving to [AwaitingDe]
[1652703038.365432][3318:3318] CHIP:DMG: All ReadHandler-s are clean, clear GlobalDirtySet
[1652703038.367472][3318:3318] CHIP:EM: Received message of type 0x10 with protocolId (0, 0) and MessageCounter:40793 on exchange 47862r
[1652703038.367517][3318:3318] CHIP:EM: Found matching exchange: 47862r, Delegate: (nil)
[1652703038.367566][3318:3318] CHIP:EM: Rxd Ack; Removing MessageCounter:4008881 from Retrans Table on exchange 47862r
[1652703038.367601][3318:3318] CHIP:EM: Removed CHIP MessageCounter:4008881 from RetransTable on exchange 47862r

In examples/lock-app/efr32/src/LockManager.cpp we have:
bool LockManager::setLockState(chip::EndpointId endpointId, DlLockState lockState, const Optional<chip::ByteSpan> & pin,
                               DlOperationError & err)
{
...
    if (curState == lockState)
    {
        ChipLogDetail(Zcl, "Door Lock App: door is already locked, ignoring command to set lock state to \"%s\" [endpointId=%d]",
                      lockStateToString(lockState), mEndpointId);
        return false;
    }

That means emberAfPluginDoorLockOnDoorLockCommand returns false, so DoorLockServer::HandleRemoteLockOperation does:
    bool success = credentialsOk && operationOk;

    // Send command response
    emberAfSendImmediateDefaultResponse(success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE);

with operationOk set to false.
@mykrupp could you please take a look?

That is, either locking while already locked should succeed, and then the example app code is wrong.  Or it should fail and then the test plan is wrong?

Yes, I will take a look. Can I get confirmation on how this was built, and that it is being run on the efr32 platform?

@Survensa can you confirm?
@mykrupp I figured this was EFR32 because this line from the above log:
[1652703038.364566][3318:3318] CHIP:ZCL: Door Lock App: door is already locked, ignoring command to set lock state to "Locked" [endpointId=1]

has a log message that only appears in examples/lock-app/efr32/src/LockManager.cpp

@Survensa Since this is run on the nordic platform, there's not much I can do to solve this issue.
@bzbarsky-apple I still agree with what you found on the efr32 platform. I will go through the lock app and carefully follow the spec for each non-happy path.

@Survensa as you wrote it fails on nRF, because you invoked the lock-door command with pinCode argument that is optional. According to spec the pin code argument has [COTA & PIN] conformance that is not met by the nRFConnect platform. Isn't getting failure response something we should expect in such case? The same comment for the https://github.com/project-chip/connectedhomeip/issues/18364 issue that seems to describe the same problem.


Setup files for packaging in windows, mac, and linux.

Initial packaging has been setup for windows, mac and linux. User can use mac app right out of packing, but will need windows device to run packing (into installer) for windows.

The following resources were used to setup packaging. Please refer to them to understand and continue.
Setup packaging (DONE)

https://www.christianengvall.se/electron-packager-tutorial/
Create dmg package (NOT DONE)
https://www.christianengvall.se/dmg-installer-electron-app/
Create windows installer (NOT DONE)
https://www.christianengvall.se/electron-windows-installer/

Alternative resource if above method does not work

https://ourcodeworld.com/articles/read/365/how-to-create-a-windows-installer-for-an-application-built-with-electron-framework


Unsupported encoding. JSON must be UTF-8

Browser: Chromium 41.0.2272.76 (64-bit)
OS: Arch Linux (64-bit)
Locale:
  LANG=en_US.UTF-8
  LC_CTYPE="en_US.UTF-8"
  LC_NUMERIC="en_US.UTF-8"
  LC_TIME="en_US.UTF-8"
  LC_COLLATE="en_US.UTF-8"
  LC_MONETARY="en_US.UTF-8"
  LC_MESSAGES="en_US.UTF-8"
  LC_PAPER="en_US.UTF-8"
  LC_NAME="en_US.UTF-8"
  LC_ADDRESS="en_US.UTF-8"
  LC_TELEPHONE="en_US.UTF-8"
  LC_MEASUREMENT="en_US.UTF-8"
  LC_IDENTIFICATION="en_US.UTF-8"
  LC_ALL=

I tried to install this extensions, but got the following error:
Package is invalid. Details: '/tmp/scoped_dir_ackB5o/CRX_INSTALL/_locales/is/messages.json: Line: 6, column: 34, Unsupported encoding. JSON must be UTF-8.'.
Seems like some json-files are not valid UTF-8 files.

This has been fixed

If this has been fixed, why do I still experience the same bug?
The locale is,locale gl and locale cy files are not valid encoded in UTF-8.
And that has not been fixed.

I did not get errors with either of those files.  I was getting one with hy locale that I fixed.  I just removed and reinstalled v1.1.4 from the store that I published yesterday and got no errors.

I'm on Windows though so could be a difference between OS.  If you get it fixed, send a pull request.

Fixed in pull request #24


[sc-190410] Delete Customer Example Script

190410

Adds deleteCustomer API method
Adds sample script to delete customers, with demo data CSV

Confirmed working in UAT.


[stable/grafana] No way to inject ldap.toml file

Is this a request for help?: No

Is this a BUG REPORT or FEATURE REQUEST? (choose one): FEATURE REQUEST

Version of Helm and Kubernetes:
Which chart: stable/grafana
What happened: new version of grafana deals with files created by configmap differently. Can no longer use solution in issue #2656
What you expected to happen:
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know:

/assign


Build documentation with mkdocs

Proposal for documentation with mkdos.
This PR is shows how to use mkdocs to create static documentation which can be later used in CI and host on GitHub pages.
There a quiet some changes in the folder structure, since all the README.md are now located in the docs folder.
Maybe not every link is updated correctly.
How to build docs locally:
pip install -r docs/requirements.txt
mkdocs serve

Let's start fancy stuff with mkdocs @m-naumann 😄

Awesome 🚀 Thanks!
Would you mind adding a CI pipeline for that in your fork, such that we could have a look at the outcome more easily? 😃
Should be just a few lines, I did that here for example. Also, in case people do not like the moving and we don't have too much trouble with links, we could copy the stuff into docs in CI only, as I did there for some stuff.

Awesome 🚀 Thanks!
Would you mind adding a CI pipeline for that in your fork, such that we could have a look at the outcome more easily? 😃
Should be just a few lines, I did that here for example. Also, in case people do not like the moving and we don't have too much trouble with links, we could copy the stuff into docs in CI only, as I did there for some stuff.

I've added it.
Could it be, that the CI is only triggered in Ready for review PRs?

@DavUhll I added deployment and deployed to https://m-naumann.github.io/Lanelet2-1/, you can merge https://github.com/m-naumann/Lanelet2-1/tree/master into your branch for this update.
Looks nice at the first glance, however some links are broken (hard to fix since they either match the repo or the deployed docs, I guess), and the edit function is broken due to copying the files. But maybe we can go with this for the start. WDYT @immel-f @poggenhans?

Looks very nice, thanks :+1:
I browsed a bit through the deployed version and only found links that point to the repo instead of the website. If that is the only problem, I think we can go with this for now since it is already a big improvement to the existing docs interface

@DavUhll I added deployment and deployed to https://m-naumann.github.io/Lanelet2-1/, you can merge https://github.com/m-naumann/Lanelet2-1/tree/master into your branch for this update.
Looks nice at the first glance, however some links are broken (hard to fix since they either match the repo or the deployed docs, I guess), and the edit function is broken due to copying the files. But maybe we can go with this for the start. WDYT @immel-f @poggenhans?

@m-naumann  Thanks for the commit. I've added your commit to this PR.
@immel-f we if you agree I would open this PR and then open a follow up PR to fix all the link to link to the documentation.
let me know what you think about it.

@DavUhll I added deployment and deployed to https://m-naumann.github.io/Lanelet2-1/, you can merge https://github.com/m-naumann/Lanelet2-1/tree/master into your branch for this update.
Looks nice at the first glance, however some links are broken (hard to fix since they either match the repo or the deployed docs, I guess), and the edit function is broken due to copying the files. But maybe we can go with this for the start. WDYT @immel-f @poggenhans?

@m-naumann Thanks for the commit. I've added your commit to this PR. @immel-f if you agree, I would open this PR and then open a follow up PR to fix all the links to link to the documentation.
let me know what you think about it.

Sounds great, I am not sure however what to do to fix the links since as I understood it, either the doc or repo links will be broken :sweat_smile:
What url will the docs be deployed to? We should probably also add a link to the readme before merging.

Is this PR ready for merging? I think it would make a very nice addition. If you know to which URL the docs will be deployed to it would be helpful to add a link to the readme as well.

Looks good to me now: https://m-naumann.github.io/Lanelet2-1/

pinging again 😉

Thanks for the reminder :sweat_smile:


http://www.dumbingofage.com has stopped working

The buttons render in weird places, in addition to not actually working. The site has not undergone a visual change, as far as I can see.

Ah, right. This was actually fixed in 481f0ad70a8be35fa7f7e529670ab568a0381a22, but I forgot to bump the version, so no update was triggered. Oops.
Try again now.


[unifi] missing some ports in service and docker image

the is a few ports that are missing as a service in the helm chart and in the docker images
https://help.ui.com/hc/en-us/articles/218506997-UniFi-Ports-Used
TCP 6789 - used for mobile speedtest
UDP 1900 - Make controller discoverable on L2 network

#148 fixed this for the speedtest


Multiple OS Conflict of Shell Override

I would like to see the option of the Shell Override to be cross-compatible between Windows and MacOS environments.  Many users have made Atom their "go to" editor, and I would love to do the same with the platformio-atom-ide-terminal package to access my terminal via Atom.
It currently overwrites those settings when synced between operating systems and it would be preferred if it no longer did that.
You are about to dethrone terminal-plus since it has been marked as deprecated due to the inability to launch the console or update the package.

I may have jumped the gun on this.  Marking this issue as resolved, and will revisit it if necessary.

@stevenventimiglia Did you figure it out? I just ran into this issue when adding a Windows path to Shell Override, synced my settings up from Windows, synced my settings down to macOS, launched the Atom terminal on macOS and received an error execvp(3) failed.: No such file or directory because it was trying to look for the Windows path.

@ryanaltvater - Unfortunately, I continued to experience far too many issues with the inconsistency of several packages after a major update of Atom (approx. a year ago.)
I now use Visual Studio Code and have experienced zero issues over the last eight months, it includes a terminal w/ the ability to create a list of other terminal flavors that can be launched, as well as a similar 'sync' extension and super-flexible settings (according to the project or workspace you're using.)  They also just added 'Live Share', which allows you to collaborate remotely with colleagues on the same code while watching and titling any changes that are made real-time.
I love and appreciate the work put into Atom over the years, but with Microsoft's acquisition of Github - I honestly think that Atom will go EoL fairly soon, unless VS Code moves to a pay model.  Visual Studio Code is available for Windows, Mac and Linux OSes, as well.
https://code.visualstudio.com/

Atom a year ago and Atom now, two different beasts, I especially liked the sweeping statement that it had zero issues in 8 months, I used it for a week before Atom and gave up.

@stevenventimiglia I'm very familiar with VS Code. I've actually been fiddling around with it here and there, and so far it's not my cup of tea. It may have a few good features implemented that I do give it credit for, 1 being it's autocomplete which I think is a lot better than Atom but other than that nothing else stands out to me (except maybe Terminal which you mentioned and I'll have to check out). Messing with settings is horrendous. The new settings preview isn't really that much of a step up, other than just giving it an initial pass at a GUI implementation. I'm still going to keep it on the back burner and weigh both of the editors to determine what suits me best. For the last few years and right now, that's been Atom because it has improved significantly over the last year, to the point that @the-j0k3r made.
Also, I had the same concerns about Atom dying out because of the Micro$oft acquisition, but there was an article/letter (and Reddit thread) released by the GithHub CEO stating that both editors would continue to be supported side by side and Atom would not be killed off or implemented into one another. They believe in Developers choosing whatever editor they want to work with GitHub. That's not to say that in a year or 2 that will change, but as of right now there's no reason to abandon one editor over the other, unless it's regarding features and your preferred workflow. Not because of an acquisition concern that I initially shared as well.

"...and have experienced zero issues over the last eight months", is not a sweeping statement.  It's an accurate statement about my personal experience with VS Code.  Choose your extensions/packages wisely, and more of them seem to be well maintained.
Even the creators of this package have moved on to VS Code...
https://github.com/platformio/platformio-atom-ide-terminal/issues/543
Being a Notepad++ fan forever (and still using it for basic text files these days), and growing to love Atom, I never liked 'opposing choices' like VS Code or Brackets, because I tried both after heavily used packages that I depended on were never updated or maintained for Atom, and still didn't really want to move away from it - however, lots of colleagues started doing so, and I'm glad I did (after a hard fight.)
It's all about personal taste, my friend.  Even if we use the same IDE, there will always be personal tweaks we'll make to it so our preferences and workflow are accommodated.

Absolutely.

Even the creators of this package have moved on to VS Code...

You know very well that this is the ONLY half decent working (just) terminal for Atom, once this goes everyone else will (probably) do the same. Atom team has said they wont maintain a terminal, so VScode may very well be the only choice unless someone grabs it by the horns.
This alone is very sad for opensource and choices, Since Atom team wont develop/maintain a terminal is that not in itself limiting the users and forcing them to VCcode? I think it is.

I agree with you as well. Unfortunately, what’s done is done with the whole acquisition thing. I don’t agree with it, but there’s no way they’ll maintain 2 competing products under the same parent company. Microsoft is in charge now and Code is their baby. They’re not going to abandon it for an open source product like Atom. That’s why I said in a year or 2 things could be a lot different than what the GitHub CEO said recently. His response to developer concerns was basically just damage control in my opinion. They’ll most certainly phase out Atom over time but not by their doing and rather the community’s doing. Plugin developers are going to naturally flock to what they see as longer lasting and in this situation that looks like Code because Microsoft is in charge. Once plugin developers abandon Atom and move to supporting Code instead of Atom or both, you’ll see developers do the same. Therefore, the death of Atom won’t be by Microsoft directly but rather by the community BECAUSE of Microsoft. On their end, it’s a smart move. They’ll continue to support Atom for the foreseeable future (for now) and let he community run its course.  Atom supporters have been shaken up, and you can’t blame them. This is how acquisitions go! Now they (like myself) are questioning whether it’s worth investing in Atom anymore because of the circumstances. I absolutely love Atom, but I can’t stop what now feels like the inevitable because GitHub sold out. So I feel somewhat forced into checking out Code now and possibly switching at some point soon or down the road. :(

On Jun 25, 2018, at 7:50 PM, the-j0k3r<EMAIL_ADDRESS>wrote:
Even the creators of this package have moved on to VS Code...
You know very well that this is the ONLY half decent working (just) terminal for Atom, once this goes everyone else will (probably) do the same. Atom team has said they wont maintain a terminal, so VScode may very well be the only choice unless someone grabs it by the horns.
This alone is very sad for opensource and choices, Since Atom team wont develop/maintain a terminal is that not in itself limiting the users and forcing them to VCcode? I think it is.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Without a n actively maintained terminal to keep up with Atom development, Atom as a viable solution able to compete, its days are numbered.
Sad day for opensource.

If anyone is interested see https://github.com/atom/atom/issues/17580 It should be interesting to see what will happen to that request and if any healthy outcome will result in something positive, if not for this project for some replacement terminal or ... something else :)


Filterable Properties -> Guid would be awesome if it accepted wildcards

I noticed recently that all AD objects are pretty much perfectly 'load-balanced' by the first character of the Guid.  That is, take all your mailboxes:

$Mailboxes = Get-Mailbox -ResultSize:Unlimited

Then, group them by the first character of the Guid (objectGuid):

$Mailboxes | select @{n='Guid_1st_Char';e={$_.Guid.ToString().chars(0)}} | group Guid_1st_Char | sort Name

Prepare to be amazed!!.  Now, this gives everyone in the world, 16 near-equal-length groupings of their objects - GREAT!!.
Now.. if the Guid filterable property could accept wildcards, we could do:

$Guid0 = Get-Mailbox -Filter "Guid -like '0*'"
$Guid1 = Get-Mailbox -Filter "Guid -like '1*'"
..and so on.

But we can't because Guid doens't accept wildcards :(.  Would be nice!

@JeremyTBradshaw   Thank you very much for your kind feedback. Considering your valuable feedback, we have logged this issue as a User Voice. Concerning team will evaluate and take the appropriate action, as per their schedule. Thanks again for taking out some time and sharing your feedback.
User Voice Link: https://office365.uservoice.com/forums/273493-office-365-admin/suggestions/15219555-granular-permissions-on-user-properties-at-a-prope


[BugFix] Validate query_timeout at analyze stage

What type of PR is this：

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #13695
Problem Summary(Required) ：

Validate query_timeout in analyze stage, with maximum value to 259200
After this pr, you will get error message when setting query_timeout with an illegal value.
> set global query_timeout=360000000;
(1064, 'query_timeout must be equal or smaller than 259200.')
> set global query_timeout=0;
(1064, 'query_timeout must be equal or greater than 1.')

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

run starrocks_admit_test

run starrocks_fe_unittest

run starrocks_admit_test

[FE PR Coverage Check]
:disappointed: fail : 12 / 17 (70.59%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/qe/LeaderOpExecutor.java
0
2
00.00%
[73, 74]

:large_blue_circle:
com/starrocks/sql/ast/SetVar.java
11
14
78.57%
[98, 169, 196]

:large_blue_circle:
com/starrocks/qe/SessionVariable.java
1
1
100.00%
[]

run starrocks_admit_test

run pr-title-check

All cherry-pick prs:
https://github.com/StarRocks/starrocks/pull/13750
https://github.com/StarRocks/starrocks/pull/13753
https://github.com/StarRocks/starrocks/pull/13755
https://github.com/StarRocks/starrocks/pull/13756


The process method of custom page model isn't called.

I have a custom Page model.
from feincms.models import create_base_model
from mptt.models import MPTTModel
class Location(create_base_model(MPTTModel)):
   # ... other things

I have a widget fobi.contrib.apps.feincms_integration.widgets.FobiFormWidget which works fine with standard FeinCMS page (the process method of the FobiFormWidget is being called).
However, when I try to use the FobiFormWidget with custom page model (Location), it doesn't work (process method is never called).
So, the following parts of the widget work fine with standard FeinCMS Page.
    def process(self, request, **kwargs):
        """This is where most of the form handling happens.

        :param django.http.HttpRequest request:
        :return django.http.HttpResponse | str:
        """
        return self._process(request, self, **kwargs)

    def render(self, **kwargs):
        """Render."""
        return getattr(self, 'rendered_output', ''):

    def finalize(self, request, response):
        """Finalize."""
        # Always disable caches if this content type is used somewhere
        response['Cache-Control'] = 'no-cache, must-revalidate'

But it does not work on the custom page (Location).
I do get into render method of the widget, but I need to handle redirects as well and as far as I understand, render method doesn't handle that part.
I do get things like this in my HTML:
<HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/locations/mylocation/subscribe-form-page/?sent=form-sent">

Any tips would be very useful. Thanks!

Are you using ContentView or ContentObjectMixin in your Location view? ContentObjectMixin.handler contains all the necessary steps to support process() and finalize():
https://github.com/feincms/feincms/blob/master/feincms/module/mixins.py#L81

@matthiask:
Thanks! I'll try.