OpenSSL app isn't compatible with dynamic engines

Environment: windows 10 x64, OpenSSL 1.1.0i/1.1.1b
There is no engine cleanup at the end of openssl app execution so dynamic engines will be freed in exit() function. as a result, dynamic engine will be freed by OS first and then libcrypto calls ENGINE_finish/ENGINE_destroy implementations from freed engine. As a result, there is a segfault in case of malloc from libc (not OPENSSL_malloc) in ENGINE_create and free (not OPENSSL_free) in ENGINE_destroy.
Reproducing example:
./openssl.exe speed -evp 123

This example loads dynamic engine via config file and then tries to launch speed test for invalid cipher (there is the same behaviour for valid cipher). At the end of the execution I have the following stacktraces (OpenSSL 1.1.0i):
>   my_engine.dll!DllMain(HINSTANCE__ * instance, unsigned long reason, void * reserved) Line 21 C++
    my_engine.dll!dllmain_dispatch(HINSTANCE__ * const instance, const unsigned long reason, void * const reserved) Line 200 C++
    my_engine.dll!_DllMainCRTStartup(HINSTANCE__ * const instance, const unsigned long reason, void * const reserved) Line 254   C++
    ntdll.dll!00007ffbfa654143()    Unknown
    ntdll.dll!00007ffbfa660af5()    Unknown
    ntdll.dll!00007ffbfa6609b8()    Unknown
    kernel32.dll!00007ffbf811b19a() Unknown
    openssl.exe!exit_or_terminate_process(const unsigned int return_code) Line 144  C++
    openssl.exe!common_exit(const int return_code, const _crt_exit_cleanup_mode cleanup_mode, const _crt_exit_return_mode return_mode) Line 282 C++
    openssl.exe!exit(int return_code) Line 294  C++
    openssl.exe!main(int argc, char * * argv) Line 267  C
    openssl.exe!invoke_main() Line 75   C++
    openssl.exe!__scrt_common_main_seh() Line 264   C++
    openssl.exe!__scrt_common_main() Line 309   C++
    openssl.exe!mainCRTStartup() Line 17    C++
    kernel32.dll!00007ffbf8113034() Unknown
    ntdll.dll!00007ffbfa691551()    Unknown

and AFTER then:
    my_engine.dll!engine_finish(engine_st * engine) Line 596 C
>   libcrypto-1_1-x64.dll!engine_unlocked_finish(engine_st * e, int unlock_for_handlers) Line 60    C
    libcrypto-1_1-x64.dll!int_cleanup_cb_doall(st_engine_pile * p) Line 177 C
    libcrypto-1_1-x64.dll!doall_util_fn(lhash_st * lh, int use_arg, void(*)(void *) func, void(*)(void *, void *) func_arg, void * arg) Line 193    C
    libcrypto-1_1-x64.dll!OPENSSL_LH_doall(lhash_st * lh, void(*)(void *) func) Line 201    C
    libcrypto-1_1-x64.dll!lh_ENGINE_PILE_doall(lhash_st_ENGINE_PILE * lh, void(*)(st_engine_pile *) doall) Line 177 C
    libcrypto-1_1-x64.dll!engine_table_cleanup(st_engine_table * * table) Line 185  C
    libcrypto-1_1-x64.dll!engine_unregister_all_ciphers() Line 22   C
    libcrypto-1_1-x64.dll!engine_cleanup_cb_free(st_engine_cleanup_item * item) Line 157    C
    libcrypto-1_1-x64.dll!OPENSSL_sk_pop_free(stack_st * st, void(*)(void *) func) Line 265 C
    libcrypto-1_1-x64.dll!sk_ENGINE_CLEANUP_ITEM_pop_free(stack_st_ENGINE_CLEANUP_ITEM * sk, void(*)(st_engine_cleanup_item *) freefunc) Line 62    C
    libcrypto-1_1-x64.dll!engine_cleanup_int() Line 165 C
    libcrypto-1_1-x64.dll!OPENSSL_cleanup() Line 538    C
    libcrypto-1_1-x64.dll!_execute_onexit_table::__l2::<lambda>() Line 206  C++
    libcrypto-1_1-x64.dll!__crt_seh_guarded_call<int>::operator()<void <lambda>(void),int <lambda>(void) & __ptr64,void <lambda>(void) >(__acrt_lock_and_call::__l2::void <lambda>(void) && setup, _execute_onexit_table::__l2::int <lambda>(void) & action, __acrt_lock_and_call::__l2::void <lambda>(void) && cleanup) Line 204   C++
    libcrypto-1_1-x64.dll!__acrt_lock_and_call<int <lambda>(void) >(const __acrt_lock_id lock_id, _execute_onexit_table::__l2::int <lambda>(void) && action) Line 961   C++
    libcrypto-1_1-x64.dll!_execute_onexit_table(_onexit_table_t * table) Line 231   C++
    libcrypto-1_1-x64.dll!common_exit::__l2::<lambda>() Line 226    C++
    libcrypto-1_1-x64.dll!__crt_seh_guarded_call<void>::operator()<void <lambda>(void),void <lambda>(void) & __ptr64,void <lambda>(void) >(__acrt_lock_and_call::__l2::void <lambda>(void) && setup, common_exit::__l2::void <lambda>(void) & action, __acrt_lock_and_call::__l2::void <lambda>(void) && cleanup) Line 224  C++
    libcrypto-1_1-x64.dll!__acrt_lock_and_call<void <lambda>(void) >(const __acrt_lock_id lock_id, common_exit::__l2::void <lambda>(void) && action) Line 961   C++
    libcrypto-1_1-x64.dll!common_exit(const int return_code, const _crt_exit_cleanup_mode cleanup_mode, const _crt_exit_return_mode return_mode) Line 259   C++
    libcrypto-1_1-x64.dll!_cexit() Line 314 C++
    libcrypto-1_1-x64.dll!__scrt_dllmain_uninitialize_c() Line 399  C++
    libcrypto-1_1-x64.dll!dllmain_crt_process_detach(const bool is_terminating) Line 109    C++
    libcrypto-1_1-x64.dll!dllmain_crt_dispatch(HINSTANCE__ * const instance, const unsigned long reason, void * const reserved) Line 134    C++
    libcrypto-1_1-x64.dll!dllmain_dispatch(HINSTANCE__ * const instance, const unsigned long reason, void * const reserved) Line 209    C++
    libcrypto-1_1-x64.dll!_DllMainCRTStartup(HINSTANCE__ * const instance, const unsigned long reason, void * const reserved) Line 251  C++
    ntdll.dll!00007ffbfa654143()    Unknown
    ntdll.dll!00007ffbfa660af5()    Unknown
    ntdll.dll!00007ffbfa6609b8()    Unknown
    kernel32.dll!00007ffbf811b19a() Unknown
    openssl.exe!exit_or_terminate_process(const unsigned int return_code) Line 144  C++
    openssl.exe!common_exit(const int return_code, const _crt_exit_cleanup_mode cleanup_mode, const _crt_exit_return_mode return_mode) Line 282 C++
    openssl.exe!exit(int return_code) Line 294  C++
    openssl.exe!main(int argc, char * * argv) Line 267  C
    openssl.exe!invoke_main() Line 75   C++
    openssl.exe!__scrt_common_main_seh() Line 264   C++
    openssl.exe!__scrt_common_main() Line 309   C++
    openssl.exe!mainCRTStartup() Line 17    C++
    kernel32.dll!00007ffbf8113034() Unknown
    ntdll.dll!00007ffbfa691551()    Unknown

so my_engine was freed by the OS before finish execution.

@levitte, any activity on this bug? Is it possible to use malloc() and free() in ENGINE_create() / ENGINE_destroy() routines?

I'm not sure I follow all the ins and outs. Are you basically saying that the OS (or the CRT) does something like dlclose() on all loaded modules before atexit() handlers are processed?

yes, Windows calls atexit() for my engine, frees the memory which was allocated with malloc() and doesn't free the memory which was allocated with OPENSSL_malloc(). After that, atexit() for libcrypto are called and it tries to invoke functions from the library which was freed by OS. The memory which was allocated with OPENSSL_malloc() frees successfully but the memory which was allocated with malloc() was already freed so double free and segfault take place.

Does that mean that your engine registers an atexit handler of its own?  And these malloc()'ed chunks of memory, I suppose their pointers end up in some variable in your engine?  So essentially, both your atexit() handler and the engine destruction function (the one set with ENGINE_set_destroy_function()) call that same cleanup code, could that be it?

No, I said wrong i suppose. I have a static library which does some allocations with malloc() in function setted by ENGINE_set_init_function() and does some deallocations with free() in function setted by ENGINE_set_finish_function(). All other things in the engine uses OPENSSL_malloc() and OPENSSL_free(). As a result, I can break on DllMain() with deinitialization of my library between OpenSSL tool's main() and atexit() so my library is destructed by OS. After that, OpenSSL's atexit() take place and try to invoke the fuction setted with ENGINE_set_finish_function() which is executed successfully while it calls OPENSSL_free() for different objects but terminate on deinitialization of the static library which tries to free already freed memory. All is ok with the proposed PR.

So let's see if I understand this correctly.  Your engine uses stuff from that static library, right?  But then, you have a DllMain() (where?) that calls the cleanup of that static library, before your engine has had a chance to clean up after itself, is that correct?

Almost correct. I didn't implement DllMain() by myself, default stub is used. I think that I forgot to say the last thing that can be important. I build my engine and openssl with static runtime so I suppose that variables created by OPENSSL_malloc() and malloc() belongs to the different instances of the runtime, that's why the first are available after execution of the DllMain() but the second aren't.

OPENSSL_malloc and friends are normally wrappers around standard malloc and friends, so there shouldn't be a difference. However, if openssl.exe and your engine are linked with different CRTs, interesting things may happen.
But no matter, I still fail to see why DllMain should initiate a cleanup of the RTL the engine is linked to before that engine is unloaded...

But no matter, I still fail to see why DllMain should initiate a cleanup of the RTL the engine is linked to before that engine is unloaded...

Openssl.exe doesn't call FreeLibrary before exit(). Therefore the engine is unloaded by the RTL during call to exit() before Openssl's atexit handler. I suppose this unloading occurs in another atexit handler. All atexit handlers may be called in any order. In our case openssl.exe essentially calls already unloaded engine.
This bug doesn't appear in case of a single RTL shared between openssl.exe and an engine. I suppose code pages keep valid after unloading. But in case of two static RTLs, the engine's heap becomes destroyed. It leads to segmentation fault.

I've found a way to easily reproduce this bug on GNU/Linux using global destructors in C++.
#include <openssl/engine.h>

struct Global {
        Global() {
                puts("constructor");
                data = new int(42);
        }

        ~Global() {
                puts("destructor");
                delete data;
        }

        int* data;
} global;

static int engine_destroy(ENGINE *engine) {
        printf("engine_destroy: %d\n", *global.data);
        return 1;
}

static int engine_bind(ENGINE *engine, const char *id) {
        printf("engine_bind: %d\n", *global.data);

        ENGINE_set_id(engine, "test");
        ENGINE_set_name(engine, "Test Engine");
        ENGINE_set_destroy_function(engine, engine_destroy);

        return 1;
}

extern "C" {
IMPLEMENT_DYNAMIC_CHECK_FN();
IMPLEMENT_DYNAMIC_BIND_FN(engine_bind);
}

$ g++ test.cpp -shared -o libtest.so -fPIC
$ OPENSSL_ENGINES=. openssl engine libtest
constructor
engine_bind: 42
(libtest) Test Engine
Loaded: (test) Test Engine
destructor
engine_destroy: -1958341792

That's an... unfortunate sequence of events.  Intuitively, this seems counter productive, as atexit handlers are supposed to be the last line of cleanup before the OS takes over and cleans away anything that leaked.

Hmmm... For some (historical?) reasons we have all the deallocations in the _finish function, not in the _destroy one. It means that we came across either memory leaks or segfaults placing it in the destroy function.

The intention is that anything done in the _init function should be cleaned up in the _finish function, and anything done in the binding function should be cleaned up in the _destroy function.

For Glibc, there is no separate step with cleaning resources by OS. This cleaning is handled by implicit atexit handlers in the same loop that calls explicit atexit handler set by OpenSSL. See __run_exit_handlers for more details.
OpenSSL strictly depends on OS implementation details when relies on specific order of global deinitialization. Especially given the fact that atexit is called from dynamic library (libcrypto). Have a look at discussion about the same problem in another product: https://bugs.freedesktop.org/show_bug.cgi?id=82246
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/atexit?view=vs-2019

The code in the atexit function should not contain any dependency on any DLL which could have already been unloaded when the atexit function is called.

This is what causes a problem in our case.

It seems...  weird that any exit handler added by crt0 (or corresponding) would happen before the OpenSSL atexit handler, as the latter is registered later (and we know that exit handlers are executed in reverse order of addition)...  so the only way I can understand this is if libc (or similar) added an exit handler later on...

and we know that exit handlers are executed in reverse order of addition

That's true for a statically linked executable. The behavior of atexit function for shared libraries depends on a platform. For modern GNU/Linux systems, exit handlers set by a shared library are guaranteed to be called when the library is unloaded. The same is guaranteed for Windows. Therefore the order, in which exit handlers set by different modules are called, depends on the order, in which these modules are unloaded.

weird that any exit handler added by crt0 (or corresponding) would happen before the OpenSSL atexit handler, as the latter is registered later

For GNU/Linux case, the following sequence takes place:

libcrypto calls atexit()
libcrypto calls dlopen() to load the engine
engine's C++ runtime library calls atexit() to register global destructors
OpenSSL app implicitly calls exit(), it runs exit handlers loop
engine's global destructors are called
libcrypto's exit handler is called

It conforms to LIFO nature of atexit.

engine's C++ runtime library calls atexit() to register global destructors

Is this the part that screws things up?

For GNU/Linux case, it is. But it isn't our actual problem. We don't write our engine in C++. It's just an example on how implicit deinitialization can produce errors caused by exit handlers.
Our actual problem is deinitialization on Windows. I couldn't reproduce it with minimal example yet. From what I understand, on Windows we have the following sequence:

libcrypto calls atexit()
libcrypto calls LoadLibrary() to load the engine
the engine allocates something on its own heap since we compile it with /MT
OpenSSL app implicitly calls exit()
Windows unloads the engine since it wasn't unloaded before exit()
engine's heap becomes destroyed
libcrypto calls engine_destroy from its exit handler
OpenSSL app crashes when the engine tries to use destroyed heap

So I see two possible faults here:

the engine allocates something on its own heap since we compile it with /MT

I assume that's done in the codepath down from bind_engine...  is there anyway that could move to the init function (the one registered with ENGINE_set_init_function()), and thereby have deallocation happen with the finish function (the one registered with ENGINE_set_finish_function()?

Windows unloads the engine since it wasn't unloaded before exit()

This is the real disturbing part.  That means that you simply cannot unload dynamic modules with atexit handlers, or do final cleanup in an atexit handler before it gets unloaded.  Is this something we can affect somehow (a DllMain() hack?), or are we screwed?

I assume that's done in the codepath down from bind_engine... is there anyway that could move to the init function (the one registered with ENGINE_set_init_function()), and thereby have deallocation happen with the finish function (the one registered with ENGINE_set_finish_function()?

I haven't checked it, but isn't ENGINE_finish called from exit handler as well?

This is the real disturbing part. That means that you simply cannot unload dynamic modules with atexit handlers, or do final cleanup in an atexit handler before it gets unloaded. Is this something we can affect somehow (a DllMain() hack?), or are we screwed?

We could check if the engine is still loaded by calling GetModuleHandle. But I suppose that libcrypto's exit handler is called as a result of unloading libcrypto. May be it's not safe to call GetModuleHandle at that time. It shouldn't be called from DllMain.
The best we can do is to call OPENSSL_cleanup explicitly before exit(). In this case we have guaranteed order of deinitialization. We don't propose to remove atexit() from libcrypto. But OpenSSL app can be easily fixed.
Here's what OpenBSD man tells about atexit():

atexit() is very difficult to use correctly without creating exit(3)-time races. Unless absolutely necessary, please avoid using it.

I haven't checked it, but isn't ENGINE_finish called from exit handler as well?

It shouldn't.  Basically, any time ENGINE_init() has been called, there's a corresponding ENGINE_finish(), and that happens in the due course of actually using an engine implementation.

Yes, but ENGINE_init is always called for engines described in config file unless init=0 option is specified. Corresponding ENGINE_finish is called from OPENSSL_cleanup, which is called from exit handler.
#0  ENGINE_finish (e=0x610000000240) at crypto/engine/eng_init.c:97
#1  0x00007ffff72dc3b9 in int_engine_module_finish (md=0x604000000210) at crypto/engine/eng_cnf.c:183
#2  0x00007ffff72608a9 in module_finish (imod=0x604000000210) at crypto/conf/conf_mod.c:408
#3  0x00007ffff726083e in CONF_modules_finish () at crypto/conf/conf_mod.c:395
#4  0x00007ffff7260957 in conf_modules_free_int () at crypto/conf/conf_mod.c:428
#5  0x00007ffff730a71e in OPENSSL_cleanup () at crypto/init.c:599
#6  0x00007ffff6faf6a7 in __run_exit_handlers () from /usr/lib/libc.so.6
#7  0x00007ffff6faf85e in exit () from /usr/lib/libc.so.6
#8  0x000055555558228c in ?? ()
#9  0x00007ffff6f98153 in __libc_start_main () from /usr/lib/libc.so.6
#10 0x000055555558246e in ?? ()

Ah, that detail makes this much more understandable!
However, apart from having the application do an explicit cleanup, this doesn't quite tell me if there's another to deal with it. For example, I'm currently unclear on where on the windows sequence DllMain is called...

@paulidale, @mattcaswell, @slontis, @t-j-h, this might be the situation that has us set up DEPs more as a norm...

I'm missing something, how would a DEP help here?

I've managed to make a minimal example for Windows.
openssl.cnf:
openssl_conf = openssl_def

[ openssl_def ]
engines = engine_section

[ engine_section ]
test = test_section

[ test_section ]
dynamic_path = test

test.c:
#include <openssl/engine.h>

static int engine_init(ENGINE *engine) {
        puts("init");
        return 1;
}

static int engine_finish(ENGINE *engine) {
        puts("finish");
        return 1;
}

static int engine_destroy(ENGINE *engine) {
        puts("destroy");
        return 1;
}

static int engine_bind(ENGINE *engine, const char *id) {
        puts("create");

        ENGINE_set_id(engine, "testengine");
        ENGINE_set_name(engine, "Test Engine");
        ENGINE_set_init_function(engine, engine_init);
        ENGINE_set_finish_function(engine, engine_finish);
        ENGINE_set_destroy_function(engine, engine_destroy);

        return 1;
}

__declspec(dllexport)
IMPLEMENT_DYNAMIC_CHECK_FN();

__declspec(dllexport)
IMPLEMENT_DYNAMIC_BIND_FN(engine_bind);

$ set OPENSSL_CONF=openssl.cnf
$ cl.exe test.c -Iinclude libcrypto.lib /LD /DEBUG /Zi /MD
$ openssl engine
create
init
(dynamic) Dynamic engine loading support
(testengine) Test Engine
finish
destroy

$ cl.exe test.c -Iinclude libcrypto.lib /LD /DEBUG /Zi /MT
$ openssl engine
create
init
(dynamic) Dynamic engine loading support
(testengine) Test Engine

In the second case the engine crashes on puts("finish") line.

OpenSSL fail to unload properly engines loaded from config file -
https://github.com/openssl/openssl/issues/9325
I think that first OpenSSL code should zero engine references and then
we could discuss crashes (if still reproducible).
Roumen

This issue look unrelated. In cases above I don't see any leaks of structural or functional references. Otherwise OpenSSL would not call my engine_finish and engine_destroy functions. They are called, but not at proper moment.

Right, there is no issue fir "references". Leak is "dynamic handle".
There is one issue with "at exit". Platform is cygwin but "dl" functionality is on top on Microsoft Windows API.
I start to think that both reports are related (see #10107).
Following code crash with DLCLOSE_ATEXIT defined ( https://www.cygwin.com/ml/cygwin/2019-11/msg00022.html ):
#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>

void *handle = NULL;

#if 0
# define DLCLOSE_ATEXIT	1
#endif

#ifdef DLCLOSE_ATEXIT
static void
dlclose_atexit(void) {
	if (dlclose(handle) != 0) {
		fprintf(stderr, "dlclose fail : %s\n", dlerror());
	}
}
#endif

int
main() {
	handle = dlopen("libz.so", RTLD_LAZY | RTLD_NOW);
	if (handle == NULL) {
		fprintf(stderr, "dlopen fail : %s\n", dlerror());
		return 1;
	}

#ifndef DLCLOSE_ATEXIT
	if (dlclose(handle) != 0) {
		fprintf(stderr, "dlclose fail : %s\n", dlerror());
		return 2;
	}
#else
    if (atexit(dlclose_atexit) != 0) {
		fprintf(stderr, "atexit fail\n");
		return 3;
	}
#endif

	printf("exit with code 33\n");
	return 33;
}

Code above is based on OpenSSL unload of loadable modules "at exit" with "dl" functions. Failure is reproducible with other libraries (ssh, bz4).
If I remember well there is no issue on Windows 7. It is on Microsoft Windows 10 64-bit, build (??? no idea).

P.S. regarding engine sample: If I remember Microsoft build rules /MD and /MT cannot be mixed - if "crypto" library is build with /MD , engine must be build also with /MD.

I think I've triggered a similar bug on Linux.

Marking as inactive, to be closed at the end of 3.4 dev barring further input


Bump the patch version to 0.14.1 so we can tag and update bower.

Fix the version of browserify used as esprima-six package dep'
no longer exists.
Fix build script for altered command.
Add bower_components to ignored files.

Please ignore this - it can't be merged into master.  You would need to branch from fda7dc0, then merge into that and tag as v0.14.1


Add guidance for generating bundle

Need a guidance document that shows how to create a bundle for Win10 as well as Win32 apps.

Giving this to @acoates-ms per the meeting earlier today.


Acute Illness for nurses - fixes 1

Since we need this urgently tested, to meet deploy to production deadline, merging this and asking for a review on merged PR. Fixes will be done at follow up PR (if needed).
@nedSaf please review.


Lookout: display command information in job details view

Users would like to see the executed command and command line parameters in job details view.

Hey team! Please add your planning poker estimate with Zenhub @dejanzele @jayofdoom @kannon92 @richscott @suprjinx


Disabled link cleanup

per https://www.w3.org/TR/html-aria/#docconformance

It is NOT RECOMMENDED to use aria-disabled="true" on an a element with an href attribute.
NOTE
If a link needs to be "disabled", remove the href attribute.

This PR removes the unnecessary href="#", tabindex="-1", and aria-disabled="true" from disabled links in both docs pages and examples. aria-disabled="true" is kept for disabled link-based buttons (that have role="button") as there it's appropriate to use (you want to convey to assistive technologies that this thing you're claiming is a button is also disabled at the moment)
Further, the PR extends the "Link functionality caveat" to show the "proper" way (removing href and adding .disabled class only) to disable a link, but then explains what to do if that's not possible (and then keeps an example with all the traditional href="#" tabindex="-1" aria-disabled="true", but explains clearly that it's not ideal). Same sort of explanation is also added to the pointer event utilities page
x-ref https://github.com/twbs/bootstrap/pull/34874#issuecomment-911769998

When these callouts get so large, I think it's time to turn them into regular docs text. Especially when there are code snippets or live examples within them.

When these callouts get so large, I think it's time to turn them into regular docs text. Especially when there are code snippets or live examples within them.

done, removed the callout markup and made them regular docs text


Ox wants a modulation switch on the Mod Osc

A few times Ox has requested something like the LFO MODULATION switch shown here on a Jupiter 8. I need to research a little more what exactly this does. I think it could be integrated with the MOD ENV DELAY control somehow, maybe switch between the pushbutton and the Mod Env?
Get some more info about how this should work, and consider adding such a pushbutton as an enhancement.

I added a similar control to the micro-OX, see here for refernece: https://github.com/JordanAceto/micro_ox


Fix sus_geo_region_athena_view with all costs on last rolling month

Includes all resources costs (not only EC2) on the past month rolling (not 7 months)
Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Merged. Thanks for raising the bar, Rudy.


Add more errors handling for clone macro

Part of #554

The god of CI is unhappy with you
--- b/src/auto/versions.txt
+++ a/src/auto/versions.txt
@@ -1,2 +1,2 @@
-Generated by gir (https://github.com/gtk-rs/gir @ d1e88f9)
+Generated by gir (https://github.com/gtk-rs/gir @ 894f9e5)
 from gir-files (https://github.com/gtk-rs/gir-files @ 22748fa)
Makefile:16: recipe for target 'regen_check' failed

Looks good to me otherwise, thanks!

@GuillaumeGomez Might want to do a bugfix release with this in a bit, let's see if other things come up


[Bug]: Floodlight 2K with 2500 Lumen - Two Switches which don’t do anything

What happened?
Floodlight 2K with 2500 Lumen lights:
Two switches are added to HomeKit but don’t do anything. I hoped that one was for turning on the lights and the other for deactivating the camera. But no.
The switch for the light is essential for me, because I turn on the light with the HomePod so I don’t have to get my iPhone, open Eufy-App and the turn on light manually.
Plugin Version
v1.0.x (Supported)
HomeBridge Version
v1.3.x (Supported)
NodeJS Version
v14 (Supported)
Operating System
Docker
Relevant log output
No response

#221 was closed as a duplicate but refers to the older Floodlight cam.  Can any resolution to this issue please also be retrofitted to the older model?

Same implementation as I can see

Duplicate #221


CDN certificate expired

Hi,
I don't know if it's the best place to report, but the https certificate for https://cdn.bio.sh/ is expired, so my browser can't download the js files required by my app.
Would it be possible to renew it?

Yes, I got a few messages from Amazon.
The short story is that I haven't been using this lib nor maintaining it for a long time, sorry.
It's probably best to use one of the newer webpack CDN's.

Ok, I see, so what would be the url? (I mean is it already on this other CDN, or not?)


Add parameter to existing constructor is also available for methods.

VS 15.8 extends the option Add a parameter to an existing constructor to methods. The corresponding PR can be found in the Roslyn repo dotnet/roslyn#22314.
The documentation should mention this new option. The Generate overload chapter should also contain a description of the feature (or link to the description).

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

ID: 4dd39fe2-328a-b8a2-9795-ab8c6c735761
Version Independent ID: 075639a3-171c-6ade-85fc-a3845f933b82
Content: Generate a constructor in Visual Studio - Visual Studio
Content Source: docs/ide/reference/generate-constructor.md
Product: visual-studio-dev15
GitHub Login: @kuhlenh
Microsoft Alias: kaseyu

@MaStr11 Thanks for the heads up Martin!


Move privacy modes into proper settings view

closes #134
remaining:

[ ] find a nice settings icon
[ ] if not admin role: switch summary to a disabled input field?

galaxy brain icon:


[IMPROVEMENT] Avoid misleading log messages in longhorn manager while syncing danger zone settings

Is your improvement request related to a feature? Please describe (👍 if you like this request)
Longhorn Manager emits the message in a fresh installation when there are attached volumes.
E0127 15:17:07.376434       1 setting_controller.go:208] failed to sync setting for longhorn-system/guaranteed-instance-manager-cpu: current state prevents this: failed to apply guaranteed-instance-manager-cpu setting to Longhorn components when there are attached volumes. It will be eventually applied

Ideally, it would be better to perform a check for verifying whether the setting has already been successfully applied. If the setting is confirmed to be in place, redundant application attempts can be avoided, and unnecessary log messages should not be emitted.
Describe the solution you'd like

Describe alternatives you've considered

Additional context
cc @mantissahz

What's log type of message?

iled to sync setting for

Error message printed by utilruntime.HandleError(err)

@mantissahz please check this first. Go discuss with @derekbit .

@derekbit @mantissahz
is this a general issue for all settings, as they will be reconciled every hour? If yes, I would prefer fixing this after 1.6.0.
When it's close to GA, I suggest fixing critical issues or regression instead. WDYT?

@derekbit @mantissahz is this a general issue for all settings, as they will be reconciled every hour? If yes, I would prefer fixing this after 1.6.0.

Just for danger zone setting.
Fixing after v1.6.0 is fine. I don't think it is a real bug, so I just marked it as an improvement.

Just for danger zone setting.
Fixing after v1.6.0 is fine. I don't think it is a real bug, so I just marked it as an improvement.

Just for danger zone setting and they will be reconciled every hour.
I agree that it is okay to fix this issue after v1.6.0.

so for other settings except for danger zone settings, we do check if the setting is identical before applying it?
Let's see how the PR review will be. If it gets longer time, let's do it after 1.6.0.

Move the milestone to v1.7.0

@yangchiu,
Yes, it would be back to the longhorn-critical priority-class because the longhorn-default-setting ConfigMap https://github.com/longhorn/longhorn/blob/9ef72a18bf39317d94e8636c4fadc12b4edaa433/deploy/longhorn.yaml#L55-L67

Verified pass on longhorn master(longhorn-manager ad7420) with test steps
Did not see logs related to danger zone settings are not changed. And the change of danger zone setting applied correctly.(guaranteed-instance-manager-cpu)


Is it possible to manage the roles of (Non-ldap) database users through ldap2pg?

Hi ldap2pg community,
Sorry if this question has already been asked before, but I then can't find the answer.
Also, I do understand my question goes beyond the goal of ldap2pg, but it seems to me this might be possible. Hence my question.
So, here's my case:
I have two types of users in my database:

"Application users": These are typically created manually in the database, connect by providing a userid and password (method MD5) and cannot be found in the LDAP server. They are used by applications only and come in three forms:
a. Maintaining the content/data in the database (Read/write on all tables or specific schema's, doing mainly inserts and updates).
b. Installing/updating DDL as part of the install or update of the application
c. Reading data with the goal of additional processing and storing elsewhere.
"In person" users: persons that have a need to query or manage the data. These users are all found on the LDAP server and thus follow the normal ldap2pg process.

My question is about the first, the "application users". Would it be possible to manage the roles assignment by ldap2pg?
Looking at the postgres:managed_roles_query example (https://ldap2pg.readthedocs.io/en/latest/postgres/#synchronize-a-subset-of-roles), it seems to me like database users can be included in the managed roles.
But then, How do I link them to roles? Is that even possible? Or am I crossing the ldap2pg borders here?
Thanks in advance!
Regards,
Arjan

Hi @arjan-saly-tfs ,
Yes, ldap2pg can create static roles and configure them just like roles created from LDAP searches. Just skip the ldapsearch stanza:
sync_map:
- description: "Static application roles"
  roles:
  - name: myapprole
  grant:
  - privilege: ddl
    to: myapprole

You can't user curly substitution in such roles.
Is it clearer for you ?

Hi @bersace,
Thanks for explaining. Tried it and this works very well.
One follow up question though: In your example, no password is mentioned. By result the role is created without a password being set. Is it possible to set an MD5 password for this role "myapprole" using ldap2pg?
(Not sure if I would really want to have such a password in a config file like this. I'm exploring to what extent I could use this and where the boundaries are, preparing for questions I expect to be asked by our developers... ;-) .

Hi @bersace,
Thanks for confirming, fits my expectations.
When looking back to my original question however, the answer actually is "no" as I mentioned in my first bullet these "application users":

connect by providing a userid and password (method MD5) and cannot be found in the LDAP server

Thus:

Yes, ldap2pg can create users (roles with connect privilege)
No, ldap2pg cannot set passwords for them

Hence, using ldap2pg to create and maintain non-ldap user-roles can be useful when Authorization is done externally. Could be peer, could be any of the other external methods. It becomes counter-productive though for the methods "password" and "MD5" as the password can't be set and thus must be set manually afterwards.
For those it works better to create them manually or by script and configure ldap2pg to ignore them.
Thanks again for clarifying!

Hi @arjan-saly-tfs yes. static roles in ldap2pg are usualy groups.

Closing stale issue.


Feat: Adding Advertise Page

Describe the feature
I would like to add a press page for the "advertise" section in the footer, which is currently not present in the footer, but is actually a part of the footer present in the original flipkart website.
Add ScreenShots
Proposed State :

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

@arghadipmanna101 please assign this issue to me, also add relevant labels, gssoc, relevant level, and enhancement.


context.extensionUri is wrong in web ext host

Run an extension in the web extension host
The context.extensionUri uses the file-scheme, not vscode-file

Hm, how is this property being used? Isn't it for extensions to be able to access files in their extension via node.js? If so, file scheme is fine because you cannot do anything with vscode-file scheme from the extension host.

Oh, this is for web extension host...

If so, file scheme is fine because you cannot do anything with vscode-file scheme from the extension host.

Yeah, I load a wasm-file and when running on desktop the URI doesn't work, e.g this is what I do in anycode:
https://github.com/microsoft/vscode-anycode/blob/1a6b8818177635cb911e8f085ccf03219992a320/src/extension.ts#L19-L23

I have a feeling this URI is coming from here:
https://github.com/microsoft/vscode/blame/12a1d1f9cb0c4e2b7894466e1878e6f3899408d9/src/vs/workbench/services/extensions/node/extensionPoints.ts#L344-L344
Added via https://github.com/microsoft/vscode/commit/0252ac49bc39cef7b31baeb86e7ff9eece13c8b4
One thing to keep in mind is that vscode-file only works in native, not in web. Since I guess we run the web worker extension host in both contexts, we need to be careful what the value is then.

Since I guess we run the web worker extension host in both contexts, we need to be careful what the value is then.

Doesn't asBrowserUri account for that?

This will work fine whenever it is called from renderer or even web-worker extension host, but if you use this method in the node.js context (not renderer) you end up with a vscode-file URI that cannot be dealt with because this scheme is only supported from the electron renderer.
One thing we could add is another check in asBrowserUri to keep the URL as is when called from a process context that is not Electron renderer.

maybe candidate, adding labels for discussion

Turns out this isn't just extensionUri but also logUri, storageUri, and globalStorageUri. They all use the file protocol which fetch and friends cannot handle.
There are now two options

Use the vscode-file scheme for said uris. With that they are "dom uri" and compatible with browser function however such uris cannot be loaded with the vscode.workspace.fs API. This leads to
Treat the vscode-file scheme as an implementation detail and enable fetch and friends to work for that scheme. This sounds more reasonable to me and @alexdima because technically  file is the right/trus scheme.

Now, how can fetch and friends be enabled? Either by patching or by relaxing the check for the file scheme usage (@bpasero might now more for the latter). For the former approach (patching) this is list of things that need to be patched (likely incomplete)

fetch
XMLHttpRequest
new Worker
importScript in theory yes but already blocked by us
import in theory yes but ESM isn't enabled (yet)

Yes, I like the approach to keep vscode-file an implementation detail and use it only in those places where we know that we use the browser to do a request. Since file protocols are supported just fine even in web worker (at least that is my understanding - the request goes over to the renderer), we are good.
Blocking file scheme was done as a way to tighten the security of a renderer:
https://github.com/microsoft/vscode/blob/ee1655a82ebdfd38bf8792088a6602c69f7bbd94/src/vs/platform/protocol/electron-main/protocolMainService.ts#L74-L80
The file protocol is handled very specially in Chrome internals (@deepak1556 could tell more about it). It does not at all behave like a normal secure scheme. So I would rather like to keep file access disabled if possible.

Merged #131967 and most cases should be fixed now. Using fetch with a Request object using a file-uri won't work but I leave that ignored for now

Closing it as it is merged.

@jrieken what are some verification steps for this issue? I noticed that we're still using the file scheme.
I tried doing fetch('file:///Users/raymondzhao/work/endgame/vscode-mock-debug') (fetching context.extensionUri.toString()) in the devtools of the running web extension host, but I get
VM334:1 Refused to connect to 'file:///Users/raymondzhao/work/endgame/vscode-mock-debug' because it violates the following Content Security Policy directive: "connect-src 'self' https: ws:".

I agree that any local resource that is requested by the electron renderer should only rely on vscode-file this includes extension resources that are loaded in the web worker host. The reason we deprecated file scheme is because of its opaque origin (file://) and privileged access to web apis in electron. Origin of a page plays a crucial role in the web api security policies as well as process isolation. Couple of ex:

If multiple windows load pages over file then they would all be put in the same process under the process per site modal of chromium, but with vscode-file we can control the isolation per unique origin.

vscode-file also has the benefits of letting the application control where a resource can be loaded from the local filesystem and also allows leveraging native code caching because of origin isolation.

File schemes are disallowed to read other file resources by default but electron allows it using https://source.chromium.org/chromium/chromium/src/+/main:content/public/common/content_switches.cc;l=13-15

Treat the vscode-file scheme as an implementation detail and enable fetch and friends to work for that scheme. This sounds more reasonable to me and @alexdima because technically file is the right/trus scheme.

Agree with this approach, vscode-file acts an alternative to client-server modal on the web where the main process acts as the server implementing the resource loading policies, so its purely an implementation detail that should be hidden to extensions.
Btw fetch should already work with vscode-file resources https://github.com/microsoft/vscode/blob/48dce61ec3430e9c430b606c824b6bf005db11a2/src/main.js#L81, can you expand what doesn't work today ?

@rzhao271 are you testing with the latest insiders ?

If you try fetch with a file scheme resource inside web worker extension host, it will now use vscode-file internally.
Issue request and inspect the url in developer tools

// For ex: evaluate the following in web worker context
async function f() {
   await fetch('file:///Users/demohan/github/vscode-extension-samples/helloworld-minimal-sample/package.json');
}
f()

// developer tools
fetch("vscode-file://vscode-app/Users/demohan/github/vscode-extension-samples/helloworld-minimal-sample/package.json", {
  "referrer": "",
  "referrerPolicy": "strict-origin-when-cross-origin",
  "body": null,
  "method": "GET",
  "mode": "cors",
  "credentials": "omit"
});


backward compatibility to socket v2 clients

After migration to socket v3 with latest release v2.14.0 clients using socket-client v2 are not able to connect, see also https://socket.io/docs/v3/migrating-from-2-x-to-3-0/#How-to-upgrade-an-existing-production-deployment.
With newest socket version v3.1.0 a new parameter allowEIO3 was introduced for backward compatibility. Additionally some cors parameters needed adjusted to work with socket-client v2.
Tested this using mmpm as test-client with both socket-client versions.
Related to https://github.com/Bee-Mar/mmpm/issues/60

Just out of curiosity, which clients are using v2?

Just out of curiosity, which clients are using v2?

@rejas e.g. https://github.com/Bee-Mar/mmpm/blob/master/gui/package.json#L32

@rejas e.g. https://github.com/Bee-Mar/mmpm/blob/master/gui/package.json#L32


[APP-1369] feat: silent mode, company ids filter, comments

Adds a silent mode and a flag to only copy data from certain companies
New flags

c or companyIds Comma separated list of company ids
s or silent Run without waiting for user input (might be renamed to autoApprove)

Usage examples
thinker sync --sh <IP_ADDRESS>:28025 --th <IP_ADDRESS>:28015 --sd gather --td gather --c sa0oiol9,phbq3484 --s --pt accounts,bookings,charges,comments,contacts,locations,logins,messages,policies,rooms,templates,users

or all tables
sync --sh <IP_ADDRESS>:28025 --th <IP_ADDRESS>:28015 --sd gather --td gather --c sa0oiol9,phbq3484 --s

What is the rationale for the "companyIds" feature?

@internalfx sorry about this, it was PR to our private fork, but I missed configuring that up and ended adding it here by mistake

the rationale is 'we only want data from these secondary indexes'

That makes sense.
As far as the silent feature, I could see that being useful for scripting.

I tried making a --secondaryIndexName plus a --secondaryIndexIds, but my team was uncomfortable with that much typing

the silent yeah, it's just for scripting, this is a great syncing script, wanted to use it from another


Make streamvalue mutable

Implement the MutableSequence methods for StreamValue. It would be useful to be able to insert stream blocks programatically without having to recreate the whole stream value object. I am working on an implementation and can submit a pull request later today.

I'm a bit wary of making this change - I'll need to think about it some more.
When I designed the StreamField APIs, I imagined the data as always consisting of immutable value objects, and I'm not sure what the consequences will be if we break that assumption. However, we haven't been rigorous about that for StructBlock and ListBlock values, and that doesn't seem to have caused any problems...

+1 for Immutable by default. However, in this case the API for changing a stream value is very fragile. If page.body is a stream value, it breaks in simple operations such as
page.body = list(page.body)

Hence we cannot convert the immutable sequence to a list, change its contents, and save the immutable version back in the end. Changing stream_data directly is also a bad idea since the user has to check if the stream value is lazy or not and insert data accordingly. This is bug-prone and IMHO .stream_data and .is_lazy attributes are just implementation details that the user should not fiddle with.
When inserting new blocks in a stream block, I want to avoid this ugly code:
body = [(blk.block_type, blk.value) for blk in page.body]
body.append(('paragraph', '
hello
'))
page.body = body

OK - having thought about this some more, I'm now more comfortable about the idea of making StreamValue mutable. Looking forward to seeing the patch :-)

I sent the pull request.
I'm having a bit of trouble running tox and the full test suite in my computer. "make tests" pass, but tox fails even in the environments available in my computer. What is the recommended workflow? Can I rely that CI will catch any problems not present in my computer?

Leaving CI to do the full (all-versions) test run is fine. I almost never run tox locally, since it doesn't play well with Vagrant VMs (it tries to create symlinks, which aren't supported by Vagrant shared folders).

The PR is #2886

Completed in #6485


general question related to AQT simulator and Qiskit.  "Attribute error"

{'qiskit-terra': '0.14.1',
'qiskit-aer': '0.5.1',
'qiskit-ignis': '0.3.0',
'qiskit-ibmq-provider': '0.7.1',
'qiskit-aqua': '0.7.1',
'qiskit': '0.19.2'}
What is the current behavior?
Trying using  var_form 'TwoLocal' with VQE . getting errors whit ./qiskit/aqua/utils/run_circuit.py
AttributeError: 'BackendConfiguration' Object has no attribute 'max_experiments'
In this case,  AQT simulator backend does not have a 'max_experiment' attribute in its configuration.
using other var_forms give different errors. Qiskit aqua code does not seem to support AQT simulator.
So my general question : Is Qiskit supposed to support AQT backend up to this point ?  or qiskit only providing access to AQT backends through the aqt_provider to run basic circuits
Thanks
Steps to reproduce the problem
backend = aqt.get_backend('aqt_qasm_simulator')
seed = 10598
quantum_instance = QuantumInstance(backend, seed_simulator=seed, seed_transpiler=seed, shots=100)
qubitOp = Z
var_form = TwoLocal(1,'ry',reps=1,insert_barriers=True, skip_final_rotation_layer=True)
vqe2 = VQE(qubitOp, var_form, optimizer)
vqe2_run = vqe2.run(quantum_instance)
What is the expected behavior?
Suggested solutions

thks Jessie. I'll detailed also the other problems encountered with other var_forms here then.

I will add though that since the developers here do not have access to the AQT device for testing, it hard to verify that all is working as it should.


Implement oneOfs

This is done!! Wooooo!!!
Doesn't yet have the best possible types associated with it, but the types are good enough for now, certainly good enough for 0.1.0


[FLINK-30426] Set archRule.failOnEmptyShould = false to return old behavior

In ArchUnit 1.0.0 there was added a breaking change [1]
As mentioned in Enhancements/Core ArchRules will now by default reject evaluating if the set passed to the should-clause is empty. This will break existing rules that don't check any elements in their should-clause. You can restore the old behavior by setting the ArchUnit property archRule.failOnEmptyShould=false

As a result all the rules which do no match anything will fail.
Also since Flink 1.17-SNAPSHOT depends on 1.0.0 ArchUnit, this version was updated to be synced
[1] https://github.com/TNG/ArchUnit/releases/tag/v0.23.0

@snuyanzin Thanks a lot. What I don't fully understand is the actual cause: was it because this repo depends on 1.17-SNAPSHOT, which meant that the flink-architecture-tests-production and flink-architecture-tests-test were built with Archunit 1.0.0?

yes, that's the reason

Ugh. That's freakingly annoying.


[interop] Add grpc-java 1.59.0 to client_matrix.py

@sergiitk

Please run the adhoc test.

Successful adhoc test: http://sponge2/0c63acd2-3712-4b2c-b60b-b662d6368e11

Ooops, I thought I approved it.


batch verb in at_client_sdk

Naresh - need to discuss with Jagan @naresh0689

https://github.com/atsign-foundation/at_client_sdk/issues/46

We do have a batch verb that we internally use in the SDK and it is not exposed to the app developers. The task is created to expose the batch to the app dev's but it did not make sense. We can close it and create a task if such a requirement arises as part of https://github.com/atsign-foundation/at_client_sdk/issues/470https://github.com/atsign-foundation/at_client_sdk/issues/470


fail on test compilation failure

test suites can fail to compile but not fail the docker build because this run command will always exit with the status from cd ... this change simply makes a compilation failure into a Docker build failure.
we also need an improvement to presubmits in this repo for test suites, to catch compilation errors.

/lgtm


Iterator requirements are different from standard in parallel copy_if.

In HPX, parallel copy_if has a contract about iterator traits.
As below, at least, input iterator must be InputIterator and output iterator must be OutputIterator.
(https://github.com/STEllAR-GROUP/hpx/blob/0f16de3bdd0d71f051cab644268901a4b08b19e1/hpx/parallel/algorithms/copy.hpp#L579-L585)
But, as I saw in the cppreference website, it has more stronger a contract.
It requires ForwardIterator.
(http://en.cppreference.com/w/cpp/algorithm/copy)
Of course, in case of sequential execution policy, there is no need for ForwardIterator. Just InputIterator or OutputIterator is sufficient. But, it may be more important to correspond to standard. (In fact,
I don't know exactly how it is stated in the standard. But, I thought it could be because there is a difference between cppreference.com and HPX.)

@taeguk: yes, our algorithms (almost all of them) put less restrictions on the iterators than the C++17 standard does. The committee has adopted the stricter requirements only last minute.
I think that this does not violate the standard as it is as we provide a wider contract. Our algorithms simply fall back to sequential execution whenever the given iterators don't allow for parallelizing the execution. We've had a heated discussion in the committee about this and in the end the more conservative approach got the majority of votes to 'leave the door open for better solutions in the future'. I personally would like to keep the current contract in place (i.e. allow for using weak iterators and falling back to sequential execution), but I'm open to discussing this.

@hkaiser But, I'm afraid of users' misunderstandings. The users may misthink that the algorithm executed parallelly although it is executed sequentially because of unsatisfied contracts to parallel execution. Falling back to sequential execution may be confusing to the users.

@taeguk: yes this is true. Here I'd like to hear opinions from others as well.

@hkaiser it's rather a rare case. if the InputIterator is not custom then can it be something else then I/O in the form of istream_iterator? I don't remember other examples of standard input iterators.
However, a quite fallback to serial execution creates very subtle bugs. We should at least inform the user about that. Maybe by a warning message? I've seen a logger facility in HPX but it seemed to be designed for other purposes.

@mcopik I was thinking more towards supporting writing generic facilities which use the parallel algorithms in their implementation. Limiting iterator categories for such facilities might be too restricting and not allowing the parallel algorithms to be used with input iterators may make the implementation of those facilities more cumbersome.
But in the end I don't insist in leaving things as we have them. If the majority of people think to make our implementation more conforming by adhering to the stricter iterator requirement, fine by me. If we do that however we should touch on all algorithms and not only copy_if as mentioned in the original comment above.

If this gets addresses, should we phase out our support for input_iterators using backwards compatibility options or simply break compatibility and drop support for those?

We provided backwards compatibilty for almost all of thos cases so far. I think this is one case where we should deliberately break users code. As @mcopik mentioned, it could be a subtle bug. In the end, what i'd like to see is support for those generic algorithms to select the execution policy based on the iterators passed.

In the end, what i'd like to see is support for those generic algorithms to select the execution policy based on the iterators passed.

That's exactly what's happening now, isn't it?  I'm confused.

I'm fine with a less permissive implementation but I'm worried about
introducing bugs into user code.
Execution policy and iterator type are known at compile time. My
suggestion: display a compilation warning that the execution is serialized
for an execution policy other than seq or seq_task. I know that there is no
standard-conforming way of displaying a warning but IIRC all major
compilers support pragma #warning and we could wrap it with a CMake macro.
And if we want to use parallel algorithms within a generic facility and
silence such warnings there, then adding a new executor parameter type
would solve this problem. I know it's not an elegant solution and there is
a very little logical connection between executor and silencing
serialization warnings bases on execution policy, but it would work.
Perhaps I can come up with a better solution later.
pt., 23 cze 2017, 15:07 użytkownik Hartmut Kaiser<EMAIL_ADDRESS>napisał:

In the end, what i'd like to see is support for those generic algorithms
to select the execution policy based on the iterators passed.
That's exactly what's happening now, isn't it? I'm confused.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/STEllAR-GROUP/hpx/issues/2699#issuecomment-310660560,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAr-68-obKMStF7rTy99aRsHOFd1qiGLks5sG7h2gaJpZM4N9OXz
.

Am 23.06.2017 3:07 nachm. schrieb "Hartmut Kaiser"<EMAIL_ADDRESS>
:

In the end, what i'd like to see is support for those generic algorithms to
select the execution policy based on the iterators passed.
That's exactly what's happening now, isn't it? I'm confused.
Right now, we silently make that decision. What I'm proposing is shifting
the responsibility to our users, with our default, and recommendation being
to rather introduce a hard compile error in the case when the iterator
requirements don't match the execution policies needs.

FWIW, I'm working on a fix here: https://github.com/STEllAR-GROUP/hpx/tree/fixing_2699


Show UI features based on connected wallet permissions

Currently the app hides certain project actions based on a isOwner property—whether the connected wallet is the owner of a project.
This could be improved by relying on the hasPermission getter in the OperatorStore contract.
Example for getting permission for userAddress to set payout mods (SetPayoutMods = 14):
const canSetPayoutMods = useContractReader<string>({
    contract: ContractName.OperatorStore,
    functionName: 'hasPermission',
    args: [userAddress, owner, projectId.toHexString(), 14]
})

List of integer codes for all permissions: https://github.com/jbx-protocol/juicehouse/blob/main/packages/hardhat/contracts/libraries/Operations.sol

fixed


[Bug]: The open repo navigation is broken in git pull request

Is there an existing issue for this?

[X] I have searched the existing issues

Description
In Pull conflict when the user clicks on the Open repo link the user is navigated to the application instead of the git repo

Steps To Reproduce

connect the application to the git
Now create a pull conflict in the master branch
When the conflict pop up comes up with open repo link
click on open repo link
The user is navigated to new app page instead of the git repo

Public Sample App
No response
Version
release

Stats

Stat
Values

Reach
53

Effort (months)
0.25


Add Danh to mentors section

Hi, this PR adds Danh to the mentors section. Thanks!

Thank you @danhphan.


A few useful recipes

Description
Added a few field recipes that are useful when creating models. The fields calculate:

The fraction of population that travels to work using active transport (using census)
The fraction of green-space in and area (using Open Street Map)
The area of a geometry in square meters
The area of a geometry in square kilometers

Checklist

[ ] Created new test/s (if possible)
[ ] Updated the README / documentation, if necessary

Hold off reviewing this for a while since I am going to add some README files that explain structure of the model directory.

I was going to ask - just looking at the structure now. In executions > city-indices > active-transport.json the recipe accesses modelling fields that are further up the file hierarchy e.g:
   {
        "fieldClass": "uk.org.tombolo.field.modelling.SingleValueModellingField",
        "label": "index:active_transport",
        "recipe": "city-indices/active-transport/ActiveTransportIndex"
      },

Does the recipe 'go back up' the hierarchy to access these fields?

I've added some basic READMEs.


Update projection modes

@constantinpape please review and merge

@anwai98 please add the grid search csvs for the lucchi experiments.

@constantinpape GTG from my side!


Change output to colorless for output debug

In VSCode sometimes I get a notification that pops up in the bottom right corner, when clicking it I get this output window but it’s unreadable because of the colors in the output.
We could change the output to colorless like in the client.

Update: The function that would throw that error is not used anymore.

Closing this since it has not appeared again since May. This was caused by an error inside a package which is not used anymore.


[SPEC ONLY] Reward analysis

Rewards — would be good to get thinking about the below:

Some analysis of the rewards over the past months

Who has got them?
What did they incentivise?
Any thing else about the current rewards thats noteworthy when looking ahead?

What is possible with new reward types/features for Colosseo:

cap a reward at proportion of fees paid

cap relative to liquidity provided and/or market volume (i.e. allow LP rewards to not pay out everything if there’s not enough liquidity or spreads are too wide)

taker rewards but only where taker reduces reducing one or more LP net positions

cap distribution to each market (market anti-whaling)

in market scope have an “everything but these” scope

allow market scope to use a metadata tag / community tag

Some thought into how to think about the optimal reward strategy, and how to communicate this to the community to inform their CAF funds usage (see https://discord.com/channels/720571334798737489/1192458594457759834 for the latest on the CAF)

I have pulled this into Colosseo as breaking it down, doing analysis where needed, and writing individual tickets is in scope for Colosseo. The individual changes will most likely not all be.

Ongoing analysis of rewards.


Add support for ClearML logging

🚀 Feature
Given the popularity of ClearML it would be great to have integration with it for experiment tracking realized trough a logger.
Motivation
At the time being many MLOps platforms are appearing and gaining popularity. On the other side, the architecture of PyTorch Lightning, primarily through the abstractions enabling integrations with new platforms is easier mainly following the Open-Closed Principle.
Pitch
If this feature request proceeds forward there would be seamless integration with ClearML following the examples for WANDB and MLFlow.
Alternatives
Alternative would be coupling the training code for calls to the API provided by the clearml package for achieving experiment tracking.
cc @borda @awaelchli @edward-io @ananthsub @rohitgr7 @kamil-kaczmarek @Raalsky @Blaizzy

@Aleksandar1932 Thanks for requesting the integration. FYI it was asked before to add this logger: #5921.
It was decided a while ago that we no longer add new experiment tracking frameworks to the core of Lightning due to maintenance overhead. We recommend to have the integration be part of the 3rd party library and potentially integrate testing with the Ecosystem CI.
cc @Borda @carmocca

That is correct, the Ecosystem CI is the way to go here IMO.
Which poses another question, that is discoverability of these components in the Ecosystem.
We should think about automatically collecting all projects using the Ecosystem CI (and their passing status) on lightning.ai + docs, somewhere the community has easy access.
WDYT @Borda @carmocca @awaelchli

We should think about automatically collecting all projects using the Ecosystem CI (and their passing status) on lightning.ai + docs, somewhere the community has easy access.

We could think about adding a section to the EcoCI metadata with some description or logo, etc.
So then, if the integration is passing, we would automatically pull it to a special page on our docs... What do you think?

We should think about automatically collecting all projects using the Ecosystem CI (and their passing status) on lightning.ai + docs, somewhere the community has easy access.

We could think about adding a section to the EcoCI metadata with some description or logo, etc. So then, if the integration is passing, we would automatically pull it to a special page on our docs... What do you think?

I'm in favor

I like the idea of showing such integrations even if they are not maintained by us. With a small usage example and link to ecosystem/website.

FYI
Clearml is able to intercept logging in tensorboard in lightning
https://clear.ml/docs/latest/docs/guides/frameworks/pytorch_lightning/pytorch_lightning_example
https://github.com/allegroai/clearml/blob/master/examples/frameworks/pytorch-lightning/pytorch_lightning_example.py


Render 500 server errors

Currently if a request fails because of a system error, we don't respond properly:
https://sentry.io/organizations/omisego/issues/1138992818/
fix that with a fallback 500 status.

Looks like it's done.


Engines for Terapulse 4000 reflection mode

TeraPulse4000_RX_BaselineIncluded_UCAM: Using this engine, after the deploy button is pressed, the app enters the loading mode infinitely and no data can be imported

TeraPulse4000_RX_Focus_UCAM: The baseline and reference time and amplitude data cannot be extracted, but only the sample time and amplitude.

If the sample measurement is not taken immediately after the reference and baseline measurement, the engine cannot perform data extraction.

I would very much appreciate if theses engine can be updated so that all baseline, reference and sample time and amplitude data can be successfully imported. Thank you very much!

Hi Chi Ki,
Thank you for the comment. I want to let you know that recently updated CaTx no longer uses MATLAB *.m file based engines to import the measurement data. Instead, CaTx now directly import datasets using programmable/editable deployment recipes. The inquiries above can be implemented by creating a new recipe in the tab entitled 'Deployment Recipes'. Please try.
Cheers,
Jongmin


Slower source-to-IL compilation, slower JIT compilation.

I saw this mentioned as drawback
Slower source-to-IL compilation, slower JIT compilation.
Does JIT compilations times outweigh performance penalty of using reflection?

@ekalchev Hello.

Does JIT compilations times outweigh performance penalty of using reflection?

No, it does not outweigh , of course. Reflection is completely out of scope because its horrible performance. I mentioned these drawbacks because only for considerations of completeness. (I did not estimate its weight, and suspect it is small)


add paginate to selected git repos

Signed-off-by: kim5566
Hey, I just made a Pull Request!

resolves:https://github.com/backstage/backstage/issues/7112
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

Thanks for the contribution!
Our spellcheck require GitHub to be written with a capital H in text.
There's some slight formatting problems in the credentialsProvider that prettier can help you format.


import csv data to orientdb, the speed issue

Hi, I am importing data from four csv files (which are grabbed from SQL server) to orientdb, each represents a vertex class  and has more than a hundred thousand rows, and might even more edges bwteen them but this is depends on joinIDs.
e.g, I have, A.json, B.json, C.json,
and C.json have edge info, between A to C and B to C,  (building edges by specifying lookup and jointFieldname in json file if I understand correctly).
I created vertices A and B without any problems and the process is fast. I oetl C.json after A.json and B.json have been oetled.
The issue is that, it is very slow to be oteled to orientdb, probably will take 60 days to finish oetling the C.json. is this the correct way to do that? that normal, how to speed it up?
Another question is, does the order really matter, could I oetl the json files when edge info included but lookup field class has not been oetling yet. I tried it, and it creates a column in vertiex table instead of directly to edge tables. Then if it is faster, that is no problem, How to create the edge by selecting two columns of vertices. because right now it throws errors to me and create edge will just be fully connectted when list of vertices are provided. Thanks so much!

forgot to provide hardware info that I am running this,
a laptop, not distributed system, 64G memory, 1TB disk. what is the way to finish it in a reasonable time by using only one laptop? Thanks

What's the throughput in terms of vertices/edges per second? Did you create indexes on fields you're looking up?

ahh, that is a good point and I kinda know the problem is. the lookup fields are not indexed, so I put edge info in wrong json files. let me edit the json files

Thanks so much, @lvca. the problem is solved. I have two more questions.

the order of json files to be oteled, seems important.is that true?
if one of json oetl process fails because of unexpected error, right now I need to re-etl previous json files again. Is there way to handle this?

Thanks

@rwnew2012

order matters depending by how you're using it
with last release (2.0.9-SNAPSHOT and 2.1-SNAPSHOT) you can declare "haltOnErrors":false to let it continue importing


Do exceptions work?

I am trying to make a program with exception handling but when an exception is thrown abort() is automatically called, I use the PlatformIO addon in Visual Code. I made a simple code to test them, I leave you the code, the .ini file and the .cpp
platformio.ini
[env:heltec_wifi_lora_32_V3]
platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF5
board = heltec_wifi_lora_32_V3
framework = arduino
build_flags = -fexceptions
build_src_flags =
	-fexceptions

main.cpp
#include <Arduino.h>
#include <stdexcept>

void setup() {
  Serial.begin(9600);
}

void loop() {
  try {
    throw std::runtime_error{ "exception!" };
  }
  catch(const std::exception& e) {
    Serial.println(e.what());
  }

}

Output:
abort() was called at PC 0x42008a52 on core 1

Backtrace: 0x4037621a:0x3fcec0c0 0x4037950d:0x3fcec0e0 0x4037c632:0x3fcec100 0x42008a52:0x3fcec170 0x4200ca55:0x3fcec190 0x42000ec7:0x3fcec1b0 0x42002550:0x3fcec1d0

ELF file SHA256: 53a1b3f1a24d891f

The are disabled in IDF to save code space.

No, when removed it is gone. The full blown set is here https://github.com/pioarduino/platform-espressif32


create_balance_proof() should return a dictionary not a tuple

Because then the return value can be used as **balance_proof instead of *balance_proof.  That plays more nicely with the kwarg usage.

See https://github.com/raiden-network/raiden-contracts/pull/1150#discussion_r314300165 for an example.

This approach does not work in a straightforward way.  It's unclear how to name the signature.
closeChannel() wants
        bytes memory non_closing_signature,

while
create_balance_proof_countersignature() wants
        original_signature: bytes,

option 1: rename non_closing_signature into original_signature in the smart contract
option 2: decompose the balance proof into members when necessary
option 3: leave it as it is

I think, for now, option 2 is the most reasonable.

#1272 fixed this.


[feat]: add crateable multi select

Feature description
Thank you for providing such a beautiful component, but I see that the multi-select component does not have the option to create. If it is added, I believe it will be better.
Affected component/components
MultiSelect
Additional Context
Additional details here...
Before submitting

[X] I've made research efforts and searched the documentation
[X] I've searched for existing issues and PRs

This issue has been automatically closed because it received no activity for a while. If you think it was closed by accident, please leave a comment. Thank you.


can't update traffic manager profiles

I'm trying to update the DNS TTL from az, however I keep getting this error:

Endpoint name '' is invalid. Endpoint names cannot be empty or all whitespace, and must be up to 260 alphanumeric characters long. The type '' specified for endpoint '' is invalid. Valid endpoint types are: 'Microsoft.Network/trafficManagerProfiles/azureEndpoints', 'Microsoft.Network/trafficManagerProfiles/externalEndpoints', 'Microsoft.Network/trafficManagerProfiles/nestedEndpoints'. There are duplicates in the list of endpoints. The following endpoint(s) appear more than once: .

the debug output that indeed it adds to the endpoint list to the PUT request... however according to the example: Profiles - Update (Traffic Manager) | Microsoft Docs
only the sections that is being updated needs to be present in the PUT request
this is the request body for my simple update
az --debug network traffic-manager profile update -g <resG> -n <tm_profile> --ttl 60
{
    "location": "global",
    "properties": {
        "profileStatus": "Enabled",
        "endpoints": [
            {
                "properties": {
                    "endpointMonitorStatus": "Online",
                    "priority": 1,
                    "targetResourceId": "<my_id_for_the_first_endpoint's_target>",
                    "target": "<first_target's_fqdn>",
                    "weight": 1,
                    "endpointLocation": "A",
                    "endpointStatus": "Enabled"
                }
            },
            {
                "properties": {
                    "endpointMonitorStatus": "Disabled",
                    "priority": 4,
                    "targetResourceId": "<my_id_for_the_second_endpoint's_target>",
                    "target": "<second_target's_fqdn>",
                    "weight": 1,
                    "endpointLocation": "B",
                    "endpointStatus": "Disabled"
                }
            }
        ],
        "trafficRoutingMethod": "Priority",
        "monitorConfig": {"port": 80, "protocol": "TCP", "intervalInSeconds": 30, "toleratedNumberOfFailures": 3, "profileMonitorStatus": "Online", "timeoutInSeconds": 10},
        "dnsConfig": {"relativeName": "<TM_dns_name>", "ttl": 60}
    },
    "tags": {}
}

Environment summary
Install Method: apt-get / CLI version (az --version) / OS version: Debian Testing GNU+Linux / Shell Type: bash
$ az --version
azure-cli (2.0.19)

acr (2.0.13)
acs (2.0.17)
appservice (0.1.18)
backup (1.0.1)
batch (3.1.5)
batchai (0.1.1)
billing (0.1.5)
cdn (0.0.9)
cloud (2.0.8)
cognitiveservices (0.1.8)
command-modules-nspkg (2.0.1)
component (2.0.7)
configure (2.0.11)
consumption (0.1.5)
container (0.1.11)
core (2.0.18)
cosmosdb (0.1.13)
dla (0.0.12)
dls (0.0.15)
eventgrid (0.1.4)
extension (0.0.4)
feedback (2.0.6)
find (0.2.7)
interactive (0.3.10)
iot (0.1.12)
keyvault (2.0.12)
lab (0.0.11)
monitor (0.0.10)
network (2.0.16)
nspkg (3.0.1)
profile (2.0.14)
rdbms (0.0.7)
redis (0.2.9)
resource (2.0.16)
role (2.0.13)
servicefabric (0.0.4)
sql (2.0.13)
storage (2.0.17)
vm (2.0.16)

Python location '/usr/bin/python'
Extensions directory '/home/rkjellerup/.azure/cliextensions'

Python (Linux) 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170118]

Legal docs and information: aka.ms/AzureCliLegal

initially submitted issue here:
https://github.com/Azure/azure-sdk-for-python/issues/1562

So when you run the update, it tries to add duplicates of the endpoints?

looks like it's trying to add as much data as possible.
is it sends a GET request before the PUT and it has this response:
{
    "id": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Network/trafficManagerProfiles/my-tm1",
    "location": "global",
    "name": "my-tm1",
    "properties": {
        "dnsConfig": {
            "fqdn": "<TM_dns_name>.trafficmanager.net",
            "relativeName": "<TM_dns_name>",
            "ttl": 30
        },
        "endpoints": [
            {
                "id": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Network/trafficManagerProfiles/my-tm1/azureEndpoints/endpoint1",
                "name": "endpoint1",
                "properties": {
                    "endpointLocation": "A",
                    "endpointMonitorStatus": "Online",
                    "endpointStatus": "Enabled",
                    "priority": 1,
                    "targetResourceId": "<my_id_for_the_first_endpoint's_target>",
                    "target": "<first_target's_fqdn>",
                    "weight": 1
                },
                "type": "Microsoft.Network/trafficManagerProfiles/azureEndpoints"
            },
            {
                "id": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Network/trafficManagerProfiles/my-tm1/azureEndpoints/endpoint2",
                "name": "endpoint2",
                "properties": {
                    "endpointLocation": "B",
                    "endpointMonitorStatus": "Disabled",
                    "endpointStatus": "Disabled",
                    "priority": 2,
                    "targetResourceId": "<my_id_for_the_second_endpoint's_target>",
                    "target": "<second_target's_fqdn>",
                    "weight": 1
                },
                "type": "Microsoft.Network/trafficManagerProfiles/azureEndpoints"
            }
        ],
        "monitorConfig": {
            "intervalInSeconds": 30,
            "path": null,
            "port": 80,
            "profileMonitorStatus": "Online",
            "protocol": "TCP",
            "timeoutInSeconds": 10,
            "toleratedNumberOfFailures": 3
        },
        "profileStatus": "Enabled",
        "trafficRoutingMethod": "Priority"
    },
    "tags": {},
    "type": "Microsoft.Network/trafficManagerProfiles"
}

but the constructor of azureEndpoint: (https://github.com/Azure/azure-sdk-for-python/blob/master/azure-mgmt-trafficmanager/azure/mgmt/trafficmanager/models/endpoint.py#L90) looks like it isn't using/passing name and id... and those would need to be set manually afterwards, possibly.

Thanks for the report @Katana-Steel!  It seems there's a service issue with their PUT call that you cannot PUT what you just obtained via GET. Most updates in the CLI rely on that contract. However, since the service supports PATCH, we'll update the command to use that instead, which should resolve the issue.

@tjprescott I see in the sprint that a fix is in the pipeline... would there be a simple way I could test it out?

Edge build or a developer setup would get you the newest changes ahead of the official release.
https://github.com/Azure/azure-cli#edge-builds
Also, closing since PR #4777 didn't close automatically.


Needs backwards-compat

Bitbucket: https://bitbucket.org/tommorris/mf2py/issue/8
Originally Reported By: Tom Morris
Originally Created At: 2013-11-07T00:40:02.386

ported backward compatibility classes from php-mf2 2014-05-03 9e2c8353d55096946ea7522751bf251a7f3bdd5c


The 'request workspace trust' dialog should be better aligned with the 'startup trust' dialog

The startup trust dialog

And the request workspace trust dialog

Should be better aligned:

Different button styles
Cancel vs. 'No I don't trust'
'... we recommend to continue in restricted mode' vs. 'we do not recommend to continue...'

At least some of the differences here I feel are justified. In the startup flow, the user is just opening a folder and we need a little more UX to provide context. In the request flow, the user is trying to do a specific action so the buttons reflect the effect on the action.


Force using system clang

We're currently spawning the clang command here. If the PATH is modified (mine was export PATH="/opt/homebrew/opt/llvm/bin:$PATH", clang will actually point to a different version of clang which does not include libclang_rt.ios.a or libclang_rt.iossim.a.
What do you think about changing Command::new("clang") to Command::new("/usr/bin/clang") so it always use the clang we're expecting?

Idk anything about this but if we can guarantee that /usr/bin/clang always exists then this sounds fine


Add font setting

EffectManager now can set fonts reflectively

Cool! I agree a cache might make sense but this is probably fine for now. Thank you!


Heapster standalone documentation

When will the standalone heapster documentation be available?

Can you clarify what you mean by standalone? Without kubernetes or fleet?

Yes. There is a link for the same in the docu https://github.com/GoogleCloudPlatform/heapster/blob/master/docs/standalone.md

ah, got it. Will try to get to it this week.
On Thu, May 28, 2015 at 9:49 AM, shilpapadgaonkar<EMAIL_ADDRESS>wrote:

Yes. There is a link for the same in the docu
https://github.com/GoogleCloudPlatform/heapster/blob/master/docs/standalone.md
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/heapster/issues/299#issuecomment-106482626
.

Thanks!

Any update on this doc? Still empty. Even just a sample command or flags...

Is there a half-written documentation somewhere?

What are the use cases for standalone mode? Is it for dev testing or having
a scaled out setup?
On Mon, Aug 3, 2015 at 12:43 AM, Roshan N<EMAIL_ADDRESS>wrote:

Is there a half-written documentation somewhere?
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/heapster/issues/299#issuecomment-127150079
.

I can't speak for the others, but I arrived at this doc stub while attempting to run heapster as a separate process with --source pointing to kubernetes master.
I ended up filing issue #392 during my trial-and-error phase, and ultimately @jimmidyson suggesting adding inClusterConfig=false as an extra option to the kube source.
This was indeed the solution to my troubles, and that's the sort of info which I would expect to be in the "standalone" doc.
Granted, there may be other valid contexts for "standalone" heapster -- @rjnagal above questions whether this may apply to running without kubernetes or fleet, and I am definitely running with kubernetes. Perhaps the doc should include use-cases for various "standalone" interpretations? eg, "standalone" meaning "running the heapster binary externally to a kubernetes cluster rather than as a container in the cluster", "running the heapster binary externally with a source other than kubernetes" (if that's even a thing that can be done), etc... dev testing vs having a scaled out setup... basically each variation of "standalone" could be acknowledged in the doc, along with either a working example (eg /my/bin/heapster --v=5 --logtostderr=true --port=8082 --source="kubernes:http://<IP_ADDRESS>:8080?insecure=true&inClusterConfig=false") or confirmation of lack of support.
Just my two cents, of course.

Out of the scope of the project - only Kubernetes deployments are supported. See more details: https://github.com/kubernetes/heapster/blob/master/docs/proposals/vision.md


curiosity

I'm curious if you could expand on the README with a rudimentary example of how this could be used at a basic level. Super interested in this. Love the work y'all do.

Yeah, this project looks awesome. I’d like to help where I can, but not sure where to start. A contributing doc would be really useful.

Somehow missed this. I've updated the readme a bit and added a contributing doc but it basically boils down to 'try it and lets talk about it'.
I just realized there's no instructions on how to set this up though. It's basically compile this, copy DLL and dependencies to HarmonyMods, put your C# scripts into Scripts folder. I'll write something proper up.

Somehow missed this. I've updated the readme a bit and added a contributing doc but it basically boils down to 'try it and lets talk about it'.
I just realized there's no instructions on how to set this up though. It's basically compile this, copy DLL and dependencies to HarmonyMods, put your C# scripts into Scripts folder. I'll write something proper up.

@Rohansi thanks for the update on this. @cvega and I have been eyeing this repo pretty much since it was started. We're coming from a bit of a different background, but we're definitely interested in contributing.
I personally have a couple questions about the existing Update hook:
using System;
using Harmony;
using UnityEngine;

namespace Rust.ModLoader.Hooks.Server
{
    [HarmonyPatch(typeof(ServerMgr), "Update")]
    public class ServerUpdateHook
    {
        [HarmonyPostfix]
        public static void Postfix(ServerMgr __instance)
        {
            try
            {
                ModLoader.Scripts?.Update();
                ModLoader.Scripts?.Broadcast("Update");
            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }
    }
}

I'm interpreting this to mean that we're patching the ServerMgr.Update method to do the following after the original function call:

call the ScriptManager.Update() to reload any scripts if need be
call Broadcast in order to call the Update() method in all active scripts

Going off this example, I thought I'd start with a PlayerSpawned hook. The goal being: a player has just spawned on the server => call a corresponding PlayerSpawned method in all active scripts. This is what I came up with:
using System;
using Harmony;
using UnityEngine;

namespace Rust.ModLoader.Hooks.Server
{
    [HarmonyPatch(typeof(ServerMgr), "SpawnNewPlayer")]
    public class ServerPlayerSpawnedHook
    {
        [HarmonyPostfix]
        public static void Postfix(ServerMgr __instance, ref BasePlayer __result)
        {
            try
            {
                ModLoader.Scripts?.Broadcast("PlayerSpawned");
            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }
    }
}

Not too far off from Update , but nothing's being called when a player is spawned.  To this point, I tried patching various functions from ServerMgr, but the only ones that seem to trigger are Update and OnSteamConnected (at least from the ones I've tried). Are there certain conditions a function has to meet in order to be patched with Harmony? Or is there some scaffolding that I'm missing in the hook implementation?
Like you said, I'm sure you're busy working out more docs, but if you have time to give some insight here, that'd be awesome. Can't wait to see more of this project 👍
ps: I would have posted this in the discussion page, but I'm not sure if you want to designate that for design / implementation discussion instead of general questions. Let me know!

@Rohansi thanks for the update on this. @cvega and I have been eyeing this repo pretty much since it was started. We're coming from a bit of a different background, but we're definitely interested in contributing.
I personally have a couple questions about the existing Update hook:
using System;
using Harmony;
using UnityEngine;

namespace Rust.ModLoader.Hooks.Server
{
    [HarmonyPatch(typeof(ServerMgr), "Update")]
    public class ServerUpdateHook
    {
        [HarmonyPostfix]
        public static void Postfix(ServerMgr __instance)
        {
            try
            {
                ModLoader.Scripts?.Update();
                ModLoader.Scripts?.Broadcast("Update");
            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }
    }
}

I'm interpreting this to mean that we're patching the ServerMgr.Update method to do the following after the original function call:

call the ScriptManager.Update() to reload any scripts if need be
call Broadcast in order to call the Update() method in all active scripts

Going off this example, I thought I'd start with a PlayerSpawned hook. The goal being: a player has just spawned on the server => call a corresponding PlayerSpawned method in all active scripts. This is what I came up with:
using System;
using Harmony;
using UnityEngine;

namespace Rust.ModLoader.Hooks.Server
{
    [HarmonyPatch(typeof(ServerMgr), "SpawnNewPlayer")]
    public class ServerPlayerSpawnedHook
    {
        [HarmonyPostfix]
        public static void Postfix(ServerMgr __instance, ref BasePlayer __result)
        {
            try
            {
                ModLoader.Scripts?.Broadcast("PlayerSpawned");
            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }
    }
}

Not too far off from Update , but nothing's being called when a player is spawned.  To this point, I tried patching various functions from ServerMgr, but the only ones that seem to trigger are Update and OnSteamConnected (at least from the ones I've tried). Are there certain conditions a function has to meet in order to be patched with Harmony? Or is there some scaffolding that I'm missing in the hook implementation?
Like you said, I'm sure you're busy working out more docs, but if you have time to give some insight here, that'd be awesome. Can't wait to see more of this project 👍
ps: I would have posted this in the discussion page, but I'm not sure if you want to designate that for design / implementation discussion instead of general questions. Let me know!

It looks like that should work. Only thing to note is SpawnNewPlayer is only called when 1. a player connects to server and 2. the player is not sleeping (new to the server or dead).
A better candidate would be inside BasePlayer, the function void PlayerInit(Network.Connection). this does all the initialization for players when they connect to the server (sleeper or not). However, respawns do not take this path, they use BasePlayer function void RespawnAt(Vector3, Quaternion).
Let's move this to the discussions area. It auto-created sections for general, ideas, and Q&A so it seems appropriate. Issues are for known bugs or work to be completed.

It looks like that should work. Only thing to note is SpawnNewPlayer is only called when 1. a player connects to server and 2. the player is not sleeping (new to the server or dead).
A better candidate would be inside BasePlayer, the function void PlayerInit(Network.Connection). this does all the initialization for players when they connect to the server (sleeper or not). However, respawns do not take this path, they use BasePlayer function void RespawnAt(Vector3, Quaternion).
Let's move this to the discussions area. It auto-created sections for general, ideas, and Q&A so it seems appropriate. Issues are for known bugs or work to be completed.


create call for speaker material

need material to send to potential speakers as well as timeline: application deadline, decision date, confirmation date. Do we have material from last year that we can use as a starting point?

Call for speaker form is here:
https://docs.google.com/forms/d/e/1FAIpQLSdQmD46kNRdQmhhTUMCr0aLH_13R7yRFlyecIWMCXhJ2Ctedg/viewform

call for speaker blog post is ready and scheduled to publish on August 15 @ 7am:
http://citycampnc.org/2017/08/15/citycamp-nc-2017-call-for-lightning-talk-speakers/
Committee members can now point to the existing Google Form

Is the idea to wait until blog post goes up to send link to potential speakers?

You can send the webform to people now. The idea behind the delayed blog
post is to spread out content on the blog. There is a post published this
morning to promote NC Open Pass registation.
On Mon, Aug 14, 2017 at 10:52 AM, suzanneccnc<EMAIL_ADDRESS>wrote:

Is the idea to wait until blog post goes up to send link to potential
speakers?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/codeforraleigh/NCOpenPass/issues/477#issuecomment-322212101,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADgoV1bOCf1cmLVR1dRJQAqIR1tmSYWMks5sYF81gaJpZM4OqTKS
.


⚠ Bofrost.lu has degraded performance

In 727e25f, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1089 ms

Resolved: Bofrost.lu performance has improved in 7b1d19d after 18 minutes.


Refactored CIs to use a matrix for cryptography backend feature flags.

Subtask of #52.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@kedars This is good to go.


Add missing assert macro

fixed #429
depend #428

rebase upstream/main

Codecov Report

Merging #434 (9469f9f) into main (7d22156) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #434   +/-   ##
=======================================
  Coverage   91.00%   91.00%
=======================================
  Files         150      150
  Lines        9076     9076
=======================================
  Hits         8260     8260
  Misses        816      816

Impacted Files
Coverage Δ

src/data/value/mod.rs
96.11% <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 7d22156...9469f9f. Read the comment docs.


No image specified for DNS/LB and External Services in docker-compose.yml

Build from master - Jun/08
Create  DNS/LB and External Services.
View the docker-compose.yml that is generated.
There is no image specified for r DNS/LB and External Services in docker-compose.yml
DNS service:
dns1:
links:

testweb

LB service:
test1:
ports:

9090:80
tty: true
links:
testweb
stdin_open: true

External Service:
extserv: {}
External service format is invalid.

Tested with  build from master - jun/10.
I see image being specified for  DNS and LB Services in docker-compose.yml
But these images are not available downloading. Need to make these images available for download.
Also external service is not present in  docker-compose.yml.
This needs to be available in docker-compose.yml as well.

Tested with build from master - jun/11.
Following image names are being used:
image: rancher/load-balancer-service
image: rancher/external-service
image: rancher/dns-service


[Error] percentage problem in our app

when I complete the ranking flow and submit vote, I see no problem in summation of percentage , but in pairwise side I see the percentage is more than 100%
@mmahdigh

Does it happen consistently or was it only the one time that we discussed it?

after the round is over I couldn't test this scenario again but before that I saw this behavior for multiple times. the difference between percentages was lower that 0.1%

@maryjaf I pushed a change that double-checks the algorithm output. It's up on staging. (For newly ranked categories, previous ones are unchanged.)


GH-250

Added capability to set logconfig using an attribute
Description
A user of the ntp cookbook can set the attribute ['ntp']['logconfig'] which will in turn add the line:
logconfig =<value>
to the ntp.conf file. This allows a user to custom-configure the verbosity of their ntp logging
Issues Resolved

GH-250

Check List

[X] A summary of changes made is included in the CHANGELOG under ## Unreleased
[X] New functionality includes testing.
[N/A] New functionality has been documented in the README if applicable.

Released as: 5.2.0


missing possibility to apply modifyUrlPrefix or manifestTransforms to all automatically added assets as well

Library Affected:
workbox-webpack-plugin
Browser & Platform:
all platforms
Issue or Feature Request Description:
We are currently stumbling upon a problem with this automatic generation of a precache manifest that contains URLs for assets created by the current webpack compilation. This is all fine, but the entries urls are totally unusable for our setup. It seems workbox-webpack-plugin is using webpacks output.path setting followed by other options made inside our webpack.config.
What we get is something like this:
{
    "revision": "51b9703cbbf90b6ca05a1b58e4e85051",
    "url": "../fonts/daxot-condbold-webfont.ttf"
  }

What we need is a possibility to apply something like the provided options modifyUrlPrefix or manifestTransforms which will also be applied to this automatic generation as well and not only to additional assets in order to get something like this:
{
    "revision": "51b9703cbbf90b6ca05a1b58e4e85051",
    "url": "ui/theme/fonts/daxot-condbold-webfont.ttf"
  }

With gulp and workbox-build we were able by using globDirectory, globPatterns and manifestTransforms to achieve exactly that behaviour.
Any help would be gladly appreciated.
Regards,
Antony

Thanks, Antony.
That's planned for the next major release of workbox-webpack-plugin, and tracked in https://github.com/GoogleChrome/workbox/issues/1227


compiler error fix

I had to make this change to get everything to compile.
(I expect older versions of fpc let this slide since TGNodeList is only ever used with TNode but fpc 3.0.0 threw an error)

How do you compile this? Sorry for being a bit naive, since I have not built pascal projects before. I saw scripts/lua_make.lua, but lua makefile.lua only detects Linux as the OS then exits. If this should be a separate issue, that is fine, but I know this is a very early dump of the code.


i3altlayout: 0.3 -> 1.1.2

Changelog: https://github.com/deadc0de6/i3altlayout/releases/tag/v1.1.2

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

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

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 350970

x86_64-linux

:white_check_mark: 2 packages built:

i3altlayout
i3altlayout.dist

I tried to build a few times, but keep getting "error: cannot download i3altlayout-1.1.2.tar.gz from any mirror".

It builds for me. Maintainer cc @magnetophon for testing. I suspect there aren't really many users of the package, if it can stay outdated for this long...

It builds now, but when I try to test it, I get:
[nix-shell:~/.cache/nixpkgs-review/pr-350970-5]$ ./results/i3altlayout-x86_64-linux/bin/i3altlayout
Traceback (most recent call last):
  File "/nix/store/990dnw9l9qp8jzjf3lv5cfifr2zbbnkq-i3altlayout-1.1.2/bin/.i3altlayout-wrapped", line 9, in <module>
    sys.exit(main())
             ^^^^^^
TypeError: main() missing 2 required positional arguments: 'spath' and 'ppath'

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 350970

x86_64-linux

:white_check_mark: 2 packages built:

i3altlayout
i3altlayout.dist


Improve callback documentation for outputs and accumulate_grad_batches (Resolves #15315)

What does this PR do?
Adds brief documentation explaining the outputs parameter to callback hooks, and that potentially unexpected behavior occurs when using accumulate_grad_batches > 1
Fixes #15315
Does your PR introduce any breaking changes? If yes, please list them.
None
Before submitting

[X] Was this discussed/approved via a GitHub issue? (not for typos and docs)
[X] Did you read the contributor guideline, Pull Request section?
[X] Did you make sure your PR does only one thing, instead of bundling different changes together?
[X] Did you make sure to update the documentation with your changes? (if necessary)
[ ] Did you write any new necessary tests? (not for typos and docs)
[X] Did you verify new and existing tests pass locally with your changes?
[X] Did you list all the breaking changes introduced by this pull request?
[X] Did you update the CHANGELOG? (not for typos, docs, test updates, or minor internal changes/refactors)

PR review
Anyone in the community is welcome to review the PR.
Before you start reviewing, make sure you have read the review guidelines. In short, see the following bullet-list:

[ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?
Make sure you had fun coding 🙃

I'm not sure of the best place to put the documentation update, so I chose what I thought was the best spot but I'm happy to move it elsewhere. I built docs locally and I think it looks reasonable but let me know if changes are needed
Before

After


when making a socket non-blocking, get & OR flags

Motivation:
Previously, we would just F_SETFL, O_NONBLOCK which would erase all
possibly pre-existing flags which isn't great.
Modifications:
First get the existing flags and then do F_SETFL, existingFlags | O_NONBLOCK.
Result:
Possibly helps with #1030, definitely better style.

It'd be nice to run a test: you can probably do that by duping an FD. Want to write it?


Fix crate build with clang/LLVM 16

The dependent carate blkid-sys has already a fix in master but it was not released yet. And we are using this custom fork with the custom branch. So, I have to update it with the fix.

@Silverhorn27 please review )