nixos/jitsi-meet: allow to customize jitsi auth

This allows to set different prosody auth providers for jitsi, like PAM authentication
Description of changes
This allows to set other authentication providers, like cyrus (see jitsi LDAP setup) or pam.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

@cleeyv @ryantm @Lassulus @yayayayaka ping as you are the jitsi module maintainers


Error on test

I tried to use, to make a test... but received this error "The underlying connection was closed: An unexpected error occurred on a send.", what could be wrong?

That's because of this https://github.com/psantosl/p2pcopy/blob/master/InternetTime.cs#L23
I changed to another server:
var client = new TcpClient("time.nist.gov", 13);
using (var streamReader = new StreamReader(client.GetStream()))
{
    var response = streamReader.ReadToEnd();
    var utcDateTimeString = response.Substring(7, 17);
    var localDateTime = DateTime.ParseExact(utcDateTimeString, "yy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
}

I'm getting this error Error connecting to xx.xxx.xxx.xx:1033 Connection setup failure: connection time out. UDT Error Code: 1001

Hi Joao,
I can't tell you much about "an unexpected error occurred" :-) Not enough info as you might understand.
The time server: ok, you can change it to a different one.
Connection timed out: looks like it can't actually connect.
I mean, how p2p works is:

Both parties try to open a connection to the other peer at the same time, trying to open a hole.
Most of the times it works, but ... it is not guaranteed to happen.


Context for Channel Header  Bindings

I use your TS example.
But when I try to use req.body context from /bindings request there are not context fields from the official documentation: user_id, channel_id, team_id for the /channel_header bindings request.
I receive the following req.body data in the /bindings request for the /channel_header location:
{
  "path":"/bindings",
  "context":{
    "app_id":"",
    "mattermost_site_url":"https://my-server",
    "app_path":"/plugins/com.mattermost.apps/apps/my-app-name",
    "bot_user_id":"{BOT_USER_ID}",
    "bot_access_token":"{BOT_USER_TOKEN}",
    "oauth2":{}
  }
}

Also I tried to add a depends_on_channel option to my channelHeaderBindings config (and I don't know what this option means, no any information about this field in the documentation). Also I tried to change location for bindings:
const channelHeaderBindings: AppBinding = {
  app_id: manifest.app_id,
  label: manifest.display_name,
  location: '/channel_header',
  depends_on_channel: true,
  bindings: [
    {
      app_id: manifest.app_id,
      location: '/channel_header',
      icon: 'icon.jpg',
      label: 'Button label',
      depends_on_channel: true,
      form
    }
  ]
};

No any positive results after changes above.
How to fix it?
Envs:
Mattermost Version: 9.7.3
Mattermost App Example: latest version

Thanks for reaching out with this question. I'm not quite sure what's causing this problem.
@mickmister could you check out this issue from Danil?

@danilvalov Are you seeing any errors in the MM server logs when this request is being made?

@mickmister When installing the app I see the following error logs:
{
   "timestamp":"2024-06-04 20:53:50.977 Z",
   "level":"debug",
   "msg":"failed to expand field channel",
   "caller":"app/plugin_api.go:970",
   "plugin_id":"com.mattermost.apps",
   "destination":"teammate-feedback",
   "from_user_id":"wc9e7tpgrb8b5jxj6u536c4peo",
   "error":"no channel ID to expand",
   "plugin_caller":"server/proxy/expand.go:197",
   "request_id":"ca1kua8usidwjcahjxw9676bpc"
}

{
   "timestamp":"2024-06-04 20:53:50.992 Z",
   "level":"debug",
   "msg":"You do not have the appropriate permissions.",
   "caller":"web/context.go:113",
   "path":"/api/v4/channels/itcs5n4ufpdoupb899tgtrrkcc",
   "request_id":"h1npg754zjf4by6rufarhhpf3e",
   "ip_addr":"<IP_ADDRESS>",
   "user_id":"xb4wfcx6qiynbf1pdx77qrpo6y",
   "method":"GET",
   "err_where":"Permissions",
   "http_code":403,
   "error":"Permissions: You do not have the appropriate permissions., userId=xb4wfcx6qiynbf1pdx77qrpo6y, permission=read_public_channel,"
}

{
   "timestamp":"2024-06-04 20:53:50.992 Z",
   "level":"debug",
   "msg":"failed to expand field channel",
   "caller":"app/plugin_api.go:970",
   "plugin_id":"com.mattermost.apps",
   "from_user_id":"wc9e7tpgrb8b5jxj6u536c4peo",
   "path":"/api/v1/bindings",
   "error":"id: itcs5n4ufpdoupb899tgtrrkcc: : You do not have the appropriate permissions., userId=xb4wfcx6qiynbf1pdx77qrpo6y, permission=read_public_channel,",
   "plugin_caller":"server/proxy/expand.go:197",
   "destination":"teammate-feedback",
   "request_id":"jxpc386j43y9mbg5auzaai8ibc"
}

Since we fetch this channel info with the user's token, you'll also need to include act_as_user in your manifest.requested_permissions. Please let me know if this fixes the issue @danilvalov. Thanks

@mickmister Yes, it works! Thank you!
So finally for developers with the same issue.
To get channel info in Apps we need to add to manifest the following:

expand: { channel: 'all' } to bindings section
act_as_user to requested_permissions

Example:
const manifest = {
  app_id: 'your_app_id',
  bindings: {
    path: '/bindings',
    expand: {
      channel: 'all'
    }
  },
  requested_permissions: [
    'act_as_user',
    ...
  ],
  ...
};

@danilvalov I'm curious about your use case of using the channel during this bindings call? It's not uncommon but I'd like to understand the use case if you can share

@mickmister I receive all data about channels:
{
  path: '/bindings',
  expand: { channel: 'all' },
  context: {
    app_id: '',
    mattermost_site_url: 'http://localhost:8065',
    developer_mode: true,
    app_path: '/plugins/com.mattermost.apps/apps/my-app-name,
    bot_user_id: 'xb4wfcx6qiynbf1pdx77qrpo6y',
    bot_access_token: 'og7b7idyxtyr8ctcq1q1jfuywc',
    channel: {
      id: 'sug7d48wqbd4bdb6zydqiocszr',
      create_at:<PHONE_NUMBER>767,
      update_at:<PHONE_NUMBER>767,
      delete_at: 0,
      team_id: '',
      type: 'D',
      display_name: '',
      name: 'wc9e7tpgrb8b5jxj6u536c4peo__wc9e7tpgrb8b5jxj6u536c4peo',
      header: '',
      purpose: '',
      last_post_at: 0,
      total_msg_count: 0,
      extra_update_at: 0,
      creator_id: 'wc9e7tpgrb8b5jxj6u536c4peo',
      scheme_id: null,
      props: null,
      group_constrained: null,
      shared: false,
      total_msg_count_root: 0,
      policy_id: null,
      last_root_post_at: 0
    },
    oauth2: {}
  }
}

@mickmister Sorry, I misunderstood you initially.
My case is simple: I want to make an app that allows users to send feedback about colleagues directly from Mattermost. I need to define a channel in order to immediately substitute the ID of the desired person in the “To” field automatically.
I also plan to make an app that will allow you to quickly assign tasks to an user and send them to our internal Task Tracker system.


Environment

Hi, should #L75 this be env=current_env instead of env=env?

Thanks for reporting this! Fixed in #28


Powershell missing

This should also list the PowerShell way of connecting and querying. The following way to connect fails.
New-PSDrive -Name <Azure SQL server> -PSProvider Sqlserver -Root SQLSERVER:\SQL\<Azure SQL server>.database.windows.net\DEFAULT

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 02a4f57d-539b-2bb3-81c2-0fb0668b4a3f
Version Independent ID: 1b53ed9f-929d-2646-4148-afd32a093daf
Content: Azure SQL Database Connect and Query quickstarts
Content Source: articles/sql-database/sql-database-connect-query.md
Service: sql-database
GitHub Login: @CarlRabeler
Microsoft Alias: carlrab

@Ayanmullick Thanks for your feedback! We will investigate and update as appropriate.

In doing a web search, there are few blogs describing how to use Azure PS to connect and query an Azure SQL database: https://4sysops.com/archives/how-to-query-an-azure-sql-database-with-powershell/
But there are no Microsoft docs.

But how do I mount it as a PowerShell drive?

@stevestein
Steve, Please look into this item

It looks like it's generally documented here:
https://docs.microsoft.com/en-us/sql/powershell/navigate-sql-server-powershell-paths
And since this is going against an Azure SQL DB, you'll probably need to handle authentication a little differently:
https://docs.microsoft.com/en-us/sql/powershell/manage-authentication-in-database-engine-powershell
I was able to do it using the sqldrive function in the second link using SQL Server authentication and the path: SQLSERVER:\SQL<Azure SQL Server>.database.windows.net,1433<Azure SQL Database Name>
This assumes you have set up the Azure SQL Server with appropriate firewall rules, too.

Is it not doable thru the New-PSDrive cmdlet?

We've already enabled AzureAD authentication. Not sure what's wrong.  The firewall rules are in place. Still won't connect.
New-PSDrive -Name <Name>-PSProvider Sqlserver -Root $([string]"SQLSERVER:\SQL\<Name>.database.windows.net,1433")
WARNING: Could not obtain SQL Server Service information. An attempt to connect to WMI on '<>.database.windows.net,1433' failed with the following error: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

@Ayanmullick Do you have a SQL Server account you can test with? Then you can can at least rule out general SQL Server connectivity and maybe narrow it down to something with integrated authentication.

No. We started with AzureAD from the get go. The server and database was created thru an AzureAD account.

@Ayanmullick Can you connect via SSMS?

Yes @David-Engel , without any issues.
SSMS v17.6.
Authentication- 'Active Directory -Password'

@Ayanmullick How about Active Directory - Integrated?

'Active Directory - Integrated' worked fine as well.

I just noticed you did not include the instance name in your command. How about
New-PSDrive -Name <Name>-PSProvider Sqlserver -Root $([string]"SQLSERVER:\SQL\<Name>.database.windows.net,1433\<InstanceName>")

I've tried
New-PSDrive -Name <Name> -PSProvider Sqlserver -Root $([string]"SQLSERVER:\SQL\<Name>.database.windows.net,1433\Default")
and
New-PSDrive -Name <Name> -PSProvider Sqlserver -Root $([string]"SQLSERVER:\SQL\<Name>.database.windows.net,1433\<DatabaseName>")
Same error

This is an Azure SQL Database, right? (Not a hosted SQL Server install.) I wouldn't be surprised if Azure SQL Database does not support connecting to anything other than a specific instance name (not DEFAULT). You would need to be able to connect to RPC services on the Azure SQL Server hosting the instances for it to enumerate instances and I don't see a way to allow those ports through a firewall through the Azure Portal. I only see way to open firewall access to individual instances.

Although I do see that SSMS works that way and lets you browse databases. So I could be wrong. I don't have an Azure AD integrated auth environment to test in (only have SQL Server auth instances in Azure).

Summarizing:
The following PowerShell command works with integrated authentication:
New-PSDrive -Name <Name> -PSProvider SqlServer -Root "SQLSERVER:\SQL\<Name>.database.windows.net,1433"
The issue causing the above error:
WARNING: Could not obtain SQL Server Service information. An attempt to connect to WMI on '<>.database.windows.net,1433' failed with the following error: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
was something in version 21.0.17224 of the SqlServer PowerShell module. Updating to version 21.0.17240 resolved the issue.

More info: New-PSDrive is trying to connect using Windows Integrated authentication (versus the Active Directory Integrated authentication option being used in SSMS) and Windows Integrated authentication is not supported against Azure SQL DB (as the error states). I've asked internally if there is a way to tell New-PSDrive to use Active Directory Integrated authentication and am waiting on a response.

#please-close

@Ayanmullick We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


Optimize allocation to do as little as possible if requestedHostId is set

Mainly an invisible backend change, but basically we wanted to short circuit as much logic as possible if requestedHostId is set. But the primary change is this: if requestedHostId is provided, even if a host is inactive or reconnecting, we should allow it to be scheduled.
This is to prevent scheduling storms we can get into when hosts are rebooted or otherwise disconnected and reconnected.

Tested with rancher server version  - v1.3.0-rc1

Mark one of host to "Inactive" state.
Deploy service on this host. Containers get deployed successfully on this host.

Power down one of the hosts in the setup.
Wait for host to get to "reconnecting"
Deploy service on this host.
Containers get stuck in "registering" state until the host gets to "disconnected" state.
After this there is a continuos attempt to start container on the "disconnected" host which keeps failing.
Service is stuck in  Activating (Expected state running but got removed)

Wanted to get confirmation on this behavior?
Reopening this issue to get confirmation on the expected behavior in this case.
Also there is a related issue seen with any global health check enabled services - https://github.com/rancher/rancher/issues/7118.

Questions:

In scenario 1, how are you deploying a service to an inactive host? I don't think you should be able to do that.
In scenario 2, same basic question: how are you deploying a service to a reconnecting host?

@cjellick , UI allows for choosing hosts to run containers on when deploying a service (this has been there always). This list of host also includes host in "inactive"/"reconnecting" state.

Ok, didn't realize we exposed requestedHostId for services in the UI.
@vincent99 mentioned that he might filter out non-active hosts from that.
But yes, this is the expected behavior - we want to allow the instance to get passed scheduling step if that leads to a service flapping because the host is unreachable, then so be it. Prior to this change the service would have flapped the same way, but at the scheduling step.

Logged UI issue - https://github.com/rancher/rancher/issues/7147


Testing documentation - broken?  py.test fails to import soco

following the docs, py.test will fail to run the unit tests complaining about "No module named soco"
This can be fixed by either modifying sys.path (ugly) in the tests or installing the soco source in editable mode
pip install -e .
Should probably add the part about installing the soco module in editable mode to http://docs.python-soco.com/en/latest/unittests.html

Hallo @dundeemt
I agree that there is something missing from the docs about how to execute the unittest (There does indeed seem to several things missing from that section).
However, the unittest is meant purely for development, and since potential developers will need to run the source code directly from a git clone, I don't think it makes much to discuss the pip solution. Properly there should be some information about how to modify the path without editing the test code.
What do you think?

Sure.  You can manually edit your path, I tend to always work in virutalenvs so I gravitate to pip install -e . to let pip do the heavy lifting of path modification.  Only time you need worry about it is after your do a release and have a new version number, but then just a quick pip install -e . and you are back in business.
What changes do you make to your path to enable py.test to find what it needs without making a mess? Honest question, I picked up on -e trick from working on twine.  That's how they handle it.
I am good to go with however you decide, it should be documented so potential contributors can easily reproduce a good environment (be able to run the test suite) before they start hacking on their pull request; ")

Actually, having looked at it a little more I think the -e trick is really neat and the version that we should include in the doce. I guess people that want to modify the path of their virtual environment knows how. I will have a look at the docs and propose a change for you to review.
Just for the record. The way to modify the path in a virtual environment (at least on Linux and I guess Mac) is to edit the bin/activate script (which is a bash script) and add a line at the end along the lines of:
export PYTHONPATH=$HOME/myvirtualenvs/soco/SoCo

where that last SoCo is the path of the git archive.

My initial reaction to seeing the -e trick was the same as yours.  What
magic is this?!   But once I tried it, it came quite naturally.
On Wed, Jul 29, 2015 at 3:04 PM, Kenneth Nielsen<EMAIL_ADDRESS>wrote:

Actually, having looked at it a little more I think the -e trick is really
neat and the version that we should include in the doce. I guess people
that want to modify the path of their virtual environment knows how. I will
have a look at the docs and propose a change for you to review.
Just for the record. The way to modify the path in a virtual environment
(at least on Linux and I guess Mac) is to edit the bin/activate script
(which is a bash script) and add a line at the end along the lines of:
export PYTHONPATH=$HOME/myvirtualenvs/soco/SoCo
where that last SoCo is the path of the git archive.
—
Reply to this email directly or view it on GitHub
https://github.com/SoCo/SoCo/issues/319#issuecomment-126081029.

--
Best,
Jeff Hinrichs
<EMAIL_ADDRESS>402.218.1473

Hey @dundeemt
Can you have a look at #327 and see if you think it fixes the problem?


Results of multiple jenkins jobs overwrite status on Github PR

Hi, I found this issue on original repository https://github.com/janinko/ghprb/issues/435
I tried to use Post build step to update status for every build with the job name, but it still works as the latest job overwrites the previous status (so first job1 fails and second job2 passes the only result of check is show as Passed).
Any idea how to configure Github PR builder to not overwrite the status check, but add all results?

hmm, I found https://github.com/jenkinsci/ghprb-plugin/issues/208 and that led me to the Trigger setup and there to set a Context, which works as I wanted - adds a line for every job triggered by the PR.

@mareknovotny Glad you were able to sort this out.
Could you suggest some doc improvements? It'd be good to clear this up for other folks. Happy to update README.

@benpatterson Re: docs, Just make it clear that multiple checks need to have a different value for Context or else they will overwrite each other

@Lenerenberg what are those context values? Where are you getting them from?

@ksemaev I am providing that context value in the api call like :
curl -XPOST https://api.github.com/repos/{repo_path}/statuses/$(git rev-parse HEAD) -d "{ "context": "continuous-integration/jenkins"}" --header "Content-Type: application/json"
I just didn't realize right away that multiple checks on the same commit would get overwritten unless a different value was provided for context on each.

@akomakom Do you know if I can do the same thing on a single branch pipeline? and I can't find "Custom Github Notification Context" under "Add", do you know where I can find it?


compilation issue with 'no-shared' in 1.1.0c

Dear all,
OpenSSL - i.e. 1.1.0b and earlier - used to produce working binaries here on FreeBSD 10-stable
by simply doing:
./config no-shared
make
./apps/openssl version

This somehow doesn't work anymore with 1.1.0c - doing the same configures and compiles fine,
but the resulting binary doesn't work at all - it somehow simply 'hangs' (but can be terminated by ctrl+c).
Running it with 'truss' doesn't show something obvious - so I am at a loss on what could be wrong.
TIA,
frank\

This is a known issue that has been fixed in commit f56c786. See issue #1899.


Delete firefoxdeveloperedition.rb

Looks like it’ll be discontinued.

Hi @vitorgalvao, according to this article : https://hacks.mozilla.org/2017/04/simplifying-firefox-release-channels/, firefox developer edition isn't discontinued, but switch stability from aurora channel to beta channel. fde will be less early but more stable. Can you revert this commit please ?


move module's canonical path

This commit should move the project over to a module with the new path
with no actual code changes when built with -mod=vendor.
After merging and adding a new tag, this repo will get transferred accordingly.

need to redo this (and do it twice) due to not understanding the project layout


How to disable scrolling before and after a particular date in week view. I have tried to use disableScrollingBeforeDate and earliest selectable date delegate method but didn't work

[x] I have verified there are no duplicate active or recent bugs, questions, or requests
[x] I have verified that I am using the latest version of CVCalendar.
[x] I have given my issue a non-generic title.

Expected Behavior

Current Behavior

Possible Solution

Steps to Reproduce (for bugs)

Context

Your Environment

Version used (Cocoapods spec):
Device used i.e. iPhone 6S:
Physical device (y/n):
Link to your project (if available):

Do you have any source code to test it?

func setUpCVCalendar()
{
calendarView.calendarDelegate = self
calendarMenuView.delegate = self
self.calendarMenuView.commitMenuViewUpdate()
self.calendarView.calendarAppearanceDelegate = self
self.calendarView.delegate = self
self.calendarView.commitCalendarViewUpdate()

}
func latestSelectableDate() -> Date {
let dateStr = projectCreationDate// Date after which all dates will get disabled
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    let date = dateFormatter.date(from:dateStr)!
    let calendar = Calendar.current
    let components = calendar.dateComponents([.year, .month, .day, .hour], from: date)
    let startDate = calendar.date(from:components)

    return startDate!

}
func earliestSelectableDate() -> Date {
let dateStr = projectCreationDate// Date after which all dates will get disabled

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from:dateStr)!
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour], from: date)
let startDate = calendar.date(from:components)

return startDate!

}
func presentationMode() -> CalendarMode {
return CalendarMode.weekView
}
func firstWeekday() -> Weekday {
return CVCalendarWeekday.sunday
}

This is still an issue, originally raised in #522


Vue state does not sync with kendo datasource

Version
2.6.11
Reproduction link
http://dojo.telerik.com/aGENIHuW
Steps to reproduce

Click 'Test'
Click 'Update'

What is expected?
Replace first row with second row of grid.
What is actually happening?
No change on screen.

If I firstly click 'Test' (just only a same value assignment to state) and then click 'Update', strangely it does not work so the grid has no change. I found the Vue state was updated but the datasource won't.
If I firstly click 'Update', it works!
The problem is why, after clicked 'Test', the kendo grid datasource became cached and out of sync with the Vue state? If I don’t click 'Test', they do sync always. Problem occur only on “same value assignment”. If “different value assignment”, no problem. e.g.
test: function(e) { //same value assignment ('update' function will have problem after executed 'test')
    this.localDataSource = JSON.parse(JSON.stringify(this.localDataSource));
},
test2: function(e) { //different value assignment ('update' function works fine after executed 'test2')
    let ds = JSON.parse(JSON.stringify(this.localDataSource));
    ds[0]['ProductName'] = 'hello';
    this.localDataSource = JSON.parse(JSON.stringify(ds));
}

Hi, thanks for your interest but Github issues are for Vue bug reports and feature requests only. You can ask questions on the forum, the Discord server or StackOverflow.

Please reach out to Telerik support on how to use their product

Hi, thanks for your reply.
Before I came here, I posted this question to Telerik Kendo and we both guess it's related to Vue's reactive behaviour.
https://feedback.telerik.com/kendo-vue-ui/1471521-vue-state-dose-not-sync-with-kendo-datasource
At the same time, I also posted to the forum and StackOverflow for a week but am still waiting for reply.
https://forum.vuejs.org/t/vue-js-state-and-kendo-datasource-issue/97689
https://stackoverflow.com/questions/62339856/vue-state-does-not-sync-with-kendo-datasource
Thanks anyway.


Make sure there's a way for Rowan to add methods and classes "outside Rowan"

What happens if you try to compile a method for a class that is not in a rowan package and does not have a *'d category?

from issue #70, add, update and delete need to be supported

At the moment, RwPerformingUnpackagedEditNotification throws an error by default , but if you look at the tests, you can see that there are multiple options for handling the exception:
https://github.com/dalehenrich/Rowan/blob/cb493423f3810826d6841d72828d1e7ad9cebdb5/src/tonel/Rowan-Tests/RwRowanProjectIssuesTest.class.st#L8-L218
Not to mention the fact that we could easily arrange for a different default action to be used by RwPerformingUnpackagedEditNotification ...
Bouncing to @ericwinger for final tweaks

Jadeite needs to handle Rowan confirms. Once that happens, we can change the error to a confirm. Deferring to post alpha.

With the completion of #364, this issue will be addressed


Race condition or failure after postgresql startup

We keep getting intermittent failures in our CI system, here is one example: https://jenkins.puppetlabs.com/view/B_PuppetDB/job/PuppetDB Acceptance IN THE CLOUD/680/install_mode=install,label=ec2-coordinator,options_file=postgres,platform=ec2-west-el5-64mda-el5-64a/
The race is here:

Notice: /Stage[main]/Postgresql::Server/Exec[reload_postgresql]: Triggered 'refresh' from 1 events
Notice: /Stage[main]/Postgresql::Server/Service[postgresqld]/ensure: ensure changed 'stopped' to 'running'
Error: /Stage[main]/Puppetdb::Database::Postgresql_db/Postgresql::Db[puppetdb]/Postgresql::Database[puppetdb]/Postgresql_psql[Check for existence of db 'puppetdb']: Could not evaluate: Error evaluating 'unless' clause: 'psql: FATAL:  the database system is starting up
'
Notice: /Stage[main]/Puppetdb::Database::Postgresql_db/Postgresql::Db[puppetdb]/Postgresql::Database[puppetdb]/Exec[/usr/bin/createdb --owner='postgres' --template=template0 --encoding 'UTF8'  'puppetdb']: Dependency Postgresql_psql[Check for existence of db 'puppetdb'] has failures: true

It looks to me like the postgresql_psql provider needs to be made aware of the 'psql: the database system is starting up' state and back-off for a retry later perhaps?

Hello! We are doing some house keeping and noticed that this issue has been open for a long time.
We're going to close it but please do raise another issue if the issue still persists. 😄


Supporing returning on delete with sqlite3

This PR is an attempt to fix delete('*') doesn't return deleted rows mentioned in here https://github.com/knex/knex/issues/5757

It's almost done, but the following test case is failing and I'm investigating it.
should allow returning for deletes in postgresql and mssql the error message is clear

      -    "id": 2
      +    "id": "2"

I'm trying to figure out why the id is returned as a number and not a string like other dialects

coverage: 92.809% (+0.02%) from 92.787%
when pulling 535ead6ea2acf906bdbeb80b54430366da1931ab on mustafabalila:sqlite-delete-returning-issue-5757
into 6243f6cbd5421c9db046979b60fe8661b523581f on knex:master.

The tests are passing but I'm not 100% sure about this code block, all other databases in the test block return the id as a string id: '2' and the test was failing because sqlite returns it as a number, I tried inspecting the code to find why this is happening but didn't have much luck. So I updated the test the expect a numeric id instead, if someone could explain to me why sqlite was different in this case I'd be grateful!
tester(
  'sqlite3',
  'delete from `accounts` where `id` = ? returning *',
  [2],
  [
    {
      id: 2,
      first_name: 'Test',
      last_name: 'User',
      email<EMAIL_ADDRESS>      logins: 1,
      balance: 0,
      about: 'Lorem ipsum Dolore labore incididunt enim.',
      created_at: TEST_TIMESTAMP,
      updated_at: TEST_TIMESTAMP,
      phone: null,
    },
  ]
);

Anything I can do to help here? Would be great to get this in sometime in the near future 😄

@code-ape Can you investigate concern raised in https://github.com/knex/knex/pull/5761#issuecomment-1837587680 and report back whether or not this is something that needs addressing?

Hey @code-ape
Any updates on this? Let me know if I need to change anything. Thanks


Proposal: use the same AWSClient in multiple services

For 5.0.0 I propose the following change in the communication between a service generated by the CodeGenerator and the AWSClient from aws-sdk-swift-core:
Proposal:
I think we should offer the possibility to create a service with a client and reuse a client over multiple services.
Instead of an initializer reading like this:
    public init(
          accessKeyId: String? = nil,
          secretAccessKey: String? = nil,
          sessionToken: String? = nil,
          region: AWSSDKSwiftCore.Region? = nil,
          endpoint: String? = nil,
          middlewares: [AWSServiceMiddleware] = [],
          eventLoopGroupProvider: AWSClient.EventLoopGroupProvider = .useAWSClientShared)
     {
        self.client = AWSClient(
            accessKeyId: accessKeyId,
            secretAccessKey: secretAccessKey,
            sessionToken: sessionToken,
            region: region,
            amzTarget: "DynamoDB_20120810",
            service: "dynamodb",
            serviceProtocol: ServiceProtocol(type: .json, version: ServiceProtocol.Version(major: 1, minor: 0)),
            apiVersion: "2012-08-10",
            endpoint: endpoint,
            serviceEndpoints: ["ca-central-1-fips": "dynamodb-fips.ca-central-1.amazonaws.com", "local": "localhost:8000", "us-east-1-fips": "dynamodb-fips.us-east-1.amazonaws.com", "us-east-2-fips": "dynamodb-fips.us-east-2.amazonaws.com", "us-west-1-fips": "dynamodb-fips.us-west-1.amazonaws.com", "us-west-2-fips": "dynamodb-fips.us-west-2.amazonaws.com"],
            middlewares: middlewares,
            possibleErrorTypes: [DynamoDBErrorType.self],
            eventLoopGroupProvider: eventLoopGroupProvider
        )
    }

This would lead to something like this. The ServiceConfig object would be supplied on every request. Being just a struct this should be fairly inexpensive.
    public init(
          client: AWSClient,
          endpoint: String? = nil,
          middlewares: [AWSServiceMiddleware] = [])
    {
        self.client = client
        self.config = ServiceConfig(
            region: region,
            amzTarget: "DynamoDB_20120810",
            service: "dynamodb",
            serviceProtocol: ServiceProtocol(type: .json, version: ServiceProtocol.Version(major: 1, minor: 0)),
            apiVersion: "2012-08-10",
            endpoint: endpoint,
            serviceEndpoints: ["ca-central-1-fips": "dynamodb-fips.ca-central-1.amazonaws.com", "local": "localhost:8000", "us-east-1-fips": "dynamodb-fips.us-east-1.amazonaws.com", "us-east-2-fips": "dynamodb-fips.us-east-2.amazonaws.com", "us-west-1-fips": "dynamodb-fips.us-west-1.amazonaws.com", "us-west-2-fips": "dynamodb-fips.us-west-2.amazonaws.com"],
            middlewares: middlewares,
            possibleErrorTypes: [DynamoDBErrorType.self],
        )
    }

This has IMHO a number of advantages:

In most deployments an executable has one set of credentials allowing access to potentially multiple aws services. This is true for Lambda as well as Docker/ECS and should be true in most pure EC2 deployments (though I wonder if anyone does that). These credentials have to be injected into every AWS Service that is being used. If one want's to build their service on top of dependency injection currently credentials or complete service objects have to be passed into controllers or stores. With this approach one creates one AWSClient when starting up the server, passes this object around into the places where it is needed. Controllers/Stores can setup their own AWSService facade and use the object.
This has also the advantage of making shutdowns easy (because needs to happen just once), when not injecting an AsyncHTTPClient.

// main.swift

let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
defer { try! group.syncShutdownGracefully() }

let awsClient = AWSClient(eventLoopGroup: group)
defer { aws.syncShutdown() }

// further startup

// run

We probably create the ServiceConfig with a CoW backing storage:

We probably create the ServiceConfig with a CoW backing storage.
https://www.youtube.com/watch?v=iLDldae64xE
Great talk by weissi.

Yes it's a good talk. But is ServiceConfig a value type? I would imagine ServiceConfig being a read only object and therefore could be a class without any of the issues associated with multiple references editing it. You could setup the CoW backing storage, or your could just change it from a struct into a class.

I've been playing around with timings for struct copies vs class copies. You have to have quite a number of elements in a struct before a class copy is quicker (ref counting costs a lot). Stick a dictionary in a struct though and it automatically costs as much as a class copy.

As weissi pointed out: Don't make struct vs classes about performance. If it's a value type use structs. If performance is an issue use CoW.
In my point of view this will be very clearly a value type. Just wanted to point out, if we run into problems we should think about CoW.

I'm not sure it is an obvious value type. It is a readonly configuration object. Why would you keep copying it to use it?


[BUG] Present date doesn't translate to Swedish

Describe the bug
When editing the translation of "present" to swedish "Nuvarande" is correct. but when exporting as PDF the "present" does not translate into Swedish.
Product Flavor

[X] Managed (https://rxresu.me)
[ ] Self Hosted

To Reproduce

Change language to "Swedish (Svenska)"
Create a date under education with present (no ending date).
See that it says "Nuvarande" (Present in Swedish).
Export as PDF.
The date has now changed to "Present"

Expected behavior
Should say "Nuvarande"
Screenshots

Desktop (please complete the following information):

OS: MAC OS
Browser Firefox
Version 100.0

Additional context

Fixed in v3.4.5


would this be possible?

How should I go about creating this program or is this even a good lib for that?
Imagine you have 5 forms, all of them ask for the same information again and again.
So why not put Variables in all of those places once, like so $FIRST_NAME, $LAST_NAME, $DOB, etc...
Then have a json file where you define all variables and their values.
Run a nodejs program to which you provide pdf files, and json file. and it creates output fold with all those variables field in
I'm not sure what to do about checkboxes and select boxes.
I can write nodejs program to parse json file etc, but not sure how to go about modifying pdf files .

Closing as this question was addressed in https://github.com/Hopding/pdf-lib/issues/550.


Handle links to npm packages

Maybe replace a link like [assert](https://www.npmjs.com/package/assert) (found in browserify’s docs) with **assert**(n)?

+1; makes it a lot more manpagey!

I think the following would catch all?
/https?:\/\/npm\.im\/{name}\/?/
/https?:\/\/(www\.)?npm\.com\/(package\/){name}\/?/

Where {name} should be validated by npm/validate-npm-package-name? Which I hope would ignore ~users and other pages?

That looks good. For completion you might want to add:
/http?:\/\/ghub\.io\/{name}\/?/

Oh right, nice! That reminds me, stoked for man(g) 😉


Suppress output of successful init

Is there a way to not print the following initial logs of terragrunt apply?
terragrunt apply

Initializing the backend...

Initializing provider plugins...
- Reusing previous version of hashicorp/kubernetes from the dependency lock file
- Reusing previous version of hashicorp/aws from the dependency lock file
- Using previously-installed hashicorp/aws v4.18.0
- Using previously-installed hashicorp/kubernetes v2.11.0

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Using terragrunt-log-level, f.e. terragrunt apply --terragrunt-log-level warn doesn't work.
Related: https://github.com/gruntwork-io/terragrunt/issues/246#issuecomment-785796133

The init output is terraform output not terragrunt output so setting the log level for terragrunt won't help currently. You can try to set the terraform log level via https://www.terraform.io/internals/debugging or using shell tools to direct the stdout but this will most certainly remove all the output.

Hi,
may help setting env variable TF_LOG=ERROR, but this needs to be tested

Thanks Denis. Alas, the TF_LOG suggestion doesn't work. At least not on
terraform 1.2.8
terragrunt 0.38.4

Using the TF_IN_AUTOMATION environment variable removes the init messages and still shows the important information at least. So TF_IN_AUTOMATION=1 terragrunt run-all apply is much less verbose.

I have the below snippet in all my terragrunt projects since it makes it much friendlier to use. I do wonder if it should be the default
terraform {
  extra_arguments "quiet" {
    commands = [
      "init",
      "apply",
      "refresh",
      "plan",
      "output"
    ]

    env_vars = {
      TF_IN_AUTOMATION = "1"
    }
  }
}


Deploying preview of site for PRs

This is basically the same as https://github.com/JuliaDocs/Documenter.jl/issues/1131
It would be awesome if we had an option for PRs to run CI and push to some URL so you can eyeball some changes
Documentor does [normalurl]/previews/PR[number] e.g. https://juliadiff.org/ChainRulesCore.jl/previews/PR287/

Yes so the same stuff with a /preview/ URL is possible (and could be discarded upon merging into the main branch). I'll look into it.
In the meantime this can be done with a (free) netlify hook; this is what's done with the julialang website: https://github.com/JuliaLang/www.julialang.org/blob/main/.github/workflows/pr_comment.yml

I would love a way to do it from untrusted branches, e.g. PRs from forks.
which does suggest not merging into the main gh-pages branch in a folder.
and rather sending it somewhere of its own with a clearly unofficial URL

for the "clearly unofficial URL" I think the netlify option is a good one; you can reuse the pr_comment script from above which deploys to a preview branch that gets picked up by netlify and is deployed at something like somerandomaddress.netlify.app/pr/123
the alternative (which is what I thought you were suggesting) is to have something like a __pr__123 folder inside the __site/ folder on gh-pages that gets filled with the content of the site generated by the PR, and that it then becomes  available at yourbaseurl.io/__pr__123/ ; upon eventual merge into the master branch, these __pr__xxx folders would get removed.
Wdyt?

the alternative (which is what I thought you were suggesting) is

I don't really have opinions on how it should work.
I just want the GHA to be setup by default (potentially commented out), and instructions on what to do (if anything) in the docs.


Updating Measure Protocol

resolves #35
Description
As above, so below.
Checklist

[x] I have read the contributing guide and understand what's expected of me
[x] I have signed the CLA
[x] This PR includes tests, or tests are not required/relevant for this PR
[x] I have run changie new to create a changelog entry

YOLO 🤠


Implement API for XSLTs

Get List of XSLT/versions from DB
get XSLT with export service
update/add XSLT with import service

API created. Need frontend for testing.

TODO: Change API client to use WS "xslt" API fetching templates directly from DB.
Managing XSLT will then be added to WorkflowManager because of the similarity of the artifacts.

Done in V0.3.0


Community Engagement elements are outside of box

The text written in Community Engagement box got outside of conatainer

Steps To Reproduce

Go to 'home page.'
scroll down to Community Engagement

The expected behavior
text should to be inside box

This issue is already is already been raised.. You can work upon it.


Add link for falsehoods about fonts and typography

Good one! Thanks for your contribution! :)

Cheers, thanks for adding it! 🍰


Mast: Watch talkpoints.org

Mast requests the watch of the watch_keyword talkpoints\.org. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Approved by tripleee in Charcoal HQ

talkpoints\.org has been seen in 1 true positive, 0 false positives, and 0 NAAs.


nc_redis.c:1092 parsed unsupported command 'any command'

Describe the bug
Running twemproxy in docker container:
[2021-04-17 04:14:30.694] nc.c:187 nutcracker-0.4.1 built for Linux 4.19.121-linuxkit x86_64 started on pid 1
[2021-04-17 04:14:30.694] nc.c:192 run, rabbit run / dig that hole, forget the sun / and when at last the work is done / don't sit down / it's time to dig another one
[2021-04-17 04:15:10.811] nc_redis.c:1092 parsed unsupported command 'COMMAND'
[2021-04-17 04:16:50.069] nc_redis.c:1092 parsed unsupported command 'SELECT'
[2021-04-17 04:16:54.168] nc_redis.c:1092 parsed unsupported command 'KEYS'

To Reproduce
Steps to reproduce the behavior:

Install redis-cli
Connect to twemproxy by running redis-cli -h twemproxy -p 22121
Run redis command like SELECT 0

Environment
Twemproxy v0.4.1
Dockerfile
FROM debian:stretch-slim
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get -qy install \
    libtool \
    make \
    automake \
    curl \
    wget \
    openssh-server \
    gnupg2 \
    ca-certificates \
    build-essential

# Install twemproxy
RUN curl -qL https://github.com/twitter/twemproxy/archive/refs/tags/v0.4.1.tar.gz | tar xzf -; \
    cd twemproxy-0.4.1 && autoreconf -fvi && ./configure && make && make install; \
    cd .. && rm -rf twemproxy-0.4.1

Example of the docker compose:
version: "3.8"
services:
  redis:
    image: 'bitnami/redis:latest'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
  twemproxy:
    build: .
    entrypoint: nutcracker
    command: -v 11
    expose:
    - 22121
    depends_on:
    - redis
    volumes:
    - ./nutcracker.yml:/root/conf/nutcracker.yml

nutcracker.yaml
default:
  listen: <IP_ADDRESS>:22121
  hash: fnv1_64
  distribution: ketama
  auto_eject_hosts: false
  timeout: 400
  redis: true
  redis_db: 0
  servers:
  - redis:6379:1 server1

The full log with the debug:
[2021-04-17 04:33:06.739] nc.c:187 nutcracker-0.4.1 built for Linux 4.19.121-linuxkit x86_64 started on pid 1
[2021-04-17 04:33:06.739] nc.c:192 run, rabbit run / dig that hole, forget the sun / and when at last the work is done / don't sit down / it's time to dig another one
[2021-04-17 04:33:06.739] nc_mbuf.c:272 mbuf hsize 48 chunk size 16384 offset 16336 length 16336
[2021-04-17 04:33:06.739] nc_message.c:422 msg size 440
[2021-04-17 04:33:06.739] nc_connection.c:315 conn size 352
[2021-04-17 04:33:06.739] nc_util.c:228 malloc(88) at 0x5565dfb4f050 @ nc_core.c:54
[2021-04-17 04:33:06.742] nc_util.c:228 malloc(760) at 0x5565dfb4f2e0 @ nc_conf.c:756
[2021-04-17 04:33:06.742] nc_util.c:228 malloc(48) at 0x5565dfb4f5e0 @ nc_array.c:59
[2021-04-17 04:33:06.742] nc_util.c:228 malloc(2496) at 0x5565dfb4f620 @ nc_array.c:59
[2021-04-17 04:33:06.742] nc_conf.c:789 opened conf 'conf/nutcracker.yml'
[2021-04-17 04:33:06.744] nc_conf.c:945 conf 'conf/nutcracker.yml' has valid tokens
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 1 depth 0 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 3 depth 0 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 9 depth 0 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 1 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 9 depth 1 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.744] nc_conf.c:1013 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:1013 next event 7 depth 2 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:1013 next event 6 depth 2 seq 1
[2021-04-17 04:33:06.745] nc_conf.c:1013 next event 8 depth 2 seq 1
[2021-04-17 04:33:06.745] nc_conf.c:1013 next event 10 depth 2 seq 1
[2021-04-17 04:33:06.745] nc_conf.c:1013 next event 10 depth 1 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:1013 next event 4 depth 0 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:1013 next event 2 depth 0 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:549 next begin event 1
[2021-04-17 04:33:06.745] nc_conf.c:549 next begin event 3
[2021-04-17 04:33:06.745] nc_conf.c:549 next begin event 9
[2021-04-17 04:33:06.745] nc_conf.c:625 next event 6 depth 1 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:460 push 'default'
[2021-04-17 04:33:06.745] nc_conf.c:496 conf handler on 'default'
[2021-04-17 04:33:06.745] nc_util.c:228 malloc(1472) at 0x5565dfb61d20 @ nc_array.c:59
[2021-04-17 04:33:06.745] nc_conf.c:220 init conf pool 0x5565dfb4f620, 'default'
[2021-04-17 04:33:06.745] nc_conf.c:625 next event 9 depth 1 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:460 push 'listen'
[2021-04-17 04:33:06.745] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:460 push '<IP_ADDRESS>:22121'
[2021-04-17 04:33:06.745] nc_conf.c:505 conf handler on listen: <IP_ADDRESS>:22121
[2021-04-17 04:33:06.745] nc_conf.c:483 pop '<IP_ADDRESS>:22121'
[2021-04-17 04:33:06.745] nc_util.c:274 free(0x5565dfb61c70) @ nc_string.c:54
[2021-04-17 04:33:06.745] nc_conf.c:483 pop 'listen'
[2021-04-17 04:33:06.745] nc_util.c:274 free(0x5565dfb61c30) @ nc_string.c:54
[2021-04-17 04:33:06.745] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:460 push 'hash'
[2021-04-17 04:33:06.745] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.745] nc_conf.c:460 push 'fnv1_64'
[2021-04-17 04:33:06.745] nc_conf.c:505 conf handler on hash: fnv1_64
[2021-04-17 04:33:06.746] nc_conf.c:483 pop 'fnv1_64'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb62310) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:483 pop 'hash'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb622f0) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push 'distribution'
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push 'ketama'
[2021-04-17 04:33:06.746] nc_conf.c:505 conf handler on distribution: ketama
[2021-04-17 04:33:06.746] nc_conf.c:483 pop 'ketama'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb61c10) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:483 pop 'distribution'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb61c70) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push 'auto_eject_hosts'
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push 'false'
[2021-04-17 04:33:06.746] nc_conf.c:505 conf handler on auto_eject_hosts: false
[2021-04-17 04:33:06.746] nc_conf.c:483 pop 'false'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb62310) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:483 pop 'auto_eject_hosts'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb622f0) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push 'timeout'
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push '400'
[2021-04-17 04:33:06.746] nc_conf.c:505 conf handler on timeout: 400
[2021-04-17 04:33:06.746] nc_conf.c:483 pop '400'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb61c10) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:483 pop 'timeout'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb61c70) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push 'redis'
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push 'true'
[2021-04-17 04:33:06.746] nc_conf.c:505 conf handler on redis: true
[2021-04-17 04:33:06.746] nc_conf.c:483 pop 'true'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb61c30) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:483 pop 'redis'
[2021-04-17 04:33:06.746] nc_util.c:274 free(0x5565dfb62310) @ nc_string.c:54
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push 'redis_db'
[2021-04-17 04:33:06.746] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.746] nc_conf.c:460 push '0'
[2021-04-17 04:33:06.746] nc_conf.c:505 conf handler on redis_db: 0
[2021-04-17 04:33:06.746] nc_conf.c:483 pop '0'
[2021-04-17 04:33:06.747] nc_util.c:274 free(0x5565dfb622f0) @ nc_string.c:54
[2021-04-17 04:33:06.747] nc_conf.c:483 pop 'redis_db'
[2021-04-17 04:33:06.747] nc_util.c:274 free(0x5565dfb61c10) @ nc_string.c:54
[2021-04-17 04:33:06.747] nc_conf.c:625 next event 6 depth 2 seq 0
[2021-04-17 04:33:06.747] nc_conf.c:460 push 'servers'
[2021-04-17 04:33:06.747] nc_conf.c:625 next event 7 depth 2 seq 0
[2021-04-17 04:33:06.747] nc_conf.c:625 next event 6 depth 2 seq 1
[2021-04-17 04:33:06.747] nc_conf.c:460 push 'redis:6379:1 server1'
[2021-04-17 04:33:06.747] nc_conf.c:505 conf handler on servers: redis:6379:1 server1
[2021-04-17 04:33:06.747] nc_conf.c:125 init conf server 0x5565dfb61d20
[2021-04-17 04:33:06.747] nc_conf.c:483 pop 'redis:6379:1 server1'
[2021-04-17 04:33:06.747] nc_util.c:274 free(0x5565dfb61c70) @ nc_string.c:54
[2021-04-17 04:33:06.747] nc_conf.c:625 next event 8 depth 2 seq 1
[2021-04-17 04:33:06.747] nc_conf.c:483 pop 'servers'
[2021-04-17 04:33:06.747] nc_util.c:274 free(0x5565dfb61c30) @ nc_string.c:54
[2021-04-17 04:33:06.747] nc_conf.c:625 next event 10 depth 2 seq 0
[2021-04-17 04:33:06.747] nc_conf.c:483 pop 'default'
[2021-04-17 04:33:06.747] nc_util.c:274 free(0x5565dfb61bd0) @ nc_string.c:54
[2021-04-17 04:33:06.747] nc_conf.c:625 next event 10 depth 1 seq 0
[2021-04-17 04:33:06.747] nc_conf.c:589 next end event 4
[2021-04-17 04:33:06.747] nc_conf.c:589 next end event 2
[2021-04-17 04:33:06.747] nc_conf.c:323 1 pools in configuration file 'conf/nutcracker.yml'
[2021-04-17 04:33:06.747] nc_conf.c:328 default
[2021-04-17 04:33:06.747] nc_conf.c:330   listen: <IP_ADDRESS>:22121
[2021-04-17 04:33:06.747] nc_conf.c:331   timeout: 400
[2021-04-17 04:33:06.747] nc_conf.c:332   backlog: 512
[2021-04-17 04:33:06.747] nc_conf.c:333   hash: 5
[2021-04-17 04:33:06.747] nc_conf.c:335   hash_tag: ""
[2021-04-17 04:33:06.747] nc_conf.c:336   distribution: 0
[2021-04-17 04:33:06.747] nc_conf.c:338   client_connections: 0
[2021-04-17 04:33:06.747] nc_conf.c:339   redis: 1
[2021-04-17 04:33:06.747] nc_conf.c:340   preconnect: 0
[2021-04-17 04:33:06.747] nc_conf.c:341   auto_eject_hosts: 0
[2021-04-17 04:33:06.747] nc_conf.c:343   server_connections: 1
[2021-04-17 04:33:06.747] nc_conf.c:345   server_retry_timeout: 30000
[2021-04-17 04:33:06.747] nc_conf.c:347   server_failure_limit: 2
[2021-04-17 04:33:06.747] nc_conf.c:350   servers: 1
[2021-04-17 04:33:06.747] nc_conf.c:354     redis:6379:1
[2021-04-17 04:33:06.747] nc_util.c:228 malloc(400) at 0x5565dfb4fff0 @ nc_array.c:59
[2021-04-17 04:33:06.747] nc_util.c:228 malloc(264) at 0x5565dfb4f0b0 @ nc_array.c:59
[2021-04-17 04:33:06.747] nc_conf.c:168 transform to server 0 'redis:6379:1'
[2021-04-17 04:33:06.747] nc_server.c:167 init 1 servers in pool 0 'default'
[2021-04-17 04:33:06.747] nc_conf.c:305 transform to pool 0 'default'
[2021-04-17 04:33:06.747] nc_ketama.c:122 1 of 1 servers are live for pool 0 'default'
[2021-04-17 04:33:06.747] nc_util.c:264 realloc(14080) at 0x5565dfb502b0 @ nc_ketama.c:135
[2021-04-17 04:33:06.747] nc_ketama.c:168 server1 weight 1 of 1 pct 1.00000 points per server 160
[2021-04-17 04:33:06.747] nc_ketama.c:210 updated pool 0 'default' with 1 of 1 servers live in 11 slots and 160 active points in 3360 slots
[2021-04-17 04:33:06.747] nc_server.c:894 init 1 pools
[2021-04-17 04:33:06.747] nc_core.c:43 max fds 1048576 max client conns 1048542 max server conns 2
[2021-04-17 04:33:06.747] nc_util.c:228 malloc(336) at 0x5565dfb539c0 @ nc_stats.c:896
[2021-04-17 04:33:06.747] nc_util.c:228 malloc(80) at 0x5565dfb53b20 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(192) at 0x5565dfb53b80 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(48) at 0x5565dfb53c50 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(416) at 0x5565dfb53c90 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_stats.c:184 init stats server 'server1' with 13 metric
[2021-04-17 04:33:06.748] nc_stats.c:214 map 1 stats servers
[2021-04-17 04:33:06.748] nc_stats.c:257 init stats pool 'default' with 6 metric and 6 server
[2021-04-17 04:33:06.748] nc_stats.c:307 map 1 stats pools
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(80) at 0x5565dfb53e40 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(192) at 0x5565dfb53ea0 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(48) at 0x5565dfb53f70 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(416) at 0x5565dfb53fb0 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_stats.c:184 init stats server 'server1' with 13 metric
[2021-04-17 04:33:06.748] nc_stats.c:214 map 1 stats servers
[2021-04-17 04:33:06.748] nc_stats.c:257 init stats pool 'default' with 6 metric and 6 server
[2021-04-17 04:33:06.748] nc_stats.c:307 map 1 stats pools
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(80) at 0x5565dfb54160 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(192) at 0x5565dfb541c0 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(48) at 0x5565dfb54290 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(416) at 0x5565dfb542d0 @ nc_array.c:59
[2021-04-17 04:33:06.748] nc_stats.c:184 init stats server 'server1' with 13 metric
[2021-04-17 04:33:06.748] nc_stats.c:214 map 1 stats servers
[2021-04-17 04:33:06.748] nc_stats.c:257 init stats pool 'default' with 6 metric and 6 server
[2021-04-17 04:33:06.748] nc_stats.c:307 map 1 stats pools
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(1032) at 0x5565dfb54480 @ nc_stats.c:411
[2021-04-17 04:33:06.748] nc_stats.c:419 stats buffer size 1032
[2021-04-17 04:33:06.748] nc_stats.c:851 m 3 listening on '<IP_ADDRESS>:22222'
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(12288) at 0x5565dfb54890 @ nc_epoll.c:39
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(32) at 0x5565dfb50240 @ nc_epoll.c:48
[2021-04-17 04:33:06.748] nc_epoll.c:63 e 4 with nevent 1024
[2021-04-17 04:33:06.748] nc_util.c:228 malloc(352) at 0x5565dfb578a0 @ nc_connection.c:120
[2021-04-17 04:33:06.749] nc_proxy.c:43 ref conn 0x5565dfb578a0 owner 0x5565dfb4fff0 into pool 0
[2021-04-17 04:33:06.749] nc_connection.c:283 get conn 0x5565dfb578a0 proxy 1
[2021-04-17 04:33:06.749] nc_proxy.c:217 p 6 listening on '<IP_ADDRESS>:22121' in redis pool 0 'default' with 1 servers
[2021-04-17 04:33:06.749] nc_proxy.c:236 init proxy with 1 pools
[2021-04-17 04:33:06.749] nc_core.c:140 created ctx 0x5565dfb4f050 id 1
[2021-04-17 04:33:36.728] nc_stats.c:671 skip aggregate of shadow 0x5565dfb53e40 to sum 0x5565dfb54160 as generator is slow
[2021-04-17 04:33:36.736] nc_stats.c:996 skip swap of current 0x5565dfb53b20 shadow 0x5565dfb53e40 as there is nothing new
[2021-04-17 04:34:06.725] nc_stats.c:671 skip aggregate of shadow 0x5565dfb53e40 to sum 0x5565dfb54160 as generator is slow
[2021-04-17 04:34:06.725] nc_stats.c:996 skip swap of current 0x5565dfb53b20 shadow 0x5565dfb53e40 as there is nothing new
[2021-04-17 04:34:34.528] nc_epoll.c:254 epoll 0001 triggered on conn 0x5565dfb578a0
[2021-04-17 04:34:34.528] nc_core.c:324 event 00FF on p 6
[2021-04-17 04:34:34.528] nc_util.c:228 malloc(352) at 0x5565dfb57a10 @ nc_connection.c:120
[2021-04-17 04:34:34.528] nc_client.c:46 ref conn 0x5565dfb57a10 owner 0x5565dfb4fff0 into pool 'default'
[2021-04-17 04:34:34.528] nc_connection.c:242 get conn 0x5565dfb57a10 client 1
[2021-04-17 04:34:34.528] nc_stats.c:1033 metric 'client_connections' in pool 0
[2021-04-17 04:34:34.528] nc_stats.c:1050 incr field 'client_connections' to 1
[2021-04-17 04:34:34.528] nc_proxy.c:377 accepted c 7 on p 6 from '<IP_ADDRESS>:50320'
[2021-04-17 04:34:34.528] nc_proxy.c:291 accept on p 6 not ready - eagain
[2021-04-17 04:34:34.529] nc_stats.c:1001 swap stats current 0x5565dfb53b20 shadow 0x5565dfb53e40
[2021-04-17 04:34:34.529] nc_epoll.c:254 epoll 0005 triggered on conn 0x5565dfb57a10
[2021-04-17 04:34:34.529] nc_core.c:324 event FFFF on c 7
[2021-04-17 04:34:34.529] nc_util.c:228 malloc(440) at 0x5565dfb57b80 @ nc_message.c:207
[2021-04-17 04:34:34.529] nc_util.c:228 malloc(32) at 0x5565dfb57d40 @ nc_array.c:29
[2021-04-17 04:34:34.529] nc_util.c:228 malloc(16) at 0x5565dfb61c30 @ nc_array.c:34
[2021-04-17 04:34:34.529] nc_message.c:320 get msg 0x5565dfb57b80 id 1 request 1 owner sd 7
[2021-04-17 04:34:34.529] nc_util.c:228 malloc(16384) at 0x5565dfb57d70 @ nc_mbuf.c:46
[2021-04-17 04:34:34.529] nc_mbuf.c:99 get mbuf 0x5565dfb5bd40
[2021-04-17 04:34:34.529] nc_mbuf.c:182 insert mbuf 0x5565dfb5bd40 len 0
[2021-04-17 04:34:34.529] nc_connection.c:346 recv on sd 7 17 of 16336
[2021-04-17 04:34:34.529] nc_redis.c:1092 parsed unsupported command 'COMMAND'
[2021-04-17 04:34:34.529] nc_redis.c:1680 parsed bad req 1 res 1 type 0 state 5
00000000  2a 31 0d 0a 24 37 0d 0a  43 4f 4d 4d 41 4e 44 0d   |*1..$7..COMMAND.|
00000010  0a                                                 |.|
[2021-04-17 04:34:34.530] nc_core.c:198 recv on c 7 failed: Invalid argument
[2021-04-17 04:34:34.530] nc_core.c:237 close c 7 '<IP_ADDRESS>:50320' on event FFFF eof 0 done 0 rb 17 sb 0: Invalid argument
[2021-04-17 04:34:34.530] nc_stats.c:1033 metric 'client_connections' in pool 0
[2021-04-17 04:34:34.530] nc_stats.c:1065 decr field 'client_connections' to -1
[2021-04-17 04:34:34.530] nc_stats.c:1033 metric 'client_err' in pool 0
[2021-04-17 04:34:34.530] nc_stats.c:1050 incr field 'client_err' to 1
[2021-04-17 04:34:34.530] nc_client.c:147 close c 7 discarding pending req 1 len 17 type 0
[2021-04-17 04:34:34.530] nc_message.c:371 put msg 0x5565dfb57b80 id 1
[2021-04-17 04:34:34.530] nc_mbuf.c:191 remove mbuf 0x5565dfb5bd40 len 17
[2021-04-17 04:34:34.530] nc_mbuf.c:121 put mbuf 0x5565dfb5bd40 len 17
[2021-04-17 04:34:34.531] nc_util.c:274 free(0x5565dfb61c30) @ nc_array.c:77
[2021-04-17 04:34:34.531] nc_util.c:274 free(0x5565dfb57d40) @ nc_array.c:51
[2021-04-17 04:34:34.531] nc_client.c:65 unref conn 0x5565dfb57a10 owner 0x5565dfb4fff0 from pool 'default'
[2021-04-17 04:34:34.531] nc_connection.c:301 put conn 0x5565dfb57a10
[2021-04-17 04:34:34.531] nc_stats.c:990 skip swap of current 0x5565dfb53e40 shadow 0x5565dfb53b20 as aggregator is busy
[2021-04-17 04:34:36.720] nc_stats.c:676 aggregate stats shadow 0x5565dfb53b20 to sum 0x5565dfb54160
[2021-04-17 04:35:04.228] nc_epoll.c:254 epoll 0001 triggered on conn 0x5565dfb578a0
[2021-04-17 04:35:04.228] nc_core.c:324 event 00FF on p 6
[2021-04-17 04:35:04.228] nc_client.c:46 ref conn 0x5565dfb57a10 owner 0x5565dfb4fff0 into pool 'default'
[2021-04-17 04:35:04.229] nc_connection.c:242 get conn 0x5565dfb57a10 client 1
[2021-04-17 04:35:04.229] nc_stats.c:1033 metric 'client_connections' in pool 0
[2021-04-17 04:35:04.229] nc_stats.c:1050 incr field 'client_connections' to 0
[2021-04-17 04:35:04.229] nc_proxy.c:377 accepted c 7 on p 6 from '<IP_ADDRESS>:50326'
[2021-04-17 04:35:04.229] nc_proxy.c:291 accept on p 6 not ready - eagain
[2021-04-17 04:35:04.229] nc_stats.c:1001 swap stats current 0x5565dfb53e40 shadow 0x5565dfb53b20
[2021-04-17 04:35:04.229] nc_epoll.c:254 epoll 0005 triggered on conn 0x5565dfb57a10
[2021-04-17 04:35:04.229] nc_core.c:324 event FFFF on c 7
[2021-04-17 04:35:04.229] nc_util.c:228 malloc(32) at 0x5565dfb57d40 @ nc_array.c:29
[2021-04-17 04:35:04.229] nc_util.c:228 malloc(16) at 0x5565dfb61c30 @ nc_array.c:34
[2021-04-17 04:35:04.229] nc_message.c:320 get msg 0x5565dfb57b80 id 2 request 1 owner sd 7
[2021-04-17 04:35:04.229] nc_mbuf.c:99 get mbuf 0x5565dfb5bd40
[2021-04-17 04:35:04.229] nc_mbuf.c:182 insert mbuf 0x5565dfb5bd40 len 0
[2021-04-17 04:35:04.229] nc_connection.c:346 recv on sd 7 23 of 16336
[2021-04-17 04:35:04.229] nc_redis.c:1092 parsed unsupported command 'SELECT'
[2021-04-17 04:35:04.229] nc_redis.c:1680 parsed bad req 2 res 1 type 0 state 5
00000000  2a 32 0d 0a 24 36 0d 0a  53 45 4c 45 43 54 0d 0a   |*2..$6..SELECT..|
00000010  24 31 0d 0a 30 0d 0a                               |$1..0..|
[2021-04-17 04:35:04.229] nc_core.c:198 recv on c 7 failed: Invalid argument
[2021-04-17 04:35:04.229] nc_core.c:237 close c 7 '<IP_ADDRESS>:50326' on event FFFF eof 0 done 0 rb 23 sb 0: Invalid argument
[2021-04-17 04:35:04.229] nc_stats.c:1033 metric 'client_connections' in pool 0
[2021-04-17 04:35:04.229] nc_stats.c:1065 decr field 'client_connections' to -1
[2021-04-17 04:35:04.229] nc_stats.c:1033 metric 'client_err' in pool 0
[2021-04-17 04:35:04.229] nc_stats.c:1050 incr field 'client_err' to 1
[2021-04-17 04:35:04.229] nc_client.c:147 close c 7 discarding pending req 2 len 23 type 0
[2021-04-17 04:35:04.229] nc_message.c:371 put msg 0x5565dfb57b80 id 2
[2021-04-17 04:35:04.229] nc_mbuf.c:191 remove mbuf 0x5565dfb5bd40 len 23
[2021-04-17 04:35:04.229] nc_mbuf.c:121 put mbuf 0x5565dfb5bd40 len 23
[2021-04-17 04:35:04.229] nc_util.c:274 free(0x5565dfb61c30) @ nc_array.c:77
[2021-04-17 04:35:04.229] nc_util.c:274 free(0x5565dfb57d40) @ nc_array.c:51
[2021-04-17 04:35:04.229] nc_client.c:65 unref conn 0x5565dfb57a10 owner 0x5565dfb4fff0 from pool 'default'
[2021-04-17 04:35:04.230] nc_connection.c:301 put conn 0x5565dfb57a10
[2021-04-17 04:35:04.230] nc_stats.c:990 skip swap of current 0x5565dfb53b20 shadow 0x5565dfb53e40 as aggregator is busy
[2021-04-17 04:35:06.716] nc_stats.c:676 aggregate stats shadow 0x5565dfb53e40 to sum 0x5565dfb54160

SELECT 1 doesn't make sense, though

nutcracker will have multiple clients, and those clients share a db
nutcracker shards requests to multiple backends. Nutcracker can also have multiple connections to the same backend, but only forwards requests once.

For the same reason, KEYS doesn't make sense with twemproxy's model of forwarding requests to a single server. You can use lua if you reverse engineer which tag to use for which backend, e.g. brute force a hash_tag to use for each backend, and send a placeholder tag with a lua redis command.
https://redis.io/commands/command is possible to implement or emulate. Same for https://redis.io/commands/lolwut
https://github.com/twitter/twemproxy/pull/599/files

Connect to twemproxy by running redis-cli -h twemproxy -p 22121

I misunderstood that in my earlier response - redis-cli is automatically sending the COMMAND in interactive mode to get the list of redis commands supported by a server version. I guess it's extremely convenient for redis-cli autocompletion and suggestions

I assuming choosing a random server would work. Alternately, a hardcoded response could be used, but this would claim to use redis commands that are potentially too new for a server because the proxy supported it. Knowing the full list would be useful for eval

redis-cli -p 6380 would send COMMAND on startup
nc -l 6380
*1
$7
COMMAND

echo -en '*1\r\n$7\r\nCOMMAND\r\n' | nc <IP_ADDRESS> 6379 - it looks like this is a multi-bulk response and this would depend on https://github.com/twitter/twemproxy/issues/537 to be fixed to work (i.e. parsing nested arrays)
https://github.com/twitter/twemproxy/blob/master/notes/redis.md lists supported commands, others are unsupported

README.md
107:+ **redis_db**: The DB number to use on the pool servers. Defaults to 0. Note: Twemproxy will always present itself to clients as DB 0.

the redis_db in the config file should be used instead of SELECT

Related to https://github.com/twitter/twemproxy/issues/518

See https://github.com/twitter/twemproxy/issues/103 for select
For KEYS, I don't know of a way for a proxy to safely paginate that in a way that would work with clients, e.g. if there are 10 servers, how this would indicate which server + which original offset in a 64-bit integer expected by redis clients.

Many other commands were deliberately omitted for similar reasons. See notes/redis.md for the list of commands that are/aren't supported

For COMMAND, support for that was added for that in #599 and will be in twemproxy 0.5.0


Remove vendoring of knative.dev/eventing-kafka/test/rekt

SRVKE-1370
Proposed Changes

:broom: Remove dependency to knative.dev/eventing-kafka/test/rekt by including the sources in the broker repo itself

/test all

Thanks for this!
One thought: Instead of putting it on test/rekt (like the legacy repo had it), why not stashing it onto e2e_new_channel?
For the broker, we do have the features and resources folder there:

https://github.com/creydr/knative-eventing-kafka-broker/tree/move-eventing-kafka-test-rekt-to-broker/test/e2e_new/features
https://github.com/creydr/knative-eventing-kafka-broker/tree/move-eventing-kafka-test-rekt-to-broker/test/e2e_new/resources

OR: we move (in a separate PR), the content from test/e2e_new to the test/rekt ?
Not sure

One thought: Instead of putting it on test/rekt (like the legacy repo had it), why not stashing it onto e2e_new_channel?
For the broker, we do have the features and resources folder there:

https://github.com/creydr/knative-eventing-kafka-broker/tree/move-eventing-kafka-test-rekt-to-broker/test/e2e_new/features
https://github.com/creydr/knative-eventing-kafka-broker/tree/move-eventing-kafka-test-rekt-to-broker/test/e2e_new/resources

OR: we move (in a separate PR), the content from test/e2e_new to the test/rekt ?
Not sure

Hi @matzew,
thanks for checking on this. Good point... I don't have a hard opinion on this, but moving it into e2e_new_channel and having something similar in e2e_new feels duplicate if they belong together. So I like the 2nd idea of moving test/e2e_new to test/rekt a bit more. But these are just my bits on it...
@pierDipi @aliok any opinions?

So I like the 2nd idea of moving test/e2e_new to test/rekt a bit more. But these are just my bits on it...

Sounds good to me. This is something we can (and should) do separately, to not bloat this PR

This is something we can (and should) do separately, to not bloat this PR

Agree. I'll follow up on this

/assign @matzew


Task 01 - setup

Mentor is added to pr
AC copied to pr description
link to deployed version added to pr
About block (text and image) added to main page
On the widths 390px and 1280px, the site layout corresponds to the design

Link to deployed page:
https://bogdandrummer.github.io/fe-react-2024/

Mobile view does not match design. Pls check font size, photo should be from above, and with paddings. Also no padding before profile link.

Hey, @Bogdandrummer, you have created pr to our main repo - https://github.com/MastersAcademy/fe-react-2024.
But according to our flow, you should create pr to your repo - https://github.com/Bogdandrummer/fe-react-2024/tree/main
So I close this pr


feat: add equal_scale_axes to 2D scatter plot

It works as expected for interactive plots:  but it does not for noninteractive:  The code used to generate the plots:
import numpy as np
import pandas as pd
from edvart.plots import scatter_plot_2d

df = pd.DataFrame({'a': np.arange(10) * 200, 'b': np.arange(10)})

scatter_plot_2d(df=df, x='a', y='b', equal_scale_axes=True, interactive=False)

Thanks, fixed by using a different setting to scale the axes.


Optimizations: Consider lightweight icmp?  Consider closer endpoint?  Consider spot?

Maybe these are all obvious and each have unique blockers but has the project maintainers considered a few optimizations: test with icmp instead of tcp, test to an Amazon public address, and use spot instances.

Thanks for the suggestions!

test with icmp instead of tcp

I initially used icmp, but ultimately decided on tcp/https because I felt it would be a more realistic health check, e.g. in the event of some unusual behavior where ICMP worked but TCP didn't. Seems reasonable to have ICMP as an option though.

test to an Amazon public address

Also could be a good option!

use spot instances

Might require some testing, but could help reduce the expense of the NAT instance for sure.
PRs are welcome for all of the above. :)

For spot, it could be as simple as updating the launch configuration to expose the market_options argument and/or providing our own aws_launch_template arn as an input as an escape hatch.
To safely kill the instance upon an interruption, I don't think we could rely solely on the instance terminating lifecycle hook and there aren't additional hooks we could key off of.
According to this blog post it looks like it can be implemented in 2 ways.

event rule that matches when spot is interrupted and triggers the lambda
shell script on the instance that checks for when spot is interrupted and triggers the lambda

Finally, it could be put behind a flag i.e. spot_enabled or logic based on the market options input so it can be tested by a subset of users instead of all the users.
What do you folks think?

Thanks for doing this research. Seems like the event rule approach might be the best option. I wonder if the event rule could call TerminateInstanceInAutoScalingGroup which would in turn invoke the instance terminating lifecycle hook.. then we wouldn't really need a separate workflow to handle this.
The only catch I can think of off the top of my head is that the spot instance only has 2 minutes to terminate, but the termination lifecycle hook heartbeat can be much longer than that. At a minimum, the heartbeat_timeout value would need to be configurable (should be anyway probably), and the docs should explain that for spot use cases it must be set to less than 120.

Quick updates:

The connectivity check endpoints are now configurable via var.connectivity_test_check_urls
The heartbeat timeout is now exposed via var.lifecycle_heartbeat_timeout

Hi there,
We've deployed alterNAT to the eu-west-1 (Ireland) datacenter and we noticed occasionally that example.com is timing out. Refer to the log snippets below.
[ERROR]	2023-06-28T17:12:22.372Z	307bb718-1412-48da-81e4-cfb3db4e055a	error connecting to https://www.example.com: <urlopen error _ssl.c:1112: The handshake operation timed out>
[ERROR]	2023-06-28T17:33:54.441Z	4316bf29-cec9-4ee2-8e03-0ffb1314415c	timeout error connecting to https://www.example.com: The read operation timed out
[ERROR]	2023-06-28T17:36:28.864Z	83de7836-4cfd-4114-bc58-adefa3f906d4	timeout error connecting to https://www.example.com: The read operation timed out
[ERROR]	2023-06-28T17:42:17.948Z	2b58395a-8aa8-4e74-aa28-26d6ff50e00b	error connecting to https://www.example.com: <urlopen error _ssl.c:1112: The handshake operation timed out>

We noticed this because we have monitoring setup to advise us of our error burn rate. I am not convinced that it's a problem with example.com itself, but where the endpoint is located for the site. Meaning, that US-based deployments are o.k.
Google is working fine, but I am confident that the hardcoded domain example.com may be a detriment for customers located in places that aren't the US. This is something to probably indicate somewhere. Happy to even raise a PR to update the Readme docs if you'd like @bwhaley.
Thanks for the override options, we're going to apply that anywho.

An update to my last post:
We changed our address assignments to the following:

https://www.google.com
https://www.aws.amazon.com; and
http://captive.apple.com

and we saw a dramatic improvement in the reliability of the connectivity testing results across our us-west-1 and eu-west-1 region deployments.


Privacy Policy

Is your feature request related to a problem? Please describe.
We will need to include a Privacy Policy on the website that is in line with GDPR regulation.
Describe the solution you'd like
I am not familiar with GRPR and privacy policies. Has anyone looked into this before and can help with information on what needs to be included and potentially provide a first draft?
Things I think will be relevant and might need to be included:

cookies
Personal data such as email and any other information we will request when asking people to join our mailing list
Does joining the slack channel need to be included in the privacy policy? I know Whatsapp groups are not complying with GDPR regulations. Is this the case with Slack as well?

I have created a first draft of the Privacy Policy Here: https://docs.google.com/document/d/1U_q8MCSk_bbyqq6YJ_Yi5VDRCaIsDDAZXgsirBWMpqk/edit# I would appreciate any feedback you might have.

Things to check:

check we don't claim to be accessible.
check our level of commitment to change if there are issues.
ask @lenucksi to review - as he has an interest in this area too.

Live on the site. Feel free to reopen if any case.


Run train_bash.py, sft:  AttributeError: '_lzma.LZMADecompressor' object has no attribute 'needs_input'

try --use_fast_tokenizer

Thank you, but it does not work.

Downgrade your transformers library to 4.31.0

Thank you, but there is the same problem. I use python3.8，is the problem with it？

Thank you, but there is the same problem. I use python3.8，is the problem with it？

Reinstalling the Python environment may help.


Solution for challenge 5

Pull Request Test Coverage Report for Build<PHONE_NUMBER>2
Details

68 of 72 (94.44%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+5.3%) to 40.0%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

challenge/day5/a.go
31
33
93.94%

challenge/day5/b.go
37
39
94.87%

Totals

Change from base Build<PHONE_NUMBER>8:
5.3%

Covered Lines:
346

Relevant Lines:
865

💛  - Coveralls


It is possible to navigate to a custom backlog tab page even though it should be invisible

I am working on an extension that adds a backlog tab page following the instructions here https://www.visualstudio.com/en-us/integrate/extensions/develop/add-backlog-tabs
The goal is to only make the tab page available if a certain condition is true:
VSS.register("backlogTabObject", {

          isInvisible: function(state) {
              return determinIfTabShouldBeInvisible(state);
          }
  });

The problem now is when I navigate to the my custom tab page and then navigate to an iteration where isInvisible returns true my custom tab page is still active even though the tab navigation link is not visible.
Is there any workarround or other solution to this problem?

As discussed offline, this is unfortunately a known bug with no workarounds at the moment.

@cschleiden actullay turns out i dont need the dynamic visiblity of tabs for now but would be cool to have that fixed.

Any update on this?
I want to show custom tab on Query Results (ms.vss-work-web.query-tabs) only for a specific project and not for all projects in the organization i installed. i tried to use isInvisible but it is not working.


Add backticks to Developers.md

The developer documentation is inconsistent about backticking text that refers to code or shell commands. This adds backticks so non-prose text is formatted distinctly when rendered from Markdown.

thanks!


Links do not open

Andoird Messages version: 1.0.0
OS: MacOS Mojave
This appears to be a regression in 1.0.0. Clicking on a message with a link in it selects the message instead of opening the link.
I confirmed this is not a bug on messages.google.com.
I also uninstalled and reinstalled 1.0.0 and the bug persists.

Version: 1.0.0
OS: Windows 10
Same issue here, links do not open. Have to copy message text.

Appears to be attempting to open the URL within Android Messages instead of delegating to an external browser. The last update to the code that handles this was 2 months ago by @chrisknepper: https://github.com/chrisknepper/android-messages-desktop/blob/71fab5adee494cce03d01868fa1ebf1a0f7563b7/src/helpers/webview/input_manager.js#L17-L36
It might be a downstream effect of the updates required for handling the new URL during the v1.0 update.

@dealingwith @jpool-cf @nelsonni Thanks for reporting this, I will take a look ASAP!

Same issue here. Clicking links does nothing, it just expands the timestamp.

I've got the code all ready for this, just need to test it on Windows and Linux later today and should be out tonight.

Functionality looks good on Mac Mojave, Windows 10, Ubuntu 18.04. Release 1.0.1 is imminent.


Timeouts can cause sporadic failures with IronPython

Some of Robot's own acceptance and unit test sporadically fail with exception like this:
TypeError: Unable to cast object of type 'Microsoft.Scripting.Runtime.Uninitialized'
to type 'System.Exception'.

The exact place has varied, but after some investigation it turned out that the problem is related to timeouts. Timeouts didn't even need to exceed, it was enough that they were used. Interestingly actually acceptance tests for timeouts passed and these weird failures were seen elsewhere.
Apparently the root cause is that with IronPython we use a pretty hackish stoppable thread implementation to make it possible to stop keywords if a timeout occurs. I have already prototyped that it is possible to use .NET threads instead and that seems to avoid these strange failures. More testing still needed, though.

All unit and acceptance tests pass with IronPython and also with other interpreters. This issue can be considered done.


Request Consistency between report formats

Great project this has already been super helpful to me. I have some feedback from non technical users that would make the project must more valuable to us/them.
NOTICE_SUMMARY include the package uri in the same form as the PDF the summary includes who has a copyright but not which package/scope the copyright applies to.
NOTICE_default include the package system similar to the pdf output version
PDF output I belive section 2 is intended to be the license of the project being scanned with all dependency licenses following but I have no idea from docs how to ever make section 2 populate.

Great project this has already been super helpful to me.

Thanks for the praise, @rfaircloth-splunk!

I have some feedback from non technical users that would make the project must more valuable to us/them.

Please note that any customizations you may want to have done in these reports you can easily do yourself by adjusting the FreeMarker templates, and then pass your own template files to the reporters via the template.path option as explained here and / or here.

PDF output I belive section 2 is intended to be the license of the project being scanned with all dependency licenses following but I have no idea from docs how to ever make section 2 populate.

That section should only ever populate if a license scanner finds licenses in your own project source code.


Add Standard I/O

I recommend to add stdin, stdout and stderr into the library, currently I have to pass the fd to Io::new before register into the event loop, and mem::forget it after it is done, because Io has implemented Drop trait, which will close the fd.
fn stdout() -> &'static Io;
fn stdin() -> &'static Io;
fn stderr() -> &'static Io;

This seems like a very reasonable set of fd's to include by default.  Maybe we can wrap them in some intermediate object which will shield them from the close() on Drop.

Or we could just make another struct, maybe name it as Stdio, which works similar as Io, but do not have Drop implemented.

I guess as long as it has Evented implemented it should be fine.
On Wed, May 13, 2015 at 11:52 AM Y. T. CHUNG<EMAIL_ADDRESS>wrote:

Or we could just make another struct, maybe name it as Stdio, which works
similar as Io, but do not have Drop implemented.
—
Reply to this email directly or view it on GitHub
https://github.com/carllerche/mio/issues/165#issuecomment-101722423.

May be it could be implemented like this,
struct Stdio(RawFd);

impl Stdio {
    fn new(fd: RawFd) -> Stdio {
        unsafe {
            // FIXME: Need to make stdio non-block???
            let mut opts = libc::fcntl(fd, libc::F_GETFL);
            if opts & libc::O_NONBLOCK == 0 {
                opts |= libc::O_NONBLOCK;
                assert!(libc::fcntl(fd, libc::F_SETFL, opts) == 0);
            }
        }

        Stdio(fd)
    }
}

impl AsRawFd for Stdio {
    fn as_raw_fd(&self) -> RawFd {
        self.0
    }
}

impl Evented for Stdio {}

impl TryRead for Stdio { ... }
impl TryWrite for Stdio { ... }

fn stdout() -> Stdio {
    Stdio::new(libc::STDOUT_FILENO)
}

fn stdin() -> Stdio {
    Stdio::new(libc::STDIN_FILENO)
}

fn stderr() -> Stdio {
    Stdio::new(libc::STDERR_FILENO)
}

But ... Is that necessary to set O_NONBLOCK on stdio? Will that affect the std::io?

Yeah, that's a good question. I have not personally tested, but I read that changing O_NONBLOCK is global to the process (even if the fd has been duped).
Could you test this?

I have tested it, for calling println in multiple threads, some of them will report
failed printing to stdout: Resource temporarily unavailable (os error 35)

not surprise.

So, I'm not sure what the best strategy is here. It's definitely useful to be able to use EventLoop or Poll with stdio, but we definitely don't want to set O_NONBLOCK.
I think @zonyitoo's original idea (with the Stdio wrapper) would be ok as long as the documentation is clear that the handles are blocking and thus should probably not be mixed with (high throughput) non-blocking IO unless care is taken.
@zonyitoo If you want to take your snippet, add it to unix.rs (since I am not 100% sure how stdio will work on windows), add some docs, and submit a PR, I will accept it :+1:

I suggest this for my coroutine-rs project, which could yield a coroutine automatically when printing to stdio.
According to this document, I think I shouldn't adopt the snippet into unix.rs, the stdio should not be set with O_NONBLOCK.
So I have an idea... make pipes for stdio fds, so that we can control them without interfere std::io.

I should do some experiments before submitting a PR. ;)

Cool, let me know. coroutine-rs looks nice btw.

Ping. Is there anything left to do for this issue? I'm unsure if there is an action to take or it is a "wont' fix"

@carllerche I think this should be marked as won't fix.
But I sincerely wants a data structure for cloning the handle of Io, which can be sent between threads and won't close the fd when it goes out of the scope.
But I think it is another issue. So this one should be closed.

I will close this as won't fix.
@zonyitoo Instead of adding a structure that doesn't close the FD, why don't you clone the FD before passing it in?

@carllerche How to? If you mean to use .as_raw_fd() and then reconstruct the Io again, that is what I am doing currently. But how about windows?
If I reconstruct the Io, I have to use mem::forget to forbid deconstruct, which is not elegant.

Right, if you dup the raw FD before passing it to Io, then you can safely let Io go out of scope since the FD was duped and the original one won't be closed.

I don't think duplicate it is a good idea. What I want to do is to store the fd in the Slab, but also have another copy of it for reading/writing (when the waiting coroutine is waked up).
If using another design, a copy of Io has to be sent into a channel for the coroutine that running the EventLoop to register and deregister.


ASK 2.6.0 VSCode 1.56.2 - JSON responses in skill I/O window always empty

EDIT: Working now... It might have been a dodgy graphics driver?!
Many people are having problems with the latest Nvidia driver, and I just downgraded mine, rebooted, and now I notice that the I/O display is back. What I should have done before was to try a "select all" in the space to see if the text was actually there, but just the same as the background. That is all I can think of, as nothing else that I can see has changed.
Will leave this open for 24 hours in case anyone else has the same...

Describe the bug
Since the update to fix the previous bug, the emulator window is not black now, but there is no JSON input or output in the Skill I/O wndows.
To Reproduce
Type "open my skill name" in "talk to Alexa" column.
Extension Logs
[debug - 2021-06-10 08:45:26.427Z] Calling method: simulateSkill.onReceiveMessageListener
[verbose - 2021-06-10 08:45:26.427Z] Calling method: getSkillDetailsFromWorkspace
[verbose - 2021-06-10 08:45:26.427Z] Calling method: getSkillFolderInWs
[verbose - 2021-06-10 08:45:26.427Z] Calling method: doesWorkSpaceExist
[verbose - 2021-06-10 08:45:26.427Z] Calling method: getAskResourceConfig
[verbose - 2021-06-10 08:45:26.427Z] Calling method: getAskState
[verbose - 2021-06-10 08:45:26.427Z] Calling method: getSkillManifestFromWorkspace
[verbose - 2021-06-10 08:45:26.427Z] Calling method: getSkillMetadataSrc
[verbose - 2021-06-10 08:45:26.427Z] Calling method: getAskResourceConfig
[verbose - 2021-06-10 08:45:26.427Z] Calling method: getSkillNameFromLocales, args: [XXX]
[verbose - 2021-06-10 08:45:26.427Z] Calling method: simulateMessageHelper.handleUtteranceMessageFromWebview
[verbose - 2021-06-10 08:45:26.427Z] Calling method: simulateSkillHelper.getSimulationResponse, args:  ["open test skill"]
[verbose - 2021-06-10 08:45:26.710Z] Retrying simulation request, attempt: 1
[error - 2021-06-10 08:45:26.895Z] Simulation in progress.

[verbose - 2021-06-10 08:45:27.395Z] Retrying simulation request, attempt: 2
[error - 2021-06-10 08:45:27.570Z] Simulation in progress.

[verbose - 2021-06-10 08:45:28.571Z] Retrying simulation request, attempt: 3
[error - 2021-06-10 08:45:28.754Z] Simulation in progress.

[verbose - 2021-06-10 08:45:30.754Z] Retrying simulation request, attempt: 4
[verbose - 2021-06-10 08:45:30.945Z] Calling method: simulateSkillHelper.formatAlexaResponse

Expected behavior
JSON input and output windows are populated
Desktop (please complete the following information):

OS: VSCode running on Win10, but using Remote Explorer on VSCode on Ubuntu LTS 20.04.1
Visual Studio Code Version: 1.56.2
Alexa Skill Toolkit Version: 2.6.0

Additional context
All I can be sure of is that it was working before the "black emulator window" problem  (https://github.com/alexa/ask-toolkit-for-vscode/issues/123 now fixed). In other respects, Skill operates correctly, and I can see the info passing in the debug console.

I'm seeing the same thing on a VM


glitch when accepting a new claim

I just approved "original language of work:Japanese". After the page is reloaded the same claim is suggested again.

This happened on Q2665450 in case it makes a difference.

This is due to https://twitter.com/tomayac/statuses/579822321763913728. When I change something via the JavaScript library, the API doesn't reflect the changes right away. Can you ping me offline regarding the caching policy? You have my contacts :-) Thanks!


Added RFC 7233 Range HTTP/1.1 Range Requests

Hey all,
I am currently rewriting my youtube to podcast web app using sanic. I noticed that the implementation of static files doesn't include a way to deal with range requests RFC 7233. So instead of writing my own implementation for my app, I tried to implement it directly into sanic.

Seems like something went wrong. Did you try to do a rebase on this Pull Request?

Sorry yes. Haven't done many of these yet. Do you want me to just re-submit the Pull request?

Yes I think it'd be better to do so.


Testing/password and group update 20210331

clean version of testing/password_and_group_update_20210326 without rebase-mess.

added integration tests for password change and group name change scenarios
added functionality to generate temporary pw-reset tokens for test cases

superseded by #264


Call to a member function bind() on null

Describe the bug
Apache access logs record error code 500 several times per day which gets picked up in my website monitoring tools.
Website crawlers are looking for image files that no longer exist, and that results in the page "An error occurred" instead of displaying a 404 error. When I enable APP_DEBUG, it shows:
Symfony\Component\Debug\Exception\FatalThrowableError
Call to a member function bind() on null
Illuminate\Support\HigherOrderTapProxy::__call
vendor/laravel/framework/src/Illuminate/Support/HigherOrderTapProxy.php:34
Steps To Reproduce
Steps to reproduce the behavior:

input a URL for an image file that does not exist such as
http://localhost/uploads/images/gallery/2020-07-Jul/scaled-840-0/Hv00Bx6vSa7h2bUx-Membership---Pay-by-invoice.png

Expected behavior
404 error should be displayed
Screenshots

Your Configuration (please complete the following information):

Exact BookStack Version (Found in settings): v0.31.6 -
PHP Version: 7.2
Hosting Method (Nginx/Apache/Docker): Apache

Additional context
N/A

Hi @mtrayn01,
This should have been already addressed since it was raised in issue #2696, the fix of which was included in v21.04.4. I'll therefore close this off but if you continue to receive errors after upgrading to the latest BookStack version let me know and I'll close this off.

@ssddanbrown - Thanks - this fixed the issue. I was confused with version numbers as it looks like they changed format.


Machine leaks API information in production

In production, when required param(s) are omitted from e.g. a POST request, machine's E_MISSING_OR_INVALID_PARAMS response will leak information about the API.
E.g.:
$ curl http://localhost:1337/some_endpoint

{
  "code": "E_MISSING_OR_INVALID_PARAMS",
  "problems": [
    "\"some_var\" is required, but it was not defined."
  ],
  "message": "The server could not fulfill this request (`POST /some_endpoint`) due to 1 missing or invalid parameter."
}

This error message is generated in the machine-as-action module, and there does not appear to be an option to disable this.
These detailed messages are very helpful in development, and likely if building a production API to be consumed by third parties.
However, for some projects they represent an unacceptable level of data leakage.
It would be great if there were an option to disable these detailed error messages in production, and instead return a straight 400 error with content simply Bad Request (text/plain).

@alxndrsn this totally make sense, maybe some kind of function that would run in this scenario and return the desired response body (leaving the headers & status code the same).
If anyone else looking at this issue has anything to add, open to more suggestions/feedback!

Although the framework has great power with its automation, you can provide a workaround with your own controller I presume.

@crh3675 this is true, but inconvenient if it has to be done in many controllers simultaneously.

Policies are processed before controllers, perhaps in there?

As far as I could work out, you can only have one policy per controller.  Also sounds a bit hacky... maybe more intuitive would be an error-handling middleware which filters out the messages I don't like.

You can have multiple policies per controller - we do it all the time-  just use an array instead. Or set a wildcard catchall.

You can have multiple policies per controller

@crh3675 this is true.  I got confused, because I've tried in the past to enforce policies like "is admin OR manager", but this doesn't seem simple to achieve via policies alone - the combined policies such as
    'some-endpoint': ['isAdmin', 'isManager'],

are a conjunction rather than disjunction, so I've ended up with policies like isAdminOrManager.  This gets tedious when there are many different combinations implemented.

@raqem I think there are workarounds implied, but not clearly defined.  Options seem to be:

rewriting the controller to not use machine
adding middleware to filter out these errors for particular endpoints and/or in particular environments

I'd guess that 2 is the less risky option, but I can't confirm that it either works or is reliable.  I'll share info here when I've implemented a workaround.

@crh3675 going back to your original point:

Policies are processed before controllers, perhaps in there? You can apply a global policy across all controllers which might be another temporary solution

As there's no setting for machine to disable these error messages, it's not clear to me how a policy would be able to help in this situation.

I guess it would be easier if the machine actually threw an error that was catchable.  I understand a bit more after looking into the machine modularization.  Looks like you might be able to create a custom res.badRequest with custom code and catch the E_MISSING_OR_INVALID_PARAMS error code .  Seems to not be the most desirable but may provide a workaround.

I am finding a solution for this too, These messages can be leak our api params to outside.

Super simple fix in in responses/badRequest
  if (_.isError(data)) {
    if (err.code === 'E_MISSING_OR_INVALID_PARAMS') {
      if (data.hasOwnProperty('problems')) {
        delete data.problems;
      }
    }

@crh3675 neat.  Do you mean in ./node_modules/sails/lib/hooks/responses/defaults/badRequest.js?

When you create a new Sails application you should have a folder under api/responses of which you can change

When you create a new Sails application you should have a folder under api/responses of which you can change

No, sails will not create response folder automatically. You will need to create the folder also the customResponse file by yourself

So it seems that the solution is to copy ``/node_modules/sails/lib/hooks/responses/defaults/badRequest.js``` into api/responses and customize

Yeah, the solution I choose like this:

Create a custom response file in api/response folder.

define exits property like this:
`{
successRequest: {
statusCode: 200,
description: 'Success to process',
responseType: 'responseToClient',
},
 successCreate: {
   statusCode: 201,
   description: 'Success to create',
   responseType: 'responseToClient',
 },

 invalidInputParam: {
   statusCode: 400,
   description: 'Bad param input',
   responseType: 'responseToClient',
 },

 notAuthorize: {
   statusCode: 401 ,
   description: 'Not authorize to access',
   responseType: 'responseToClient',
 },

 notUnique: {
   statusCode: 409,
   description: 'Not unique',
   responseType: 'responseToClient',
 },

}`

After that, whenever you call exit.exit function name then the data will automatically send direct to responseToClient function. Just do whatever you want in that file


Refactor code

[x] #14
[ ] #15
[ ] Add signals for communication between components

no need to refactor code, yet...


CI: Run openshift along with the other tests

Instead of having a separate job for testing OpenShift, lets
run them after the integration and CRI-O tests.
Fixes #598.
Signed-off-by: Salvador Fuentes<EMAIL_ADDRESS>

@sboeuf the jobs are taking around 6-8 minutes more with the Openshift tests

@sameo @mcastelino what do you think about the increase. This PR adds openshift testing to our CI, meaning that fedora jobs (we only have Fedora support right now) will last 33min instead of 27min now.

@sameo @mcastelino the other solution is to get this parallelized with the whole setup reproduced, but this means creation of new jobs (10 basically) on Jenkins and this will run on other VMs.

@sboeuf this is nice to have IMO. How do we track the openshift version?

fwiw:

lgtm
I'm not bothered about how long CI takes particularly - I'd rather we had to wait to know changes were good rather than rushing things along only to find out later they were broken, but I know others feel differently :-) (and we could fix that with sometimes faster resources, or we could parallelize the testing...)

@mcastelino here we are tracking the OpenShift version that we support:
https://github.com/clearcontainers/tests/blob/master/test-versions.txt#L23

Removing the do-not-merge label as no one opposed to this approach. After this is merged, I'll remove the extra jobs that currently exist for testing OpenShift in jenkins.

@chavafg sounds good ! let's add openshift to our CI
LGTM

lgtm

@chavafg you can remove openshift jobs from Jenkins CI.

@sboeuf done, jobs are deleted :)


Update PlatformIO registry

Thanks for resolve the issue #9. I tested with the last master branch and works fine, but the PlatformIO publication is outdated:
https://registry.platformio.org/libraries/phzi/DFRobot_MultiGasSensor
Please populate the current master to the Pio registry.  Thanks!

Corrected

We hit the new tag package V3.0.0
And we don't know how to deal with the synchronization of PlatformIO that has been uploaded.

Well, is easy. You only need an manifest and publish the library like this:
https://docs.platformio.org/en/latest/librarymanager/creating.html