slack_bolt socket mode connection eventually fails at connect()

I am running a slack application in socket mode. While initiating the slack app websocket connection using connect(), I am handling an error event on the app by passing the error handler to SocketModeHandler. I now see the socket connections are inconsistent and eventually fail with below log messages.
Reproducible in:
The slack_bolt version
slack-bolt==1.7.0
slack-sdk==3.8.0

Python runtime version
Python 3.6.8

OS info
$ uname -a
Linux dev-10-178-5-101 3.10.0-1160.15.2.el7.x86_64 #1 SMP Thu Jan 21 16:15:07 EST 2021 x86_64 x86_64 x86_64 GNU/Linux

Steps to reproduce:

I am using below code to initialise slack app in socket-mode.

    def reinit_handle(self, webSocketApp, error):
        log.info("re-init slack bot with new socket connection")
        try:
            webSocketApp.close()
        except:
            log.error("unable to close existing socket connections")
        finally:
            self.slack_init()

    def slack_init(self):
        log.info("slack socket server init")
        host,port = env["PROXY"].split(":")
        try:
            while True and (self.sapp is not None):
                app_handle = SocketModeHandler(self.sapp, env["SLACK_APP_TOKEN"], http_proxy_host=host, http_proxy_port=port, proxy_type='http')
                app_handle.client.on_error_listeners.append(self.reinit_handle)
                app_handle.connect()
                Event().wait(timeout=500)
        except Exception as e:
            log.error("unable to init slack app: ",e)

    o.slack_init()

Actual result:
The connections seems to be working fine with below logs:
2021-09-16 23:14:20,895:INFO:ombot.routes:slack_init:slack socket server init
2021-09-16 23:14:20,969:INFO:slack_bolt.App:_monitor_current_session:The session seems to be already closed. Going to reconnect...
2021-09-16 23:14:20,969:INFO:slack_bolt.App:connect:A new session has been established
2021-09-16 23:14:21,396:INFO:slack_bolt.App:_run_current_session:Starting to receive messages from a new connection

However, soon after few minutes I get below log messages:
2021-09-17 01:46:42,806:INFO:slack_bolt.App:_monitor_current_session:The session seems to be already closed. Going to reconnect...
2021-09-17 01:46:47,166:ERROR:slack_bolt.App:on_error:on_error invoked (error: WebSocketBadStatusException, message: Handshake status 408 Request Timeout)
2021-09-17 01:46:47,166:INFO:ombot.routes:reinit_handle:re-init slack bot with new socket connection
2021-09-17 01:46:47,166:INFO:ombot.routes:slack_init:slack socket server init

As you can see above, my slack error handler reinit_handle is kicked in to restart the slack app with new socket connection. This seems to work fine as well. However after few hours the reinit_handle when trying to recover with a new connection, it fails with below log messages:
2021-09-17 03:50:35,311:WARNING:websocket:warning:send_ping routine terminated: socket is already closed.
2021-09-17 03:48:45,917:INFO:slack_bolt.App:_monitor_current_session:The session seems to be already closed. Going to reconnect...
2021-09-17 03:50:44,631:ERROR:slack_bolt.App:on_error:on_error invoked (error: WebSocketConnectionClosedException, message: Connection to remote host was lost.)
2021-09-17 03:50:52,212:ERROR:slack_bolt.App:on_error:on_error invoked (error: WebSocketConnectionClosedException, message: Connection to remote host was lost.)
2021-09-17 03:50:52,216:WARNING:websocket:warning:send_ping routine terminated: [Errno 9] Bad file descriptor
2021-09-17 03:52:12,110:ERROR:slack_bolt.App:on_error:on_error invoked (error: WebSocketConnectionClosedException, message: Connection to remote host was lost.)
2021-09-17 03:52:19,008:WARNING:websocket:warning:send_ping routine terminated: socket is already closed.
2021-09-17 03:52:30,218:WARNING:websocket:warning:send_ping routine terminated: [Errno 32] Broken pipe
2021-09-17 03:52:30,913:ERROR:slack_bolt.App:on_error:on_error invoked (error: BrokenPipeError, message: [Errno 32] Broken pipe)
2021-09-17 03:52:32,037:ERROR:slack_bolt.App:on_error:on_error invoked (error: WebSocketConnectionClosedException, message: Connection to remote host was lost.)
2021-09-17 03:55:20,419:ERROR:slack_bolt.App:on_error:on_error invoked (error: BrokenPipeError, message: [Errno 32] Broken pipe)
2021-09-17 03:55:21,291:ERROR:slack_bolt.App:on_error:on_error invoked (error: WebSocketConnectionClosedException, message: Connection to remote host was lost.)
2021-09-17 03:55:22,611:WARNING:websocket:warning:send_ping routine terminated: [SSL: BAD_LENGTH] bad length (_ssl.c:2483)

post to this, when reinit_handle continuously tries to recover from the above errors it gets into even bad state with below logs:
2021-09-17 04:05:44,106:INFO:ombot.routes:reinit_handle:re-init slack bot with new socket connection
2021-09-17 04:04:22,604:WARNING:websocket:warning:send_ping routine terminated: [Errno 32] Broken pipe
2021-09-17 04:04:23,414:ERROR:slack_bolt.App:on_error:on_error invoked (error: BrokenPipeError, message: [Errno 32] Broken pipe)
2021-09-17 04:04:23,419:ERROR:slack_bolt.App:on_error:on_error invoked (error: BrokenPipeError, message: [Errno 32] Broken pipe)
2021-09-17 04:04:24,009:WARNING:websocket:warning:send_ping routine terminated: [Errno 32] Broken pipe
2021-09-17 04:04:25,111:ERROR:slack_bolt.App:_perform_urllib_http_request:Failed to send a request to Slack API server: <urlopen error EOF occurred in violation of protocol (_ssl.c:1129)>
--- Logging error ---
Traceback (most recent call last):
  File "/bb/libexec/ombot/python/lib/python39.zip/urllib/request.py", line 1346, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "/bb/libexec/ombot/python/lib/python39.zip/http/client.py", line 1257, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/bb/libexec/ombot/python/lib/python39.zip/http/client.py", line 1303, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/bb/libexec/ombot/python/lib/python39.zip/http/client.py", line 1252, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/bb/libexec/ombot/python/lib/python39.zip/http/client.py", line 1012, in _send_output
    self.send(msg)
  File "/bb/libexec/ombot/python/lib/python39.zip/http/client.py", line 952, in send
    self.connect()
  File "/bb/libexec/ombot/python/lib/python39.zip/http/client.py", line 1426, in connect
    self.sock = self._context.wrap_socket(self.sock,
  File "/bb/libexec/ombot/python/lib/python39.zip/ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "/bb/libexec/ombot/python/lib/python39.zip/ssl.py", line 1040, in _create
    self.do_handshake()
  File "/bb/libexec/ombot/python/lib/python39.zip/ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1129)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/bb/libexec/ombot/dependencies/site-packages/ombot/routes.py", line 92, in slack_init
    app_handle.connect()
  File "/bb/libexec/ombot/dependencies/site-packages/slack_bolt/adapter/socket_mode/base_handler.py", line 31, in connect
    self.client.connect()
  File "/bb/libexec/ombot/dependencies/site-packages/slack_sdk/socket_mode/websocket_client/__init__.py", line 188, in connect
    self.wss_uri = self.issue_new_wss_url()
  File "/bb/libexec/ombot/dependencies/site-packages/slack_sdk/socket_mode/client.py", line 48, in issue_new_wss_url
    response = self.web_client.apps_connections_open(app_token=self.app_token)
  File "/bb/libexec/ombot/dependencies/site-packages/slack_sdk/web/client.py", line 930, in apps_connections_open
    return self.api_call("apps.connections.open", http_verb="POST", params=kwargs)
  File "/bb/libexec/ombot/dependencies/site-packages/slack_sdk/web/base_client.py", line 135, in api_call
    return self._sync_send(api_url=api_url, req_args=req_args)
  File "/bb/libexec/ombot/dependencies/site-packages/slack_sdk/web/base_client.py", line 171, in _sync_send
    return self._urllib_api_call(
  File "/bb/libexec/ombot/dependencies/site-packages/slack_sdk/web/base_client.py", line 284, in _urllib_api_call
    response = self._perform_urllib_http_request(url=url, args=request_args)
  File "/bb/libexec/ombot/dependencies/site-packages/slack_sdk/web/base_client.py", line 437, in _perform_urllib_http_request
    raise err
  File "/bb/libexec/ombot/dependencies/site-packages/slack_sdk/web/base_client.py", line 409, in _perform_urllib_http_request
    resp = opener.open(req, timeout=self.timeout)  # skipcq: BAN-B310
  File "/bb/libexec/ombot/python/lib/python39.zip/urllib/request.py", line 517, in open
    response = self._open(req, data)
  File "/bb/libexec/ombot/python/lib/python39.zip/urllib/request.py", line 534, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "/bb/libexec/ombot/python/lib/python39.zip/urllib/request.py", line 494, in _call_chain
    result = func(*args)
  File "/bb/libexec/ombot/python/lib/python39.zip/urllib/request.py", line 1389, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
  File "/bb/libexec/ombot/python/lib/python39.zip/urllib/request.py", line 1349, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error EOF occurred in violation of protocol (_ssl.c:1129)>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/bb/libexec/ombot/python/lib/python39.zip/logging/__init__.py", line 1083, in emit
    msg = self.format(record)
  File "/bb/libexec/ombot/python/lib/python39.zip/logging/__init__.py", line 927, in format
    return fmt.format(record)
  File "/bb/libexec/ombot/python/lib/python39.zip/logging/__init__.py", line 663, in format
    record.message = record.getMessage()
  File "/bb/libexec/ombot/python/lib/python39.zip/logging/__init__.py", line 367, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "/bb/libexec/ombot/python/lib/python39.zip/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/bb/libexec/ombot/python/lib/python39.zip/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/bb/libexec/ombot/dependencies/site-packages/ombot/__main__.py", line 3, in <module>
    Factory().get_application()
  File "/bb/libexec/ombot/dependencies/site-packages/ombot/routes.py", line 110, in get_application
    self.slack_init()
  File "/bb/libexec/ombot/dependencies/site-packages/ombot/routes.py", line 95, in slack_init
    log.error("unable to init slack app: ",e)
Message: 'unable to init slack app: '
Arguments: (URLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)')),)

I am not sure if this is an issue with my implementation or an issue with slack_bolt or slack_sdk. can someone help me understand more about what's going on here ?
Attaching full length log file to the issue:
logs-from-app-in-slackbot--slackbot-beta--apprel-7f7b9c7458-gvb7b.txt
Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

Hi @0bprashanthc, thanks for writing in and sharing the details of your app's situation (that's really helpful to understand the issue!).
According to the attached log, your WebSocket connection is not stable from the beginning. The log shows _monitor_current_session:The session seems to be already closed. Going to reconnect... every 8-9 minutes. This is not a common situation. This log can show up only when the underlying WebSocket client (it seems that you're using websocket_client PyPI package based one) is unable to keep a connection with the Slack server-side (the reasons are socket closed, ping-pong communication failures for a while, etc.) or intermittent issue occurs in the environment. In a normal scenario, every a few hours, your Socket Mode connection will be renewed under the hood.
I have a few suggestions for you:

I'm guessing that your proxy environment may have some configuration related to the 8-9 minute timeframe. Can you check the internal information if possible?
Setting trace_enabled to True may help you see what's happening to your app. You can pass the option in the constructor: https://github.com/slackapi/bolt-python/blob/v1.9.1/slack_bolt/adapter/socket_mode/websocket_client/init.py#L34
To narrow the issue down, running a simpler WebSocket example application (no need to connect to Slack; just trying to keep an outgoing WebSocket connection with detailed logs) in the same environment may help figuring out the affecting factors.

The following may not be relevant to the issue here but for improvements:

When recreating a Socket Mode client, you can call SocketModeHandler#close() method (in your code app_handle.close()) to safely shutdown the existing Socket Mode client.
Please upgrade to slack-sdk to the latest (v3.11.1 as of today) -- particularly, in v3.11.0, we've applied improvements to Socket Mode client internals. I don't think those changes can eliminate your issue but you may see some difference.

I hope this helps! If we identify rooms for improvement on this SDK side, we will quickly fix/improve them.

Hi @seratch, thanks for responding real quick!

_monitor_current_session:The session seems to be already closed. Going to reconnect... this log appears every 8-9 minutes as I am using Event().wait(timeout=500) after app_handle.connect() in the above implemented socket init method. Can you confirm if this is a problem? or let me know the right way to use connect() as I don't want to use start()
I enabled trace and also am closing the app handle this time during re-inits. Also I updated slack_sdk to latest. Can we keep this issue opened for few more days and I can update with my observations here?

Let me know, thanks again!

@0bprashanthc

this log appears every 8-9 minutes as I am using Event().wait(timeout=500) after app_handle.connect()

Ah, I see. That makes sense. This is why your app starts to get connectivity issues afterwards. Your app tries to create more and more connections in the app (as you don't call disconnect/close method for each). We don't recommend doing this way.

let me know the right way to use connect() as I don't want to use start()

The connect() method starts a new Socket Mode connection in a different thread and also maintain its connection for you under the hood. Thus, all you need to do are:

Create a SocketModeHandler instance and keep the reference to the object as part of your main code
Call SocketModeHandler#connect() and you don't need to do anything further
If you want to gracefully shutdown your app when terminating the process, you can call the saved SocketModeHandler instance's close() method to clean up the background threads

Your code should be much simpler! I think that now everything is clear but let us know if you need more help here.

@seratch
sounds good, so here is how my init function looks like:
    def slack_init(self):
        log.info("slack socket server init")
        host,port = env["PROXY"].split(":")
        try:
            while True and (self.sapp is not None):
                self.app_handle = SocketModeHandler(self.sapp, env["SLACK_APP_TOKEN"], http_proxy_host=host, http_proxy_port=port, proxy_type='http', trace_enabled=True)
                self.app_handle.client.on_error_listeners.append(self.reinit_handle)
                self.app_handle.connect()
                Event().wait()
        except Exception as e:
            log.error("unable to init slack app: ",e)

Do you think that Event().wait() is needed in this code?

@0bprashanthc

Do you think that Event().wait() is needed in this code?

If you would like to do so, you can use the SockeModeHandler#start() method instead.
Also, I don't see any necessity to have the while loop while True and (self.sapp is not None): here. You can rely on the SockeModeHandler's internals to manage the underlying connections. No need to have your own custom logic.

@seratch thanks for your help, I think your suggestions improved my app experience from sloppy connections. I am closing this issue now.


[v1.4] Update Documentation

Updated Open Command Sequence Diagram.
Changed jiahaolim.png back to the rectangular version.

Coverage remained the same at 74.224% when pulling 08d024cce26da1ea2c059bf97f1083e68db5792c on JiaHaoLim:update-documentation into c373e7bc1a6fd7d9c0bed73ae8664d6ad8085ac8 on CS2103-AY1819S2-W17-2:master.


Help getting C++ exceptions out of Lua functions defined in C++

In this example:
#include <sol/sol.hpp>

class MyException : public std::runtime_error
{
public:
	explicit MyException(std::string someInfo) :
	runtime_error{"MySpecialExceptionHappened"},
	m_someInfo { someInfo }
	{
	}

	std::string m_someInfo;
};

int main()
{
	sol::state luaState;
	luaState.set_function("someFunction", []{
		//Do a bunch of stuff
		throw MyException{ "It's All gone wrong, do something in C++ to remedy this!" };
	});

	sol::function luaFunc = luaState["someFunction"];

	try
	{
		luaFunc();
	}
	catch(const MyException& e)
	{
		//Can't get here
	}
}

How do I catch C++ exceptions thrown from within a Lua function? It seems that sol grabs them all and I lose important info as a result. I did take a look at #define SOL_EXCEPTIONS_SAFE_PROPAGATION but I'm not sure that's what I'm after.

Side stepped issue by not extending from std::exception.

I suppose with safe exception propogation, I don't have to catch errors.
If you're doing this on the wrong platforms, however, you're essentially destroying your stack and probably introduced a dozen bugs on the process. ... Not to mention that having an exception that isn't derived from std::exception is probably also a bad idea.

I made a push to the repository that might help you. Here's the things you'll need to do / verify to make your codebase to behave properly without bugs:

Compile Lua as C++. This will enable you to safely throw exceptions through Lua functions without absolutely destroying the VM or violating the C++ boundaries
Define SOL_USING_CXX_LUA
This will automatically turn on SOL_EXCEPTIONS_SAFE_PROPOGATION

You should be able to get your behavior then, with or without protected functions, not have the bad code smell of not deriving from std::exception, and be good to go.
Best of luck.

That is excellent, thank you very much!

To confirm, to use this, I need to implement luaJIT right?

No. You can compile Lua 5.3.4 as C++, but you need to compile Lua yourself manually.
LuaJIT is still compiled as C code, but depending on which platform you build it for comes with full exception interop: http://luajit.org/extensions.html#exceptions

Ah I see. Many thanks for getting back to me!

Part of the latest release: https://github.com/ThePhD/sol2/releases/tag/v2.18.5


i cant run my electron app after installing Git for windows

i have install git for windows and after that i cant run any electron app using npm run, after removing GIT it doesn't worked, it showing this on visual studios terminal
PS E:\projects\electron test\gymapp> npm run
Lifecycle scripts included in sample_gym_app:
  start
    electron .

available via `npm run-script`:
  pack
    build --dir

How Do i fix this and run my app ?

This doesn't sound like a bug with Electron Packager. If you're using Node 11 and Electron 4 beta, there was an issue there that has since been fixed. Otherwise, this sounds like an NPM problem. You can find more assistance with NPM at their community support forum.


Support callback or promise by leveraging TS method overload

Still need to update the (result, error) callback parameters order but we can do that later once everything is aligned with newgraph approach

"newgraph" is an experimental branch. These changes should go into the "testable" branch.


:sparkles: Add Github integration tests to CI

What this PR does / why we need it:
Adding integration tests to CI
Which issue(s) this PR fixes:
Fixes #41
TODOs:

[x] squash commits
[ ] include documentation
[ ] add unit tests

Implemented in #238


Use non-atomic disconnect_error

Part of grpc_error migration. std::atomic<T> is not possible with absl::Status so it is changed to a regular mutex and T protected by it.

I think #27330 is a better approach.

Closing this in favor of #27330


TS doesn't check types in implementation of interface

Sorry if such issue already exists.
TypeScript Version:  2.4.1
TypeScript Config:
{
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["es2015", "dom"],
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "strict": true,
    "suppressImplicitAnyIndexErrors": true,
    "target": "es5",
    "typeRoots" : ["node_modules/@types"]
  },
  "compileOnSave": true,
  "exclude": [
    "node_modules/*"
  ]
}

Code
type element = {
  id: number;
  name: string;
};

interface IComponent {
  element: element;

  add(): void;
  edit(el: element): void;
  delete(el: element): void;
}

class Component implements IComponent {
  element: any;
  add(): any {}
  edit(el: any): any { }
  delete(el): any { }
}

Expected behavior:
I expect to see such errors as:
Class 'Component' incorrectly implements interface 'IComponent'.
  Types of property 'add' are incompatible.
    Type '() => any' is not assignable to type '() => void'.
  Types of property 'edit' are incompatible.
    Type '(el: any) => any' is not assignable to type '(el: element) => void'.

Actual behavior:
This code throws one error Parameter 'el' implicitly has an 'any' type. and that's all.
I believe TS should guess and check type of arguments and type of returning value
by the way, this code:
class Component implements IComponent {
  element: any;
  add(el: any): any {}
  edit(el: any): any { }
  delete(el: any): any { }
}

throws error
Class 'Component' incorrectly implements interface 'IComponent'.
  Types of property 'add' are incompatible.
    Type '(el: any) => any' is not assignable to type '() => void'.

so, TypesScript validates the number of arguments, but doesn't check the type of arguments.

The any type is magic -- it's assignable to anything, and anything is assignable to it. It's basically a way of turning type-checking off. If you want stronger type checking, avoid using any.

thanks

@andy-ms quick question. Same code.
type element = {
  id: number;
  name: string;
};

interface IComponent {
  element: element;

  add(): void;
  edit(el: element): void;
}

class Component implements IComponent {
  element: any;
  add(): any {}
  edit(el): any { }
}

Why do I get error Parameter 'el' implicitly has an 'any' type.? Why TS can't guess the type based on interface?

That is unfortunate; I can't find the issue, but I know we've discussed that in the past and decided it was a design limitation.

That's sad. This limitation makes such usage of interface useless for small classes. I do not see the point in making interfaces for classes where code can fit in one screen... Ok, thanks anyway!

See also https://github.com/Microsoft/TypeScript/issues/2000#issuecomment-245964251


Do not ignore errors on plugin download

What it does
Do not ignore errors on plugin download
Contributed on behalf of STMicroelectronics
How to test

Review checklist

[x] as an author, I have thoroughly tested my changes and carefully followed the review guidelines

Reminder for reviewers

as a reviewer, I agree to behave in accordance with the review guidelines

@msujew any idea why this is failing on mac only?


Note referencing shared computer activations needs to be re-added to this article...

This article used to contain a note stating "You must be a global administrator, global reader or reports reader in Microsoft 365 or an Exchange, SharePoint, or Skype for Business administrator to see reports. Shared computer activations are not included in this report."
It appears that the entire note containing that quoted text was removed as a part of a batch update to these report articles targeting the first sentence of the note (https://github.com/MicrosoftDocs/microsoft-365-docs/commit/71b76ec8029dc9a806a4c94dc175b7569b64950b#diff-443ab17167df7ebc460b38551306fce8583ab01d2df08174175e57b2d1971217), but in the case of this article I believe the second sentence covering shared computer activations should not have been removed. This limitation is still in place and should be communicated in this article.

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

ID: 7957baf3-919b-fa91-073c-d71672282268
Version Independent ID: 418a59f1-83bd-ff70-fbff-c3980f083ff8
Content: Microsoft 365 Reports in the admin center - Microsoft 365 Apps usage - Microsoft 365 admin
Content Source: microsoft-365/admin/activity-reports/microsoft365-apps-usage-ww.md
Service: o365-administration
GitHub Login: @KwekuA
Microsoft Alias: kwekua

@msbemba Thank you very much for the contribution and updating the documentation with PR. @ferringer Hope this update is helpful for you. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


Fix disabling of apache airflow editor from the workbench

Fix disabling of apache airflow editor from the workbench
Description
With explicitly creating the elyra configuration, the .jupyter folder is created with required details.
the copy over of elyra configuration happens smoothly with this PR.
How Has This Been Tested?

Once the image is built, running the notebook and check the logs and overview of notebook

The setup looks proper.
Fixes: #86
Merge criteria:

[x] The commits are squashed in a cohesive manner and have meaningful messages.
[x] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
[x] The developer has manually tested the changes and verified that the changes work

/override ci/prow/notebook-base-c9s-python-3-9-pr-image-mirror
/override ci/prow/notebook-codeserver-c9s-python-3-9-pr-image-mirror

/retest-required
/override ci/prow/notebook-base-c9s-python-3-9-pr-image-mirror
/override ci/prow/notebook-codeserver-c9s-python-3-9-pr-image-mirror

It tested locally and seemed fine also on my end, bellow is a print screen from the image's logs

/lgtm :+1:

/retest-required

/retest-required

/hold
for: #90

Ready for Re- Review
Rebased it
/unhold

/test notebooks-e2e-tests


Add iOS support

Added iOS as an option to the zero_copy conditional compilation and added a openssl_vendor feature flag to enable iOS building.
This is one of the subtasks for https://github.com/infinyon/fluvio/issues/498.
This was some low hanging fruit so I did it quick.

CI failure seems unrelated to this PR. Not sure what's going on there.

CI failure seems unrelated to this PR. Not sure what's going on there.

No longer needed


Improve check_not_dirty git repo detection and status shell output of results.

Fixes #5823
Also fix associated tests. This is an attempt to clarify windows+git package behavior as uncovered in #5786.  This is a Work In Progress not yet ready for merge.
This conflicts with #5786, but either could be merged first, requiring a rebase/merge in the other.

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @alexcrichton (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

Checks pass and this fixes the windows disparity. This conflicts with #5786, but its probably best if this is merged to master first, then I'll merge and resolve conflicts in #5786, avoiding the need for a cfg(windows) specific test variant.
@alexcrichton: r? Merge?

Ping @alexcrichton, this bug fix should be easy to review and merge, no?

This looks to be the same as https://github.com/alexcrichton/git2-rs/pull/335.  I did a quick check, and converting the \ to / in status_file() fixes it.  I would say the correct fix is to have git2-rs convert all paths, or (wishful thinking) have libgit2 handle windows-style paths.

I want a reasonable workaround that (probably, let me know otherwise) can't change the minimum release of git2-rs as a cargo dependency. Could I just add that \ to `/ conversion here on L171?  The reason I suggest adding it, is that the verbose console logging, and the fall-back-to-workspace is I think value add, even if you are correct on the cause, @ehuss.  Thoughts?
@alexcrichton minimal changes to tests in this PR is correct, but your point in alluding me however. As to what is going on: Most of the tests use the verbose console output, or files included in the package. While on master check_not_dirty doesn't include verbose console output and doesn't influence the files included (sans #5786), so given that, check_not_dirty and its git-repo detection, hasn't really been thoroughly tested, beyond the limited dirty/not-dirty case. I hope that makes sense? I'm not sure its what you are asking for however.

@alexcrichton the repro is:

cargo new foo
cd foo
cargo new bar
cd bar
cargo package

Step 5 should fail, but it passes on Windows because it uses the path bar\\Cargo.toml to git_status_file(), and it returns None instead of WT_NEW.

Hm so do we have a failing test on Windows today? How come these tests aren't failing on CI?

Hm so do we have a failing test on Windows today? How come these tests aren't failing on CI?

No, there are no current tests that exercise this code path with a slash in it.  The closest is package_verbose, but it specifies --no-verify which turns it off.  @dekellum used the code in check_not_dirty to implement the new feature, and in the process uncovered the problem because it failed to get the git info in the package_verbose test on windows.

@ehuss isn't answering my questions, but perhaps there a multiple possible fixes (@ehuss's experiment, and this PR)?  I'm not sure at present what is best: one, the other, or both?

@ehuss isn't answering my questions

Oh, sorry I missed that.  My vote is to update git2-rs to use the correct path type.  I also might be willing to help audit the api to see if there are any other places that need updating, but I probably won't get to that soon.  What would be the benefit of running discover twice, once with an incorrect path?

Thanks @ehuss, as I said, yes, fix git2-rs for the root cause; but if we can workaround it here first, that is helpful.  I went from detected-broken-on-windows (adc5074) to fixed-on-all-platforms (ad0b252) in this PR. Would you suggest any other changes for this fix?  Why couldn't I just convert the slashes on that line?

If git-rs is fixed, these changes wouldn't be necessary, correct?  Personally I prefer to fix root issues if possible rather than work around them.  Also, I'm not sure I understand why discover is being called twice.

I agree with @ehuss that if the issue is in git2 we should fix it there as it ideally would be fixed in libgit2 but git2 is our best bet for now.

So do you just want to close this?  The verbose console logging changing includes here make the conditional at least testable, which seems healthy.  Perhaps  you are less concerned about that?

Sure yeah, closing this is ok for now. Would you like to create a dedicated PR for the UI changes? Would you be interested in making the change to git2-rs?

Based objectively on this experience of two rejected PRs, with little to no reasonable cause, no I do not.

Oh, and note: the tests for this potential new PR will necessarily depend on a real fix in git2-rs.

@dekellum oh you mentioned that the console logging changes seemed like a good idea regardless so we can always have PRs for things like that, and having a workaround is fine for now as well if you'd prefer to not make a fix to git2-rs


Settings don't stick for HTTP Server / WebSocket Server buttons

When you disable the HTTP Server and the WebSocket server in the burbuddy settings and then you click save, they revert to being enabled again.

Done in version 3


Add SpaceAfterVariableColon linter

This adds the SpaceAfterVariableColon linter which checks
for spaces following the colon that separates a variable's
name from its value.
https://github.com/brigade/scss-lint/issues/445

Thanks for the pull request, @cih! Appreciate you taking the time to write thorough tests and documentation. :tada:


fix unicode error

Codecov Report

Merging #23 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master      #23   +/-   ##
=======================================
  Coverage   96.49%   96.49%
=======================================
  Files          13       13
  Lines         571      571
  Branches       96       96
=======================================
  Hits          551      551
  Misses         10       10
  Partials       10       10

Impacted Files
Coverage Δ

django_north/management/runner.py
90.9% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 544d59c...6511ec3. Read the comment docs.


Infinispan within cloud run

Description
To deploy Keycloak instances within Cloud Run, it would be necessary to establish communication between the embedded Infinispan instances. However, I could not find any recommended communication protocols for this scenario ?
Implementation ideas
No response

Hi @Jojoooo1 can you please create an issue at https://github.com/keycloak/keycloak. While Infinispan is an integral part of Keycloak, it is a standalone project which has many other users and most of it's maintainers are not familiar with Keycloak.
You might find the following guide useful: https://www.keycloak.org/server/caching#_transport_stacks. As cloud run is based upon Knative, it might be possible for you to use the kubernetes stack however this requires a headless service (not sure if that's available in cloud run).
Starting with Keycloak 26.1 (yet to be released), the DB will be used for initial cluster membership, so it won't be necessary for you to configure this at all :slightly_smiling_face:


Develop/add social links

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


SOCKS proxy support

Access to the Bandcamp website is banned in my country(Yes, I live in such a hell). Therefore the Bandcamp-dl cannot do anything and just waits until the whole process is timed out. The same thing happens to the youtube-dl, but youtube-dl supports SOCKS proxies, and I can give it the proxies that I have as an option to the command.
It will be beneficial if Bandcamp-dl adds the support for proxies too.

Looks straightforward enough, just a matter of giving the option to pass the proxies on run, something like:
--proxies="httpurl, httpsurl" and if provided use them in the GET requests.
This does pull in optional dependencies that 95% of users likely won't need so I have to figure out if I want to add it as a hard requirement by pulling requests[socks] in or add the option when installing bandcamp-dl itself. (IE pip install bandcamp-downloader[socks])
It will be in the next release, of that you can be sure.

requests, the network library bandcamp-dl uses, supports SOCKS, with required dependencies installed by python -m pip install requests[socks].
Proxy will be used when HTTP_PROXY, HTTPS_PROXY or ALL_PROXY is set, e.g. ALL_PROXY=socks5://<IP_ADDRESS>:1080 bandcamp-dl https://mikazukibigwave.bandcamp.com/album/romantic-album

requests, the network library bandcamp-dl uses, supports SOCKS with required dependencies installed by python -m pip install requests[socks]. Proxy will be used when HTTP_PROXY, HTTPS_PROXY or ALL_PROXY is set, e.g. ALL_PROXY=socks5://<IP_ADDRESS>:1080 bandcamp-dl https://mikazukibigwave.bandcamp.com/album/romantic-album

Yep, I was aware it was supported but not that just setting a few environment variables was all that was needed for setup.
May be better if sooner rather than later bandcamp-dl gets config file support.


Questions about ch13

Hello, I have looked over the source code of the project in ch13 and have two questions:

First question is about the calculation of baseline. Why ist.sqauredNorm() used to calculate the baseline instead of t.norm()?

Second question is about Map::InsertKeyFrame(). Why check if frame_id_ exists when keyframes_ actually contains keyframe_id_?

Thanks for pointing it out! Fixed in commit 8de5911.


Add test cases for cross-references resolution in Langium grammar

This verifies the issue https://github.com/langium/langium/issues/585 is already implemented.

Dear @spoenemann, while investigating the implementation, that resolved the issue #585, I got concerned about hardcoded checks des.type === Interface || des.type === Type for references to AbstractType. (see on gitHub):
        if (referenceType === AbstractType) {
            importedElements = importedElements.filter(des => des.type === Interface || des.type === Type);
        }

These basically means, that wherever in the grammar a cross-reference is specified to AbstractType, it will in fact only be resolved for Interface or Type. As far as a I was able to get it, it is expected, because whenever there is a reference to AbstractType in Langium Grammar, it in fact means a reference to either Type or Interface. Is it an expected behavior? If so, shouldn't rather the grammar be refactored? I.e., by introducing new union type Interface | Type, and using it as a substitute for references to AbstractType.

Thank you for elaboration!
After revieweing scope computation for grammar, I see what you mean. There seems to be more weird parts in the grammar, than I assumed. I have several concerns, like:

type AbstractType has Action as one of its subtypes. However, in places where AbstractType:ID is referenced, it is never Action, since Action has no ID attribute.
type AbstractType has also ParserRule in it. However, since LangiumGrammarScopeComputation exports (and adds to local scope too) either the ParserRule itself, or its inferredType as an Interface, does it make sense to try to resolve the reference against abstract types other than Type || Interface? I reckon not, and it seems, that LangiumGrammarScopeProvider doing exactly the thing: it ignores AbstractTypes other than Type or Interface.

I would suggest:

to remove both Action and ParserRule from the AbstractType union;
to rename InferredType into InferredTypeDeclaration, since it is not a type, but its declaration is processed as a part of either ParserRule or Action
To use references to AbstractType without additional filtering. Optionally, a syntatic interface InferredType can be introduced in the grammar, added to the AbstractType union, and used instead of 'Interface' for synnthetically inferred types.

Yet let me check the code more thoroughly to see, will it break some other logic (e.g., code generation).

Otherwise it can be made plainly as DeclaredType

The complexity you are seeing is due to the "magic" of combining explicitly declared types and implicitly generated types. Luckily the weird details that result from this are not so relevant for most users of Langium (it should "just work").


Windows Client App settings in a file

My Setup

Operating System: Windows

App Version: Latest

[X ] I have tested with the latest version

[ X] I can simulate the issue easily

Description
Is it possible to create settings file (prefs.json by example) for hiddenMenu or no spellchecking options in Windows App ?
That would be really convenient for mass deployment.
Current Behavior
This settings are stored in LocalStorage i think.
Expected Behavior
Settings are in prefs.json and can be mass deployed like update.json and servers.json

Thanks for the suggestion, this is something we have in mind for the next release so stay tuned 😄

https://github.com/RocketChat/Rocket.Chat.Electron#overridden-settings


Memory leak with multithreadEventLoopGroup never closed with http client

Expected Behavior
I use DefaultHttpClient on my application.
I've seen an increase of global thread on my application and especially a lot's of Running Thread with name multithreadEventLoopGroup-XX-X that is never stop.
After digging, I found that the DefaultHttpClient is init with :
https://github.com/micronaut-projects/micronaut-core/blob/29d395f6b74ee7355a146c70aca219d6bfce3704/http-client/src/main/java/io/micronaut/http/client/netty/DefaultHttpClient.java#L472-L479
That lead to this conditions :
https://github.com/micronaut-projects/micronaut-core/blob/29d395f6b74ee7355a146c70aca219d6bfce3704/http-client/src/main/java/io/micronaut/http/client/netty/DefaultHttpClient.java#L357-L363
Since the DefaultThreadFactory is passed, the shutdownGroup is false and will be never closed.
I suspect that all http request thread will be never close since we create a new group who no one in order to shutdown this group
Steps To Reproduce
You can use this test : https://github.com/kestra-io/plugin-fs/blob/b9a325787ab735e5f42b6bfe92f62018835aab06/src/test/java/io/kestra/plugin/fs/http/RequestTest.java#L67.
Launch the test and see that the thread is running even that after the end of the http request.
Environment Information

JDK: 11

Version
3.3.4

The issue in your test case is in RxHttpClient. That class doesn't delegate the close method properly, so the underlying http client is never closed. @graemerocher can I fix this in a minor release in this module? imo it's a bug, but technically someone could rely on the close method being a no-op.
(@tchiotludo for your project you should use the normal micronaut HttpClient and move away from RxHttpClient since you don't appear to use the reactive API anyway)

This is a bug an should be fixed in a patch version yes

I confirm that using HttpClient fixed the issues for non reactive client.
I also used the Reactive one.
Without the fix the leak is present.
I also try to move to reactor client and the leak is also present on the reactor implementation.
I think the PR should include the same fix

you're right, i will make a similar pr for reactor and rxjava3.


childOpen ideally should be a Closure

It would be really handy to be able to specify childOpen as a closure. In my case I want control of the li styling based on the node.
'childOpen' => function($node) {
	return '<li class="' . $node['requestable'] ? '' : 'disabled' . '">';
},

But I get
Catchable Fatal Error: Object of class Closure could not be converted to string in

yes, I'll update the code to support string or callback closure


Update logo to the most up to date version with a gradient

Also, change copy from "local files" to "Texture Viewer"
Logo can be downloaded here:https://drive.google.com/file/d/1Xiqhm4GSm-wr2-AKcRreOVPJWr0kXrNJ/view?usp=sharing

fixed in #10


Fix parent version to include KAFKA-14586

Should be resolved by https://github.com/confluentinc/kafka-streams-examples/commit/148a371a9c0812f859ed0f4851d3b11bcff17b62


fixed wordpress preset - missing .env

Issue
#

:beetle: Bug Fix
Yes

:warning: Break Change
No

Description
Fixed missing .env file on Wordpress local preset.

Please notice that hidden files are NOT included in the embed.FS archive, thus renamed the .env to environment.
https://pkg.go.dev/embed#hdr-Directives


have_sconn_len always set to false

Meson always sets have_sconn_len to false because it the generated C file does not build because the prefix specified to include file "usrsctp.h" and it cannot be found:
$ rm -rf mb1; mkdir mb1; meson mb1
[...]
Checking whether type "struct sockaddr_conn" has member "sconn_len" : NO
[...]

$ cat mb0/meson-logs/meson-log.txt
[...]
Running compile:
Working directory:  /var/folders/yd/nc6_vq355v352hm7_q86gfmw0000gn/T/tmp5mwvdg1g
Command line:  cc /var/folders/yd/nc6_vq355v352hm7_q86gfmw0000gn/T/tmp5mwvdg1g/testfile.c -o /var/folders/yd/nc6_vq355v352hm7_q86gfmw0000gn/T/tmp5mwvdg1g/output.obj -pipe -c -O0 -std=c99

Code:
 #include "usrsctp.h"
        void bar() {
            struct sockaddr_conn foo;
            foo.sconn_len;

        };
Compiler stdout:

Compiler stderr:
 /var/folders/yd/nc6_vq355v352hm7_q86gfmw0000gn/T/tmp5mwvdg1g/testfile.c:1:10: fatal error: 'usrsctp.h' file not found
#include "usrsctp.h"
         ^~~~~~~~~~~
1 error generated.

Checking whether type "struct sockaddr_conn" has member "sconn_len" : NO

Fixed, therefore closing the issue.


passing n_outs keyword arg changes reverse mode jacobian output type

julia> x = ones(2);

julia> f2(x) = [x[1], 2*x[2]];

julia> Enzyme.jacobian(ReverseWithPrimal, f2, x, n_outs=Val(2))
(derivs = [1.0 0.0; 0.0 2.0], val = [1.0, 2.0])

julia> Enzyme.jacobian(ReverseWithPrimal, f2, x)
(derivs = ([1.0 0.0; 0.0 2.0],), val = [1.0, 2.0])

The derivs should be always nested to be consistent.

This is expected as n_outs must contain the shape of the outputs (and here you pass 2 instead of (2,)).
Certainly a better error is warranted, but this is nevertheless undefined behavior to use it in this way

Oh, I hadn't realized how that worked.  Yeah, at the very least this could use a clear warning, I don't think I would have guessed that the value includes the shape of the wrapping tuple (if I'm even understanding this correctly...).

no it's not the shape of the wrapping tuple, its size(f2(x))

That makes sense, but shouldn't it throw an error then if it just gets an integer?

resovled by https://github.com/EnzymeAD/Enzyme.jl/pull/1864


[x] Fix #411 - @trevorgokey's easy patch to enable pickling of FF's, associated tests
[x] Fix #410 - Make all toolkit warnings begin with Warning:  to reduce user confusion
[x] Fix #407 - Add extra text explaining why we don't let RDKit load mol2
[x] Remove ForceField._parameters, since that has probably been a mistake all along
[x] Update docstrings/documentation, if applicable
[x] Update changelog

Status

[x] Ready for review
[ ] Ready for merge

Codecov Report

Merging #425 into master will increase coverage by 1.51%.
The diff coverage is 23.52%.

@@            Coverage Diff             @@
##           master     #425      +/-   ##
==========================================
+ Coverage   49.35%   50.86%   +1.51%
==========================================
  Files          35       33       -2
  Lines        9583     9267     -316
==========================================
- Hits         4730     4714      -16
+ Misses       4853     4553     -300

Impacted Files
Coverage Δ

openforcefield/typing/engines/smirnoff/__init__.py
100% <ø> (ø)
:arrow_up:

openforcefield/topology/molecule.py
86.18% <ø> (ø)
:arrow_up:

...enforcefield/typing/engines/smirnoff/forcefield.py
80.52% <ø> (-0.06%)
:arrow_down:

openforcefield/tests/test_forcefield.py
0% <0%> (ø)
:arrow_up:

...enforcefield/typing/engines/smirnoff/parameters.py
85.59% <100%> (+0.02%)
:arrow_up:

openforcefield/utils/collections.py
96% <100%> (+0.16%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update bc89224...058b5d5. Read the comment docs.

If we're not 100% sure of our approach, perhaps we want to note that pickle/serialization support is still experimental and we cannot guarantee future versions of the toolkit will be able to read pickled/serialized objects from this version of the toolkit?

Agreed -- added
  Note that, while XML representations of ``ForceField``s are stable and conform to the SMIRNOFF
  specification, the pickled ``ForceField``s that this functionality enables are not guaranteed
  to be compatible with future toolkit versions.

to release notes


How to download React component as PDF with High Resolution?

I have been building a bottle label making application using React. People are able to create customized labels as they want. I have already add the functionality to let the users download the results in the form of a PDF.
https://stackoverflow.com/questions/44989119/generating-a-pdf-file-from-react-components
I implemented download React component to PDF by reference above link.
html2canvas & jsPDF.
Btw there's a quality issue. If I zoom in the downloaded PDF file, the quality is not good. (React component size is 380px * 380px).
Instead of it, if I zoomin(500%) the chrome browser and then download PDF, the quality is very good even zoom in on PDF reader(Foxit Reader or Chrome PDF Viewer).
Maybe the PDF resolution that downloaded using the html2canvas & jsPDF seems like according on component size.
So I have to ask customers to download PDF after they zoomin the browser(500%) if they want PDF with high resolution? lol. That's not.
I read the several articles about downloading PDF but not find solution yet.
Is there any method to implement above function as code?
As reference, this is my code which download pdf using html2canvas & jsPDF.
const printRef = React.useRef<HTMLDivElement>(null);

    ...

    const handleDownloadPdf = async () => {
      const element: any = printRef.current;
      const canvas = await html2canvas(element);
      const data = canvas.toDataURL("image/png");

      const pdf = new jsPDF("portrait", "px", [380, 380]);

      const pdfWidth = pdf.internal.pageSize.getWidth();
      const pdfHeight = pdf.internal.pageSize.getHeight();

      pdf.addImage(data, "PNG", 0, 0, pdfWidth, pdfHeight);
      pdf.save("label.pdf");
    };

    ...

    <div ref={printRef} style={{ height: "380px" }}>
        <Label/>
    </div>

I found a solution. I should control the size of canvas using scale.
   html2canvas(element, {
      **scale: 5,**
    }).then(function (canvas) {
      var data = canvas.toDataURL("image/png");
      pdf.addImage(data, "PNG", 0, 0, pdfWidth, pdfHeight);
      pdf.save("label.pdf");
    });

I wish this help you.


O365 phishlet was not capturing authentication tokens.

O365 phishlet wasn't capturing authentication tokens. By making a quick change in the auth_tokens section, it captures authentication tokens now.

iirc it may capture them but the tokens are useless without the correct cookie flags

I was testing the o365 phishlet and it would capture just the username and password. Wouldn't work if the account had 2FA.
This is a quick change and now it captures all auth tokens. I could use the Sessions to get the cookies and authenticate and everything even if the account had 2FA enabled.

I just tried to use o365 phishlets it won't'' capture token, pls help

i tried updating and it worked fine. if you want to see send a message to my telegram : @regrexs

i tried updating and it worked fine. if you want to see send a message to my telegram : @regrexs

HEY you took my money and stop responding to my messages on telegram.

O365 phishlet wasn't capturing authentication tokens. By making a quick change in the auth_tokens section, it captures authentication tokens now.

Find me if you need custom phishlets on Telegram: https://t.me/altophish


fix: Apache RAT auditing license headers

Platforms affected
none
Motivation and Context
New Apache RAT does not work.
The dangling * was not a valid expression.
Description
Updated the expressions so that the RAT and crawl.
Testing
Tested by calling the coho command.

It seems the underlying issue has been fixed upstream: https://issues.apache.org/jira/browse/RAT-265. Thus, it might be possible to update to RAT 0.17 if there is a good reason to do so.

For additional context, I believe that RAT will be removed from Coho.
RAT has already been configured to run on every commit and PR submission. There might be a few repositories remaining that still require setup, but I don't see any reason to keep it as part of the Coho process anymore. We can now enforce license headers and dependency license compatibility checks in advance.

Ah, that's much better of course. Thanks for the additional context!


gcc 8.1.1: trie.h:69:76: error: ‘this’ was not captured for this lambda function

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Checked that your issue isn't already filed.

Specifically, check out the wishlist, open RFCs,
or feature requests.

Reduced the issue to a self-contained, reproducible test case.

Description
On gcc 8.1.1 build fails with src/util/trie.h:69:76: error: ‘this’ was not captured for this lambda function.
Steps to Reproduce
at https://github.com/leanprover/lean/blob/master/doc/make/index.md#generic-build-instructions
Expected behavior: build succeeds
Actual behavior: build fails
Reproduces how often: always
Versions
browse@ashryn ~ % uname -a
Linux ashryn 4.17.10-1-ARCH #1 SMP PREEMPT Wed Jul 25 11:23:00 UTC 2018 x86_64 GNU/Linux
browse@ashryn ~ % gcc --version
gcc (GCC) 8.1.1 20180531

Additional Information
When building with clang 6.0.1, the same .c file succeeds (but generates warnings).

See #1965.

A duplicate indeed. I'll leave it to the developers which one to leave open.

I wouldn't expect this issue to be fixed soon. You're better off working around it. This is the current plan as stated in the README:

Lean 3.4.1 is the latest release. It is also the last release for the Lean 3.x code base. Only major bugs (e.g., soundness) will be fixed for this code base from now on. We are currently developing Lean 4 in a new (private) repository. The Lean 4 source code will be released here when ready.

I encountered this in June but didn't bother to report it, assuming a patch wouldn't be taken due to the aforementioned note that work on Lean 3.x is done. Since others are having the issue, here's my patch:
diff --git a/src/util/trie.h b/src/util/trie.h
index 54d0695cd..1ea8854b7 100644
--- a/src/util/trie.h
+++ b/src/util/trie.h
@@ -56,7 +56,7 @@ class trie : public KeyCMP {
         }
     }

-    static trie merge(trie && t1, trie const & t2) {
+    static trie merge_(trie && t1, trie const & t2) {
         trie new_t1     = ensure_unshared(t1.steal());
         new_t1->m_value = t2->m_value;
         t2->m_children.for_each([&](Key const & k, trie const & c2) {
@@ -66,20 +66,20 @@ class trie : public KeyCMP {
                 } else {
                     trie n1(*c1);
                     new_t1->m_children.erase(k);
-                    new_t1->m_children.insert(k, trie::merge(n1.steal(), c2));
+                    new_t1->m_children.insert(k, trie::merge_(n1.steal(), c2));
                 }
             });
         return new_t1;
     }

     template<typename F>
-    static void for_each(F && f, trie const & n, buffer<Key> & prefix) {
+    static void for_each_(F && f, trie const & n, buffer<Key> & prefix) {
         if (n->m_value) {
             f(prefix.size(), prefix.data(), *(n->m_value));
         }
         n->m_children.for_each([&](Key const & k, trie const & c) {
                 prefix.push_back(k);
-                trie::for_each(f, c, prefix);
+                trie::for_each_(f, c, prefix);
                 prefix.pop_back();
             });
     }
@@ -134,14 +134,14 @@ public:
     }

     void merge(trie const & t) {
-        *this = merge(steal(), t);
+        *this = merge_(steal(), t);
     }

     template<typename F>
     void for_each(F && f) const {
         if (m_ptr) {
             buffer<Key> prefix;
-            for_each(f, *this, prefix);
+            for_each_(f, *this, prefix);
         }
     }


Fix general nav

Fixes #594 # Pull Request Template

Please provide all of the details below. Pull requests missing any of the information below will be closed!
Providing the issue number/url helps us identify the problem being solved and keep the issues tab clean and tidy

This is not a fix. This is a request to add login and signup pages to the site.
Summarize what this PR fixes:-
Fixes #594

Fix spacing for each item on the navigation bar on the home page
Include media query to add items to more tab when width shrink
The menu icon appears during 900px instead of 500px
Improve aesthetic

Checklist
(Add an x between the brackets to check the items)

[x] I have summarize what this PR fixes above
[x] I have provided the issue ID/URL above
[x] I have not added Bootstrap or jQuery and used correct styling guide.
[x] This PR fixes only the issue mentioned above (create separate PRs for separate issues)
[x] I was the first one to claim the issue or I created the issue - I created the issue

This is fantastic work!


Deleting a file with a SYMLNK causes IFS Browser to fail

If I delete a file with a symbolic link the IFS Browser cannot display the filter.
To recreate:
touch file1
ln -s file1 symlnk

Delete the file:

Result:  File deleted, SYMLNK remains and IFS browser is no longer functional.

If I delete the SYMLNK external to VS Code, then the IFS browser returns to normal.

QCCSID: 37
Features:

git: true
grep: true
tn5250: true
setccsid: true
md5sum: true
bash: true
chsh: true
GENCMDXML.PGM: true
GETNEWLIBL.PGM: true
QZDFMDB2.PGM: true
startDebugService.sh: true
attr: true
iconv: true

SQL enabled: true
Source dates enabled: false

Variants
{
  "american": "%23@$",
  "local": "%23@$"
}

Errors:
[
  {
    "command": "system \"CRTLIB LIB(LENNONS2) TEXT('Code for i temporary objects. May be cleared.')\"",
    "code": 255,
    "stderr": "CPD0032: Not authorized to command CRTLIB in library *LIBL.\nCPF0006: Errors occurred in command.",
    "cwd": "/home/LENNONS"
  },
  {
    "command": "system \"DLTOBJ OBJ(LENNONS2/O_*) OBJTYPE(*FILE)\"",
    "code": 255,
    "stderr": "CPF2125: No objects deleted.",
    "cwd": "/home/LENNONS"
  }
]

@worksofliam , @chrjorgensen I'll fix that. However, I need your point of view so we can agree on the solution
That's the --dereference or -L flag making stat or ls fail. So I can think of three approaches to fix this:

Following symlinks isn't useful for the IFS browser, we take out the --dereference flag for both stat and ls: case closed
The -L flag isn't deemed useful with the ls command, so we take it out (because the command fails entirely when there is a broken link). We keep following symlinks with stat and handle the failure since it only fails on the symlink (the rest of the folder is still listed).
We add an option in the settings to Follow symlinks in the IFS browser so that users can at least turn this option off to prevent the IFS browser from failing when that happens.

I'm not sure following symlinks is very useful in the IFS browser, so I would go with option 1, but I need your opinion before doing something stupid 😉

@sebjulliand @worksofliam IMHO symlinks are very useful, and I would be sad to not have this option anymore...
I think there may be a 4th option: Since ls and stat also return data in stdout when there's an error 1, we could ignore error code 1 and still use stdout... and send stderr to warning messages... this would populate the IFS browser tree and warn the user of the problems at the same time...
WTYD?

I completely agree with you @chrjorgensen about the usefulness of symlinks! I'm just questioning the use of --dereference in our context.
Also, you're right: both ls and stat use the code 1 to report a minor issue (I thought only ls did). But it seems that stat doesn't list the broken link. And for some reason sendCommand returned an error code 2 with ls and didn't list the broken link either.

However, removing the -L/--dereference flag will just not follow the link, it will still be listed even if broken. For what we do with ls, there should be no impact. For stat, it will display the information about the link itself and not the file it's supposed to points to.

Removing -L/--dereference would make the error go away and the tree being populated - with the symlink in error included and no warning issued. And the user would have to guess why the file can't be opened when clicking on it.
My suggestion is to keep the current behavior and use the content from stdout in the tree view - and any content from stderr as error messages. This to me seems like the best solution, since all errors would be shown to the user and all good content can still be viewed in the tree and accessed.
And if no good content is available, stdout will be empty and no tree will be populated. This could be caused by e.g. authorization errors or similar more severe errors.
Ah, these pesky error situations... 😆

Removing -L/--dereference would make the error go away and the tree being populated - with the symlink in error included and no warning issued. And the user would have to guess why the file can't be opened when clicking on it.
My suggestion is to keep the current behavior and use the content from stdout in the tree view - and any content from stderr as error messages. This to me seems like the best solution, since all errors would be shown to the user and all good content can still be viewed in the tree and accessed.
And if no good content is available, stdout will be empty and no tree will be populated. This could be caused by e.g. authorization errors or similar more severe errors.
Ah, these pesky error situations... laughing

Agreed! Here we go then: https://github.com/halcyon-tech/vscode-ibmi/pull/1302


Wrong suggestion for padStart in JS

It seems like the suggestion is wrong for padStart in JS? Definition is here?
Shouldn't the first field be length? Per docs

This issue was moved to Microsoft/TypeScript#23555


Sprite Frames Select Frames editor window: cannot drag-select numeric field without focusing on field first

Godot version
v4.0.beta.custom_build [767f8fb48]
System information
Linux Ubuntu 20.04 with Unity desktop
Issue description
In the SpriteFrames > Select Frames popup, if you press and hold the mouse primary button in order to drag-select any numeric field, the field doesn't react to the selection: it will only focus on the field.
You must drag-select the number once more after focus to actually select the number.
This is a very important move to quickly select the numbers and change them, esp. as the Select Frames window sometimes forget the previous settings.
Workaround: double-click on the numeric field to select the whole number
Steps to reproduce

Create a Resource > SpriteFrames
In the SpriteFrames window, Add frames from sprite (Ctrl+Shift+O) and select any texture to open the Select Frames popup
Move the cursor over a numerical field, e.g. Horizontal, on the left or right of the number.
Press and hold the primary click button, then move the cursor to the opposite side of the number ("drag-select").
Expected: the number is selected and highlighted
Actual: the field is simply focused

Minimal reproduction project
It's probably faster to just follow the steps on any project.

Does this work with other numeric fields in the editor, or a SpinBox node in a project?

Other text fields outside this popup highlight fine. I couldn't find an example with a numeric field, because dragging a numeric field in general will scroll the value instead (they seem to use a different type of numeric field widget).
Wow, good catch, the SpinBox node at runtime has the same issue in Godot 4!
In Godot 3.4, both the SpriteFrames numerical field and runtime SpinBox highlight fine! So this is a regression, and both seem to share the same code.


className outputs className, not class

Not sure if the whole className => class thing is just React's jsx or not... but if it is not, then this library should work that way.

Sorry about the delay to get back to you. The idea behind the library is to parse a React component to its almost exact string representation. So, className is expected to be like that.

React does className to class, this library doesn't or at least didn't work that way for me.

The idea for this library to if you have a component object like this:
<Component className="test" />
The string representation of that is expected to be:
"<Component className="test" />"
not
"<Component class="test" />
Let me know if this is not working. Or provide an example to illustrate your issue. Feel free to re-open.

Gotcha, thanks for the clarification, sorry for the confusion.

I disagree with this ticket being closed. In TypeScript, an error is thrown when assigning the property class to a jsx element (for example,
 is a type error. JSX supports the className attribute, not class. This library not supporting className in the same way is an enormous usability issue. For me, my markup needs to look something like this:
return jsxToString(
    // @ts-ignore // https://github.com/grommet/jsx-to-string/issues/7

      {strings('startDate')}
      // @ts-ignore
      {formatDate(item.start)}

      {strings('end')}
      // @ts-ignore
      {item.end && formatDate(item.end)}

      // @ts-ignore
      {item.content}

  )

The // @ts-ignore directives are a pain. If your library really supports jsx, I think it should make this translation.


minetest: 5.8.0 -> 5.8.1-android

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/minetest/minetest/releases.
meta.description for minetest is: Infinite-world block sandbox game
meta.homepage for minetest is: https://minetest.net/
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 5.8.1-android in filename of file in /nix/store/l4akcxciz0njwv1bmc6sn4cdzjns14wj-minetest-5.8.1-android

Rebuild report (if merged into master) (click to expand)

5 total rebuild path(s)

5 package rebuild(s)

First fifty rebuilds by attrpath

minetest
minetest-touch
minetestclient
minetestserver

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/l4akcxciz0njwv1bmc6sn4cdzjns14wj-minetest-5.8.1-android \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A minetest https://github.com/r-ryantm/nixpkgs/archive/601c05991afcc43d09d744af3a6ab11289b347e0.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/601c05991afcc43d09d744af3a6ab11289b347e0#minetest

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/l4akcxciz0njwv1bmc6sn4cdzjns14wj-minetest-5.8.1-android
ls -la /nix/store/l4akcxciz0njwv1bmc6sn4cdzjns14wj-minetest-5.8.1-android/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

4 packages built:

minetest
minetest-touch
minetestclient
minetestserver

Maintainer pings
cc @PyroLagus @fpletz @fgaz for testing.

"Android only" release


[BUG] Cannot import package with trailing slash

Bug Report Quick Checklist

[x] I am on the latest version of Snowpack & all plugins.
[x] I use package manager *npm (Fill in: npm, yarn, pnpm, etc).
[x] I run Snowpack on OS mac (Fill in: Windows, Mac, Linux, etc).
[x] I run Snowpack on Node.js v12+

Describe the bug
I am attempting to import the npm buffer module, instead of the node.js native buffer module.  Its instructions are to import it with a trailing slash ("buffer/"), to disambiguate from the native node module.  Doing so also makes the eslint rule import/no-nodejs-modules happy.  However, when I try it, I get:
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
    at validateString (internal/validators.js:124:11)
    at Object.join (path.js:1039:7)

To Reproduce

npm init snowpack-app --template @snowpack/app-template-react-typescript
npm i --save-dev buffer
Add import 'buffer/'; to a file that's being built
See error!

Expected behavior
I should be able to import a file in this way, I believe.
Anything else?
I'm wondering if maybe this PR might have introduced this issue: https://github.com/snowpackjs/snowpack/pull/3102

My current workaround for this is using import 'buffer/index.js';
I'm still unable to use snowpack because of the buffer thingies.
http://localhost:8080/_snowpack/pkg/safer-buffer.v2.1.2.js [:2234:15]
Uncaught TypeError: buffer.hasOwnProperty is not a function
If I alias it, I also get The "path" argument must be of type string. I'm stuck polyfilling buffers too.


Re-applied NOnion refactoring including -

Re-org'd F# code to more meaningful structure.
Formatted F# code to more idiomatic style.
Got rid of meaningless whitespace.

With regards to the commit message, I find 2 issues:

The line "Got rid of meaningless whitespace." doesn't apply anymore, because fantomas has taken care of this.
You shouldn't use the word 're-applied' because if someone takes a look at the git history of the master branch (after this PR gets merged) then he might think that these changes were applied in the past in some other commit, but that commit is not in master, but in other branch. So please rephrase the commit message as if the other commit you had done in a branch from an already-closed PR had never existed.

I'm guessing you wanted me to force push here, but it looks that outdates the code backlinks. Let me know if that was the incorrect approach.

There were some inconsistencies, for example: why not make UInt16.FromBigEndianByteArray an instance method of array<byte> (in the same way it was done for uint16) instead of making this static? I fixed up these and pushed this refactoring commit manually. Thanks.

PS: Do you know why the avatar icon of your commit doesn't match your github's account? I would say it's because the email address used for git credentials doesn't match the email address you used to register your github's account, can you fix this please?

Thanks for closing!
I think my icon should be a little green man looking thing. I'll check my local repo git settings.
Thanks!


Fix for #2550 - UI build on main branch is broken due to an undefined variable

Pull Request type

[ X] Bugfix
[ ] Feature
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Other (please describe):

Changes in this PR
Rename the variable value to displayValue
Describe the new behavior from this PR, and why it's needed
Issue #2550
Alternatives considered
Describe alternative implementation you have considered

Thanks for spotting it. Will merge and cut a new release.


Adds the central commanders cloak.

About the PR

Adds Central Commander's Cloak
Credits to noctyrnal for the sprite. (sorry it took so long)
Why / Balance

CentComm had no official cloak akin to the captain, so they were doomed to roam the abyss naked of respect and prestige.
Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog
:cl:

add: Added the Central Commander's cloak

put it in the centdrobe

nice cloak

put it in the centdrobe

👍


Allow definition of custom attributes

Analogous to GHCJS.VDOM.Element.custom. I assume this would be as simple as
-- in GHCJS.VDOM.Attribute.
custom :: JSString -> JSVal -> Attribute
custom = Attribute

Same as #8.


Show arguments table by click

Q
A

Is bugfix?
❌

New feature?
✔

Breaks BC?
❌

Inactive state

Hover state

Active state

Hover on line

:+1:


Schema instead of Hard Coded Values

Is there a way to test against a particular expected schema instead of hard coded values for the service results in say a Json Schema way?  e.g. This array will exist and not be empty, this string will be n characters long, this property will be null, etc.

After looking more closely at the spec, it seems like this is what spec 2-3 are getting closer to this.  The goal is for pact-net to keep up with the spec once out of WIP?

Hi @StephenErstad
Thanks for reaching out!
Yes you are correct, that is the goal of the v2 spec which we are working towards slowly. You can track the conversation at https://github.com/SEEK-Jobs/pact-net/issues/9. We are planning to support these specs, it's just a matter of finding the time to do the work.

I think I see how I will make it work given the current implementation.
I see huge value in this and will try to get up to speed so I can contribute.
Thanks for the quick response, @neilcampbell.

You can do a lot with the current functionality and the use of provider state, so hopefully that should help. However I definitely agree that having more flexibility is going to make things a lot easier!


Allow different dictionaries

This PR is related with the issue #16.
So I created a new functional function to enable a way where you can load different profanities, falseNegatives and falsePositives in this way this library will be more versatile, also I modified the test related and the README

Yes of course, sorry for the delay on answer you I'm a little bit busy these days, so the idea is maintain also the WithCustomDictionary function and add export the defaults right?

Yes of course, sorry for the delay on answer you I'm a little bit busy these days, so the idea is maintain also the WithCustomDictionary function and add export the defaults right?

No problem :)
And yes, all you have to do is change the first character of the default dictionaries (e.g. defaultProfanities) from lowercase to uppercase (DefaultProfanities).

Perfect!! done :)

Codecov Report

Merging #17 (945a294) into master (9b55b8d) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master       #17   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            1         1
  Lines           65        73    +8
=========================================
+ Hits            65        73    +8

Impacted Files
Coverage Δ

goaway.go
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9b55b8d...945a294. Read the comment docs.

@sp-adrian-perez Thank you for your contribution!

Released in v1.2.0
By the way, I swapped the order for the false positive and false negative order, so the order is now the following:
profanityDetector := goaway.NewProfanityDetector().WithCustomDictionary(profanities, falsePositives, falseNegatives)


QAnh 1st commit

[HW 15] Change URL launch website

Your assignment is done very well
Keep up the good work! 👍
https://share.zight.com/Z4uE56yE
Best wishes from the Automation Test Pro team (Son<EMAIL_ADDRESS>


email: Drop support for SEND_MISSED_MESSAGE_EMAILS_AS_USER.

This change removes the setting SEND_MISSED_MESSAGE_EMAILS_AS_USER
to improve the notification email that users receive when they get
a mention in a stream with the setting set to True.
Originally, this was how the notification emails worked and that
has been changed in commit number:
https://github.com/zulip/zulip/commit/797a7ef97bda8cfcc87cb25f9e870fe7558e7739
The footer and from address of emails that are sent when this
setting is set to True are confusing especially when more people
are involved in a stream and since we have changed the way we send
emails, it should be removed. It’s also not widely used.
Fixes:https://github.com/zulip/zulip/issues/26609
Screenshots and screen captures:

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[x] Responsiveness and internationalization.
[x] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Looks plausible to me; @mateuszmandera can you review this one?

Or @prakhar1144 might have worked in this code path even more recently; probably either can review.

Small comment on the commit message:

Fixes:#26609

Generally you want a space after the : there.

Merged after that and a few other cleanups to the commit messages. Thanks for the contribution @Esther146!


Implement new type url that validates data against regex based on RFC 1808

Coverage decreased (-0.2%) to 87.145% when pulling 58b2009bb95742e11067fa5999a4bd31505b64ad on feature/url-email-type into<PHONE_NUMBER>a5d3fc5ffe2f5639e01882fd955c85 on master.

Coverage decreased (-0.1%) to 87.191% when pulling 58b2009bb95742e11067fa5999a4bd31505b64ad on feature/url-email-type into<PHONE_NUMBER>a5d3fc5ffe2f5639e01882fd955c85 on master.


Formly-Material Date-picker disable future dates

Is your feature request related to a problem? Please describe.
While rendering a form using a JSON file it is not straightforward to disable future dates due to the dynamic nature you will have to process the config to pass in today's date
Describe the solution you'd like
It will. be great if the future dates can be disabled by passing a flag in the datepickerOptions like so:
datepickerOptions: {         "disableFutureDates": true     }
Describe alternatives you've considered
using max right now but will have to process the JSON config

You can introduce that option by using the custom extension, check the following example https://formly.dev/examples/advanced/i18n-alternative to know how to create your own extension:
export class DatepickerExtension {
  prePopulate(field: FormlyFieldConfig) {
    if (field.type === 'datepicker' && disableFutureDatesEnabled) {
      // set max property
    }
  }
}


real time processing camera input

real time processing camera input very slow. Over a second per frame. Can you supply system specs also video test data.

see https://github.com/MarvinTeichmann/KittiBox/issues/15


STS tests based on constraints

Description
This PR introduces the test setup for testing STS rules using the constraint library. It's a WIP effort but we have a running test for a simple STS rule: GOVCERT.
Checklist

[x] Commit sequence broadly makes sense and commits have useful messages
[x] New tests are added if needed and existing tests are updated
[x] When applicable, versions are updated in .cabal and CHANGELOG.md files according to the
versioning process.
[x] The version bounds in .cabal files for all affected packages are updated. If you change the bounds in a cabal file, that package itself must have a version increase. (See RELEASING.md)
[x] All visible changes are prepended to the latest section of a CHANGELOG.md for the affected packages. New section is never added with the code changes. (See RELEASING.md)
[x] Code is formatted with fourmolu (use scripts/fourmolize.sh)
[x] Cabal files are formatted (use scripts/cabal-format.sh)
[x] hie.yaml has been updated (use scripts/gen-hie.sh)
[x] Self-reviewed the diff

@lehins I think this should be ready to merge

@TimSheard I think I've addressed your comments

@lehins I added the POOL and DELEG rules here too. It might be worth while to merge this soon to avoid things changing beneath our feet.


login check: call function directly

aldryn doctor -c 'login' will now call the function directly rather than depending on the binary of aldryn being available in PATH. Fixes issues with systems where the executable aldryn may be named differently or cannot be found

👍  nice


[Bug?]: Tanks don't display fluid values or contents in Waila

As the title describes, as it seems Tanks are not properly displaying their fluid contents or internal values in "Waila" or rather "Hwyla" by TehNut.
Pictures:
Normal Water Tank:
http://i.imgur.com/WdItTaI.png
Fresh Water Tank:
http://i.imgur.com/tazC05A.png
This would be very useful since it would help to debug situations like this:
http://i.imgur.com/Us90QUH.jpg
Where in the water isn't being moved anymore using the hoses.
Or rather it doesn't seem to be moving.

Mod Versions:
aquamunda-0.1.1beta
immcraft-1.1x-1.3.1
compatlayer-1.10-0.2.5

Did you try with The One Probe? It should give that information

Yup, TOP shows the appropriate information.
http://i.imgur.com/2sVRLZX.png
Since Hwyla doesn't seem to work with it I'll most likely switch over at this point :P

I can add support if needed but the problem is that WAILA support is so much harder since waila is clientside and the tank contents is only available server side

Understandable :P
Tbh I'll most likely switch over to TOP (been looking at it for awhile in this pack).
However, it might be something worth putting as a "Future Support" thing for future reference.


Fix rancher-images generation to include the original image tag

Today on every Drone tag we generate rancher-images.txt file containing all the third party system images needed to launch Rancher microservices (code can be found here). Prior to generation, the images have to be tagged and pushed to Rancher repo - that is so they are all kept at the same location, and to make things easier to mirror for airgapped installs. This re-tag/pushToRancherDockerhub step is manual today. And it's better to offload it to Drone. For that, we have to generate the file containing an image source and destination in a following format:
rancherTag originalTag... (amd, arm, etc)
Example:
rancher/coreos-etcd:v1 cores/etcd:v1 cores/etcd:v1-arm64

Today on every Drone tag we generate rancher-images.txt file containing all the third party system images needed to launch Rancher microservices (code can be found here). Prior to generation, the images have to be tagged and pushed to Rancher repo - that is so they are all kept at the same location, and to make things easier to mirror for airgapped installs. This re-tag/pushToRancherDockerhub step is manual today. And it's better to offload it to Drone. For that, we have to generate the file containing an image source and destination in a following format:
rancherTag originalTag... (amd, arm, etc)
Example:
rancher/coreos-etcd:v1 cores/etcd:v1 cores/etcd:v1-arm64

@kinarashah that would require some code changes in https://github.com/rancher/rancher/blob/master/pkg/image/export/main.go based on the changes you are making for separating k8s images from rke/types.

https://github.com/rancher/rancher/issues/20765

@jiaqiluo For validating this issue , following scenarios need to be validated in air gap setup.

Validate that we are able to deploy all supported K8s versions in the release successfully after the images from rancher-images.txt gets uploaded to the private registry used by airgap setup.

@kinarashah When we introduce new k8s version support in existing rancher server setup, we would expect rke-metadata-url to be point to a github server that is accessible to the air gap setup and is kept in sync with rancher's default rke-metadata-url .
With this in place , k8s version support changes will be reflected in air gapped setups as expected. But we will still not have a way to get an updated rancher-images.txt with the supporting system images needed.
We should have a V3 settings exposed that will carry this information and get re-evaluated  everytime changes done to kontainer metatdata.

@kinarashah we should implement generateImages action that would produce a downloadable file, similar to how download keys work.

@sangeethah @jiaqiluo Opened a new issue to track this, since the original issue is to make changes to include original image tag. For metadata related changes, refer https://github.com/rancher/rancher/pull/22302
cc: @alena1108

Based on discussion with Bill and Taylor, the format of the image file will be the following:
rancher/coreos-etcd:v1 amd;coreos/etcd:v1 arm;coreos/etcd:v1-arm arm64;coreos/etcd:v1-arm64 windows-1903;coreos/etcd:v1-windows-1903

The tagging and pushing should be done in the repos where the images are originally defined: types, kontainer-driver-metadata, system-charts. Each repo will have the file with all the images referenced in the repo being checked in. On merge, drone should ensure that all images are present along with their manifest, and if not, tag/push the image with the manifest generation.
Rancher side changes would be to generate rancher-images.txt file based on the metadata in types, kontainer-driver-metadata, system-charts

This already exists today for non multi-arch images with the istio mirror script.
But we still need to solve multi-arch images.

Support has been added and separated out to a separate repo: https://github.com/rancher/image-mirror

Support has been added and separated out to a separate repo: https://github.com/rancher/image-mirror


[STORM-2626] Provided a template for drpc-auth-acl.yaml

https://issues.apache.org/jira/browse/STORM-2626
The default value of drpc.authorizer.acl.filename in defaults.yaml is "drpc-auth-acl.yaml",so I think we should provided a template for drpc-auth-acl.yaml.

@HeartSaVioR
I am so sorry to bother you.Do you have time to help me review it?

Can one of the admins verify this patch?

@vesense
I am so sorry to bother you.Do you have time to help me review it?

@harshach
I am so sorry to bother you.Do you have time to help me review it?

@HeartSaVioR
Do you have time to help me review this PR,it's about drpc acl?

@Ethanlm
Thanks for your reply.I will modify it follow your suggestion.

@Ethanlm
Hi,could you help me review the new change?

Thanks. @liu-zhaokun . I was just thinking that adding some instructions on SECURITY.md about DRPC is better than adding one more file in the conf directory.  It would make me nervous to see some many configuration files if I'm just a user. People don't even need to care about DRPC configuration if they are not using it. I would like to hear other people's opinions about this.

@Ethanlm
Ok,thank you.

@revans2
Could you help me review this PR，there are no committer to review it all the time.

I do agree with @Ethanlm that updating SECURITY.md would probably be more helpful, but if you want this to be a first step then I am happy to merge it in.

@revans2
You are right.I created several PRs which has been mergerd that is related to ACL. I will update SECURITY.md in a new PR with these changes  later.Could you help me merge this PR firstly?


504 Gateway Timeout on badges inside GitHub README

Are you experiencing an issue with...

[x] shields.io

:beetle: Description
We have some projects where we have started using shields.io badges only recently. However, it seems that when the READMEs of the projects are rendered on GitHub, the badges don't show up. (Yesterday, it was roughly 50% of the badges not showing, today they don't show, like, at all.)
Network monitor shows GET requests to camo.githubusercontent.com lasting 4100+ ms, ending in 504 Gateway Timeout (Error Fetching Resource).
A private GitLab instance is also hosting the repos, there the README is rendered with all badges visible. In that case, however, network monitor shows requests going directly to img.shields.io. But the requests take 17 secs each (or more).
The projects are:

https://github.com/renatahodovan/fuzzinator
https://github.com/renatahodovan/grammarinator

Hi, thanks for posting. We deployed an experimental branch (#4756) last night to a canary server and it seems like that may be the cause of this issue. Rolling it back now and hoping it stabilizes things.
We are actively working to upgrade our hosting environment to replace it with something more modern, scalable, and reliable, and which removes our administration and deployment bottleneck. One of the remaining big pieces is being completed now #4874. I don't have a timeline to report on this, but am hoping it can happen soon.

Note that this has been going on longer than just last night. See https://github.com/latex-lsp/texlab/issues/195# and https://github.com/vmg/redcarpet/issues/688

One thing I've noticed is a strong correlation between OVH (our hosting provider) maintenance/incidents and the recent windows of delayed badge responsiveness.
It could certainly be coincidental, but we've had these responsiveness issues intermittently lately and there always seems to be corresponding OVH issues during/preceeding those same intervals.
https://twitter.com/ovh_status?
https://github.com/badges/shields/blob/master/doc/production-hosting.md#badge-servers

I'm not sure whether it's the rollback or the hosting provider, but now the badges seem to show up "instantly" (40-600 ms). Thanks for the service!

I highly suspect @calebcartwright is right that this one was the hosting provider.

This happens on my project as well every single time.

Really sorry about the downtime today. OVH is having some issues which I think are affecting us. I've got a draft of a new hosting proposal which should fix this and also eliminate the bottlenecks (on Thaddée for handling the servers, and on me for deploying). Please bear with us!

@paulmelnikow I appreciate that very much. Thank you :+1:

same problem here, how to see a solution soon.
thanks for your work guys

I'll have this proposal posted in the next day or two.

I'm glad I'm not the only one :-)
But I'm a bit puzzled: requesting the badge directly works perfectly well, while requesting the same badge through github's camo URL times out every time. Could it be a problem with the hosting provider OVH actively filtering out requests coming from github, possibly because a lot of requests are coming from the same IP (or set of IPs)? Like an automatic DoS protection?

I see problems for badges coming from other sources too, so this might be a transient problem with github.

But I'm a bit puzzled: requesting the badge directly works perfectly well, while requesting the same badge through github's camo URL times out every time. Could it be a problem with the hosting provider OVH actively filtering out requests coming from github, possibly because a lot of requests are coming from the same IP (or set of IPs)? Like an automatic DoS protection?

It's more likely that GitHub Camo's four-second request timeout is what's causing the problem.
The hosting proposal is up at #4929 and hopefully we'll be able to move forward with this soon!

I experience the same issue at https://github.com/PruvoNet/node-upgrade-checker/blob/master/README.md
The failed badges and the number of them are random

I know this is specific to GitHub, but it looks like there are problems on https://shields.io as well. I'm assuming it's the same underlying problem, but just wanted to make sure it was brought up as well.

Yikes! We've got an active proposal to address this. I wonder if we can wait for that discussion to resolve or if we need some interim action.

Can repro on GitLab too...

All of the ones lacking a preview are ones provided by shields.io

Same issue with my repo https://github.com/LGouellec/kafka-streams-dotnet.

Same issue with my repo https://github.com/LGouellec/kafka-streams-dotnet.

@LGouellec Please consider using the 👍 reaction instead of commenting information that has already been posted. It effects every usage of Shields, every repo. If you have new relevant information, commenting is the best method. Otherwise please be respectful to subscribers of this thread to the thread and use the reaction feature.

I've set up a test server on Heroku at https://img-test.shields.io/badge/build-passing-brightgreen and sent a note to @espadrine asking his consent to move all the traffic over there, as an experiment.

For what it is worth, we have observed intermittent 504s for around a month and a half now. They seem to have gone away at some point and come back again more recently, but it doesn't appear to be a new issue that we are observing.
This is from GitLab specifically though; I'm not sure what else could interfere with that. Not sure if that is useful context at all?

The ops team has moved forward with an experiment to test hosting Shields on Heroku, which has been live on img.shields.io for about 14 hours. Overall it's working pretty well. We had a minor setback on the Discord badges (#4957) but have shimmed it for now. Please open an issue if you're seeing any new issues with badges, and follow https://github.com/badges/shields/issues/4929#issuecomment-620140625 if you'd like more information about the ops experiment. Let's keep this open for the duration.

I'm going to close this out given the success of the Heroku experiment and decision to go forward as the new runtime environment has resolved the timeout/latency issues.


Option to preserve whitespace on cursor on autosave

This is an extension of issue #207.
I hit enter to type another statement, and editorconfig deletes the indentation, due to autosave.

The reason why I made this issue is because VSCode offers a fix specifically for autosave.
https://github.com/Microsoft/vscode/issues/24400
Involved .editorconfig-files
[*.{js,jsx,ts,tsx,vue}]
indent_style = space
indent_size = 2
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 100

Installed packages
I'm using https://atom.io/packages/autosave-onchange to autosave files.
I have Atom's built in autosave disabled. https://atom.io/packages/autosave
and of course I'm using the official .editorconfig package https://atom.io/packages/editorconfig

Other packages seem irrelevant in this context.
 I've just installed the autosave-onchange package and noticed the problem immediately. Atom's autosave package does the same thing as well, although it's much less noticeable since it only autosaves an editor when it loses focus. Unfortunately, neither of these packages provide a way to distinguish between an automated save and a manual (user-triggered) save.
The quickest solution (and why it won't work)
I could monkey-patch the package methods responsible for autosaving, so they toggle a flag each time they run which tells editorconfig not to auto-format on the next save event... buuuuut that'll run the risk of the user manually-saving a file during an autosave, and the file not getting auto-formatted. An example might help explain better:

Before the patched method is triggered, a flag is set telling editorconfig to ignore the next onDidSave event fired on this particular editor
The onDidSave event fires; but because of the flag, editorconfig knows not to auto-format the file in response
The flag is cleared, meaning the next onDidSave event will auto-format the editor, as intended

Now, imagine what would happen if between points 1 & 2, the user manually saves the editor and notices it doesn't auto-format. Since autosave-onchange runs continuously as the user's typing, this is going to cause problems.
The less obvious solution (that involves changing the package's behaviour…)
A better approach would be to listen for an onWillDispatch event called with one of the following event-names:

core:save
core:save-as
window:save-all
whitespace:save-with-trailing-whitespace
whitespace:save-without-trailing-whitespace
And probably more…

The auto-format flag is then cleared on the next onDidSave event, ensuring it only happens once, and only after a user has explicitly dispatched a save-related command. Unfortunately, this still isn't foolproof, because a pending command can always be intercepted or cancelled by another listener. There're likely also packages that have their own save-like events, meaning we can't accommodate for each one...

I'm sorry for rambling so much, but I didn't know how else to explain why this isn't easy to fix...

Sorry for my own late response as well.
Thanks for explaining. Is there anything I could do to possibly get this autosave plugin to work with editorconfig? Maybe I could leave an issue or whatnot?

I could possibly make a fork/pull request of the package to make it editorconfig compatible.

If you could, that'd be great. 👍

Closing as Atom is abandoned.


Add two new types to MW server factories

Merge first
This PR enables 2 new middleware server types for testing purposes in ui-classic repository.

@miq-bot add_label bug,gaprindashvili/yes, providers/middleware

@abonas this PR is required to be merged before https://github.com/ManageIQ/manageiq-ui-classic/pull/2724 so we can update tests of topology.

@miq-bot add_label test
LGTM
@israel-hdez please review as well.
@miq-bot assign @chessbyte

Gaprindashvili backport details:
$ git log -1
commit ee87b92508b79bae96f3df58331f4e72a97493d1
Author: Adam Grare<EMAIL_ADDRESS>Date:   Sun Nov 19 09:44:14 2017 -0500

    Merge pull request #16478 from karelhala/eapWildflyFactory

    Add two new types to MW server factories
    (cherry picked from commit 2a3700be7f9dcadcf6815ebc245b4224af7511f9)

@agrare could you please add a milestone here? I believe it belongs to 74. thanks


Made a few changes.

absolutely find, t hanks @jimdial ! English isn't my native language so always helpful :)

Merged, ready to merge to the main branch.