Need to try creating my own event loop

Due to the dbus-1 library locking itself on dbus_connection_read_write_dispatch, I think I need to create my own event loop. I want to cleanly break on signal from another thread.

Been verifying this. Nothing else seems to work. I have been trying many gimmics.. nothing. Of course there are no guarantees that own loop would work either. But maybe it is worth checkin.

I found that wpa_supplicant may have what we need.

Researching wpa_supplicant.

(Some sources say something about self pipe trick.)

About pselect / select:
"If none of the selected descriptors are ready for the requested operation, the pselect() or select() function shall block until at  least  one  of the  requested  operations becomes ready, until the timeout occurs, or until interrupted by a signal.  The timeout parameter controls how long the"
...
"EINTR  The function was interrupted before any of the selected events occurred and before the timeout interval expired."

src/utils/eloop.c has:
#ifdef CONFIG_ELOOP_SELECT
		eloop_sock_table_set_fds(&eloop.readers, rfds);
		eloop_sock_table_set_fds(&eloop.writers, wfds);
		eloop_sock_table_set_fds(&eloop.exceptions, efds);
		res = select(eloop.max_sock + 1, rfds, wfds, efds,
			     timeout ? &_tv : NULL);
#endif /* CONFIG_ELOOP_SELECT */

...

if (res < 0 && errno != EINTR && errno != 0) {
	wpa_printf(MSG_ERROR, "eloop: %s: %s",

...
Also:

static void eloop_handle_signal(int sig)

and

int eloop_register_signal(int sig, eloop_signal_handler handler,
			  void *user_data)

...

signal(sig, eloop_handle_signal);

/**
 * integrate_with_eloop - Register our mainloop integration with dbus
 * @connection: connection to the system message bus
 * @priv: a dbus control interface data structure
 * Returns: 0 on success, -1 on failure
 */
static int integrate_with_eloop(struct wpas_dbus_priv *priv)
{
	if (!dbus_connection_set_watch_functions(priv->con, add_watch,
						 remove_watch, watch_toggled,
						 priv, NULL) ||
	    !dbus_connection_set_timeout_functions(priv->con, add_timeout,
						   remove_timeout,
						   timeout_toggled, priv,
						   NULL)) {
		wpa_printf(MSG_ERROR, "dbus: Failed to set callback functions");
		return -1;
	}

	if (eloop_register_signal(SIGPOLL, process_wakeup_main, priv))
		return -1;
	dbus_connection_set_wakeup_main_function(priv->con, wakeup_main,
						 priv, NULL);

	return 0;
}

static int wpas_dbus_init_common_finish(struct wpas_dbus_priv *priv)
{
	/* Tell dbus about our mainloop integration functions */
	integrate_with_eloop(priv);

	/*
	 * Dispatch initial DBus messages that may have come in since the bus
	 * name was claimed above. Happens when clients are quick to notice the
	 * service.
	 *
	 * FIXME: is there a better solution to this problem?
	 */
	eloop_register_timeout(0, 50, dispatch_initial_dbus_messages,
			       priv->con, NULL);

	return 0;
}

struct wpas_dbus_priv * wpas_dbus_init(struct wpa_global *global)
{
	struct wpas_dbus_priv *priv;

	priv = os_zalloc(sizeof(*priv));
	if (priv == NULL)
		return NULL;
	priv->global = global;

	if (wpas_dbus_init_common(priv) < 0 ||
#ifdef CONFIG_CTRL_IFACE_DBUS_NEW
	    wpas_dbus_ctrl_iface_init(priv) < 0 ||
#endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
	    wpas_dbus_init_common_finish(priv) < 0) {
		wpas_dbus_deinit(priv);
		return NULL;
	}

	return priv;
}

int wpas_notify_supplicant_initialized(struct wpa_global *global)
{
#ifdef CONFIG_CTRL_IFACE_DBUS_NEW
	if (global->params.dbus_ctrl_interface) {
		global->dbus = wpas_dbus_init(global);
		if (global->dbus == NULL)
			return -1;
	}

/**
 * wpa_supplicant_init - Initialize %wpa_supplicant
 * @params: Parameters for %wpa_supplicant
 * Returns: Pointer to global %wpa_supplicant data, or %NULL on failure
 *
 * This function is used to initialize %wpa_supplicant. After successful
 * initialization, the returned data pointer can be used to add and remove
 * network interfaces, and eventually, to deinitialize %wpa_supplicant.
 */
struct wpa_global * wpa_supplicant_init(struct wpa_params *params)
{
	struct wpa_global *global;
	int ret, i;

	if (params == NULL)
		return NULL;

#ifdef CONFIG_DRIVER_NDIS

...

	if (wpas_notify_supplicant_initialized(global)) {
		wpa_supplicant_deinit(global);
		return NULL;

int main(int argc, char *argv[])
{
	int c, i;
	struct wpa_interface *ifaces, *iface;
	int iface_count, exitcode = -1;
	struct wpa_params params;
	struct wpa_global *global;

...

	global = wpa_supplicant_init(&params);
	if (global == NULL) {
		wpa_printf(MSG_ERROR, "Failed to initialize wpa_supplicant");
		exitcode = -1;
		goto out;
	} else {
		wpa_printf(MSG_INFO, "Successfully initialized "
			   "wpa_supplicant");

main() => wpa_supplicant_init() => wpas_notify_supplicant_initialized() => wpas_dbus_init() => wpas_dbus_init_common_finish() => integrate_with_eloop() => eloop_register_signal( eloop_handle_signal() )

From dbus, probably does not help:

 * Queues incoming messages and sends outgoing messages for this
 * connection, optionally blocking in the process. Each call to
 * _dbus_connection_do_iteration_unlocked() will call select() or poll() one
 * time and then read or write data if possible.

Worth checking, vtable stuff:
https://gist.github.com/plauche/bb296b43e42281d4e230ec397054e468

Worth looking:
eloop_run();

Interesting comment:
"Is it possible for asynchronous sending and reading messages in D-bus using the function calls pastebin.com/4E6XB3qb ? I didn't understand why dbus_connection_set_dispatch_status_function(), dbus_connection_set_watch_functions() and dbus_connection_set_timeout_functions() functions are required? My understanding is, if we register object path(i.e DBusObjectPathVTable) then d-bus daemon will call "message_function" of vtable when any message received for the connection. Please let me know if this understanding is not correct. –
user3693586
Nov 27, 2017 at 10:31"

Funny: https://lists.gnu.org/archive/html/gpsd-dev/2021-08/msg00080.html
"Except shorten the timeout, or re-write that loop.  I looked at rewriting
that loop, and the innertubes are full of people that failed to
replace dbus_connection_read_write_dispatch()."

Interesting:
	eloop.readers.changed = 0;
	eloop.writers.changed = 0;
	eloop.exceptions.changed = 0;

	eloop_process_pending_signals();

Extremely important:
fd = dbus_watch_get_unix_fd(watch);

It seems the best way to do things is to scavenge dbus reference and see where it is in wpa_supplicant. We can do this!

Interesting: https://git.sr.ht/~anteater/mmsd/blob/6e7822d7c7325983c582650dd33fb05607e6ae2b/gdbus/mainloop.c

dbus_connection_set_watch_functionsSets the watch functions for the connection.
"These functions are responsible for making the application's main loop aware of file descriptors that need to be monitored for events, using select() or poll()"

wpa_supplicant uses nothing of read write dispatch

Important:
#ifdef CONFIG_ELOOP_SELECT

static int integrate_with_eloop(struct wpas_dbus_priv *priv)
{
if (!dbus_connection_set_watch_functions(priv->con, add_watch,
remove_watch, watch_toggled,
priv, NULL) ||

So, first comes dbus system connection, then integration.

This first after setting up the bus: dbus_connection_set_watch_functions
Explore if this needed: dbus_connection_set_timeout_functions

Interesting: https://stackoverflow.com/questions/9378593/dbuswatch-and-dbustimeout-examples

More interestings:
https://clusterlabs.org/pacemaker/doxygen/Pacemaker-1.1.18/dbus_8c_source.html

man 2 select:
   #include <stdio.h>
   #include <stdlib.h>
   #include <sys/time.h>
   #include <sys/types.h>
   #include <unistd.h>

   int
   main(void)
   {
       fd_set rfds;
       struct timeval tv;
       int retval;

       /* Watch stdin (fd 0) to see when it has input. */

       FD_ZERO(&rfds);
       FD_SET(0, &rfds);

       /* Wait up to five seconds. */

       tv.tv_sec = 5;
       tv.tv_usec = 0;

       retval = select(1, &rfds, NULL, NULL, &tv);
       /* Don't rely on the value of tv now! */

       if (retval == -1)
           perror("select()");
       else if (retval)
           printf("Data is available now.\n");
           /* FD_ISSET(0, &rfds) will be true. */
       else
           printf("No data within five seconds.\n");

       exit(EXIT_SUCCESS);
   }

I get it now. We never watch individual fds. We watch sets.


Speed up parsing of gdb output strings by using indexes into the orig…

…inal string rather than creating new strings at each step.
This results in a huge speedup. In the example reported (Issue #583) the time to parse when from 106 seconds to .1 second.

@paulmaybee wow!


Import tensorflow with error information"KeyError: "Couldn't find field google.protobuf.FileOptions.php_class_prefix""

here is the error information:

import tensorflow
Traceback (most recent call last):
File "", line 1, in
File "/home/shaoyn/anaconda2/lib/python2.7/site-packages/tensorflow/init.py", line 24, in
from tensorflow.python import *
File "/home/shaoyn/anaconda2/lib/python2.7/site-packages/tensorflow/python/init.py", line 52, in
from tensorflow.core.framework.graph_pb2 import *
File "/home/shaoyn/anaconda2/lib/python2.7/site-packages/tensorflow/core/framework/graph_pb2.py", line 10, in
from google.protobuf import descriptor_pb2
File "/home/shaoyn/anaconda2/lib/python2.7/site-packages/google/protobuf/descriptor_pb2.py", line 1003, in
options=None),
File "/home/shaoyn/anaconda2/lib/python2.7/site-packages/google/protobuf/descriptor.py", line 498, in new
return _message.default_pool.FindFieldByName(full_name)
KeyError: "Couldn't find field google.protobuf.FileOptions.php_class_prefix"

Reinstall protobuf maybe helpful:
$ sudo pip uninstall protobuf
$ sudo pip install protobuf

@shaoyn0817 please try @ScorpioCPH 's suggestion, and let us know if it helps.

thx~

thx a lot!


Add default disk to image column

Add default disk.
WHY
BEFORE - What was wrong? What was happening before this PR?
While uploading an image using image field it uploads to the default disk in my case is public but when using image columns it returns data value from DB with the asset function which is not correct because it's uploaded to storage path or to be more clear upload based on default disk path.
AFTER - What is happening after this PR?
Define default disk to image columns so it's not required me to write disk for each image column I have so it's use default one which is used in the field as well.
HOW
How did you achieve that, in technical terms?
by adding this row $column['disk'] = $column['disk'] ?? config('filesystems.default');
to check if this column has a different disk name to use or use the default one.
Is it a breaking change?
No, I don't think so.
How can we test the before & after?
upload an image using the image field then show it in a table using the image column without define disk.
If the PR has changed in multiple repos please provide the command to checkout all branches, eg.:
git checkout "dev-branch-name" &&
cd vendor/backpack/crud && git checkout crud-branch-name &&
cd ../pro && git checkout pro-branch-name &&
cd ../../..

Thank you @EGYWEB-Mohamed 🙏
Much appreciated!
Cheers


Support for matching unordered arrays in nested jsons

We have a quite complex JSON structure in which we have a mix of hashes and arrays. The root node is a Hash causing include_unordered_json to not be supported.
An example of our json (simplified):
{
  "foo" => "bar",
  "baz" => ["one", "three", "two"]
}

In that case we need to know the exact order of the baz array.
A workaround we use now is by explicitly wrapping the array in our expected json in RSpec::JsonExpectations::Matchers::UnorderedArrayMatcher classes:
{
  "foo" => "bar",
  "baz" => RSpec::JsonExpectations::Matchers::UnorderedArrayMatcher.new(["one", "two", "three"])
}

I'd say that include_unordered_json could accept a Hash too and uses the unordered array matcher for arrays it has in its structure.

@waterlink the issue described here indeed is related but it's a bit different. match_unorderd_json can only be used if the root node of the JSON being checked is an Array. In case the root node is a Hash (with an array as one of the keys) match_unordered_json can not be used.

I'm looking into refactoring some parts. I think that the following matchers are what we want:

include_json which only checks if the expected JSON is included. Arrays are matched unordered.
match_json which checks if the returned JSON is an exact match of the expected JSON meaning that all key-values need to be present and arrays should be orderd exactly as expected.
match_unordered_json which checks if the returned JSON has exactly the same data as the expected JSON but arrays are matched unordered. (basically match_json but without the requirement for ordered arrays)

What do you think about it? I think it would cover all possible situates needed but I might be overlooking something. :)

Very interested about the match_json 😃

What's the status on this issue? I also found myself in the same situation.

We're also very interested in the match_json matcher for the Cloudfoundry's Cloud Controller API tests. We currently have a custom matcher to do JSON validation that errors when the actual JSON has extra fields. Having match_json would allow us to swap this custom matcher for this more generic matcher.

@XenoPhex I’ll take a look into this. Shall we jump on chat/zoom at some point to discuss how you want to use such a matcher?

@waterlink @XenoPhex what's the status of this issue?


feat: upgrade to net9

Upgraded the build container to NET 9
Kept runtime support for NET 8
[BREAKING] Dropped support for NET 7

Looking good 👍! Hyped for .net 9 🥳


Show balance in dashboard

The balance that is avalaible, froze etc etc should be displayed in the dashboard (feature request)

I disagree. I think the only place it's needed if for when you delegate, and this is this issue https://github.com/delegit-xyz/dashboard/issues/28

A damn.. did not see #28 . Thnx for that!


Fixed up syntax error in app.src file.

The trailing "," was casuing a compile error when using the library in an Elixir project.

Oh, good catch! It's easy to tell I didn't use this library too much 😄, more to try out rebar3 than anything :) Thanks for the contribution!

No worries. It's a useful library and just what I wanted when trying to decode some integers :)

That's awesome to hear! 💟


Query: Time Range With Filter

This is the same query as https://github.com/Max-Meldrum/awheel/issues/88 but it involves filtering also.
select avg(temp)
from device
where time > ? and time < ?
having avg(temp) >= threshold

// or create Iter Struct that can support filter/combine methods.
pub fn range_query_with_filter<R>(&self, range: R, filter: impl Fn(&A::PartialAggregate) -> bool)
    where R: RangeBounds<usize>,
{
}

Dropping this. Users can filter their data after performing a range query instead..


Support JSON.MERGE Command

Description

Describe your pull request here

Checklist

[ ] Does npm test pass with this change (including linting)?
[ ] Is the new or changed code fully tested?
[ ] Is a documentation update included (if this change modifies existing APIs, or introduces new ones)?

Closes #2500

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (67d9c3c) 95.67% compared to head (4eb9384) 95.67%.

:exclamation: Current head 4eb9384 differs from pull request most recent head cee764e. Consider uploading reports for the commit cee764e to get more accurate results

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #2511   +/-   ##
=======================================
  Coverage   95.67%   95.67%
=======================================
  Files         455      456    +1
  Lines        4552     4556    +4
  Branches      522      522
=======================================
+ Hits         4355     4359    +4
  Misses        128      128
  Partials       69       69

Impacted Files
Coverage Δ

packages/json/lib/commands/MERGE.ts
100.00% <100.00%> (ø)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Hi @shacharPash @leibale, do you know when this feature is going to be available?

@kiyaGu we're waiting for RedisJSON 2.6 to be released, see here

@leibale looks like it has been released several weeks ago

Any updates?

@kiyaGu we are waiting for RedisJSON 2.6 to be released, see here


Can't parse new OpenAI OpenAPI spec

https://github.com/openai/openai-openapi/blob/master/openapi.yaml
== Compilation error in file lib/ex_openai.ex ==
** (FunctionClauseError) no function clause matching in ExOpenAI.Codegen.parse_component_schema/1

    The following arguments were given to ExOpenAI.Codegen.parse_component_schema/1:

        # 1
        %{"oneOf" => [%{"$ref" => "#/components/schemas/ChatCompletionRequestMessageContentPartText"}, %{"$ref" => "#/components/schemas/ChatCompletionRequestMessageContentPartImage"}], "x-oaiExpandable" => true}

    lib/ex_openai/codegen.ex:394: ExOpenAI.Codegen.parse_component_schema/1
    lib/ex_openai/codegen.ex:625: anonymous fn/2 in ExOpenAI.Codegen.get_documentation/0
    (stdlib 5.0.2) maps.erl:416: :maps.fold_1/4
    lib/ex_openai/codegen.ex:624: ExOpenAI.Codegen.get_documentation/0
    lib/ex_openai.ex:31: (file)

Looks like they changed the format slightly, there’s now a OneOf type for 2 different components 😅
Need to add handling for that

Culprit:
    ChatCompletionRequestMessageContentPart:
      oneOf:
        - $ref: "#/components/schemas/ChatCompletionRequestMessageContentPartText"
        - $ref: "#/components/schemas/ChatCompletionRequestMessageContentPartImage"
      x-oaiExpandable: true

Culprit:
    ChatCompletionRequestMessageContentPart:
      oneOf:
        - $ref: "#/components/schemas/ChatCompletionRequestMessageContentPartText"
        - $ref: "#/components/schemas/ChatCompletionRequestMessageContentPartImage"
      x-oaiExpandable: true

and
    ChatCompletionRequestMessage:
      oneOf:
        - $ref: "#/components/schemas/ChatCompletionRequestSystemMessage"
        - $ref: "#/components/schemas/ChatCompletionRequestUserMessage"
        - $ref: "#/components/schemas/ChatCompletionRequestAssistantMessage"
        - $ref: "#/components/schemas/ChatCompletionRequestToolMessage"
        - $ref: "#/components/schemas/ChatCompletionRequestFunctionMessage"
      x-oaiExpandable: true

So this is a component that can be oneOf many different components. Need to figure out a good way to represent those. Maybe not even consider them as 'one component', but directly fan out to the others it embeds

Hrrmmm so the issue here is that those new components aren't representable as structs in Elixir. Previously each of those had properties so it was easy. What we could do is, represent them as empty structs (%{}), but then use the @type to map them to the others, like this:
iex(3)> t ExOpenAI.Components.ChatCompletionRequestMessage
@type t() ::
        ExOpenAI.Components.ChatCompletionRequestFunctionMessage.t()
        | ExOpenAI.Components.ChatCompletionRequestToolMessage.t()
        | ExOpenAI.Components.ChatCompletionRequestAssistantMessage.t()
        | ExOpenAI.Components.ChatCompletionRequestUserMessage.t()
        | ExOpenAI.Components.ChatCompletionRequestSystemMessage.t()

Then when a function references them, it would do ExOpenAI.Components.ChatCompletionRequestMessage.t() which maps to the others

Done, please give latest HEAD a try. It changes component handling a bit so I don't want to release it immediately, need to test a bit


End to end tests are broken

End to end tests are currently broken.
They need to be fixed before making the 0.22.0 release.

+ local _jobkey=devcluster/vagrant/test/http_example_watch_secs
+ aurora job restart --batch-size=2 --watch-secs=10 devcluster/vagrant/test/http_example_watch_secs
 INFO] Performing rolling restart of job devcluster/vagrant/test/http_example_watch_secs (instances: [0])
 INFO] Restarting instances: [0]
 INFO] Watching instances: [0]
 INFO] Detected RUNNING instance 0
 INFO] Instance 0 has been up and healthy for at least 10 seconds
 INFO] All instances were restarted successfully
Job devcluster/vagrant/test/http_example_watch_secs restarted successfully
+ test_update_add_only_kill_only devcluster/vagrant/test/http_example_watch_secs /vagrant/src/test/sh/org/apache/aurora/e2e/http/http_example.aurora devcluster
+ local _jobkey=devcluster/vagrant/test/http_example_watch_secs _config=/vagrant/src/test/sh/org/apache/aurora/e2e/http/http_example.aurora _cluster=devcluster
+ shift 3
+ local _extra_args=
+ aurora update start devcluster/vagrant/test/http_example_watch_secs /vagrant/src/test/sh/org/apache/aurora/e2e/http/http_example.aurora --bind profile.instances=3
This job update will:
add instances: [1-2]
not change instances: [0]
 INFO] Starting update for: http_example_watch_secs
Job update has started. View your update progress at http://aurora.local:8081/scheduler/vagrant/test/http_example_watch_secs/update/5bf52227-3213-4691-9b42-bb4d367ec30e
+ assert_active_update_state devcluster/vagrant/test/http_example_watch_secs ROLLING_FORWARD
+ local _jobkey=devcluster/vagrant/test/http_example_watch_secs _expected_state=ROLLING_FORWARD
++ awk '{print $3}'
++ tail -n +2
++ aurora update list devcluster/vagrant/test/http_example_watch_secs --status active
+ local _state=ROLLING_FORWARD
+ [[ ROLLING_FORWARD != ROLLING_FORWARD ]]
++ awk '{print $2}'
++ tail -n +2
++ aurora update list devcluster/vagrant/test/http_example_watch_secs --status ROLLING_FORWARD
+ local _update_id=5bf52227-3213-4691-9b42-bb4d367ec30e
+ aurora update wait devcluster/vagrant/test/http_example_watch_secs 5bf52227-3213-4691-9b42-bb4d367ec30e
Current state ROLLING_FORWARD
Current state ROLLING_BACK
Current state ROLLED_BACK
 INFO] Command terminated with error code 4
+ collect_result
+ [[ 1 = 0 ]]
+ echo '!!! FAIL (something returned non-zero) for [[ $RETCODE = 0 ]]'
!!! FAIL (something returned non-zero) for [[ $RETCODE = 0 ]]

W1106 02:00:01.641669 6 health_checker.py:143] Health check failure: Failed to signal http://localhost:31497/health: <urlopen error [Errno 111] Connection refused>
W1106 02:00:01.641769 6 health_checker.py:184] Ignoring failure of attempt: 2
D1106 02:00:02.643599 6 health_checker.py:132] Health checks enabled. Performing health check.
D1106 02:00:02.643775 6 http_signaler.py:65] HttpSignaler: GET http://localhost:31497/health
W1106 02:00:02.644283 6 health_checker.py:143] Health check failure: Failed to signal http://localhost:31497/health: <urlopen error [Errno 111] Connection refused>
W1106 02:00:02.644373 6 health_checker.py:184] Ignoring failure of attempt: 3
D1106 02:00:03.645257 6 health_checker.py:132] Health checks enabled. Performing health check.
D1106 02:00:03.645436 6 http_signaler.py:65] HttpSignaler: GET http://localhost:31497/health
W1106 02:00:03.645957 6 health_checker.py:143] Health check failure: Failed to signal http://localhost:31497/health: <urlopen error [Errno 111] Connection refused>
W1106 02:00:03.646045 6 health_checker.py:184] Ignoring failure of attempt: 4
D1106 02:00:04.654422 6 health_checker.py:132] Health checks enabled. Performing health check.
D1106 02:00:04.654597 6 http_signaler.py:65] HttpSignaler: GET http://localhost:31497/health
W1106 02:00:04.655102 6 health_checker.py:143] Health check failure: Failed to signal http://localhost:31497/health: <urlopen error [Errno 111] Connection refused>
W1106 02:00:04.655189 6 health_checker.py:184] Ignoring failure of attempt: 5
D1106 02:00:05.656613 6 health_checker.py:132] Health checks enabled. Performing health check.
D1106 02:00:05.657108 6 http_signaler.py:65] HttpSignaler: GET http://localhost:31497/health
W1106 02:00:05.658567 6 health_checker.py:143] Health check failure: Failed to signal http://localhost:31497/health: <urlopen error [Errno 111] Connection refused>
W1106 02:00:05.658828 6 health_checker.py:159] Reached consecutive failure limit.
I1106 02:00:05.659163 6 status_checker.py:133] HealthChecker reported StatusResult('Failed health check! Failed to signal http://localhost:31497/health: <urlopen error [Errno 111] Connection refused>', status='TASK_FAILED')
I1106 02:00:05.659368 6 status_checker.py:133] ChainedStatusChecker reported StatusResult('Failed health check! Failed to signal http://localhost:31497/health: <urlopen error [Errno 111] Connection refused>', status='TASK_FAILED')
I1106 02:00:05.659528 6 status_manager.py:61] Status manager got unhealthy status: StatusResult('Failed health check! Failed to signal http://localhost:31497/health: <urlopen error [Errno 111] Connection refused>', status='TASK_FAILED')
D1106 02:00:05.661072 6 health_checker.py:220] Health checker thread stopped.```
@StephanErb this is the point where the end to end tests are consistently failing for me. Is this the same place that it's failing for you?

Yes, I believe I that is the same error I saw.

Good news:
In the process of porting our end to end tests I've hit a way to replicate the issue consistently.
Bad news:
I'm currently pretty lost on how to fix it. For some reason while using an update to flex up on an aurora job using the an update, one out of three of the instances flexed up fails the health check.
This is particularly strange because I'm able to navigate to the observer with the web ui, hit the health check port, and it replies with the message OK.
Oddly enough, I just tried it a third time and it succeeded :sweat: so it looks like we have a flaky test on our hands. I'll play around with the health check timeouts and see if I can't get it to pass consistently.

Fixed with https://github.com/apache/aurora/commit/3e16541d292d8aab557793aeaf58507b749d9ae9 and https://github.com/apache/aurora/commit/c45a7d8e87deba0f14dfd0c8a01740200efc1f66


Remove height flag from queries that don't support it

Closes: #575
Description

For contributor use:

[ ] Updated the Unreleased section of CHANGELOG.md with the issue.
[ ] If applicable: Unit tests written, added test to CI.
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Updated relevant documentation (docs/) and code comments.
[ ] Re-reviewed Files changed in the Github PR explorer.

Codecov Report

Merging #580 (ad8a801) into master (b1b37f5) will increase coverage by 31.6%.
The diff coverage is 67.8%.

@@            Coverage Diff            @@
##           master    #580      +/-   ##
=========================================
+ Coverage    13.6%   45.3%   +31.6%
=========================================
  Files          69     144      +75
  Lines        3752    9375    +5623
  Branches     1374       0    -1374
=========================================
+ Hits          513    4249    +3736
- Misses       2618    5126    +2508
+ Partials      621       0     -621

Impacted Files
Coverage Δ

...application/ics20_fungible_token_transfer/error.rs
0.0% <0.0%> (ø)

...pplication/ics20_fungible_token_transfer/events.rs
0.0% <ø> (ø)

...ion/ics20_fungible_token_transfer/msgs/transfer.rs
0.0% <0.0%> (ø)

modules/src/events.rs
0.0% <0.0%> (ø)

modules/src/ics02_client/error.rs
100.0% <ø> (ø)

modules/src/ics03_connection/error.rs
100.0% <ø> (+66.6%)
:arrow_up:

modules/src/ics03_connection/msgs/conn_open_try.rs
86.7% <ø> (ø)

modules/src/ics03_connection/raw.rs
0.0% <ø> (ø)

modules/src/ics03_connection/version.rs
97.6% <ø> (ø)

modules/src/ics04_channel/channel.rs
77.2% <ø> (+62.1%)
:arrow_up:

... and 272 more

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 4e98635...2e24945. Read the comment docs.

Codecov Report

Merging #580 (ad8a801) into master (b1b37f5) will increase coverage by 31.6%.
The diff coverage is 67.8%.

@@            Coverage Diff            @@
##           master    #580      +/-   ##
=========================================
+ Coverage    13.6%   45.3%   +31.6%
=========================================
  Files          69     144      +75
  Lines        3752    9375    +5623
  Branches     1374       0    -1374
=========================================
+ Hits          513    4249    +3736
- Misses       2618    5126    +2508
+ Partials      621       0     -621

Impacted Files
Coverage Δ

...application/ics20_fungible_token_transfer/error.rs
0.0% <0.0%> (ø)

...pplication/ics20_fungible_token_transfer/events.rs
0.0% <ø> (ø)

...ion/ics20_fungible_token_transfer/msgs/transfer.rs
0.0% <0.0%> (ø)

modules/src/events.rs
0.0% <0.0%> (ø)

modules/src/ics02_client/error.rs
100.0% <ø> (ø)

modules/src/ics03_connection/error.rs
100.0% <ø> (+66.6%)
:arrow_up:

modules/src/ics03_connection/msgs/conn_open_try.rs
86.7% <ø> (ø)

modules/src/ics03_connection/raw.rs
0.0% <ø> (ø)

modules/src/ics03_connection/version.rs
97.6% <ø> (ø)

modules/src/ics04_channel/channel.rs
77.2% <ø> (+62.1%)
:arrow_up:

... and 272 more

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 4e98635...2e24945. Read the comment docs.


Unable to get folders

Hi!
Great library, seems to do what I need very well :)
Just wanted to let you know, that i get error while trying to get all folders from Office 365.
Here's my test code:
$oClient = \Webklex\IMAP\Facades\Client::account('default');
$oClient->connect();
$aMailboxes = $oClient->getFolders();

Result:
"Invalid argument supplied for foreach()" in Client.php (line 232).
I tracked down the "bug" to this recursive function on line 236:
$children = $this->getFolders(true, $pattern);
2 of my folders go that part of the scripts what are:

Conversation History/%
Yhteystiedot/%

If I skip both of them in items loop, everything works fine.
Unfortunately I was not able to figure out how to fix it.

I just realised that setting $hierarchical to false fixes my issue.
Working code:
$oClient = \Webklex\IMAP\Facades\Client::account('default');
$oClient->connect();
$aMailboxes = $oClient->getFolders(false);

Hi @Jamipietila ,
thanks for your report. I'm still not shure if this is a bug or not. Also I'm having a hard time to replicate the behavior.
So if anyone out there could help me / us on this issue or question please comment below :)
Best regards

Might not be related at all, but I'm using Homestead and PHP 7.1.2.

I use the QQ mailbox encountered the same problem, are set to false solution

vendor\webklex\laravel-imap\src\IMAP\Client.php
        $this->checkConnection();
        $folders = [];

        if ($hierarchical) {
            $pattern = $parent_folder.'%';
        } else {
            $pattern = $parent_folder.'*';
        }

        $items = imap_getmailboxes($this->connection, $this->getAddress(), $pattern);
        foreach ($items as $item) {
            $folder = new Folder($this, $item);

            if ($hierarchical && $folder->hasChildren()) {
                $pattern = $folder->fullName.$folder->delimiter.'%';

                $children = $this->getFolders(true, $pattern);
                $folder->setChildren($children);
            }
            $folders[] = $folder;
        }

        return $folders;
    }

    /**

$aMailboxes = $oClient->getFolders();

$items = imap_getmailboxes($this->connection, $this->getAddress(), $pattern);
dd($items);

array:6 [▼
  0 => {#191 ▼
    +"name": "{imap.qq.com:993/imap/ssl}&UXZO1mWHTvZZOQ-"
    +"attributes": 34
    +"delimiter": "/"
  }
]

$aMailboxes = $oClient->getFolders(false);

$items = imap_getmailboxes($this->connection, $this->getAddress(), $pattern);
dd($items);

array:23 [▼
  0 => {#191 ▼
    +"name": "{imap.qq.com:993/imap/ssl}&UXZO1mWHTvZZOQ-"
    +"attributes": 34
    +"delimiter": "/"
  }
  1 => {#192 ▼
    +"name": "{imap.qq.com:993/imap/ssl}INBOX"
    +"attributes": 64
    +"delimiter": "/"
  }
  2 => {#198 ▼
    +"name": "{imap.qq.com:993/imap/ssl}Sent Messages"
    +"attributes": 64
    +"delimiter": "/"
  }
  3 => {#199 ▼
    +"name": "{imap.qq.com:993/imap/ssl}Drafts"
    +"attributes": 64
    +"delimiter": "/"
  }
  4 => {#200 ▼
    +"name": "{imap.qq.com:993/imap/ssl}Deleted Messages"
    +"attributes": 64
    +"delimiter": "/"
  }
]

I want to show all messages in the output folder. Any example of how?
My code in the controller
 Laravel:
 $ oClient-> connect ();
$ aFolder = $ oClient-> getFolder ('INBOX.sent');
foreach ($ aFolder as $ oFolder)
            {
                $ aMessage = $ oFolder-> messages () -> all () -> get ();
}
return view ('vendor.adminlte.Mailbox.Buzon', compact ('aMessage'));

Hi @jacm1993 ,
please take a look at the issue you've just created: #228


update check gas

Codecov Report

Merging #19 into master will decrease coverage by 0.11%.
The diff coverage is 36.36%.

@@            Coverage Diff             @@
##           master      #19      +/-   ##
==========================================
- Coverage   46.23%   46.11%   -0.12%
==========================================
  Files          39       39
  Lines        3807     3812       +5
==========================================
- Hits         1760     1758       -2
- Misses       1761     1768       +7
  Partials      286      286

Impacted Files
Coverage Δ

exec/vm.go
51.54% <36.36%> (-1.61%)
:arrow_down:

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 ef8d35e...8d8a56e. Read the comment docs.

replaced by #20


[Issue 3788] Extension - Fix min stake for TAO(Bittensor)

🚀 Deployed on https://pr-3789--sw-web-runner.netlify.app


Set the proxy RawPath to original requests RawPath

I have set the RawPath of what I think is the forward request to that of the original request with the expectation escaped values in the request path are forward unmodified (still escaped).
Checklist

[x] Commits are signed with Developer Certificate of Origin (DCO)
[x] Changelog has been updated and is aligned with our changelog requirements
[ ] Any necessary documentation is added, such as:

README.md
The docs/ directory
The docs repo

Fixes #
#864 (maybe)

I've tried this out (though my test was branched directly from v0.6.0) in our cluster using octopus deploy. It correctly this path api/Spaces-1/projects/Projects-45/refs%2fheads%2fdevelop/deploymentprocesses where the original v0.6.0 version of the interceptor would always return 404.


Text in math mode has higher weight than the rest of the document with New Computer Modern

#set text(font: "New Computer Modern")
The quick brown fox jumps over the lazy dog. \
$"The quick brown fox jumps over the lazy dog."$

typst 0.12.0 (6b636167)
Compiled with --ignore-system-fonts

The reason is that the math font has a higher weight by default to match the default text font better, combined with https://github.com/typst/typst/issues/366


Search: Remove beta parameters

Map search capability is now enabled by default (whenever the map is visible). This issue proposes:

Removing the show-search query string parameter, as it’s no longer needed given it’s already enabled by default.
Optionally: Removing the data-enable-search parameter on the #map div, which was only present to facilitate the ability progressively release independently between index.html and give.html.

@nburt @patricknelson - is this still an issue?

I already removed as part of v2 redesign, closing

Great, thanks 😄 Only created to ensure it's not forgotten. However, while show-search has been removed, the full spirit of the ticket isn't entirely carried out. Although not explicitly stated, removing that additional parameter should mean that the showMapSearch variable should be brought in line for consistency:
    const showList = searchParams.get('hide-list') !== 'true';
    const showFilters = showList && searchParams.get('hide-filters') !== 'true';
    const showMap = searchParams.get('hide-map') !== 'true';

    // ... some code...

    if (searchParams.get('hide-search') !== null) {
      showMapSearch = searchParams.get('hide-search') !== 'true';
    }

Should instead become
    const showList = searchParams.get('hide-list') !== 'true';
    const showFilters = showList && searchParams.get('hide-filters') !== 'true';
    const showMap = searchParams.get('hide-map') !== 'true';
    showMapSearch = searchParams.get('hide-search') !== 'true';

And the default initialization at the very top of the file should be reconsidered since it is now only defined there for global access (something I recall being told was discouraged a few weeks back, not sure what the convention has become now).


fix: 不添加总计时错误地添加了小计节点

👀 PR includes
🐛 Bugfix

[x] Solve the issue and close #1100

📝 Description
未配置总计节点时，layout 错误地添加了小计节点
🖼 Screenshot

Before
After

🔗 Related issue link

🔍 Self Check before Merge

[x] Add or update relevant Docs.
[x] Add or update relevant Demos.
[x] Add or update relevant TypeScript definitions.

:tada: This PR is included in version @antv/s2-v1.10.0-alpha.2 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version @antv/s2-v1.11.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


ng-file-rejected-model can only trigger once with watch

I have code that attempts to use the ng-file-rejected-model attribute along with ng-file-drop.
There are two minor issues I have with this item:

It is mis-documented as ng-rejected-file-model on your API page, but not a huge deal since I can read the code
It doesn't work with the ng-file-select, so I still need special code to handle other rejections (understandably given implementation limitations on those controls, if my perception of that is correct with HTML5).

My main concern, however, is that I can't seem to put a watch on the variable. I only get the event once if I try, ie:

Click here or drag a file over to upload

...

                    $scope.$watch('myRejFiles', function() {
                        if (angular.isArray($scope.myRejFiles)) {
                            $scope.myRejFiles.forEach(function(file) {
                                showRejected(file);
                            });
                        }
                    });

This code will only allow my showRejected function to be called on the first drag and drop of an invalid file.
I thought I could instead rely only on the myFiles watch, at which time I could see if myRejFiles is also set, but in that case, myRejFiles will only contain the first item(s) from the initial failed drag and drop, and will send that even if there are no rejects this time around.
Maybe I am using this wrong, or maybe there is an issue of some sort? Sorry, I have not yet been able to spend time to debug it much further.

Version 3.0.0 fixes this problem. Notice the attribute is renamed to ng-model-rejected and it is added to ng-file-selectas well.