SOLR-16163: Review unintended try-with-resources closing-order modifications

See: SOLR-16163

From @dsmiley's comment on PR 815:

I suspect the searcher and/or request being open after the core close will keep the core increment one higher and thus not actually closed until the searcher/request is.

I dug into this a bit more and it's quite tricky.
The problem manifests when the core.close() call happens before searcher.decref() ... but only if the core.close() call in question is the last call to close() for the given core. Until core.refCount becomes 0, core.close() is basically just bookkeeping; but the last core.close() proceeds to doClose(), which calls directoryFactory.close() -- the CachingDirectoryFactory implementation of which blocks waiting for its cached Directory instances to be released. The SolrIndexSearcher whose closing was reordered to follow core.close() actually holds a reference to the cached Directory instance, not the SolrCore itself, so the thread indeed leaks/resource is not closed.
Looking more closely at why this issue addressed by #815 was hard to reproduce: the bulk of the replication in TestReplicationHandler takes place via explicit fetchindex command -- almost always with the special test param wait=true, causing the associated replication fetch to take place (from start to finish) within the context/lifetime of the enclosing SolrQueryRequest, which itself caries a reference to the SolrCore, ensuring that the replication code will not be the last call to core.close(). So core.close() amounts to just a decrement of a refcount -- it doesn't block, and the searcher.decref() happens ok, even though out-of-order.
The problem happens when polling replication ("indexFetcher" thread) happens to hit around the time of core close -- all the other core references have been decremented, and the affected code is left holding the only remaining reference to the core and (via the SolrIndexSearcher) to the Directory instance. Polling replication is vulnerable (whereas explicit fetchindex command is not) because polling is a scheduled task that doesn't take place within the context of a SolrQueryRequest holding references to the SolrCore. Indeed, I verified that the problem addressed by #815 could be equally (though hackily) addressed by wrapping the polling doFetch() in a try-with-resources block artificially incrementing the refCount for the SolrCore!
I'm not sure whether there might be other cases that would trigger this, especially with other areas of the code; but I think the prudent thing to do for now would be to take the instances identified in this PR and restore the original close order -- i.e. SolrIndexSearcher.decref() (or SolrQueryRequest.close(), which in turn may call SolrIndexSearcher.decref()) before calling close() on the associated SolrCore.

So my overall comment at looking at the underlying cause of the "out of order" is that it would be more clear to move the closes that order matters closer to where they should be closed (nested try w/ resources or otherwise) instead of trying to do multiple close in a finally.


Crashes running tests on aarch64 and ppc64le

Starting with libosmium 2.6.0 a number of tests have been crashing due to apparent heap corruption on aarch64 although this only came to my attention with 2.8.0 when aarch64 was added to Fedora's primary build system. I could never really figure out what was going on however and debugging in a VM running on x864_64 was very slow.
With 2.10.2 we now have ppc64 in the primary build system and I am seeing essentially the same failures on ppc64le (though not on big endian) so I thought it was probably time to see if you had any ideas... Here are the build logs for 2.10.2 on aarch64 and ppc64le:

https://kojipkgs.fedoraproject.org/work/tasks/2495/16472495/build.log (aarch64)
https://kojipkgs.fedoraproject.org/work/tasks/2499/16472499/build.log (ppc64le)

My previous work on attempting to analyse it can be seen at https://bugzilla.redhat.com/show_bug.cgi?id=1366328#c5 and come down to this valgrind report:
==11158== Thread 2 _osmium_write:
==11158== Invalid read of size 8
==11158==    at 0x1B5674: wait (future:325)
==11158==    by 0x1B5674: _M_get_result (future:687)
==11158==    by 0x1B5674: get (future:766)
==11158==    by 0x1B5674: pop (queue_util.hpp:142)
==11158==    by 0x1B5674: operator() (write_thread.hpp:85)
==11158==    by 0x1B5674: osmium::io::Writer::write_thread(osmium::thread::Queue<std::future<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::unique_ptr<osmium::io::Compressor, std::default_delete<osmium::io::Compressor> >&&, std::promise<bool>&&) (writer.hpp:124)
==11158==    by 0x49BABFB: ??? (in /usr/lib64/libstdc++.so.6.0.22)
==11158==    by 0x48C7173: start_thread (in /usr/lib64/libpthread-2.24.90.so)
==11158==    by 0x4C93F87: thread_start (in /usr/lib64/libc-2.24.90.so)
==11158==  Address 0x4d6cba0 is 16 bytes inside a block of size 48 free'd
==11158==    at 0x48854F4: operator delete(void*) (vg_replace_malloc.c:576)
==11158==    by 0x1B58A3: _M_release (shared_ptr_base.h:166)
==11158==    by 0x1B58A3: ~__shared_count (shared_ptr_base.h:662)
==11158==    by 0x1B58A3: ~__shared_ptr (shared_ptr_base.h:928)
==11158==    by 0x1B58A3: ~shared_ptr (shared_ptr.h:93)
==11158==    by 0x1B58A3: ~__basic_future (future:641)
==11158==    by 0x1B58A3: ~future (future:731)
==11158==    by 0x1B58A3: destroy<std::future<std::__cxx11::basic_string<char> > > (new_allocator.h:124)
==11158==    by 0x1B58A3: destroy<std::future<std::__cxx11::basic_string<char> > > (alloc_traits.h:467)
==11158==    by 0x1B58A3: pop_front (stl_deque.h:1554)
==11158==    by 0x1B58A3: pop (stl_queue.h:271)
==11158==    by 0x1B58A3: wait_and_pop (queue.hpp:171)
==11158==    by 0x1B58A3: pop (queue_util.hpp:141)
==11158==    by 0x1B58A3: operator() (write_thread.hpp:85)
==11158==    by 0x1B58A3: osmium::io::Writer::write_thread(osmium::thread::Queue<std::future<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::unique_ptr<osmium::io::Compressor, std::default_delete<osmium::io::Compressor> >&&, std::promise<bool>&&) (writer.hpp:124)
==11158==    by 0x49BABFB: ??? (in /usr/lib64/libstdc++.so.6.0.22)
==11158==    by 0x48C7173: start_thread (in /usr/lib64/libpthread-2.24.90.so)
==11158==    by 0x4C93F87: thread_start (in /usr/lib64/libc-2.24.90.so)
==11158==  Block was alloc'd at
==11158==    at 0x48843D4: operator new(unsigned long) (vg_replace_malloc.c:334)
==11158==    by 0x1B94AF: allocate (new_allocator.h:104)
==11158==    by 0x1B94AF: allocate (alloc_traits.h:416)
==11158==    by 0x1B94AF: __allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<std::__future_base::_State_baseV2, std::allocator<std::__future_base::_State_baseV2>, (__gnu_cxx::_Lock_policy)2u> > > (allocated_ptr.h:103)
==11158==    by 0x1B94AF: __shared_count<std::__future_base::_State_baseV2, std::allocator<std::__future_base::_State_baseV2> > (shared_ptr_base.h:613)
==11158==    by 0x1B94AF: __shared_ptr<std::allocator<std::__future_base::_State_baseV2> > (shared_ptr_base.h:1100)
==11158==    by 0x1B94AF: shared_ptr<std::allocator<std::__future_base::_State_baseV2> > (shared_ptr.h:319)
==11158==    by 0x1B94AF: allocate_shared<std::__future_base::_State_baseV2, std::allocator<std::__future_base::_State_baseV2> > (shared_ptr.h:620)
==11158==    by 0x1B94AF: make_shared<std::__future_base::_State_baseV2> (shared_ptr.h:636)
==11158==    by 0x1B94AF: promise (future:1024)
==11158==    by 0x1B94AF: void osmium::io::detail::add_to_queue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(osmium::thread::Queue<std::future<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) (queue_util.hpp:81)
==11158==    by 0x1B98C7: send_to_output_queue (output_format.hpp:117)
==11158==    by 0x1B98C7: osmium::io::detail::XMLOutputFormat::write_header(osmium::io::Header const&) (xml_output_format.hpp:475)
==11158==    by 0x1BA46F: operator() (writer.hpp:231)
==11158==    by 0x1BA46F: ensure_cleanup<osmium::io::Writer::Writer(const osmium::io::File&, TArgs&& ...) [with TArgs = {osmium::io::Header&, osmium::io::overwrite}]::<lambda()> > (writer.hpp:152)
==11158==    by 0x1BA46F: osmium::io::Writer::Writer<osmium::io::Header&, osmium::io::overwrite>(osmium::io::File const&, osmium::io::Header&, osmium::io::overwrite&&) (writer.hpp:230)
==11158==    by 0x1BAA9F: osmium::io::Writer::Writer<osmium::io::Header&, osmium::io::overwrite>(char const*, osmium::io::Header&, osmium::io::overwrite&&) (writer.hpp:242)
==11158==    by 0x1B048B: ____C_A_T_C_H____T_E_S_T____7() (test_output_iterator.cpp:11)
==11158==    by 0x1C81EB: invoke (catch.hpp:6582)
==11158==    by 0x1C81EB: invoke (catch.hpp:7519)
==11158==    by 0x1C81EB: invokeActiveTestCase (catch.hpp:6158)
==11158==    by 0x1C81EB: runCurrentTest (catch.hpp:6129)
==11158==    by 0x1C81EB: runTest (catch.hpp:5949)
==11158==    by 0x1C81EB: Catch::runTests(Catch::Ptr<Catch::Config> const&) (catch.hpp:6297)
==11158==    by 0x1AF597: run (catch.hpp:6405)
==11158==    by 0x1AF597: run (catch.hpp:6384)
==11158==    by 0x1AF597: main (catch.hpp:10333)

Note that valgrind runs clean on the same tests on x86_64 and big endian ppc64. As I say in the bug that in turn points at this code:
std::future<T> data_future;
m_queue.wait_and_pop(data_future);
data = std::move(data_future.get());

and specifically seems to say that the attempt to get the value of the future on the third line is accessing memory that was freed while popping the future from the queue on the previous line.
That doesn't seem to make much sense though, because wait_and_pop is doing:
value = std::move(m_queue.front());
m_queue.pop();

so the returned value is moved out of the queue before the pop and hence the pop should be destroying an empty value, not the returned value.
So do you have any ideas that might help? Is this some sort of thread synchronisation bug? or maybe a nasty issue deep in glibc/libstdc++ on those platforms?

What Fedora calls aarch64 seems to be called Arm64 on Debian. Fedora's ppc64le is Debian's ppc64el. Both build fine on Debian.

Looking at the code
(1) std::future<T> data_future;
(2) m_queue.wait_and_pop(data_future);
(3) data = std::move(data_future.get());

In line (1) a non-valid future is generated. wait_and_pop in line (2) should make it valid. But if it doesn't for some reason, the behaviour of get() in line (3) is undefined. We can test validity with an assert(data_future.valid()).

What compiler is Debian using? Fedora is on gcc/libstdc++ 6.2.1 currently.

Looks like Debian is using g++-6_6.2.0-13 gcc-6_6.2.0-13 libc6-dev_2.24-5 libstdc++-6-dev_6.2.0-13 libstdc++6_6.2.0-13 linux-libc-dev_4.8.5-1

Of course if it is some sort of thread race condition it may depend on many cores the machine doing the build has or something... I'm running a ppc64le build with the assert in at the moment anyway.

Ah, I found an old build of libosmium 2.8.0 that failed in the same way on
g++-6_6.1.1-10 gcc-6_6.1.1-10 libc6-dev_2.23-4 libstdc++-5-dev_5.4.0-6 libstdc++-6-dev_6.1.1-10 libstdc++6_6.1.1-10 linux-libc-dev_4.6.4-1. But before and after then the builds were okay. Either this is a bug that only happens on very specific compiler/libc versions, or it is intermittent and some difference in the build env on fedora makes it happen more often.

Well the assert didn't fire, but that doesn't entirely surprise me, as to my eyes the problem seems to be that the pop on the underlying queue is running the destructor on the future that has already been moved out of the queue, leaving the memory for the future in an undefined state so it might well still appear valid.
Incidentally I did write a small test program to try and reproduce the problem but naturally it failed to do so...
Also I realise that as I got that valgrind trace in a single processor aarch64 vm it's unlikely that the hardware configuration has any effect.

I've got access to a ppc64le vm now (on a ppc64 host, so fast) and can reproduce. I'm seeing the same memcheck output as before but I've also run it under helgrind now and am getting threading issues reported that look related:
==19859== Possible data race during read of size 8 at 0x522F518 by thread #3
==19859== Locks held: none
==19859==    at 0x1C2F80: std::__future_base::_State_baseV2::wait() (future:329)
==19859==    by 0x1D7D8B: get_input (input_format.hpp:74)
==19859==    by 0x1D7D8B: osmium::io::detail::XMLParser::run() (xml_input_format.hpp:656)
==19859==    by 0x1D8C5B: parse (input_format.hpp:143)
==19859==    by 0x1D8C5B: osmium::io::Reader::parser_thread(osmium::io::File const&, osmium::thread::Queue<std::future<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, osmium::thread::Queue<std::future<osmium::memory::Buffer> >&, std::promise<osmium::io::Header>&&, osmium::io::detail::reader_options) (reader.hpp:139)
==19859==    by 0x1BD647: _M_invoke<0ul, 1ul, 2ul, 3ul, 4ul> (functional:1400)
==19859==    by 0x1BD647: operator() (functional:1389)
==19859==    by 0x1BD647: std::thread::_State_impl<std::_Bind_simple<void (*(std::reference_wrapper<osmium::io::File>, std::reference_wrapper<osmium::thread::Queue<std::future<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::reference_wrapper<osmium::thread::Queue<std::future<osmium::memory::Buffer> > >, std::promise<osmium::io::Header>, osmium::io::detail::reader_options))(osmium::io::File const&, osmium::thread::Queue<std::future<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, osmium::thread::Queue<std::future<osmium::memory::Buffer> >&, std::promise<osmium::io::Header>&&, osmium::io::detail::reader_options)> >::_M_run() (thread:196)
==19859==    by 0x4AE8377: ??? (in /usr/lib64/libstdc++.so.6.0.22)
==19859==    by 0x489C6AF: mythread_wrapper (hg_intercepts.c:389)
==19859==    by 0x49C8013: start_thread (in /usr/lib64/libpthread-2.23.so)
==19859==    by 0x4E6A83F: clone (in /usr/lib64/libc-2.23.so)
==19859==
==19859== This conflicts with a previous write of size 8 by thread #2
==19859== Locks held: none
==19859==    at 0x1BE340: swap<std::__future_base::_Result_base*> (move.h:191)
==19859==    by 0x1BE340: _M_swap (tuple:331)
==19859==    by 0x1BE340: swap (tuple:1215)
==19859==    by 0x1BE340: swap<std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter> (tuple:1548)
==19859==    by 0x1BE340: swap (unique_ptr.h:352)
==19859==    by 0x1BE340: std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) (future:538)
==19859==    by 0x1BEC17: __invoke_impl<void, void (std::__future_base::_State_baseV2::* const&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()>*, bool*> (functional:235)
==19859==    by 0x1BEC17: __invoke<void (std::__future_base::_State_baseV2::* const&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()>*, bool*> (functional:260)
==19859==    by 0x1BEC17: operator()<std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()>*, bool*> (functional:613)
==19859==    by 0x1BEC17: _M_invoke<0ul, 1ul, 2ul> (functional:1400)
==19859==    by 0x1BEC17: operator() (functional:1389)
==19859==    by 0x1BEC17: void std::__once_call_impl<std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> >() (mutex:587)
==19859==    by 0x4AE6D13: __once_proxy (in /usr/lib64/libstdc++.so.6.0.22)
==19859==    by 0x49D1C7B: __pthread_once_slow (in /usr/lib64/libpthread-2.23.so)
==19859==    by 0x1B963F: __gthread_once (gthr-default.h:699)
==19859==    by 0x1B963F: call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()>*, bool*> (mutex:619)
==19859==    by 0x1B963F: std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) [clone .constprop.677] (future:393)
==19859==    by 0x1DB23B: set_value (future:1081)
==19859==    by 0x1DB23B: void osmium::io::detail::add_to_queue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(osmium::thread::Queue<std::future<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) (queue_util.hpp:76)
==19859==    by 0x1DC8DB: osmium::io::detail::ReadThreadManager::run_in_thread() (read_thread.hpp:79)
==19859==    by 0x1BD803: __invoke_impl<void, void (osmium::io::detail::ReadThreadManager::* const&)(), osmium::io::detail::ReadThreadManager*> (functional:235)
==19859==    by 0x1BD803: __invoke<void (osmium::io::detail::ReadThreadManager::* const&)(), osmium::io::detail::ReadThreadManager*> (functional:260)
==19859==    by 0x1BD803: operator()<osmium::io::detail::ReadThreadManager*> (functional:613)
==19859==    by 0x1BD803: _M_invoke<0ul> (functional:1400)
==19859==    by 0x1BD803: operator() (functional:1389)
==19859==    by 0x1BD803: std::thread::_State_impl<std::_Bind_simple<std::_Mem_fn<void (osmium::io::detail::ReadThreadManager::*)()> (osmium::io::detail::ReadThreadManager*)> >::_M_run() (thread:196)
==19859==  Address 0x522f518 is 24 bytes inside a block of size 48 alloc'd
==19859==    at 0x4895B24: operator new(unsigned long) (vg_replace_malloc.c:334)
==19859==    by 0x1DB0E7: allocate (new_allocator.h:104)
==19859==    by 0x1DB0E7: allocate (alloc_traits.h:416)
==19859==    by 0x1DB0E7: __allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<std::__future_base::_State_baseV2, std::allocator<std::__future_base::_State_baseV2>, (__gnu_cxx::_Lock_policy)2u> > > (allocated_ptr.h:103)
==19859==    by 0x1DB0E7: __shared_count<std::__future_base::_State_baseV2, std::allocator<std::__future_base::_State_baseV2> > (shared_ptr_base.h:613)
==19859==    by 0x1DB0E7: __shared_ptr<std::allocator<std::__future_base::_State_baseV2> > (shared_ptr_base.h:1100)
==19859==    by 0x1DB0E7: shared_ptr<std::allocator<std::__future_base::_State_baseV2> > (shared_ptr.h:319)
==19859==    by 0x1DB0E7: allocate_shared<std::__future_base::_State_baseV2, std::allocator<std::__future_base::_State_baseV2> > (shared_ptr.h:620)
==19859==    by 0x1DB0E7: make_shared<std::__future_base::_State_baseV2> (shared_ptr.h:636)
==19859==    by 0x1DB0E7: promise (future:1024)
==19859==    by 0x1DB0E7: void osmium::io::detail::add_to_queue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(osmium::thread::Queue<std::future<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) (queue_util.hpp:74)
==19859==    by 0x1DC8DB: osmium::io::detail::ReadThreadManager::run_in_thread() (read_thread.hpp:79)
==19859==    by 0x1BD803: __invoke_impl<void, void (osmium::io::detail::ReadThreadManager::* const&)(), osmium::io::detail::ReadThreadManager*> (functional:235)
==19859==    by 0x1BD803: __invoke<void (osmium::io::detail::ReadThreadManager::* const&)(), osmium::io::detail::ReadThreadManager*> (functional:260)
==19859==    by 0x1BD803: operator()<osmium::io::detail::ReadThreadManager*> (functional:613)
==19859==    by 0x1BD803: _M_invoke<0ul> (functional:1400)
==19859==    by 0x1BD803: operator() (functional:1389)
==19859==    by 0x1BD803: std::thread::_State_impl<std::_Bind_simple<std::_Mem_fn<void (osmium::io::detail::ReadThreadManager::*)()> (osmium::io::detail::ReadThreadManager*)> >::_M_run() (thread:196)
==19859==    by 0x4AE8377: ??? (in /usr/lib64/libstdc++.so.6.0.22)
==19859==    by 0x489C6AF: mythread_wrapper (hg_intercepts.c:389)
==19859==    by 0x49C8013: start_thread (in /usr/lib64/libpthread-2.23.so)
==19859==    by 0x4E6A83F: clone (in /usr/lib64/libc-2.23.so)
==19859==  Block was alloc'd by thread #2

Hmm, so is the issue that we set the value of the future from one thread after adding it to the queue and that the other thread might by moving the future out of the queue at the same time?

Well, if that is the case, then the standard library is broken. The whole point of a std::promise/std::future is that you can put things in on one side and get them out on the other side without hassle.

A future is thread safe with respect to get/set/wait operations on it sure, but as best I can see moving that future is not safe at all.
Looking at the libstdc++ implementation when you create a promise it has a member that is a shared_ptr to a state object. When you call get_future on the promise it creates a future object, giving it a copy of that shared_ptr and returns that future to you.
So the promise and the future both now have access to the same shared_ptr that points at the common state, and that state internally does locking around get/set/wait, but if you move the future to a different thread then the shared_ptr to that shared state now races between the destruction of the promise and future objects.
At least that is my reading of the code so far...
Most of the examples I've found work by creating a promise and then passing a reference to it into a background thread which will set the value, so promise and future stay owned by one thread which destroys both.

I have no idea what changed but libosmium 2.11.0 has built successfully and passed tests on all architectures so either something has changed in libosmium or some bug has been fixed in the toolchain or system libraries. I suspect the latter...


WIP New Sensor Platform: oru - Orange and Rockland Utility Smart Energy M…

…eter Sensor
Breaking Change:

Description:
Related issue (if applicable): fixes #
Pull request with documentation for home-assistant.io (if applicable): home-assistant/home-assistant.io#<home-assistant.io PR number goes here>
Example entry for configuration.yaml (if applicable):

Checklist:

[ ] The code change is tested and works locally.
[ ] Local tests pass with tox. Your PR cannot be merged unless tests pass
[ ] There is no commented out code in this PR.
[ ] I have followed the development checklist

If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[ ] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[ ] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
[ ] Untested files have been added to .coveragerc.

If the code does not interact with devices:

[ ] Tests have been added to verify that the new code works.

Hello @bvlaicu,
When attempting to inspect the commits of your pull request for CLA signature status among all authors we encountered commit(s) which were not linked to a GitHub account, thus not allowing us to determine their status(es).
The commits that are missing a linked GitHub account are the following:

679fc0795cf688c939670b0d38c769127a69cae3 - This commit has something that looks like an email address (bvlaicu@us.ibm.com). Maybe try linking that to GitHub?.

Unfortunately, we are unable to accept this pull request until this situation is corrected.
Here are your options:

If you had an email address set for the commit that simply wasn't linked to your GitHub account you can link that email now and it will retroactively apply to your commits. The simplest way to do this is to click the link to one of the above commits and look for a blue question mark in a blue circle in the top left. Hovering over that bubble will show you what email address you used. Clicking on that button will take you to your email address settings on GitHub. Just add the email address on that page and you're all set. GitHub has more information about this option in their help center.

If you didn't use an email address at all, it was an invalid email, or it's one you can't link to your GitHub, you will need to change the authorship information of the commit and your global Git settings so this doesn't happen again going forward. GitHub provides some great instructions on how to change your authorship information in their help center.

If you only made a single commit you should be able to rungit commit --amend --author="Author Name<EMAIL_ADDRESS>
(substituting Author Name and<EMAIL_ADDRESS>for your actual information) to set the authorship information.
If you made more than one commit and the commit with the missing authorship information is not the most recent one you have two options:

You can re-create all commits missing authorship information. This is going to be the easiest solution for developers that aren't extremely confident in their Git and command line skills.
You can use this script that GitHub provides to rewrite history. Please note: this should be used only if you are very confident in your abilities and understand its impacts.

Whichever method you choose, I will come by to re-check the pull request once you push the fixes to this branch.

We apologize for this inconvenience, especially since it usually bites new contributors to Home Assistant. We hope you understand the need for us to protect ourselves and the great community we all have built legally. The best thing to come out of this is that you only need to fix this once and it benefits the entire Home Assistant and GitHub community.
Thanks, I look forward to checking this PR again soon! :heart:

Hello @bvlaicu,
When attempting to inspect the commits of your pull request for CLA signature status among all authors we encountered commit(s) which were not linked to a GitHub account, thus not allowing us to determine their status(es).
The commits that are missing a linked GitHub account are the following:

1d34b7ea9c1bf07404aab5d49b9b8a49ba327fb2 - This commit has something that looks like an email address (bvlaicu@us.ibm.com). Maybe try linking that to GitHub?.
679fc0795cf688c939670b0d38c769127a69cae3 - This commit has something that looks like an email address (bvlaicu@us.ibm.com). Maybe try linking that to GitHub?.

Unfortunately, we are unable to accept this pull request until this situation is corrected.
Here are your options:

If you had an email address set for the commit that simply wasn't linked to your GitHub account you can link that email now and it will retroactively apply to your commits. The simplest way to do this is to click the link to one of the above commits and look for a blue question mark in a blue circle in the top left. Hovering over that bubble will show you what email address you used. Clicking on that button will take you to your email address settings on GitHub. Just add the email address on that page and you're all set. GitHub has more information about this option in their help center.

If you didn't use an email address at all, it was an invalid email, or it's one you can't link to your GitHub, you will need to change the authorship information of the commit and your global Git settings so this doesn't happen again going forward. GitHub provides some great instructions on how to change your authorship information in their help center.

If you only made a single commit you should be able to rungit commit --amend --author="Author Name<EMAIL_ADDRESS>
(substituting Author Name and<EMAIL_ADDRESS>for your actual information) to set the authorship information.
If you made more than one commit and the commit with the missing authorship information is not the most recent one you have two options:

You can re-create all commits missing authorship information. This is going to be the easiest solution for developers that aren't extremely confident in their Git and command line skills.
You can use this script that GitHub provides to rewrite history. Please note: this should be used only if you are very confident in your abilities and understand its impacts.

Whichever method you choose, I will come by to re-check the pull request once you push the fixes to this branch.

We apologize for this inconvenience, especially since it usually bites new contributors to Home Assistant. We hope you understand the need for us to protect ourselves and the great community we all have built legally. The best thing to come out of this is that you only need to fix this once and it benefits the entire Home Assistant and GitHub community.
Thanks, I look forward to checking this PR again soon! :heart:

I'll create a new PR. This got messed up because of the wrong git user.email config used.


Use new M.Q.Synthesis namespace in samples

This PR updates samples to use the new M.Q.Synthesis namespace, available in the upcoming release.

@cgranade Thanks for the comments

Waiting for #382 to be merged.


Update 'aima-data' submodule

I've noticed that the test run-text-test.jl fails because it cannot locate gutenberg.txt inside the submodule aima-data. This is because the aima-data submodule of this repository does not point to the latest commit of aima-data repo. We need to update that. I think only those who have complete access to this repository can update it.
Please look into this @norvig @mikhail-j

@utkarsh23 @norvig  I checked run_text_tests.jl and the relative path for gutenberg.txt is the most recent (aima-data/gutenberg.txt 9ba0497).
If you look at run_travis_tests.sh, the travis-ci build clones the aima-data repository with the latest commits.
This means that during Travis-CI testing, both /aima-data and /tests/aima-data exist.
But /tests/aima-data is used by the Base.Test tests in /tests.
The main reason why /aima-data exists as a git submodule is because aima-julia uses it to initialize the machine learning datasets for the machine learning algorithms.
As a result, the git submodule should be updated only if a dataset was moved or added.

@mikhail-j thanks for the repsonse! Much appreciated! :smile:


ZAP parser: do not resolve hostname to IP address during endpoint creation (#2284)

#2284
ZAP Parser:

disabled fqdn to ip resolving;
changed main endpoint visualization from IPport to scheme://fqdn:port

I think it's a good improvement, but I am wondering if we should make it optional to use the old behaviour? Someone has experience with ZAP scans/imports? Changing endpoint value may also impact dedupe.

@valentijnscholten Any way except creating new scanner entry like "ZAP Scan with Hostnames"?
We can think about adding a parameter "use_hostnames" with default value "false" if not set, for example. But it will take more efforts I think.
Also really this PR doesn't change the behavior if there was an IP address used as host address.
So, it your target was https://<IP_ADDRESS>:8443 you will have exactly the same endpoint. I just removed enforcing of converting from hostname to ip address. I.e. the endpoint is just a real from the report (now endpoint is changing from original by importing tool).
I think this option was useful for the company who wrote this import in 2013 (see the copyright note). But it is obsoleted now.

Just look: with this fix we have clear value of the endpoint while without it we have something like XX.XXX.XXX.XXXYYYY (X - IP address, Y - port number)

I think it would have to be a setting in settings.py. But you may be right that it is not needed. I have no experience with endpoints at all, so I'll have to leave it to others to decide.

A new challenge to learn DefectDojo closer :-D :+1:

I've only used endpoints a bit - typically they're not as important as the product name + test environment especially for AppSec work.
That said, I think it's a good idea to default to this behaviour (not resolving hostnames to IPs) and to put an boolean in settings.py for those that really want the previous style of behaviour.  Heck, you can control how this works by using the IP or hostname in Zap so it's upstream of DD's import.
TBH, when I've needed/wanted to change the behaviour of a scanner's import, I've just written either a pre or post importing tools that either changes the file before importing or updated findings using the API - so those options will still exist after this PR is merged for those that have special reasons to save scanner data stored in a certain way.

Thanks, @madchap. Will try :)

@mtesauro @devGregA I suggest we go with this PR and remove the DNS resolution stuff as it seems out of place anyway. No other scanner importer does this. So no settings flag for the old behaviour, just remove it. WDYT?

2 approvals


multipart/form-data The connection was reset

I'm trying to upload files with fresh so i put this form into a pages :
export default function Audiobook() {
  return (

Upload audioboks

      <form
        encType="multipart/form-data"
        action="/api/audiobooks/"
        method="post"
      >

          Author:
          <input type="text" name="author" />

          Book name:
          <input type="text" name="book-name" />

          Chapter name:
          <input type="text" name="chapter-name" />

          Audio file:
          <input type="file" name="audio" accept="audio/*" />

        <input type="submit" value="upload" />
      </form>

  );
}

/api/audiobooks/ looks like this :
export const handler = async (
  _req: Request,
  _ctx: HandlerContext,
): Promise<Response> => {
  return new Response("Audiobooks !");
};

and when i send the form i got
The connection was reset

The connection to the server was reset while the page was loading.

    The site could be temporarily unavailable or too busy. Try again in a few moments.
    If you are unable to load any pages, check your computer’s network connection.
    If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web.

Does multipart/form-data supported by fresh ?
if yes how can i get it working ? any examples ?

Did you consume the request form data body with const form = await req.formData()?

I don't have the opportunity since an empty endpoint give me the connection was reset 😟

Would you mind creating a little demo project so I can reproduce the issue?

Would you mind creating a little demo project so I can reproduce the issue?

I will create one probably tomorrow

Here is a repo with the problem : https://github.com/Kleak/fresh-file-upload-bug
go to http://localhost:8000/upload and try upload a file you should see a page with Audiobook !
but you see This site can't be reached on chrome and The connection was reset on firefox

I activate deno deploy so you can try here https://fresh-file-upload-bug.deno.dev/upload look like nothing is sent when we validate the form

@Kleak

I found the problem

Please can you share the solution.

I found the problem

It will be great if you can share the problem.


chest file got corrupted

a page of my /chest got corrupted and it said it was backed up but i dont know how to get it back can someone help?

The corrupted file is stored in the same folder as the normal client chest pages: <game directory>/nbteditor/client_chest. The page numbers are 0-indexed, meaning page 1's file name is page0.nbt, page 2's file name is page1.nbt, etc.
Before doing anything, I recommend copying the corrupted file to outside the game directory in case something unexpected happens. I would also recommend not running the game. The reload button on the page might be more convenient, but this might complicate things in unexpected ways.
Restoring the page isn't going to be as straightforward as renaming the corrupted page back to a normal page.
There should be an error being printed out in the console and logs that could indicate how the file is corrupted (this error only appears when trying to load it before realizing the page is corrupt, so you would need to rename the corrupted page back to a normal page). I'm not aware of any NBT file restoring tools, but that may exist.
Did anything weird happen before the page was corrupted? Like a game crash, computer bluescreen, or putting huge amounts of data in the page? If there is too much data, you may need to increase Minecraft's ram and rename the page back. You could also use an external tool like NBT Explorer to manually move some of the items to a different page. If the file's data itself is truly corrupted, you may need to manually edit the file using a hex editor. https://wiki.vg/NBT appears to layout the NBT file format.
If you decide that the items aren't worth the effort, simply delete the corrupted file and the error will go away. If the file's data itself is corrupted, the items are important, and you're not comfortable attempting to recover it with a hex editor, you could post it here and I could take a look at it.

i found the problem why it was corrupted i put too much nbt weight and it corrupted


Moving already parented item is an error

If you have an item whose .parent() is not None, it is now a ValueError to add it to another composition.  You need to remove it from the other composition before adding it to the new one.  This is to anticipate an implementation detail of the C++ API.

Codecov Report

Merging #399 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #399      +/-   ##
==========================================
+ Coverage   87.05%   87.06%   +<.01%
==========================================
  Files          63       63
  Lines        5569     5573       +4
==========================================
+ Hits         4848     4852       +4
  Misses        721      721

Impacted Files
Coverage Δ

opentimelineio/core/composition.py
94.35% <100%> (ø)
:arrow_up:

...neio_contrib/adapters/advanced_authoring_format.py
92.11% <100%> (+0.04%)
:arrow_up:

opentimelineio/core/composable.py
95.74% <100%> (+0.18%)
:arrow_up:

Continue to review full report at Codecov.

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

This looks pretty good. I wonder if we want a Composable.remove_from_parent() convenience method?


models

Well done, but remove  (or move table.stl file from root directory), please.

Models were placed into correct place, table.stl deleted from root directory. I accept merge

@ldemk merge files, please.


Refreshing profile page fails

If you simply reload a profile page it will fail. From what i can see the aquarius query fails. To reproduce just go to a profile page (not your own, and don't have a wallet connected) and just refresh

to quote myself and don't have a wallet connected)

Yeah sorry 😅  forgot to post the video with the account NOT connected.
https://user-images.githubusercontent.com/13741335/177356989-a7177fe4-190a-4ae8-af9a-91693223c4b2.mp4

try this one https://market.oceanprotocol.com/profile/0x9cEE6de6D601Edb9284C8538b5a041cbEffc463F

https://market.oceanprotocol.com/profile/0x9cEE6de6D601Edb9284C8538b5a041cbEffc463F

Yeap, this one breaks 👍🏽  it seems related to this profile

nope, more break , this was just an example

😅  in local I can't reproduce it either. It works for the profile above too
https://user-images.githubusercontent.com/13741335/177362964-4571cea5-3e5f-44f0-95ea-41b36f25c9d1.mp4

I'm going to close this since it's not replicating


Implement sort feature

This PR allows the user to sort the application list according to their companies, positions or dates, either in forward or reverse order. The ability to sort by interview dates will be added in future.
The format of the command is sort [o/ORDER] [r/], where ORDER can be company, position or date. The r/ prefix if added causes the sort order to be reversed.
This resolves #88

Codecov Report

Merging #99 (979be8e) into master (6a27f94) will increase coverage by 3.35%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##             master      #99      +/-   ##
============================================
+ Coverage     72.24%   75.59%   +3.35%
- Complexity      400      519     +119
============================================
  Files            70       77       +7
  Lines          1214     1508     +294
  Branches        122      189      +67
============================================
+ Hits            877     1140     +263
- Misses          306      332      +26
- Partials         31       36       +5

Impacted Files
Coverage Δ

src/main/java/seedu/application/model/Model.java
100.00% <ø> (ø)

...plication/logic/commands/SortByCompanyCommand.java
100.00% <100.00%> (ø)

.../application/logic/commands/SortByDateCommand.java
100.00% <100.00%> (ø)

...lication/logic/commands/SortByPositionCommand.java
100.00% <100.00%> (ø)

.../seedu/application/logic/commands/SortCommand.java
100.00% <100.00%> (ø)

...pplication/logic/parser/ApplicationBookParser.java
100.00% <100.00%> (ø)

...edu/application/logic/parser/ArgumentMultimap.java
100.00% <100.00%> (ø)

...java/seedu/application/logic/parser/CliSyntax.java
90.00% <100.00%> (+6.66%)
:arrow_up:

...du/application/logic/parser/SortCommandParser.java
100.00% <100.00%> (ø)

...ain/java/seedu/application/model/ModelManager.java
100.00% <100.00%> (ø)

... and 15 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


[Message Routing] Set CustomPartition implicitly when messageRouter is set

Motivation
This PR proposes some refactoring and fixes on message routing logic.
Modifications

getMessageRouter logic is refactored onPartitionedProducerImpl.
If messageRouter is set through ProducerBuilderImpl, messageRoutingMode needs to be set as MessageRoutingMode.CustomPartition implicitly. Default is MessageRoutingMode.RoundRobinPartition
Javadoc is fixed
Custom Message Router Documentation is fixed
UT coverage is added (ProducerBuilderImplTest and PartitionedProducerConsumerTest)

My concern was the following case while messageRoutingMode is not set by user and it comes as RoundRobinPartition as default through

I think the right fix here is:

in the builder, set the default messageRoutingMode to be null.
in the build() method:

if both messageRoutingMode and messageRouter are null, use RoundRobin
if messageRouter is set, messageRoutingMode should be CustomRobin
in setMessageRouter method, messageRouter should be null. if not, fail it immediately. if it is null, set messageRoutingMode to custom
in setMessageRoutingMode, if messageRouter is not null, it only accepts Custom.

Hi @merlimat @sijie
New patch have just submitted in the light of our discussion.
So, PR is ready for re-review.

rerun java8 tests


[Tree Details - Design] Suggest edit page to modify content

currently we need a way to modify content that needs to be updated or notify us when its broken. If a link doesn't work and we can't be notified then its useless.
we want most of the content to be modifiable, but not tampered.
Will look into design at the tree details container.

New Suggest Edit Screen
Nearly a copy of the add tree info screen from the planting flow. Will need to design remove info, whether we want dropdown menus for certain input fields, etc.
@zoobot are we missing anything from an edit field? The idea is that users can modify the information per tree since many trees info is missing.

Things to Change

[ ] Incorporate Canopy Size to general info
[ ] Nickname can be below the genus
[ ] Fruiting can be a default by the selected tree species. Not needed. Will remove.

Links

[ ] Will need to display the current links and put either a broken link button or the user can update the link.

Contact

[ ] Reference number to be removed since its automatically generated. Cannot change the info. Will remove.
[ ] Volunteer Name / Email needs to be removed since its automatically attached to the tree. Will remove.

Tree Info

[ ] Date planted to be removed.

Location

[ ] Do we want to combine the address into one?

Made changes of things to be removed or change its location. Will move onto how links will potentially work since its generated by default.


[NEVER MERGE] PoC work: add playground

This is PoC work for Fe playground, never merge this PR.
I succeeded in running Fe compiler and EVM on the browser, though there are still some limitations.
ref: #70

How to run

Install wasm-pack and npm
cd playground and wasm-pack build
cd www, npm install and npm run start

Currently, the playground can't work on chrome because of an issue related to solc-js,  please use firefox.
Known issues
solc-js
solc-js doesn't work on the browser because of some issues, so we need to wrap solc-js somehow. I used browser-solc as a wrapper for now, but I think it would be better to write a new wrapper instead of using browser-solc because this also has some issues.
dynamically sized value
When input the below code, panicked at 'tried to get the static encoding size of dynamically sized value', compiler/src/yul/operations/abi.rs:82:25 is reported(all panic information is output to console).
contract Bar:
    pub def __main__() -> string100:
        return string100("hi!")

error report
Currently, the type of compiler::errors::CompileError is actually Cow<'static, str>  and compiler::compile converts all error types to it, this is quite inconvenient to implement a user-friendly error report on the playground.
For example,
contract Foo:
    pub def __main__() -> u8:
        return u16(1)

would produce
TypeError on line 3
pub def __main__() -> u8:
        return u16(1)

on the browser.
TODOs

Address known issues
Allow to run arbitrary functions and pass args to it(Currently the implementation runs only   __main__  without args)
UI/UX improvements

Misc
I'm really dreaming of Yul compiler written by pure Rust. I'll start implementing the PoC of it as a private OSS activity. Please notify me if you are interested in this project.

Woah! :heart_eyes:  That's seriously cool!
Just a heads up that I'm on vacation this and next week (and @g-r-a-n-t also from next week) so if we are slow to respond it's just that. I'm super happy to see this progressing :pray:

I'm really dreaming of Yul compiler written by pure Rust. I'll start implementing the PoC of it as a private OSS activity. Please notify me if you are interested in this project.

We are definitely interested. I think I have heard @g-r-a-n-t dreaming of that, too. While I share the excitement about it I just want to highlight that we currently also get the YUL optimizer for free. Also, security wise, it's a nice property to be able to say that we share the last mile of the processing pipeline with Solidity. I think that could help us gain some reputation in terms of safety, or mitigate concerns. But apart from that, I fully agree that it would be nice to have a native YUL compiler in Rust.

@PascalPrecht As you are about to look into the website I just wanted to raise awareness that a wasm compiler for an in-browser compiler is in the works. Nothing actionable, just hinting :)

I'll rework it sometime later and send another PR.


Reporting the number of tests in GenotypePhenotypeAnalysisResult

This will close #98
Added a property to GenotypePhenotypeAnalysisResult called total_tests and it reports the total number of phenotype tests that were run for that analysis.

@lnrekerle please clean up the CI: AttributeError: 'GpCohortAnalysis' object has no attribute 'compare_by_recessive_variant_effect'


Update to go-coap 2.4.0

There were some issues with the inactivity refactoring

Pls use v2 branch. It uses coap 2.4+ coap and it will be merged in future to master when we release cloud 2.0.0.


Wide option didn't effect

Checklist:

[x] I updated to the latest version available
[x] I cleared the cache of my browser

Release with the issue: v0.11.0
Last working release (if known):
Browser and Operating System: Chrome Version 104.0.5112.101 @win10 / HA official client @iOS 15.4.1

Description of problem:
Wide option didn't effect,  empty space still in the right side (purple area).

Javascript errors shown in the web inspector (if applicable):

Additional information:

@abu9 Is this issue still present in the latest version?

closing as stale


Add truth state wildcard for DiscreteControl

As motivated in https://github.com/Deltares/Ribasim/issues/428#issuecomment-1642378964. The number of required entries in the logic table for DiscreteControl can be drastically reduced by introducing a wildcard A which means that a condition can be either true or false.

Refinement needs:

Is it the best to convert these wildcards into explicit truth states pre-simulation or can they be used as-is and dealt with in the control functionality on the Julia core?
Is it the best solution to do this processing in Ribasim Python or in the Julia core?
If it is done in Ribasim Python, how do we handle these processing steps? E.g. is it done when calling Model.write, or in a separate method that has to be called beforehand?

Prototype function for expanding the logic table:
    def expand_logic(logic):
        """
        Expand truth states by creating rows with all possible substitution combinations
        of 'F' and 'T' for 'A'.
        """
        logic_new = pd.DataFrame(columns=("node_id", "truth_state", "control_state"))

        for i, row in logic.iterrows():
            truth_state = row.truth_state
            n_substitutions = truth_state.count("A")

            truth_states_expanded = []

            for substitution in product("TF", repeat=n_substitutions):
                truth_state_expanded = ""
                index_s = 0

                for truth_value in truth_state:
                    if truth_value == "A":
                        truth_state_expanded += substitution[index_s]
                        index_s += 1
                    else:
                        truth_state_expanded += truth_value

                truth_states_expanded.append(truth_state_expanded)

            rows_new = pd.DataFrame(
                data={
                    "node_id": row.node_id,
                    "truth_state": truth_states_expanded,
                    "control_state": row.control_state,
                }
            )

            logic_new = pd.concat([logic_new, rows_new])

        return logic_new

Wildcard symbol is changed to '*'


Fix headings & table-of-contents links

I can already see few older PRs for updating README file. However, this PR additionally fixes a link of Table of Contents.
Hopefully, the README will be fixed soon.
Thanks.

Thank you for submitting this pull request, however I do not see a valid CLA on file for you. Before we can merge this request please visit https://yahoocla.herokuapp.com/ and agree to the terms. Thanks! :smile:

Coverage remained the same at 71.069% when pulling 7d86751333697c788444a2e289eb2d8d09b799db on kukiron:master into 644140869afddf2a1b343919ce246f0f00100398 on yahoo:master.


Add Death announce enhancement

https://github.com/DevotedMC/Humbug/blob/master/src/main/java/com/untamedears/humbug/Humbug.java#L634
Add "Enhanced Death Announce" which overrides the standard death announcement if and only if the death dealing tool has a custom name.

Leveraging other means to achieve this end.


Make  isRedisError function public， and add provide a public method to export pool.ErrClosed

for the purpose of using Limiter , we expect to be able to get the type of error,
pool.ErrorClosed and isRedisError is useful,  but they are currently private.
to handle this, we must copy go-redis to my repo and modify it, so we cant upgrade easily.
The following is our code snippet:
func (l *Limiter) ReportResult(err error) {
	if err == nil {
		l.ft.ReportSucc()
	} else if err == redis.Nil {
		l.ft.ReportSucc()
	} else {
		if redis.IsRedisError(err) || redis.IsClientClosedError(err) {
			l.ft.ReportSucc()
		} else {
			l.ft.ReportFail()
		}
	}

	return
}

If they were public,  it would be very useful. thanks

With #1331 you should be able to do
func (l *Limiter) ReportResult(err error) {
	if err == nil {
		l.ft.ReportSucc()
	} else if err == redis.Nil {
		l.ft.ReportSucc()
	} else {
		if _, ok := err.(redis.Error); ok || err == redis.ErrClosed {
			l.ft.ReportSucc()
		} else {
			l.ft.ReportFail()
		}
	}

	return
}


Use LF instead of CRLF

https://github.com/microsoft/vscode-jupyter/pull/7659 broke Run by Line, we had to do the same change to the code we send to the kernel on cellExecution.ts.
Thanks @DonJayamanne for helping me find this

[ ] Pull request represents a single change (i.e. not fixing disparate/unrelated things in a single PR).
[ ] Title summarizes what is changing.
[ ] Has a news entry file (remember to thank yourself!).
[ ] Appropriate comments and documentation strings in the code.
[ ] Has sufficient logging.
[ ] Has telemetry for enhancements.
[ ] Unit tests & system/integration tests are added/updated.
[ ] Test plan is updated as appropriate.
[ ] package-lock.json has been regenerated by running npm install (if dependencies have changed).

Codecov Report

Merging #7665 (0900aad) into main (a8aeaac) will increase coverage by 0%.
The diff coverage is 100%.

@@          Coverage Diff          @@
##            main   #7665   +/-   ##
=====================================
  Coverage     68%     68%
=====================================
  Files        363     363
  Lines      22552   22552
  Branches    3432    3432
=====================================
+ Hits       15467   15514   +47
+ Misses      5747    5705   -42
+ Partials    1338    1333    -5

Impacted Files
Coverage Δ

src/client/debugger/jupyter/kernelDebugAdapter.ts
81% <100%> (ø)

src/client/datascience/jupyter/jupyterNotebook.ts
25% <0%> (-1%)
:arrow_down:

src/client/datascience/webviews/webviewHost.ts
77% <0%> (ø)

...client/datascience/commands/activeEditorContext.ts
91% <0%> (+<1%)
:arrow_up:

...lient/datascience/variablesView/notebookWatcher.ts
88% <0%> (+1%)
:arrow_up:

...datascience/editor-integration/cellhashprovider.ts
72% <0%> (+1%)
:arrow_up:

src/client/datascience/jupyter/kernels/kernel.ts
75% <0%> (+2%)
:arrow_up:

...datascience/editor-integration/codelensprovider.ts
74% <0%> (+2%)
:arrow_up:

...ence/editor-integration/cellHashProviderFactory.ts
100% <0%> (+2%)
:arrow_up:

src/client/datascience/jupyter/kernelVariables.ts
51% <0%> (+4%)
:arrow_up:

... and 3 more


Cannot able to upload Sigma rules in OpenSearch getting Error: Only yaml files are accepted for OpenSearch v2.9

What is the bug?
Cannot able to upload sigma rules into OpenSearch getting an error stating "Only yaml files are accepted" even tough the uploaded file of type .yml
How can one reproduce the bug?
Steps to reproduce the behavior:

Go to OpenSearch Dashboards -> Security Analytics
Click on Detectors -> Detection Rules
Click on Import Detection Rule
Now upload a .yml format Detection Rule and you will get an error stating Error: Only yaml files are accepted

Note: For detection rules go to https://github.com/SigmaHQ/sigma
What is the expected behavior?
The Detection Rule which is uploaded must be imported without any error
What is your host/environment?

OS: Windows 11
Version: OpenSearch v2.9
Plugins

Do you have any screenshots?
Before Uploading Detection Rule:

After Uploading Detection Rule:

Do you have any additional context?
Add any other context about the problem.

This was reported in https://github.com/opensearch-project/security-analytics-dashboards-plugin/issues/941 and
fixed in https://github.com/opensearch-project/security-analytics-dashboards-plugin/pull/972, but wasn't backported to 2.9.
The bug is triggered by a faulty frontend mime type validation, not by code in this repository.

Heyho @vkrao98 , where you able to solve the issue?
I am experiencing the same issue and can't find a solution. The upload of yaml files to app/opensearch_security_analytics_dashboards#/import-rule does not work from my machine, while it does  work from a colleagues macbook... Both using chrome.. I thought that we got rid of such problems in the year 2024... 🙄
As mentioned here, i have tried to set the registry keys using a default value, without success.
Windows Version: 23H2
OpenSearch Version: v 2.13.0

Okay this is super stupid.. but i got it working, so if anyone comes across this, it might help others...
Follow these steps:

Open the registry editor as administrator (regedit.exe)

Create the following keys


Expose parsers when building a pipeline through ParsingNeuralNetwork

Added getParser() method to ParsingNeuralNetwork Class with a default value for parserID = 0

Codecov Report
Attention: Patch coverage is 33.33333% with 2 lines in your changes missing coverage. Please review.

Project coverage is 33.31%. Comparing base (dbb9dff) to head (e901c30).

:white_check_mark: All tests successful. No failed tests found.

Files with missing lines
Patch %
Lines

depthai_nodes/parsing_neural_network.py
33.33%
2 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #149      +/-   ##
==========================================
+ Coverage   33.29%   33.31%   +0.01%
==========================================
  Files          69       69
  Lines        3835     3839       +4
==========================================
+ Hits         1277     1279       +2
- Misses       2558     2560       +2

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


phoebemirman/ch14273/error-missing-icon

https://app.clubhouse.io/augur/story/14273/error-missing-icon
can have multiple error messages:

Coverage remained the same at 66.578% when pulling bd81feb715ed2576e5dc2952147039dd3c1f7ade on phoebemirman/ch14273/error-missing-icon into d3767b84f23ec5dd1adc7816eb3b1e50ca025f5f on master.


Output Cloudflare Deployment URL

My usecase for this output is to get it from Flowzone and give it to the link checker running in Docs to check links for the staging docs in order to make sure we are not breaking links on a per PR basis.
(Pain driven development: I broke a link on a previous PR and link-checker didn't find out)
Signed-off-by: Vipul Gupta (@vipulgupta2048) <EMAIL_ADDRESS>

How is link-checker going to get this output? Outputs are not shared between workflows.

@klutchell  Plan is to bring the link-checker as Job2 in the flowzone.yml workflow file when this PR gets merged.

@klutchell Plan is to bring the link-checker as Job2 in the flowzone.yml workflow file when this PR gets merged. Get the output that way from job 1, which is flowzone

So have you tested if the following works in your downstream repo(s) @vipulgupta2048?
jobs:
  flowzone:
    name: Flowzone
    uses: product-os/flowzone/.github/workflows/flowzone.yml@vipulgupta2048/output-cf
    outputs:
      cloudflare_deployment_url: ${{ steps.website_publish.outputs. cloudflare_deployment_url }}
    ...

  link-check:
    uses: ./.github/workflows/foo.yml
    needs: [flowzone]
    with:
      bar: needs.jobs.flowzone.outputs.cloudflare_deployment_url

Looks fine to me and relatively harmless. You can remove your test commit and rebase.


Generate docs

Short description:
Generate docs
More details:
What this PR does / why we need it:
Which issue(s) this PR fixes:
Special notes for reviewer:
Bug:
Release notes:

NONE

/approve


ML 3.2: k-means Clustering (A)

Description
📌  Issues for Week 3
Welcome to 'ML' Team, good to see you here
:arrow_forward: This issue will helps readers in acquiring all the knowledge that one needs to know about ----
k-means Clustering.
:red_circle: To get assigned to this issue, add your Batch Numbers mentioned in the spreadsheet of "Machine Learning", the approach one would follow and choice you prefer (Documentation, Audio, Video). Please note this issue is for AUDIO contribution only
✔ Domain : Machine Learning
:red_circle::yellow_circle: Points to Note :

The issues will be assigned on a first come first serve basis, 1 Issue == 1 PR.

"Issue Title" and "PR Title should be the same. Include issue number along with it.

Changes should be made inside the Machine Learning/Machine_Learning/Supervised_Machine_Learning Branch.

Follow Contributing Guidelines & Code of Conduct before start Contributing.

This issue is only for 'GWOC' contributors of 'Machine Learning' domain.

:white_check_mark: To be Mentioned while taking the issue :

Full name
Batch Number
GitHub Profile Link
Which type of Contribution you want to make :

[ ] Audio

Happy Contributing 🚀
All the best. Enjoy your open source journey ahead. 😎
Domain
Machine Learning
Type of Contribution
Audio
Code of Conduct

[X] I follow Contributing Guidelines & Code of conduct of this project.

BHATT VIDHI SAMIR
ML batch 3
https://github.com/VidhiBhatt01
I would like to contribute in documentation format.
Please assign

Sarmistha Sarna
batch :01
https://github.com/ron352
type : audio

Sarmistha Sarna
batch :01
https://github.com/ron352
type : audio
@geeythree @abhisheks008

Go ahead :rocket: Issue assigned to @ron352


#398  Adding Navigation Host for Navigation in VigyBag App

Added Navigation Graph using Nav Host for Navigation in VigyBag Android App

I think you may have messed up your branch. There shouldn't be so many commits. Please make a new branch from main AFTER updating main from origin and origin from upstream. You can transfer your work to the new branch using git cherry-pick commit.

Hello @javaman97  have you created the Navigation graph I need it to so as to use it on the Bottom nav

Hello @javaman97 have you created the Navigation graph I need it to so as to use it on the Bottom nav

@essy16 you can also create navigation graph yourself if you want. I can merge your work as well if done on properly and on time. Please don't be held back by other contributors.

Added Navigation Graph using Nav Host for Navigation in VigyBag Android App

@javaman97  Your code is okay but what you did was just implement navigation between fragments
The steps you should have made was:
i)Include the correct navigation dependencies
ii)Create a navigation graph
iii)Add destinations to the navigation graph
iv)Add a NavHostFragment via XML
For more information here is the link: https://developer.android.com/guide/navigation/get-started
Hope this helps

@essy16 I have already gone through the things you mentioned above.
I have already implemented these things. Soon I will fix all other commits that are creating a mess.

@javaman97 i created a pr already with the above changes

@essy16 I have already gone through the things you mentioned above. I have already implemented these things. Soon I will fix all other commits that are creating a mess.

@javaman97 change the merge head from development to main

nvm i have access.

@07jasjeet Yes feature_login is the same branch where I have implemented the NavHost

@07jasjeet Yes feature_login is the same branch where I have implemented the NavHost

I think you forgot to push your changes.

@07jasjeet So,I need to make another commit and push for it ?

@07jasjeet So,I need to make another commit and push for it ?

You seem to be in a messy git situation i think.


Clipboard Support on Android Mobile and Chromebook

Do you provide clipboard support for Android mobile and Chromebook?
Copy/paste is not working from the Local device to Remote session.

and you are using?
anyhow, not an issue but a question, so closing.

Hi, thx for responding...
And Yes i am using RDP library and Clipboard copy/paste  working in android tab only.
But in android mobile and Chromebook it is not working.
So any suggestion what needs to be done for it to work with android mobile as well ?

@Pankajbadhan034 please try to phrase your responses a little bit less generic

we still do not know what you´re using (some kind of FreeRDP, ok, given, but that is not enough to answer correctly)
a little more detail on copy/paste not working (with what? we still do not know which application you are using)

Hi, thx for responding...
I have implemented FreeRDP in my android app. I have remote connection working with FreeRDP Libaray in android.
But the problem i am getting is with the copy to clipboard functionality in android. When i copy text or url from my local device and trying to paste in remote session .It is not working. Please check the video for the issue.
Attached is the video of the issue.
https://github.com/FreeRDP/FreeRDP/assets/112693544/50ab94be-8411-4823-ac3a-3c262a512f1b

@Pankajbadhan034 ok, so you did not implement clipboard in your app and expect it to work?
check the android client in source and how that handles the corresponding events.

The clipboard functionality is already implemented in the freeRDP .
i just have login page and then i redirect to this freeRDP library . .
So it looks like , it is not working for android...

The clipboard functionality is already implemented in the freeRDP . i just have login page and then i redirect to this freeRDP library . . So it looks like , it is not working for android...

well, it works with the in source client found in client/Android (for the limited format support of text copy & paste)
as for your code, I have no idea what you´re doing.


fixing IllegalArgumentException in MANUAL db resolution mode

fixes issue #141

Coverage increased (+0.008%) to 80.0% when pulling 008ba67fd12e152e53f02487a893abccff66f904 on issue-141 into a9e2818821ce76dba36af27dc2fbead7d8b21552 on master.


Revert "Exams uo e main library dspace 7 x paper download john fix"

Reverts UoEMainLibrary/dspace-angular#4

Wrong source branch


postinstall does not work on Windows

The postinstall script is currently executing (as of #972) bash postinstall.sh.  For obvious reasons, this won't work when attempting to install nodegit through cmd.exe.  This commit in particular seems pretty ironic :frowning:.
Here's an installation log (while trying to build Atom, but that shouldn't matter):
Installing modules failed
><EMAIL_ADDRESS>preinstall
C:\Users\username\Documents\GitHub\atom
> node -e 'process.exit(0)'

><EMAIL_ADDRESS>install C:\Users\username\Documents\GitHub\atom\node_modules\nodegit
> node lifecycleScripts/install

[nodegit] Fetching binary from S3.
[nodegit] Completed installation successfully.

><EMAIL_ADDRESS>postinstall C:\Users\username\Documents\GitHub\atom\node_modules\nodegit
> bash postinstall.sh

npm WARN engine<EMAIL_ADDRESS>wanted: {"node":">= 0.12"} (current: {"node":"0.10.40","npm":"2.13.3"})
'bash' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! Windows_NT 6.2.9200
npm ERR! argv "C:\\Users\\username\\Documents\\GitHub\\atom\\apm\\node_modules\\atom-package-manager\\bin\\node.exe" "C:\\Users\\username\\Documents\\GitHub\\atom\\apm\\node_modules\\atom-package-manager\\node_modules\\npm\\bin\\npm-cli.js" "--globalconfig" "C:\\Users\\username\\.atom\\.apm\\.apmrc" "--userconfig" "C:\\Users\\username\\.atom\\.apmrc" "install" "--target=0.36.8" "--arch=ia32" "--msvs_version=2015"
npm ERR! node v0.10.40
npm ERR! npm  v2.13.3
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>postinstall: `bash postinstall.sh`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script 'bash postinstall.sh'.
npm ERR! This is most likely a problem with the nodegit package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     bash postinstall.sh
npm ERR! You can get their info via:
npm ERR!     npm owner ls nodegit
npm ERR! There is likely additional logging output above.

@50Wliu does #978 solve your issue?

@johnhaley81 At a glance it looks like it should, as bash is no longer invoked.

Running into same issue. Any timeline for the fix?

Just published 0.12.1 which fixes this.


[terra-time-input] update wdio tests

Summary

What was changed:
Why it was changed:
Testing

This change was tested using:

[ ] WDIO
[ ] Jest
[ ] Visual testing (please attach a screenshot or recording)
[ ] Other (please describe below)
[ ] No tests are needed

Reviews
In addition to engineering reviews, this PR needs:

[ ] UX review
[ ] Accessibility review
[ ] Functional review

Additional Details

This PR resolves:
UXPLATFORM-XXXX

Thank you for contributing to Terra.
@cerner/terra

Closed in favor of #2078


On mobile Safari the input element does not float above keyboard

Ionic version:  (check one with "x")
[ ] 1.x (For Ionic 1.x issues, please use https://github.com/ionic-team/ionic-v1)
[ ] 2.x
[x] 3.x
I'm submitting a ...  (check one with "x")
[x] bug report
[ ] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
On mobile Safari input element does not float above keyboard
Expected behavior:
On mobile Safari input element needs to float above keyboard
Steps to reproduce:

Related code:
.ios .input-cover is position is now absolute but should be:

.ios .input-cover {
  position: static;
}

Other information:

Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):
    @ionic/cli-utils  : 1.9.2
    ionic (Ionic CLI) : 3.9.2

global packages:

    Cordova CLI : 7.0.1

local packages:

    @ionic/app-scripts : 2.1.3
    Cordova Platforms  : android 6.1.0 browser 4.1.0 ios 4.3.1
    Ionic Framework    : ionic-angular 3.6.0

System:

    Android SDK Tools : 25.2.5
    ios-deploy        : 1.9.1
    ios-sim           : 6.0.0
    Node              : v7.5.0
    npm               : 4.3.0
    OS                : macOS Sierra
    Xcode             : Xcode 8.3.3 Build version 8E3004b

Hello! Thank you for opening an issue with us! Would you be able to provide a sample application via GitHub that demonstrates the issue you are having? Thanks for using Ionic!

There are a couple of plugins that may help as well. There are known issues with the default UIWebView on iOS. For this reason, the WKWebView was created:
https://github.com/ionic-team/cordova-plugin-wkwebview-engine
There is also an updated keyboard plugin:
https://github.com/ionic-team/cordova-plugin-keyboard
You will need to uninstall the current keyboard plugin and replace it with this plugin.

Hello! Is this still an issue when using the updated plugins? If it is, please provide a GitHub repo with a sample application that demonstrates the issue and I will reopen this.
Thanks!


How to check if a file is attached?

I have searched in the Doc and in the Issues over here on GitHub, but i can't find anything about how you check if there actually is a file attached?
I thought it would be something along the lines of
\is_null($model->file);

or
$model->file->exists();

Unfortunately I can't find anything about this.

@kjmeath Yeah, that's how I do it as well.  I think this is currently the best way to check to see if a file has been uploaded.

It would be nice to have an exists method that just checks originalFilename, though. (for improved code readability)

In my opinion it would be logically better to just have the file attribute just be null when it doesn't exist. This is probably the instinctively expected behaviour of most programmers. It is very uncommon and actually makes logically very little sense that an object, in this case the Attachment, exists as a representation for something that isn't actually there in the first place.

That doesn't make sense though.  There would be no way to display a default file, because the attachment object wouldn't exist yet.  Right now, you can configure a default file path for any attachment.  So, for example if a user hasn't uploaded an avatar yet, you can still display (and configure) a default photo in a standardized way.

Hm okay I understand that use case. In this case it actually makes sense, that the attachment object exists because it will always represent something else.
How about changing it so that the attachment is null if there is not default set. With this the standard test of is_null($model->attachment) would make perfect sense in all cases, because if there is a default attachment set, then it should exist, and you can actually do something with it. But the case of the useless unset Attachment object I mentioned would be completly removed.


Inadequate documentation for reply_to feature in sending mails

The documentation at https://developers.mailersend.com/api/v1/email.html#send-an-email does not specify any Limitations or details for the reply_to attribute while sending an email. After testing the ruby sdk multiple times, I think that the reply_to field only takes one value at a time, and on sending multiple values, it keeps on overwriting the previous value. This should be mentioned in the documentation I feel. I am ready to contribute in this way, since I also use the mailersend ruby sdk on a daily basis, but I couldn't find the documentation repository.

The reply_to field in MailerSend's email API only supports one email address at a time. If you try to include multiple values in the reply_to field, the last value will simply overwrite any previous ones. We will update this in our docs.


Do not emit unknown property warning for configured _instanceProps

In my brainy-table element I configure instance properties like this:
    created: function() {
      this._instanceProps = {
        column: true,
        expanded: true,
        index: true,
        item: true
      };
    },

So user shouldn't get errors like this:
 [databind-with-unknown-property] - item is not declared or used more than once.

Is there a way to perform deeper analysis than this one which only respects dom-repeat templates?

Closing as no longer relevant.


incorrect clean rule in Makefile

make clean does:
	rm -rf iso_root $(IMAGE_NAME).iso $(IMAGE_NAME).hdd
	rm -rf kernel/zig-cache kernel/zig-out

but the zig-cache dir is called .zig-cache
i don't know if this is a version thing or if its a typo
corrected:
	rm -rf iso_root $(IMAGE_NAME).iso $(IMAGE_NAME).hdd
	rm -rf kernel/.zig-cache kernel/zig-out

i used zig 0.14.0-dev.560+fa95c89a7

the .gitignore also needs to be changed


Use OBO PURL for jsonld context

Codecov Report

Merging #15 (ecc49f1) into main (c6ecf1a) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #15   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            4         4
  Lines          118       118
  Branches        15        15
=========================================
  Hits           118       118

Impacted Files
Coverage Δ

src/curies/sources.py
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Exam 18 Question 20

Correct Answer: BD

@kananinirav This is still an issue, according to: https://docs.aws.amazon.com/whitepapers/latest/aws-overview/six-advantages-of-cloud-computing.html
Why to close it without an explanation?


Switch to using Persistent Volumes

Right now, this is setup to use gcloud, but if it's switched to using Persistent Volumes and Persistent Volumes Claims in kubernetes, this can easily also be supported on AWS.

I don't think we will end up doing this, but patches are welcome. I was hoping to switch to using stateful sets instead, which would also work on AWS I think, per the latest version of https://github.com/kelseyhightower/consul-on-kubernetes
Our actual production needs (the reason we built this) are focused on GKE, but it would in fact be preferable if it were neutral about the back-end architecture. But since we're using it in production on GKE, that will be our support focus.

@rfay i'm gonna submit a PR for this in just a sec, to me it's a stop gap till i can get the Stateful sets running when i upgrade Consul which will undo all of this but i'm not sure when i'll fully get that running 100% so I figure this will work for now.

@jwhitcraft I tried stateful sets yesterday after seeing them in https://github.com/kelseyhightower/consul-on-kubernetes. I had a lot of difficulty with the persistent volumes in the stateful set using local disk (hostPath) and eventually gave up on it. But I admit I don't really understand how PVs work in kubernetes so it might just be something I did wrong in my local setup.

@sworisbreathing, I never tried it locally on minikube, I've just always run it in my test cluster.


Can you add Thai language in text-extractor of PowerToys?

The text-extractor in PowerToys doesn't support the Thai language.

รายละเอียดเอกสาร
⚠ อย่าแก้ไขส่วนนี้ กำหนดให้ต้องจัดทำ learn.microsoft.com ➟ การเชื่อมโยงปัญหา GitHub

ID: 0badd1c2-7821-cc2f-cec0-9913a5e16eb1
Version Independent ID: 0badd1c2-7821-cc2f-cec0-9913a5e16eb1
Content: PowerToys Text Extractor utility for Windows
Content Source: hub/powertoys/text-extractor.md
Product: dev-environment
Technology: powertoys
GitHub Login: @alvinashcraft
Microsoft Alias: aashcraft

Hi @SittiphanSittisak. This feels not so much like feedback specifically about the documentation, but rather like a question, or feedback, about the PowerToys product. I don't have any additional content for your scenario, over and above what's in the documentation. So, it might be worth pursuing this as a question or feedback about the product. If you visit the PowerToys repository, then you'll be able to create an issue to leave product questions/feedback.


wrong link in solmate example?

the url here doesn't really help me figure out how to provide a URL to the constructor at deployment

Should be updated to https://docs.opensea.io/docs/deploying-a-seadrop-compatible-contract


(draft) List of unmapped non-deprecated keys

Draft code, just for inspiration for @ddbeck and @jamesnw.
npx tsx scripts/stats.ts gives you a list of unmapped and non-deprecated keys. (I hope)
Please take this and turn it into a useful command so we can all burndown the remaining 3000 keys efficiently  :)

Thanks for this! Very helpful.
One question this brought up for me is around prefixed keys. This list includes prefixed properties with their own files, for instance css.properties.-webkit-line-snap. It does not include prefixed properties that are specified in the __compat section of a file. For instance css.properties.line-clamp, in Firefox, it has a prefix -webkit, but css.properties.-webkit-line-clamp doesn't exist.
My assumption is that the prefixed properties are not actually standard track (outside of the Compat standard), and should be marked as standard_track: false, which would remove them from this list (and the need to include them from Web Features. Is that correct?

Thanks James, very interesting, so I think the filtering should be !f.deprecated && f.standard_track, which is not what I have in this PR. Another reason to land a command that gets all of us the same burndown list :)


Unable to override disabled option

Defect
“Adding and overriding configuration” section in the documentation states:

For single-value options like command, working_dir or disabled, the new value replaces the old value.

However, the old value of disabled is not actually replaced if the new value is false.
Version of process-compose:
1.2.0
OS environment:
Ubuntu 22.04.4 LTS
Steps or code to reproduce the issue:
process-compose.yml:
version: "0.5"
processes:
  test:
    disabled: true
    command: echo foo

process-compose.override.yml:
processes:
  test:
    disabled: false
    command: echo bar

Run process-compose run test.
Expected result:
bar

Actual result:

Hi @Invizory,
This is the expected behavior.
See: https://github.com/darccio/mergo/issues/24#issuecomment-194487379

I understand that the underlying library works like that, but then how can I re-enable a service that was disabled in an override file?

I see that some additional comments were added to that thread.
I will reopen this issue, maybe something can be done here after all.
Another temporary workaround can be using vars in your command:
https://github.com/F1bonacc1/process-compose/blob/78d512551927148e34f37d86c2fc371f0efac08a/process-compose.override.yaml#L173-L177

In the end, we succeeded with the env var substitution as @thenonameguy wrote, but we needed to disable the strict mode because a disabled service was complaining about another disabled dependency of it.


Can't get TypeScript Bot to run in Azure

Describe the bug
Please DO NOT use this template to ask question. For support visit Stack Overflow.
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Setup a TypeScript bot using the adaptiveCard Botbuilder template
Follow the instructions here to the letter.
Upload the bot to Azure with this command: az webapp deployment source config-zip --resource-group "<resource-group-name>" --name "<name-of-app-service>" --src "<project-zip-path>"
Error in getting contianer to start, GatewayErrors in console:

Test Web Chat, nothing:

Channel errors, GatewayTimeout:

Configs match appId, appPassword, etc.

Application log:

Endless loading to eventual GateWay timeout on Postman:

Expected behavior
Bot to respond with a hero card. It's a simple bot, just won't work. Bot should launch in container to prevent gatewaytimeout and /api/messages route should work.
Screenshots
See above.
Additional context
It's with a TypeScript bot. Maybe 2 years ago, launched a C# bot with no issues. I think it may have to do with how Azure is handling tsc --build and the path of the lib build directory that is made. Also, if I don't change the listening port to 8080 (from 3978) in the code, then the error thrown is that port 8080 isn't hit and so timeout. If I change the listening port to 8080, looks like Docker container skips it and does 8081 instead, but no presented 8080 isn't hit error.

Here's screenshot of app logs when port is set to 3978 for guidance.


First time through wgpu_canvas_context_get_current_texture was failing

This PR fixes an assert I was seeing with wgpu_canvas_context_get_current_texture
Maybe I missed something here, but the first time wgpu_canvas_context_get_current_texture is called I was observing that wgpu[1] was null and then _wgpu_object_destroy asserts.  This was my "fix".

Was it the assert
    {{{ wassert(`!(object in wgpu), 'wgpu dictionary should not be storing nulls/undefineds/zeroes!'`); }}}

that triggered?
The general idea here is that it should never be possible to get nulls/undefineds recorded in the wgpu dictionary. I revised the assert in https://github.com/juj/wasm_webgpu/commit/ae7c414658576f0ba8d22089a1e377436d7d1a10 to try to check that more clearly.
If you are getting a null recorded there, I think maybe there is something off in another place. Can you try with the latest code if that would help figure out the issue?

With the latest code I have a different problem.  At
https://github.com/juj/wasm_webgpu/blob/0ead390fbdfff19b81e9fc5593a8612f2e95a96c/lib/lib_webgpu.js#L2137
I pass size of -1.
The problem in this PR has gone though, so can close this.

Good grief, still missed a place with that.. I was searching for WGPU_MAP_MAX_LENGTH for the places that would need to pass -1, but there were places that had just -1 directly.
Unified the API in https://github.com/juj/wasm_webgpu/commit/659a314c71ff25b67db8346d1afef55463f036db and fixed the asserts. Hopefully that'll work well.

All good now, thanks!


play: wire up stdin to qemu to make serial work

With this change:

gokrazy’s serial port starts working in qemu,
i.e. you can press Enter and get a shell prompt.

qemu’s monitor key bindings start working,
i.e. you don’t quit using Ctrl+C, but by using Ctrl+a x

@damdo I find myself wishing for an easy way to run gokrazy instances in qemu more and more. Aside from this PR, do you mind if I merged some of gom into a gok qemu subcommand?

Hey @stapelberg, yes for sure, it'd be awesome to have gom into gok, that was my plan all along!
What parts of it would you like to include?
I should be able to help with this in a bit

Hey @stapelberg, yes for sure, it'd be awesome to have gom into gok, that was my plan all along!
What parts of it would you like to include?
I should be able to help with this in a bit

Cool!
I think the first milestone I would want to see is a command to build and run the specified gokrazy instance in a VM.
Conceptually, I’d suggest a “vm” subcommand in gok, which can then have its own subcommands. I suggest “run” as the first subcommand. The vm subcommand would be in the “deploy and update” group.
So, gok vm run should build the instance and execute qemu with the right flags. We can then expand from there, but I think that’s the least controversial and most useful thing in the whole VM space.
Out of scope for now: deploying VMs to services, both commerial (e.g. Google Cloud, AWS, Azure) or self-hosted (e.g. Proxmox). We can add that later, perhaps as a command that requires additional installation if you want to target a specific VM service provider (similar to the OCI plugin approach).

So, gok vm run should build the instance and execute qemu with the right flags. We can then expand from there, but I think that’s the least controversial and most useful thing in the whole VM space.


openCardReaderPage is empty and I get no error

Hi,
my card reader page is empty (blank white screen) after calling:
SumUpAPI.openCardReaderPage(MainActivity.this, 4);
experianced on SUNMI T2s
I reflected the following settings:
implementation "com.google.android.gms:play-services-location:19.0.1"
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
implementation 'com.sumup:merchant-sdk:4.2.0'
android {
compileOptions {
coreLibraryDesugaringEnabled true
}
}
The SumUp App from the Appstore runs fine on this device.
All I get is:
(SumUpButtonBase.kt:44)@main | Button text cannot exceed 20 characters

I was missing:

I only had:

Hi @Henner,
I have the same problem. What was the problem here?
Thanks!

this is still unresolved!
I do have this problem on several accounts - but not on all.
My error message is: (SumUpButtonBase.kt:44)@main | Button text cannot exceed 20 characters
Creating a new account did solve this 2 times. I have no answer from<EMAIL_ADDRESS>What is your error?

still unresolved

It is the same error for me and I also tried different accounts, not all accounts have this problem. At the first point I though this is a problem related to integration but it seems it is account related thing.


Enhancement-wip Be support array-type

Proposed changes
Issue Number: close https://github.com/apache/doris/issues/11608
Problem summary
Describe your changes.
Checklist(Required)

Does it affect the original behavior:

[x] Yes
[ ] No
[ ] I don't know

Has unit tests been added:

[ ] Yes
[ ] No
[x] No Need

Has document been added or modified:

[ ] Yes
[ ] No
[x] No Need

Does it need to update dependencies:

[ ] Yes
[x] No

Are there any changes that cannot be rolled back:

[ ] Yes (If Yes, please explain WHY)
[x] No

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 40.25 seconds
load time: 598 seconds
storage size:<PHONE_NUMBER>8 Bytes
https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20221021033200_clickbench_pr_32215.html


Simple Mode

Make the current hyper configurable UI the "advanced mode", and provide a simple mode by default that only let's the user configure: details (name, token, etc), founders, contribution reward, scheme registrar.

This seems like a bigger task that is blocking #157 . Can we break it up? I was thinking something like:

put a toggle / button somewhere for "Advanced Mode"
a boolean React prop gets passed through all the pages called isAdvancedMode
this prop can be used to conditionally render components on each page
create a new issue for each of the advanced mode changes beyond the simple mode configs listed above.

Hey @cryptogoth, I think we can add warnings without having simple mode. The warnings would be added to the scheme modification page when you're selecting a voting machine that isn't supported by Alchemy (anything that isn't Genesis), or when you select a scheme that isn't supported by alchemy. Also we might want to give a warning when someone creates a DAO that doesn't have a ContributionReward or a SchemeRegistrar scheme.
Sorry this is scattered info, I'll add it to the task's description.

I think this is covered by 187.
Can we close?


Fix typo in DevGuide.md

According to fetchDependencies.gradle, the folder that contains *.fidb files is fidb, not fid.
ext.FID_DIR = file("${DEPS_DIR}/fidb")

Thanks!  Your change will make its way in soon.


[HTML] Form mobile input: option's function() outputs like string, not object

https://github.com/z-song/laravel-admin/blob/223e7c129b1d095f1cdd5929c35c5883c855e3ee/src/Form/Field/Mobile.php#L22
I have code:
$row->width(6)->mobile('phone', 'Phone')
	->options([
		'mask' => '38 999 999 99 99',
		'oncomplete' => 'function(){ alert(123); }'
	])
	->attribute('type', 'tel');

Result with not valid JS function (because it's a string):
$('.phone').inputmask({"mask":"7 999 999 99 99","oncomplete":"function(){ alert(123); }"});
I found a solution and it works for me:
http://web.archive.org/web/20080828165256/http://solutoire.com/2008/06/12/sending-javascript-functions-over-json/
@z-song
Is it a good feature? At which branch better commit this code?
    protected function json_encode_options()
    {
        $value_arr = [];
        $replace_keys = [];
        $options = $this->options;

        foreach ($options as $key => &$value) {
            // Look for values starting with 'function('
            if (strpos($value, 'function(') === 0) {
                // Store function string.
                $value_arr[] = $value;
                // Replace function string in $foo with a 'unique' special key.
                $value = '%' . $key . '%';
                // Later on, we'll look for the value, and replace it.
                $replace_keys[] = '"' . $value . '"';
            }
        }

        // Now encode the array to json format
        $json = json_encode($options);

        // Replace the special keys with the original string.
        $json = str_replace($replace_keys, $value_arr, $json);

        // Send to to the client
        return $json;
    }

Commit  to branch 1.5 is ok,  Thanks!

@z-song
I'm done:
https://github.com/z-song/laravel-admin/pull/1818


Handle mouse click to toggle expansion

Codecov Report

Merging #86 (d620920) into main (c40504e) will decrease coverage by 0.13%.
The diff coverage is 69.23%.

@@            Coverage Diff             @@
##             main      #86      +/-   ##
==========================================
- Coverage   87.95%   87.81%   -0.14%
==========================================
  Files          81       81
  Lines        2740     2742       +2
  Branches      341      339       -2
==========================================
- Hits         2410     2408       -2
- Misses        257      259       +2
- Partials       73       75       +2

Flag
Coverage Δ

test-macOS-latest-3.8
?

test-ubuntu-latest-3.8
87.81% <69.23%> (-0.14%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

src/pyfx/app.py
97.59% <ø> (ø)

src/pyfx/view/json_lib/json_listbox.py
69.67% <69.23%> (-2.83%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Add namespace value for configuring the destination namespace

Option for configuring the namespace for all resources to be installed into.
If not defined in values file then the helm release namespace is used.
By default this is not set so the helm release namespace will be used.

Thank you for this patch, Jan! With this patch, people using openshift-routes' helm chart as a sub chart will be able to configure the namespace.
/lgtm
/approve


Service status monitoring page

Given how unstable dependabot seems to be (it appears to have been non-functioning for the last 24 hours), I would love to have a page that describes the current state of dependabot, how long it has been up, when it is down, etc...

A status page would be awesome

If the statue page could list the current length of the queue or something like "currently working on jobs started at 01:02 UTC", that would be great...

Are you talking about for app.dependabot.com @heath-freenome? We've had a few issues with the dashboard in the past few days, but I would recommend that you upgrade to the GitHub native version of dependabot, it's a lot more robust.


Operator Controller Release

Adds a release github action and implements goreleaser, borrowing heavily from rukpak but stripped down a bit.
See my fork here for an example release output: https://github.com/dtfranz/operator-controller/releases/tag/v0.0.2
Some of the additional build targets found in rukpak have been stripped out to keep this smaller.
Addresses #132 and #109

@joelanford @perdasilva I believe I've addressed all your comments, please take another look when you have a moment.

e2e is still failing for me on my Mac. To fix it for me, I added this line, directly above the declaration of the docker-build target:
docker-build: export GOOS=linux

e2e is still failing for me on my Mac. To fix it for me, I added this line, directly above the declaration of the docker-build target:
docker-build: export GOOS=linux

I've pushed up your fix, please pull and test again when you can :)

Still failing for me on macOS (arm64, but I don't think that matters). After I run make e2e, I see this:
$ file ./bin/manager
./bin/manager: Mach-O 64-bit executable arm64

So I'm still getting a darwin binary. Same fix from before still fixes it for me.

Still failing for me on macOS (arm64, but I don't think that matters). After I run make e2e, I see this:
$ file ./bin/manager
./bin/manager: Mach-O 64-bit executable arm64

So I'm still getting a darwin binary. Same fix from before still fixes it for me.

Strange, it's not clear to me why that fix is necessary since the goos is set to linux in the goreleaser template for both the binary and docker build. I've updated the branch again with your fix in the meantime.

Strange, it's not clear to me why that fix is necessary since the goos is set to linux in the goreleaser template for both the binary and docker build.

I think the goreleaser build --single-target always uses GOOS and GOARCH, regardless of what's in the goreleaser file.
As far as the docker build, the config in the goreleaser file is only used during a release. The docker-build Makefile target doesn't use the goreleaser config at all.
This docker build stuff could maybe be improved some as well (maybe the docker-build target should also invoke goreleaser somehow? But that seems better for a follow-up.

/lgtm
Nice work! A few more things are better left for smaller follow-ups:
1. Multiarch binaries and containers

2. Remove the `envsubst` and goreleaser template file when there's a new release of goreleaser

3. Move tools binaries to separate directory.

4. Investigate calling goreleaser as part of the `docker-build` target.

Anything I missed?

Thanks @joelanford! Yes, I think that about sums it up.
I did some testing with all the latest changes and found some issues when running the releaser in my fork. goreleaser doesn't play well with using kustomize to modify the manifest files, so after thinking about it probably for too long and not seeing a clean and easy solution I went with a compromise of keeping rukpak's sed replace for the image tag but used :devel instead of :latest so we'll be far less likely to hit a tag we didn't intend. If that's a dealbreaker let me know, otherwise I'll merge once I get another LGTM after the latest changes :smiley:

Totally reasonable. I think that's another small cleanup thing we can do once this heavy lift has merged.
/lgtm


ARROW-6887: [Java] Create prose documentation for using ValueVectors

Related to ARROW-6887.
We should create documentation (in restructured text) for the library that demonstrates:

Basic construction of ValueVectors.  Highlighting:

ValueVector lifecycle
Reading by rows using Readers (mentioning that it is not as efficient as direct access).
Populating with Writers

Reading and writing IPC stream format and file formats.

cc @emkornfield @wesm

A few comments, overall I think this is a good start.  I think we can include an update to the javadoc on VectorSchemaRoot describing how it should be used.
After you make the updates, lets tag Jacques to do a pass to make sure there aren't other subtleties that are called out.  I'll also take a look at the rendered version then to make sure that part looks OK.


Maintenance / Repo ownership

Hey @offirgolan, it's been a while, hope you are all well! 😀
I have used my OSS friday to update things here, as this addon hasn't been touched for a while (3 years 😱). Wanted to drop support for old versions, make sure everything run with the latest ember-bootstrap, and some general maintenance stuff.
In the latter category I wanted to move CI to Github Actions (#25), but it seems the Travis CI check (which I wanted to replace) is set up in this repo to be required:

Thing is I don't have the required privileges here to change these settings. That brings up the question - given that as I said maintenance of this addon was a bit behind - whether you actually are still interested in ownership of this repo, and the maintenance burden related to it? :)
So either giving me administration rights here would make me able to continue maintaining this without bothering you. Or if you are not at all interesting in keeping this repo, would you consider transferring ownership to me?

Hi @simonihmig, its been way too long. I've been good... as good as can be during these times. I hope you are doing well also!
Thanks for taking the time to update this repo, I can't believe its been 3 years lol. I'm not seeing any way of giving you admin access to the repo but I can definitely transfer it over to you. For me to do that, you'd need to delete the fork you have on your account.

For me to do that, you'd need to delete the fork you have on your account.

I just did that. Thanks @offirgolan!

Thanks @offirgolan, just moved the repo. That makes it much easier. Especially publishing a new release (which I just had to do), as previously I could not directly push to master a release commit. Take care!