[Bug] asan be core doris::NotInListPredicatedoris::StringValue::evaluate

Search before asking

[X] I had searched in the issues and found no similar issues.

Version
root@regtest-15-bj:/mnt/hdd01/DORIS_MASTER_ASAN/be/log# /mnt/hdd01/DORIS_MASTER_ASAN/be/lib/palo_be --version
trunk DEBUG (build git://regtest-15-bj/mnt/hdd01/repo_center/doris_master/be/../@73a30935399108a6fc2abf8b5017bd1ff2872dc6)
Built on Fri, 10 Jun 2022 07:22:07 CST by root@regtest-15-bj
What's Wrong?
(gdb) bt
#0  0x00007f343452ffbb in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007f3434515864 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x0000557b91b3fbf2 in google::DumpStackTraceAndExit () at src/utilities.cc:160
#3  0x0000557b9840511d in google::LogMessage::Fail () at src/logging.cc:1650
#4  0x0000557b98407659 in google::LogMessage::SendToLog (this=0x7f340c638720) at src/logging.cc:1607
#5  0x0000557b98404c86 in google::LogMessage::Flush (this=0x7f340c638720) at src/logging.cc:1476
#6  0x0000557b98407cc9 in google::LogMessageFatal::~LogMessageFatal (this=, __in_chrg=) at src/logging.cc:2226
#7  0x0000557b929b1872 in doris::NotInListPredicatedoris::StringValue::evaluate (this=0x606000699980, column=..., sel=0x7f340c638ac0, size=0x7f340c638be0)
at /mnt/hdd01/repo_center/doris_master/be/src/olap/in_list_predicate.cpp:191
#8  0x0000557b94d90ad1 in doris::segment_v2::SegmentIterator::_evaluate_short_circuit_predicate (this=0x616000394880, vec_sel_rowid_idx=0x7f340c638ac0, selected_size_ptr=0x7f340c638be0)
at /mnt/hdd01/repo_center/doris_master/be/src/olap/rowset/segment_v2/segment_iterator.cpp:917
#9  0x0000557b94d9288a in doris::segment_v2::SegmentIterator::next_batch (this=0x616000394880, block=0x6070042b6dc0)
at /mnt/hdd01/repo_center/doris_master/be/src/olap/rowset/segment_v2/segment_iterator.cpp:1015
#10 0x0000557b92c10af7 in doris::BetaRowsetReader::next_block (this=0x6130007ac480, block=0x6070042b6dc0) at /mnt/hdd01/repo_center/doris_master/be/src/olap/rowset/beta_rowset_reader.cpp:189
#11 0x0000557b940e8767 in doris::vectorized::VCollectIterator::Level0Iterator::next (this=0x6070040151c0, block=0x6070042b6dc0)
at /mnt/hdd01/repo_center/doris_master/be/src/vec/olap/vcollect_iterator.cpp:233
#12 0x0000557b940eb80a in doris::vectorized::VCollectIterator::Level1Iterator::_normal_next (this=0x60b0000dbc20, block=0x6070042b6dc0)
at /mnt/hdd01/repo_center/doris_master/be/src/vec/olap/vcollect_iterator.cpp:424
#13 0x0000557b940ebab6 in doris::vectorized::VCollectIterator::Level1Iterator::_normal_next (this=0x60b0000dbc20, block=0x6070042b6dc0)
at /mnt/hdd01/repo_center/doris_master/be/src/vec/olap/vcollect_iterator.cpp:433
#14 0x0000557b940e9349 in doris::vectorized::VCollectIterator::Level1Iterator::next (this=0x60b0000dbc20, block=0x6070042b6dc0)
at /mnt/hdd01/repo_center/doris_master/be/src/vec/olap/vcollect_iterator.cpp:294
#15 0x0000557b940e70ff in doris::vectorized::VCollectIterator::next (this=0x61b0002a9e98, block=0x6070042b6dc0) at /mnt/hdd01/repo_center/doris_master/be/src/vec/olap/vcollect_iterator.cpp:173
#16 0x0000557b940f931c in doris::vectorized::BlockReader::_direct_next_block (this=0x61b0002a9a80, block=0x6070042b6dc0, mem_pool=0x0, agg_pool=0x0, eof=0x7f340c640840)
at /mnt/hdd01/repo_center/doris_master/be/src/vec/olap/block_reader.cpp:162
#17 0x0000557b92687ccb in doris::vectorized::BlockReader::next_block_with_aggregation (this=0x61b0002a9a80, block=0x6070042b6dc0, mem_pool=0x0, agg_pool=0x0, eof=0x7f340c640840)
at /mnt/hdd01/repo_center/doris_master/be/src/vec/olap/block_reader.h:49
#18 0x0000557b951618f5 in doris::vectorized::VOlapScanner::get_block (this=0x617000347980, state=0x620000397080, block=0x6070042b6dc0, eof=0x7f340c640840)
at /mnt/hdd01/repo_center/doris_master/be/src/vec/exec/volap_scanner.cpp:56
#19 0x0000557b9512ec93 in doris::vectorized::VOlapScanNode::scanner_thread (this=0x621000e11500, scanner=0x617000347980)
at /mnt/hdd01/repo_center/doris_master/be/src/vec/exec/volap_scan_node.cpp:219
#20 0x0000557b9514cbad in std::__invoke_impl<void, void (doris::vectorized::VOlapScanNode::&)(doris::vectorized::VOlapScanner), doris::vectorized::VOlapScanNode*&, doris::vectorized::VOlapScanner*&> (__f=
@0x6030019ea150: (void (doris::vectorized::VOlapScanNode::)(doris::vectorized::VOlapScanNode * const, doris::vectorized::VOlapScanner )) 0x557b9512d392 doris::vectorized::VOlapScanNode::scanner_thread(doris::vectorized::VOlapScanner*), __t=@0x6030019ea168: 0x621000e11500) at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:74
#21 0x0000557b9514c765 in std::__invoke<void (doris::vectorized::VOlapScanNode::&)(doris::vectorized::VOlapScanner), doris::vectorized::VOlapScanNode*&, doris::vectorized::VOlapScanner*&> (
__fn=
@0x6030019ea150: (void (doris::vectorized::VOlapScanNode::)(doris::vectorized::VOlapScanNode * const, doris::vectorized::VOlapScanner )) 0x557b9512d392 doris::vectorized::VOlapScanNode::scanner_thread(doris::vectorized::VOlapScanner*)) at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:96
#22 0x0000557b9514c097 in std::_Bind<void (doris::vectorized::VOlapScanNode::(doris::vectorized::VOlapScanNode, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) (this=0x6030019ea150, __args=...) at /var/local/ldb_toolchain/include/c++/11/functional:420
#23 0x0000557b9514ba5d in std::_Bind<void (doris::vectorized::VOlapScanNode::(doris::vectorized::VOlapScanNode, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>::operator()<, void>() (this=0x6030019ea150) at /var/local/ldb_toolchain/include/c++/11/functional:503
#24 0x0000557b9514ad36 in std::__invoke_impl<void, std::_Bind<void (doris::vectorized::VOlapScanNode::(doris::vectorized::VOlapScanNode, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>&>(std::__invoke_other, std::_Bind<void (doris::vectorized::VOlapScanNode::(doris::vectorized::VOlapScanNode, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>&) (__f=...) at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:61
#25 0x0000557b95149c14 in std::__invoke_r<void, std::_Bind<void (doris::vectorized::VOlapScanNode::(doris::vectorized::VOlapScanNode, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>&>(std::_Bind<void (doris::vectorized::VOlapScanNode::(doris::vectorized::VOlapScanNode, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)>&) (__fn=...)
at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:111
#26 0x0000557b95148b4e in std::_Function_handler<void (), std::_Bind<void (doris::vectorized::VOlapScanNode::(doris::vectorized::VOlapScanNode, doris::vectorized::VOlapScanner*))(doris::vectorized::VOlapScanner*)> >::_M_invoke(std::_Any_data const&) (__functor=...) at /var/local/ldb_toolchain/include/c++/11/bits/std_function.h:291
#27 0x0000557b92dba6aa in std::function<void ()>::operator()() const (this=0x7f340c644cc8) at /var/local/ldb_toolchain/include/c++/11/bits/std_function.h:560
#28 0x0000557b92db7280 in doris::PriorityWorkStealingThreadPool::work_thread (this=0x614000014440, thread_id=38)
at /mnt/hdd01/repo_center/doris_master/be/src/util/priority_work_stealing_thread_pool.hpp:133
#29 0x0000557b92ddaa12 in std::__invoke_impl<void, void (doris::PriorityWorkStealingThreadPool::* const&)(int), doris::PriorityWorkStealingThreadPool*&, int&> (__f=
@0x604000906718: (void (doris::PriorityWorkStealingThreadPool::)(doris::PriorityWorkStealingThreadPool * const, int)) 0x557b92db6f14 doris::PriorityWorkStealingThreadPool::work_thread(int), __t=@0x604000906730: 0x614000014440) at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:74
#30 0x0000557b92dda7eb in std::__invoke<void (doris::PriorityWorkStealingThreadPool:: const&)(int), doris::PriorityWorkStealingThreadPool*&, int&> (__fn=
--Type  for more, q to quit, c to continue without paging--
@0x604000906718: (void (doris::PriorityWorkStealingThreadPool::)(doris::PriorityWorkStealingThreadPool * const, int)) 0x557b92db6f14 doris::PriorityWorkStealingThreadPool::work_thread(int)) at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:96
#31 0x0000557b92dda71d in std::_Mem_fn_base<void (doris::PriorityWorkStealingThreadPool::)(int), true>::operator()<doris::PriorityWorkStealingThreadPool*&, int&> (this=0x604000906718)
at /var/local/ldb_toolchain/include/c++/11/functional:131
#32 0x0000557b92dda606 in std::__invoke_impl<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)>&, doris::PriorityWorkStealingThreadPool&, int&> (__f=...)
at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:61
#33 0x0000557b92dda49f in std::__invoke_r<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)>&, doris::PriorityWorkStealingThreadPool&, int&> (__fn=...)
at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:111
#34 0x0000557b92dda1af in std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)> (doris::PriorityWorkStealingThreadPool, int)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) (this=0x604000906718, __args=...) at /var/local/ldb_toolchain/include/c++/11/functional:570
#35 0x0000557b92dd9f11 in std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)> (doris::PriorityWorkStealingThreadPool, int)>::operator()<>() (
this=0x604000906718) at /var/local/ldb_toolchain/include/c++/11/functional:629
#36 0x0000557b92dd9df5 in std::__invoke_impl<void, std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)> (doris::PriorityWorkStealingThreadPool, int)>>(std::__invoke_other, std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)> (doris::PriorityWorkStealingThreadPool, int)>&&) (__f=...)
at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:61
#37 0x0000557b92dd9d49 in std::__invoke<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)> (doris::PriorityWorkStealingThreadPool, int)>>(std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)> (doris::PriorityWorkStealingThreadPool, int)>&&) (__fn=...)
at /var/local/ldb_toolchain/include/c++/11/bits/invoke.h:96
#38 0x0000557b92dd8b00 in std::thread::_Invoker<std::tuple<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)> (doris::PriorityWorkStealingThreadPool, int)> > >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (this=0x604000906718) at /var/local/ldb_toolchain/include/c++/11/bits/std_thread.h:253
#39 0x0000557b92dd5c3e in std::thread::_Invoker<std::tuple<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)> (doris::PriorityWorkStealingThreadPool, int)> > >::operator()() (this=0x604000906718) at /var/local/ldb_toolchain/include/c++/11/bits/std_thread.h:260
#40 0x0000557b92dd52fc in std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::_Bind_result<void, std::_Mem_fn<void (doris::PriorityWorkStealingThreadPool::)(int)> (doris::PriorityWorkStealingThreadPool, int)> > > >::_M_run() (this=0x604000906710) at /var/local/ldb_toolchain/include/c++/11/bits/std_thread.h:211
#41 0x0000557b9a55b180 in execute_native_thread_routine ()
#42 0x00007f34344d6450 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#43 0x00007f3434606d53 in clone () from /lib/x86_64-linux-gnu/libc.so.6
What You Expected?
work well
How to Reproduce?
1、run regression test case
select city from test_dup_tab_char_nullable where city not in ('a1','e1')
2、be.conf
mem_limit = 20%
disable_minidump = true
path_gc_check_interval_second = 1
max_garbage_sweep_interval = 180
rowbatch_align_tuple_offset = true
buffer_pool_limit = 2%
chunk_reserved_bytes_limit = 134217728
enable_storage_vectorization = true
enable_low_cardinality_optimize = true
disable_storage_page_cache = true
Anything Else?
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Is it same problem like https://github.com/apache/incubator-doris/pull/10047 ?

Is it same problem like #10047 ?

i am not sure, i will try to run regression tests again with this patch to confirm.


Database creation uses hardcoded db name instead of IRODS_ICAT_DBNAME

What it says on the tin. Needs to be dynamic for e.g. multiple iRODS servers in the SODAR dev environment.

Fixed.


DBZ-4892: Migrate test-suite fixtures to JUnit extension

https://issues.redhat.com/browse/DBZ-4892

Tests are now using https://github.com/jcechace/fixture5 extension
All fixtures rewritten to classes
Simplified inheritance hierarchy of test classes

@jpechane Is it ok to temporarily add sonatype snapshot repository before ve make sure that the extension is good enough to be released?

@jcechace Applied, really nice job!


Add a doc build step and preferably host these on a github.io site.

I understand the docs generation is not stable yet etc... however it would be nice to have an easy way to read documentation w/o having to read the source for it.
You'll have to google to work out how you can add it as a step in build.zig
I would open a PR but its easier to ask first imo.
Ziglearn docs for this.

Hi! I haven't set up automatic docs generation yet as the automated generation of documentation from source files is still a work-in-progress and I didn't want to make the impression that the generated docs are a stable feature of the Zig compiler. Other more popular zig libraries have also not opted for automatic docs generation because of this reason.
However, if you want to open a PR for automatic docs generation where the docs are linked with an explicit notice that the generated docs are a work-in-progress feature of the Zig compiler, I would gladly accept it!

Hey, I've created https://github.com/ziglibs/ansi-term/pull/20 setting this up.
There's a preview at https://abhinav.github.io/ansi-term/.
The PR needs #19 to land first, though because ansi-term doesn't currently compile against the latest Zig nightly.


HHH-10677 Local Timestamp cache is not updated right after cache.put

https://hibernate.atlassian.net/browse/HHH-10677

Random failure logged https://issues.jboss.org/browse/ISPN-8455 (unrelated).


Parser returns free-format only regardless of the fixed-format input

We experience a nasty side effect when parsing a File with the following statement:
replacedString = new CobolPreprocessorImpl().process(inputFile, copyBookFiles, COBOL_FIXED_FORMAT);
The replacedString is an "optimized" Cobol-String which can rather be used for free-cobol Format only, at least a Cobol which allows the processing of lines with more than 80 (or rather 72) columns.
When using the Cobol85Parser for some Cobol-Optimisations (for example goto-elimination algorithms/improvements) and then sending these optimised Cobol files back to the ibm-host, this IS a problem.
Just have a look at "line 001800 and 001810", where even the continuation sign in column 7 ist used since the line had been too long.
001770 01  ZEILE3B.                                                     abc11S05
001780     05  Z3B-VS              PIC X       VALUE ' '.               abc11S05
001790     05  FILLER              PIC X(11)   VALUE SPACE.             abc11S05
001800     05  FILLER              PIC X(50)   VALUE 'für ausgeschiedeneabc11S05
001810-                                        ' Besoldungsfälle'.      abc11S05
001820     05  FILLER              PIC X(71)   VALUE SPACE.             abc11S05
001830     05  Z3B-FIB             PIC X       VALUE '2'.               abc11S05

We are fully aware of the underlying parsing reasons and agree on a much better readability etc etc.
the only "BUT/HOWEVER" is: the resulting replacement string exceeds the 80column limit and will be rejected on the host.
Second sideeffect, which is an additional matter or discussion:
these (in)famous columns 1-6 and 73-80 very often are used for taggings or even rudimentary version-control (who applied these changes/when)
This information also gets lost.
       01  ZEILE3B.
           05  Z3B-VS              PIC X       VALUE ' '.
           05  FILLER              PIC X(11)   VALUE SPACE.
           05  FILLER              PIC X(50)   VALUE 'für ausgeschiedene Besoldungsfälle'.
           05  FILLER              PIC X(71)   VALUE SPACE.
           05  Z3B-FIB             PIC X       VALUE '2'.

Any workaround to be suggested other than reformatting the returned String into the fixed-format corsett ?

The Parser changes comments "too much" - at least on the mainframe this leads to an avanlanche of warnings since the line exceed the column 80!
       ID DIVISION.
      ******************************************************************
      *************  Y2600120  Version 008  VOM 18.01.95  **************
      ******************************************************************
       PROGRAM-ID.   Y2600120.
       AUTHOR. *      B. Rxxer.
       DATE-WRITTEN. *06.1988.
      ******************************************************************
      *                                                                *
      *       Dieses Programm stzt die Lieferscheinkennzeichen in      *
      *       der Lieferscheinfile D2600-Liefer.                       *

is changed to
       ID DIVISION.
      *> *****************************************************************
      *> ************  Y2600120  Version 008  VOM 18.01.95  **************
      *> *****************************************************************
       PROGRAM-ID.   Y2600120.
       AUTHOR. *>CE       B. Rxxer.
       DATE-WRITTEN. *>CE 06.1988.
      *>CE *****************************************************************
      *>CE                                                                 *
      *>CE        Dieses Programm stzt die Lieferscheinkennzeichen in      *
      *>CE        der Lieferscheinfile D2600-Liefer.                       *

Having a close look you see that the pseudo-ANSI-comments are being used *> with a space, thus each former length80 comment is a length82 comment now, with the *>CE convention used the linesize is increased even more ...
I the parser is used for cobol-enhancements and the changes sources have to be brought back to the mainframe, a CobolReformatter has to be used/implemented to get out all these extra formatting issues. I would opt for strictly keeping to the input format : specially in fixed format, then please dont break the given barriers !

Additional and more nasty sideffect of breaking the fixed format :+1:
The original inputformat already considers the linesize-barriers (of course) and is "nicely" formatted to fit into these column-swimlanes, like:
022900     IF S1-RSP-NORMAL                                             Y2600120
023000                 NEXT SENTENCE                                    Y2600120
023100     ELSE        DISPLAY 'Y2600120 - Fehler beim suchen Liefersche22.12.89
023200-                        'in' S1-RSP ' ' VIEW-VB                  22.12.89
023300                 GO TO B51000-EX.                                 Y2600120
002400                                                                  22.12.89

Having a closer look at the outcome of the parser
           IF S1-RSP-NORMAL
                       NEXT SENTENCE
        ELSE        DISPLAY 'Y2600120 - Fehler beim suchen Lieferschein' S1-RSP ' ' VIEW-VB
                       GO TO B51000-EX.

we of course see, that this long line breaks the 72/80 column barrier by far.
And even worse, logic is needed now to break up the string into chunks fitting into the col8-72 area.
I am fully aware that the parser needs concatenated strings/literals for ease of parsing, but it creates unwanted side effects like mentioned above.


Is vcversioner no longer dependency of jsonschema?

I am having trouble installing jsonschema2.6.0  in environments without accessing pypi because of vcversioner. But I see that it is no longer dependency.

It isn't, but setuptools_scm is now, which works the same exact way.

I'm basically having the same problem as #276, but using the buildout to install jsonschema.
We have a server without internet access and we install the packages from an internal mirror. We configure the buildout index to get packages from this mirror. The buildout uses this configuration to get packages that are in install_requires, but it doesn't work for packages that are in setup_requires.
So easy_install tries to download vcversioner from pypi but, as the server doesn't access the internet, an error occurs:
Getting required 'jsonschema==2.6.0'
We have no distributions for jsonschema that satisfies 'jsonschema==2.6.0'.
Getting distribution for 'jsonschema==2.6.0'.
Running easy_install:
/opt/programas/zope/2.13.26/des_10466_ttransparente/bin/python "-c" "from setuptools.command.easy_install import main;main()" "-mUNxd" "/opt/programas/zope/2.13.26/des_10466_ttransparente/zeoclient/eggs/tmpOpVeBa" "-q" "/tmp/tmpYl0V09get_dist/jsonschema-2.6.0.tar.gz"
path=/opt/programas/zope/2.13.26/des_10466_ttransparente/zeoclient/eggs/setuptools-26.1.1-py2.7.egg

Download error on https://pypi.python.org/simple/vcversioner/: [Errno 111] Connection refused -- Some packages may not be found!
Couldn't find index page for 'vcversioner' (maybe misspelled?)
Download error on https://pypi.python.org/simple/: [Errno 111] Connection refused -- Some packages may not be found!
No local packages or working download links found for vcversioner>=<IP_ADDRESS>
error: Could not find suitable distribution for Requirement.parse('vcversioner>=<IP_ADDRESS>')
An error occurred when trying to install jsonschema 2.6.0. Look above this message for any errors that were output by easy_install.
While:
  Installing instance.
  Getting distribution for 'jsonschema==2.6.0'.
Error: Couldn't install: jsonschema 2.6.0

Is possible fix this by using a ~/.pydistutils.cfg file with the content:
[easy_install]
index_url = http://my.mirror/root/pypi

This tells to easy_install to get packages from my mirror and not from pypi.
Probably, we will have the same problem with setuptools_scm. But this isn't a problem of jsonschema. It is only for registration.
Thanks.

I'm basically having the same problem as #276, but using the buildout to install jsonschema.
We have a server without internet access and we install the packages from an internal mirror. We configure the buildout index to get packages from this mirror. The buildout uses this configuration to get packages that are in install_requires, but it doesn't work for packages that are in setup_requires.
So easy_install tries to download vcversioner from pypi but, as the server doesn't access the internet, an error occurs:
Getting required 'jsonschema==2.6.0'
We have no distributions for jsonschema that satisfies 'jsonschema==2.6.0'.
Getting distribution for 'jsonschema==2.6.0'.
Running easy_install:
/opt/programas/zope/2.13.26/zinstance/bin/python "-c" "from setuptools.command.easy_install import main;main()" "-mUNxd" "/opt/programas/zope/2.13.26/zinstance/zeoclient/eggs/tmpOpVeBa" "-q" "/tmp/tmpYl0V09get_dist/jsonschema-2.6.0.tar.gz"
path=/opt/programas/zope/2.13.26/zinstance/zeoclient/eggs/setuptools-26.1.1-py2.7.egg

Download error on https://pypi.python.org/simple/vcversioner/: [Errno 111] Connection refused -- Some packages may not be found!
Couldn't find index page for 'vcversioner' (maybe misspelled?)
Download error on https://pypi.python.org/simple/: [Errno 111] Connection refused -- Some packages may not be found!
No local packages or working download links found for vcversioner>=<IP_ADDRESS>
error: Could not find suitable distribution for Requirement.parse('vcversioner>=<IP_ADDRESS>')
An error occurred when trying to install jsonschema 2.6.0. Look above this message for any errors that were output by easy_install.
While:
  Installing instance.
  Getting distribution for 'jsonschema==2.6.0'.
Error: Couldn't install: jsonschema 2.6.0

Is possible fix this by using a ~/.pydistutils.cfg file with the content:
[easy_install]
index_url = http://my.mirror/root/pypi

This tells to easy_install to get packages from my mirror and not from pypi.
Probably, we will have the same problem with setuptools_scm. But this isn't a problem of jsonschema, so we're commenting here just for the sake of documentation.
Thanks.


Hapiv16 scrub

@devinivy For the API docs, I pointed them at the latest in Github, which is the 17 docs :( Would you prefer I point them at the site, which currently defaults to the 16 docs?
Dunno when that'll change, figured that this change was inevitable, so fine to make now, if consistent. That's not sounding as reasonable as I thought initially 🎺  lemme know!

Coverage remained the same at 100.0% when pulling b4891e85653ca4e5b45e2b1184ddef22b217552e on zemccartney:hapiv16-scrub into 78af8b17102fb803b6c4610bcf60142faf8aabba on devinivy:master.

Coverage remained the same at 100.0% when pulling a2c8723bf2467c2ef776fa102a781919f506b02a on zemccartney:hapiv16-scrub into 78af8b17102fb803b6c4610bcf60142faf8aabba on devinivy:master.


"needs:" dependency does not work if kubecontext contains a forward slash

Operating system
Ubuntu 20.04
Helmfile Version
v0.144.0
Helm Version
version.BuildInfo{Version:"v3.7.0", GitCommit:"eeac83883cb4014fe60267ec6373570374ce770b", GitTreeState:"clean", GoVersion:"go1.16.8"}
Bug description
This issue was mentioned at https://github.com/roboll/helmfile/issues/2048#issuecomment-1013513979 .
Helmfile fails to evaluate a needs: dependency correctly if the entry has KUBECONTEXT/NAMESPACE/RELEASE_NAME structure and KUBECONTEXT contains a forward slash.
AWS EKS Cluster context names usually have this structure:  arn:aws:eks:AWS_REGION:AWS_ACCOUNT:cluster/CLUSTER_NAME.
Example helmfile.yaml
  - name: releaseB
    namespace: namespaceA
    kubeContext: arn:aws:eks:us-east-1:1234567890:cluster/myekscluster
    needs:
      - arn:aws:eks:us-east-1:1234567890:cluster/myekscluster/namespaceA/releaseA

Error message you've seen (if any)
in ./helmfile.yaml: release(s) "arn:aws:eks:us-east-1:1234567890:cluster/myekscluster/namespaceA/releaseB" depend(s) on an undefined release "myekscluster/namespaceA/releaseA". Perhaps you made a typo in "needs" or forgot defining a release named "cluster" with appropriate "namespace" and "kubeContext"?

Steps to reproduce
N/A
Relevant discussion
No response

@fbordallo please show  your command?

Thanks for reporting!
Helmfile usese $kubecontext/$ns/$release_name as the internal identifier of every node in the dependency graph build from needs. It will certainly break if you had a slash within the kubecontext name- Good catch.
I think the only way to fix this would be to change the separator between the internal id components to something that doesn't intersect with the characters allowed in kubecontext, ns name, and the release name.. or maybe make it possible to use a Go struct rather than a Go string as the identifier.
For the latter, we might need to somehow enhance https://github.com/variantdev/dag, which Helmfile uses under the hood to calculate the dep graph of needs.


[MVC5] include request Host header as a span tag

This PR adds the web request's Host header as a span tag in the ASP.NET MVC 5 integration.

Cool.
On Wed, Aug 22, 2018 at 7:20 PM Lucas Pimentel<EMAIL_ADDRESS>wrote:

@lucaspimentel commented on this pull request.
In
src/Datadog.Trace.ClrProfiler.Managed/Integrations/AspNetMvc5Integration.cs
https://github.com/DataDog/dd-trace-csharp/pull/72#discussion_r212140507
:

             string httpMethod = _httpContext.Request.HttpMethod.ToUpperInvariant();

           string url = _httpContext.Request.RawUrl.ToLowerInvariant();

Personally, I like to use the explicit type if it is not already declared
in the same line to make the type obvious to someone reading the code
(especially outside of the IDE where you can't just hover your mouse over
it to get a tooltip). I do use var when the type is already declared
nearby to reduce redundancy:
var foo = new Dictionary<string, Func<object, int>>();
var bar = value.Get();
var baz = value as string;
But mostly because this isn't javascript! 👴
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/DataDog/dd-trace-csharp/pull/72#discussion_r212140507,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADboGzB7QkdMxg6KMYPhpOHcHAUZ6pfNks5uTedVgaJpZM4WIHgF
.

--

Erich Ess


ShowInTaskbar property not working.

ShowInTaskbar property not working. Taskbar icon not hiding.

Set ShowInTaskbar property to false
Run
See error

OS: Windows 10 1809
Version 0.10.0

P.S. Sorry for my english.

Try run without VisualStudio.

Probably UseAppHost also can affect this behavior

@MonkAlex running without visual studio didn't help

Maybe this bug is due to this ?

https://github.com/AvaloniaUI/Avalonia/blob/13e69c40adf33ff942c79d95d887096ee7b0c082/src/Windows/Avalonia.Win32/WindowImpl.cs#L1091


Better error handling

Coverage decreased (-0.02%) to 86.421% when pulling f20e71b56f6a0dcb8e05162c878d78ee74428761 on tibkiss:better_error_handling into 825f643a14152e721a06eb5bf9a56e2249431a41 on zipline-live:master.


ompl: 1.5.0-1 in 'noetic/distribution.yaml' [bloom]

Increasing version of package(s) in repository ompl to 1.5.0-1:

upstream repository: https://github.com/ompl/ompl.git
release repository: https://github.com/ros-gbp/ompl-release.git
distro file: noetic/distribution.yaml
bloom version: 0.9.7
previous version for package: null

holding for the upcoming Noetic sync


Not sure what's going on

I noticed that the module is doing nothing today. I'm using dnd5e, in the app, in opera and in firefox .
I remember typing "@sk" and it would show me the table with all the @skills. options for example. Now nothing shows up, no table, nothing, as if the module is deactivated.
I deactivated every other module. I used Find the Culprit. I re-activated it.
I'm at a dead end :(

Hey @Nedrapter, sorry, I kind of missed this. Does the problem still appear?

I uninstalled it and reinstalled it and fixed the issue, took me a while to think of that...


Added support for MySQL provider

Hi there!
Great extension and exactly what I was looking for... Until I realized this is only working with MSSQL provider! Well, since today is my first day back from vacation and people are giving me some space I took the time to hopefully enhance this great extension with MySQL provider support, which will hopefully be helpful to folks like me where I have to work with both MS SQL and MySQL databases hosted in Azure.
I tried to follow your coding practices while also added some enhancements in a few places (such as separating Delete SQL texts out of sqlUtils into its own file due to it now requiring a little bit more logic)
Let me know if this works for you, or you'd like me to change anything
Best,
Oleg

It look very nice! I will try to test the pull request today or tomorrow. Thank you!

@olegrumiancev , I have to ask you something in case it's a problem. It is regarding the publisher attribute of the package.json. I have no problem adding mentions to your work in the Release, in the project's Readme, etc. but I think that the publisher is not an attribute to indicate to the project collaborators or contributors
https://code.visualstudio.com/api/working-with-extensions/publishing-extension#create-a-publisher

No problem from my side! Would you like me to add a commit removing that,
or are you OK to make another commit yourself after the PR merge?
On Fri, Jun 14, 2024, 1:35 a.m. pacoweb @.***> wrote:

@olegrumiancev https://github.com/olegrumiancev , I have to ask you
something in case it's a problem. It is regarding the publisher
attribute of the package.json. I have no problem adding mentions to your
work in the Release, in the project's Readme, etc. but I think that the
publisher is not an attribute to indicate to the project collaborators or
contributors
https://code.visualstudio.com/api/working-with-extensions/publishing-extension#create-a-publisher
http://url
—
Reply to this email directly, view it on GitHub
https://github.com/pacoweb/extraSqlScriptAs/pull/23#issuecomment-2167244800,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AF577OAJLIAX4ZLBY3DZ5M3ZHJ6JPAVCNFSM6AAAAABJDCXYTCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRXGI2DIOBQGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

@olegrumiancev I´ll make the commit after merge your pull request. Thanks

Thank you for accepting the PR, happy to have contributed


Environment / Examples: Tanks story likely fictional

The story about the US Army detecting tanks is probably not actually factual. See https://www.gwern.net/Tanks for more than you ever wanted to know about it.

lol

Fair enough! Some people care! Thanks for your time.


chore: bdd-sbhg-1586364291 to 0.0.1

chore: Promote bdd-sbhg-1586364291 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


[PATCH] On a missing dependency gem exits with status code 1

Thanks. I merged it in to the develop branch.


Drush "site-install needs a higher bootstrap" (Vagrant 1.8.7, VirtualBox 5.1.8, Windows 7)

Getting an error when bringing Drupal VM up on a Windows 7 machine.
I piped the verbose debug output to a file that I am going to attach here and I am going to list what I found by doing a find on this file  for Ansible:
TASK [Check if site is already installed.] *************************************
ok: [drupalvm]

TASK [Configure database correctly if using PostgreSQL.] ***********************
skipping: [drupalvm]

TASK [Install Drupal with drush.] **********************************************
fatal: [drupalvm]: FAILED! => {"changed": true, "cmd": ["/usr/local/bin/drush", "site-install", "standard", "-y", "--site-name=Drupal", "--account-name=admin", "--account-pass=admin", "--db-url=mysql://drupal:drupal@localhost/drupal"], "delta": "0:00:01.107022", "end": "2016-11-11 19:47:13.171638", "failed": true, "rc": 1, "start": "2016-11-11 19:47:12.064616", "stderr": "Command site-install needs a higher bootstrap level to run - you will    [error]\nneed to invoke drush from a more functional Drupal environment to run\nthis command.\nThe drush command 'site-install standard' could not be executed.         [error]", "stdout": "", "stdout_lines": [], "warnings": []}

I can't really see anything obvious that tells me why the process is failing.  Maybe someone can tell from the rest of the text.
drupalVMerror.txt

It looks like the error is in the site install step: Command site-install needs a higher bootstrap level to run - you will need to invoke drush from a more functional Drupal environment to run\nthis command.
Can you run vagrant provision again and see if that fixes it?
Also, is this a plain/fresh install, or are you using an existing codebase? What kind of changes have you made in your config.yml (if any)?

I already had vagrant and virtual box installed.  All I had to do was download and unzip the DrupalVM from GitHub inside a folder I have setup.
I have tried destroying and re-running the vagrant up as well as using vagrant provision on this instance.  I also completely deleted the folders both in my working area as well as in the VirtualBoxVM folder.
The only changes I made to the vagrant file were from the following instructions:
2 - Build the Virtual Machine
Download this project and put it wherever you want.
(Optional) Copy default.config.yml to config.yml and modify it to your liking.
Create a local directory where Drupal will be installed and configure the path to that directory in config.yml (local_path, inside vagrant_synced_folders).
Open Terminal, cd to this directory (containing the Vagrantfile and this README file).
Type in vagrant up, and let Vagrant do its magic.

Did you make any changes to config.yml though?

Yes,
Item 3. in the quick start directions says to:
Create a local directory where Drupal will be installed and configure the path to that directory in config.yml (local_path, inside vagrant_synced_folders).
That is the only change I made in config.yml

I deleted the box and all of the files and installed a fresh copy to test if there were any issues with the config.yml and it appears the error is the same either way.
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.
I am including the entire text of the install but I did a search on the file to see if it had the line that you mentioned above (which it does)
fatal: [drupalvm]: FAILED! => {"changed": true, "cmd": ["/usr/local/bin/drush", "site-install", "standard", "-y", "--site-name=Drupal", "--account-name=admin", "--account-pass=admin", "--db-url=mysql://drupal:drupal@localhost/drupal"], "delta": "0:00:07.642329", "end": "2016-11-15 19:40:49.172734", "failed": true, "rc": 1, "start": "2016-11-15 19:40:41.530405", "stderr": "Command site-install needs a higher bootstrap level to run - you will    [error]\nneed to invoke drush from a more functional Drupal environment to run\nthis command.\nThe drush command 'site-install standard' could not be executed.
I performed my vagrant up command in a command window with admin rights so it is unclear what the higher bootstrap request is asking for.
vagrantup.txt

TASK [Generate Drupal project with composer package.] **************************
skipping: [drupalvm]

Seems to be the issue. This task should not be skipped. What did you change the local_path value to? There seems to be an index.php file inside a web/ directory in that path.

@oxyc - Good catch!

On the laster iteration,  I left the vagrant share as the default (not touching anything) thinking it would just create the directory if it did not exist.
Initially my intent was to have both the vagrant file and the shared folder on our Development share which would allow another developer and me to modify the files jointly.  Unfortunately I don't know how to open a command window in that directory so I moved everything over to my local C drive

I can get this to work by deleting everything in the VirtualBoxVM folder, the drupal-vm-master folder and re-install everything locally on my C drive (network shares also make the script fail).
I had hoped that using DrupalVM would allow me and another developer to share the Drupal folder and make changes that would be seen in the DrupalVM.
After re-reading the documentation I see that the drupal folder is supposed to be deleted before re-creating the box and in reality all related folders need to be removed for it to start up without errors.

@GhostInTheMachinesAtTSBVI - Ah, yes. On Windows, it's going to cause trouble if you try using a folder on a network share or on a non-internal volume. Sometimes you can hack things together to get that to work, but not always.
I would try with the basic configuration first—just share a local folder. See if you can get that working, then consider trying to get that codebase shared with another dev. Usually teams would use Git to keep a codebase in sync while allowing different developers to work on different things.

Yes, we were using Git originally but then it looked like the shared folder capabilities would eliminate the need for it using Vagrant to spin up different environments that always used the same source files from the shared folder that was outside the VM.
I am thinking I might be able to rig something up by injecting a shell script to update the custom drupal folders at the end of the vagrant script where it will hopefully not generate any errors.


[docs] more docs for modifyQuery

modifyQuery is a powerful tool to extend the query builder, but it's doc is too simple.
This is my use case, I want to make my updatedAt update at UTC, after I dig into the source code, I finally worked out some code like this:
updatedAt: () =>
  t
    .timestampNoTZ()
    .default(() => new Date().toISOString())
    .modifyQuery((table) => {
      (table.query as any).updateData = [
        { __raw: '"updated_at" = now() AT TIME ZONE \'UTC\'', __values: undefined },
      ];
    }),

It could be easier if there are more docs.

I don't want to expose the inner details of the ORM because it's tricky to work with, and inner details can change in new releases since I don't expect people to rely on them.
Can't you use ...t.timestampsNoTZ() instead?
Or if you have only updatedAt column, can't you use the following instead?
updatedAt: t.timestampsNoTZ().updatedAt,

timestampsNoTZ modifies the query to update updatedAt to "now()" which is not UTC, so I hacked it this way to always save datetime to database in UTC format.

I thought modifyQuery is a public api to extend the query builder, but if it belongs to the inner details of the ORM, I think there should be another simpler api to extend the query builder for advanced operation such as soft delete, sortable and so on

I played a bit with it and reproduced the problem:
CREATE TABLE tmp (
  timestamp timestamp,
  timestamptz timestamptz
);

-- by default, now() is in UTC:
SELECT now();
-- I have 2023-05-04 14:58:23.701884 +00:00

INSERT INTO tmp VALUES (now(), now());

-- change timezone to something else:
SET timezone TO +5;

SELECT now();
-- now the value is 2023-05-04 19:59:30.674339 +05:00
-- this is exactly the same time, but in different time zone

INSERT INTO tmp VALUES (now(), now());

SELECT * FROM tmp;
-- timestamp                   timestamptz
-- 2023-05-04 15:03:09.136372, 2023-05-04 20:03:09.136372 +05:00
-- 2023-05-04 20:03:20.009841, 2023-05-04 20:03:20.009841 +05:00

So that's why timestamptz is a recommended type - no matter what the current time zone is, it saves time correctly.
I remember you can't migrate to timestamptz, but maybe you can change the timezone of db to UTC? That would also solve the problem. AFAIK, UTC is the default time zone disregarding your location.
How I can improve ORM for handling your case: it could accept a config parameter like the following:
export const BaseTable = createBaseTable({
  now: `now() AT TIME ZONE 'UTC'`,
});

And use this user-provided SQL in every place where it is using now().
I was going to add Soft delete functionality later, and for the Sortable you gave - I'll check what it is and perhaps also include it in plans. Implementing it on the user side is tricky and error-prone, it should be handled by the ORM.
Looks like modifyQuery indeed relies too much on inner details and better to remove it from the docs.

Thank you for your patient reply.
timezone
I'll dive deeper into postgres timezone sometime to see if I can migrate to timestamptz or change my database to UTC, as it's an old running database, this process may take long to be done. Until then, I'll go with hack or config parameter if it's implemented.
extending
Maintaing extra functionalities in the main repo is of course possible, but I have some concerns:

End-user may have lots of non-standard scenarios and requirements which is not suitable to add into the main repo, anyway we need some mechanism to extend the ORM.
Even if we'll implement some of the functionalities into the ORM, maybe it's better to decouple them as separate packages, such as orchid-plugin-solf-delete, orchild-plugin-sortable, orchid-plugin-plugable, orchid-plugin-searchable and so on.

So I suggest we carefully expose a set of limited api to replace the complex modifyQuery, official and third party packages should relay on these apis to extend the ORM.
I find there are callbacks which are close to, but they work on table.query, not on createTable.

Sure, but it's not an option to reveal internals, because each new release of Orchid ORM would have a risk to break third-party plugins. Plugins should rely on a public interface, and if you want to build a plugin and there's something missing in the ORM for it - let me know, open an issue, and let's extend the ORM the way it is flexible enough for the plugin.

we carefully expose a set of limited api to replace the complex modifyQuery

Of course, this API depends on the specific case, in your case with updatedAt I think that customizing now() is what's needed.

Yes, customizing now() is enough for updatedAt case, and I mentioned a public interface just for future functions.

I published update for this, hope this works for you, let me know: nowSQL option

Assuming this works for you, let me know if something


Error: Minified React error #130

Hello guys,
First of all, really nice job! I loved the avatars and their stylings.
I am developing a react web app using your avatar, I follow the implementation guide, but and it worked.
I could build and run locally my web app and all work fine.
But when I deploy into Netlify, I am getting the follow error when I open the app:
Error: Minified React error #130; visit https://reactjs.org/docs/error-decoder.html?invariant=130&args[]=object&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
After some tests, I remove the uses of this lib, and when I remove all work properly.
I did same reseach and I think it's something about the default export of the component.
Here is my implementation:

Importation

import ReactNiceAvatar, { genConfig, NiceAvatarProps } from 'react-nice-avatar';

My Component

`
export function UserAvatar({ ...rest }: AvatarProps) {
const { userData } = useAuthentication();

const { isOpen, onClose, onOpen } = useDisclosure();

const config = {
    "sex": 'man',
    "faceColor": '#E5B5A1',
    "earSize": 'small',
    "hairColor": '#000',
    "hairStyle": 'normal',
    "hatStyle": 'none',
    "hatColor": '#000',
    "eyeStyle": 'oval',
    "noseStyle": 'short',
    "mouthStyle": 'smile',
    "shirtStyle": 'short',
    "glassesStyle": 'none',
    "hairColorRandom": false,
    "isGradient": false,
    "shape": 'circle',
    "shirtColor": theme.colors.sarsil.orange,
    "bgColor": theme.colors.gray[50]
} as NiceAvatarProps;

const myConfig = genConfig(config);

return (
    <Flex
        as='button'
        cursor='pointer'
        onClick={onOpen}
    >
        {!!userData?.avatar ? (
            <Box
                w='15rem'
                h='15rem'
                bgColor='gray.50'
                borderRadius='50%'
                boxShadow='md'
                p='1px'
                {...rest}
            >
                {!!myConfig && (
                    <ReactNiceAvatar
                        style={{ width: '100%', height: '100%' }}
                        {...myConfig}
                    />
                )}
            </Box>
        ) : (
            <Center borderRadius='50%' p='4' bgColor='gray.50'>
                <Icon as={HiOutlineUser} fontSize='1.5rem' color='sarsil.orange' />
            </Center>
        )
        }
        <AvatarModal isOpen={isOpen} onClose={onClose} />
    </Flex >
);

}
`

Hi, not sure if it is related to myConfig, can you check if theme.colors.sarsil.orange and theme.colors.gray[50] return the correct result?

I have tried to generating the config using constants colors string, but the result was the same. Those variables return the hex string of theme color, I printed it, and the return is #FF5224 and #EEEEF2, respectively.

sorry no idea... is it normal in your local? We might able to get a better error msg if we can reproduce in the local

Local is working fine, that's the strangest part. And both of builds, locally and on netlify, are creating the dist package normally, without any error.

yeah that would be hard for the investigation haha
I searched another react avatar library for you so you won't stuck on this avatar issue https://github.com/boringdesigners/boring-avatars


Animated route history.back only triggers once

I have multiple routes setup and they are "chained" together (in a workflow sense, they are not nested) and if I go from Page A to Page B and then back, the animated route works properly and setups the appropriate classes in the main div. But if I go from Page A to Page B to Page C, and then start going back, the animated route only works properly from Page C to Page B, when going back from Page B to page A, it only triggers the normal classes and not the back ones.
Maybe I'm doing something wrong and the setup should be made differently?

Could you provide some example code so I can try to reproduce this and either fix it or see what's going wrong?


Write through layered caches

Right now, Cachex features read through caches with the use of the fallback method. It would be great if in the same fashion, we could get write through caches as well. I guess by leveraging the hooks, one could already do that but I am wondering if we could not make it simpler, more obvious.

Hi @tlvenn!
I'm not sure I see the value of write-through. It introduces a lot of overhead into Cachex in places where people will rarely need.
I'm interested in what you think of this though, and if it fits what you want (this is typically what I do if I need the same behaviour). I'm going to use Redis as an example of the outer layer.

Direct all your writes directly to Redis
Direct all your reads to Cachex with a Redis fallback
Optionally, make your Redis write calls evict the local Cachex entry

This is has the same effect, as your writes hit Redis and your caches always reflect the latest reads from Redis. The only difference is that your cache will wait to populate with the new write until it's asked for (which is arguably better).
Does this seem sufficient, or is there still something you see missing here? Or do you have a specific concern?
Let me know!

Hi @zackehh,
For me the value of a layered cache is to hide some complexity of those layers or that those layers even exist to some extent. From an api point of view, I want cachex to be my single point of contact.
I should be able to change the configuration of a given cache to:

only use ETS, no layered cache
ETS + disk
ETS + redis
ETS + XXX

And it would not impact my code at all because cachex is my only interface and it handles transparently for me to read and write from the layered caches. To my knowledge, this is how most layered cache works.
If we were to introduce a secondary_cache behaviour, I believe it would be fairly easy to implement a redis_secondary_cache with a pluggable client and integrate that behaviour as a config option to a given cache and wire it on the different actions using a hook.
What do you think ?

Hey @tlvenn,
I started writing a response explaining why we shouldn't do this but then thought of a way we might be able to make it plausible. The big issue is a performance hit and tying Cachex code too closely to other projects - e.g. if you define a custom Cachex command called lpop, Cachex can't know the Redis equivalent.
I'll think about this a little more and get back to you, no promises though.

Did you think about this more? I was interested if you had anymore ideas.
My idea was using this library as a cache and then writing code that syncs the data to ecto asynchronously.

@fire I did, but really there's no way I can think of implementing it without bloating the codebase with knowledge of something like Ecto.
Any ideas?

ya those secondary cache need to come as plugins in their own lib such as cachex-redis, cachex-ecto etc.. It should not be in the cachex code base for sure. Cachex should only provide the behaviour that need to be adopted by those plugins.
As for custom commands, maybe this is simply not supported by secondary caches at all, only k/v operations would be supported.
Now i understand this could become a rabbit hole quite quickly and maybe not desirable.

I moved to https://github.com/cabol/nebulex_ecto , but thank you for the discussion. It uses a library for caching -- nebulex and then an ecto adapter.

I'm going to close this I think, for a number of reasons. Mainly I believe that write-through is actually a less consistent pattern than what can be achieved with fallbacks. What would happen if the Cachex write works and then the write in Redis fails? Boom, you have an issue.
In addition, it's not an easy thing to write in a maintainable way and I can see supporting it being difficult (for something that's of questionable necessity), and as such I'm going to punt it for now. If anyone else can provide additional statements why it should be added, I'm totally willing to reconsider!


AsyncLocalStore context manager assigns news spans as children of previous spans in another async context

What happened?
Spans are getting created under the same context when unit of works are unrelated.
Steps to Reproduce
import { tracer, enableConsoleSpanExporter } from './tracing.js'
import { EventEmitter } from 'events'
import * as otel from '@opentelemetry/api'
import * as winston from 'winston'
import { AsyncResource, executionAsyncId, triggerAsyncId } from 'async_hooks'

function createLogger({ logLevel = 'info' } = {}) {
    return winston.createLogger({
        level: logLevel,
        exitOnError: false,
        format: winston.format.combine(winston.format.timestamp(), winston.format.json(), winston.format.colorize()),
        transports: [
            new winston.transports.Console()
        ]
    })
}

export class FakeQueue {
    constructor() {
        this.logger = createLogger({ logLevel: 'debug' })
        this.subscription = new EventEmitter()
    }

    async run(channel) {
        this.subscription.on('message', (message) => tracer.startActiveSpan('consumeMessage', { kind: otel.SpanKind.CONSUMER }, (span) => this.consumeMessage(message, { span })))
        channel.emit('subscribed')
    }

    async publishMessage(message, id, retryCount = 0) {
        this.subscription.emit('message', {
            ack: () => { },
            nack: () => {
                // mimic a static requeue logic
                if (retryCount < 2) {
                    process.nextTick(() => this.publishMessage(message, id, retryCount + 1))
                }
            },
            id,
            retryCount,
            data: JSON.stringify(message)
        })
    }

    async consumeMessage(message, { span = tracer.startSpan() } = {}) {
        const logger = this.logger
        span.setAttribute('messageId', message.id)
        const payload = JSON.parse(message.data)
        logger.info('received message', { payload, triggerAsyncId: triggerAsyncId(), executionAsyncId: executionAsyncId(), context: otel.context.active().getValue('id') })
        span.setAttributes({ pageURL: payload.url })
        const url = new URL(payload.url)
        if (['http', 'https'].indexOf(url.protocol.split(':')[0]) > -1) {
            span.setStatus({ code: otel.SpanStatusCode.OK })
            span.end()
            message.ack()
        } else {
            span.setStatus({ code: otel.SpanStatusCode.ERROR })
            span.end()
            message.nack()
        }
    }
}

enableConsoleSpanExporter()
const processor = new FakeQueue()
const runChannel = new EventEmitter()
runChannel.on('subscribed', () => {
    const urls = [
        'http://google.com',
        'httpXX://google.com'
    ]
    urls.forEach((url, id) => {
        const asyncResource = new AsyncResource('PROMISE', { triggerAsyncId: id })
        asyncResource.runInAsyncScope(processor.publishMessage, processor, { url }, id)
    })
})
await processor.run(runChannel)

Expected Result
Four spans be created like:
- span S1 | trace T1
- span S2 | trace T2
- span S3 | trace T3
- span S4 | trace T4

Actual Result
Four spans are created like:
- span S1  | trace T1
- span S2 | trace T2
   \ -  span S2.1 | trace T2 | parent span S2
      \ - span S2.1.1 | trace T2 | parent span S2.1

According to the docs:

A Context is a propagation mechanism which carries execution-scoped values across API boundaries and between logically associated execution units. Cross-cutting concerns access their data in-process using the same shared Context object.
And in my logs, I see:

{"executionAsyncId":17,"level":"info","message":"received message","payload":{"url":"http://google.com"},"span_id":"7bcdf04275779e57","timestamp":"2023-07-17T21:09:55.408Z","trace_flags":"01","trace_id":"c999918e9993f24afe0d175c140672e7","triggerAsyncId":0}
{"executionAsyncId":27,"level":"info","message":"received message","payload":{"url":"httpXX://google.com"},"span_id":"b20ac8b02e3c9310","timestamp":"2023-07-17T21:09:55.412Z","trace_flags":"01","trace_id":"5a9c898dd9efa15ae420d6ceaf251f25","triggerAsyncId":1}
{"executionAsyncId":37,"level":"info","message":"received message","payload":{"url":"httpXX://google.com"},"span_id":"2d1956cc75ccd1ef","timestamp":"2023-07-17T21:09:55.413Z","trace_flags":"01","trace_id":"5a9c898dd9efa15ae420d6ceaf251f25","triggerAsyncId":27}
{"executionAsyncId":54,"level":"info","message":"received message","payload":{"url":"httpXX://google.com"},"span_id":"ad4247eb583bdd01","timestamp":"2023-07-17T21:09:55.414Z","trace_flags":"01","trace_id":"5a9c898dd9efa15ae420d6ceaf251f25","triggerAsyncId":37}

Different executionAsyncId, and triggerAsyncId, to me, suggests the works are unrelated, so different contexts should be created, and the third and the fourth spans should not have parent span IDs.
Additional Details
I struggled with this on https://github.com/open-telemetry/opentelemetry-js/issues/3993. I closed that one as this new issue summarizes what's going on.
I also read this comment by @Flarna :

The ContextManager component is responsible to propagate a context across as async boundaries. e.g. if you call process.nextTick(someCb) at a time contextWithSpanA is active the context manager takes care that this context is set as active before someCb is called and inactive after it returns.

This explains this behavior, but I don't understand why it's the current implementation. Doesn't a different Trigger ID suggest the works are unrelated and another context should get created?
OpenTelemetry Setup Code
'use strict'

import { NodeTracerProvider, SimpleSpanProcessor, ConsoleSpanExporter} from '@opentelemetry/sdk-trace-node'
import { WinstonInstrumentation } from '@opentelemetry/instrumentation-winston'
import { registerInstrumentations } from '@opentelemetry/instrumentation'
import { Resource } from '@opentelemetry/resources'
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'

const resource = new Resource({ [SemanticResourceAttributes.SERVICE_NAME]: 'fake-queue' })
export const provider = new NodeTracerProvider({ resource })
export const tracer = provider.getTracer('root')

provider.register()

registerInstrumentations({
    instrumentations: [new WinstonInstrumentation()]
})

export function enableConsoleSpanExporter() {
    const exporter = new ConsoleSpanExporter()
    provider.addSpanProcessor(new SimpleSpanProcessor(exporter))
}

package.json
{
  "dependencies": {
    "@opentelemetry/instrumentation-winston": "^0.31.4",
    "@opentelemetry/sdk-node": "^0.40.0",
    "npm": "^9.8.0",
    "winston": "^3.8.2"
  }
}

Relevant log output
{"executionAsyncId":17,"level":"info","message":"received message","payload":{"url":"http://google.com"},"span_id":"6549ce61fb306eb5","timestamp":"2023-07-17T21:10:10.491Z","trace_flags":"01","trace_id":"2082457d36d04ddacecfcbb16633953c","triggerAsyncId":0}
{
  traceId: '2082457d36d04ddacecfcbb16633953c',
  parentId: undefined,
  traceState: undefined,
  name: 'consumeMessage',
  id: '6549ce61fb306eb5',
  kind: 4,
  timestamp:<PHONE_NUMBER>490000,
  duration: 2944,
  attributes: { messageId: 0, pageURL: 'http://google.com' },
  status: { code: 1 },
  events: [],
  links: []
}
{"executionAsyncId":27,"level":"info","message":"received message","payload":{"url":"httpXX://google.com"},"span_id":"7fbd65ae38ec0242","timestamp":"2023-07-17T21:10:10.495Z","trace_flags":"01","trace_id":"bba187f95d5c05bcb8a278bcbf7f7cb5","triggerAsyncId":1}
{
  traceId: 'bba187f95d5c05bcb8a278bcbf7f7cb5',
  parentId: undefined,
  traceState: undefined,
  name: 'consumeMessage',
  id: '7fbd65ae38ec0242',
  kind: 4,
  timestamp:<PHONE_NUMBER>495000,
  duration: 262,
  attributes: { messageId: 1, pageURL: 'httpXX://google.com' },
  status: { code: 2 },
  events: [],
  links: []
}
{"executionAsyncId":37,"level":"info","message":"received message","payload":{"url":"httpXX://google.com"},"span_id":"4ef5e092ace470ba","timestamp":"2023-07-17T21:10:10.496Z","trace_flags":"01","trace_id":"bba187f95d5c05bcb8a278bcbf7f7cb5","triggerAsyncId":27}
{
  traceId: 'bba187f95d5c05bcb8a278bcbf7f7cb5',
  parentId: '7fbd65ae38ec0242',
  traceState: undefined,
  name: 'consumeMessage',
  id: '4ef5e092ace470ba',
  kind: 4,
  timestamp:<PHONE_NUMBER>496000,
  duration: 178,
  attributes: { messageId: 1, pageURL: 'httpXX://google.com' },
  status: { code: 2 },
  events: [],
  links: []
}
{"executionAsyncId":54,"level":"info","message":"received message","payload":{"url":"httpXX://google.com"},"span_id":"8c49dedc7ee9aabc","timestamp":"2023-07-17T21:10:10.496Z","trace_flags":"01","trace_id":"bba187f95d5c05bcb8a278bcbf7f7cb5","triggerAsyncId":37}
{
  traceId: 'bba187f95d5c05bcb8a278bcbf7f7cb5',
  parentId: '4ef5e092ace470ba',
  traceState: undefined,
  name: 'consumeMessage',
  id: '8c49dedc7ee9aabc',
  kind: 4,
  timestamp:<PHONE_NUMBER>496000,
  duration: 231,
  attributes: { messageId: 1, pageURL: 'httpXX://google.com' },
  status: { code: 2 },
  events: [],
  links: []
}

AsyncLocalStore is always following the execution path, never the trigger path. As far as I remember in the initial PR to add AsyncLocalStore there were some discussions regarding this. But be warned, it's a huge PR with a lot comments :o).
In your code there is a single execution path: processor.run() calls sync channel.emit('subscribed') calls sync the subscribed listener calls sync publishMessage calls sync this.subscription.emit("message") calls sync tracer.startActiveSpan() in the message listener.
It is only async in message.nack() which uses nextTick() to call publishMessage. As this runs in context of the above span this span is propagated.
The way how AsyncResource is used here is not helpful and useless. It picks up the context at creation time and immediatelly .runInAsyncScope() is called - so the context which was active is set as active again.
Your sample tries to simulate a message queue in a single process which results in wrong propagation. The consumer triggers the producer via a nextTick() call with an active consumer span. This sort of mixup between producer and consumer result in nested spans where one would not expect nesting.
You could try to add context.with(ROOT_CONTEXT, cb) to force an empty context for publishMessage to break consumer and producer. It might also work to use EventEmitterAsyncResource instead a simple EventEmitter but I haven't tried.


Changes to main should trigger a docs deployment

So that the docs are always up to date. We can use the vercel GitHub  action for it: https://github.com/marketplace/actions/vercel-action

Oh yep I misread the code. It does revaluate every 5 mins 😅


Add textAlign prop to TextTableCell

The isNumber prop, when true, should align the text right. This commit adds the textAlign prop to the Text component, when isNumber is true.

Oh I didn't realize this was in accordance with what the docs say! I'm sorry for not checking there.
Hm... I still think we probably should let consumers choose (or at least be able to override it). WDYT?

Honestly I'm not sure.
I wonder if just doing the one thing, adding the mono font family, is enough to warrant using the isNumber prop, or even having it in the first place, and whether many folk will be adding textAlign="right" on number columns themselves anyway.
OTOH, though small, it is a breaking change, and may trip up some consumer apps, and, as you say, it's not hard for a consumer to define a number column the way they want it. :man_shrugging:
Personally I'd probably remove the isNumber prop entirely, perhaps deprecating it in major version release.

OTOH, though small, it is a breaking change, and may trip up some consumer apps, and, as you say, it's not hard for a consumer to define a number column the way they want it. 🤷♂
Personally I'd probably remove the isNumber prop entirely, perhaps deprecating it in major version release.

@robphoenix yeah I agree with all of that


IGAPP-571: Upgrade to react-native v0.65.1

This pull request belongs to an issue on our bugtracker.
You can find it there by looking for an issue with the key which is mentioned in the title of this pull request.
It starts with the keyword IGAPP.

[ ]  Install Pods on iOS
[ ] Test on iOS

Currently blocked by react-native-reanmiated which does not support RN 0.65 right now.


dsFPD L3 Python Test Code

L3 Python Test code development using RAFT framework.
Closes : #201

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: akhilbhas:x: Akhil Baby SaradaAkhil Baby Sarada seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


device change will result in error in trainning.

when i change cpu to gpu in the finetune_task_data.yaml :
train:
  _target_: dataloaders.decord_dataset.DecordDataset
  config:
    _target_: dataloaders.utils.DataLoaderConfig
    dataset_root: ${env_vars.finetune_task_data_root}
    trajectory_roots:
      _target_: dataloaders.utils.load_trajectory_roots
      trajectory_root_path: ${dataset.train.config.dataset_root}/r3d_files.txt
      original_root: ${env_vars.finetune_task_data_original_root}
      new_root: ${dataset.train.config.dataset_root}
    include_tasks:
      - ${include_task}
    exclude_homes: []
    include_envs:
      - ${include_env}
    sequence_length: 1
    trajectory_subsample_fraction: 1.0
    control_timeskip: 7
    fps_subsample: 1
    relative_gripper: False
    use_depth: ${use_depth}
    binarize_gripper: false
    binarize_gripper_threshold: 0.8
    binarize_gripper_upper_value: 1.0
    binarize_gripper_lower_value: 0.35
  max_videoreaders_in_memory: 128
  shuffle_mode: RANDOM_ORDER
  device: gpu #here

test:
  _target_: dataloaders.decord_dataset.DecordDataset
  config:
    _target_: dataloaders.utils.DataLoaderConfig
    dataset_root: ${env_vars.finetune_task_data_root}
    trajectory_roots:
      _target_: dataloaders.utils.load_trajectory_roots
      trajectory_root_path: ${dataset.test.config.dataset_root}/r3d_files.txt
      original_root: ${env_vars.finetune_task_data_original_root}
      new_root: ${dataset.test.config.dataset_root}
    include_tasks:
      - ${include_task}
    exclude_homes: []
    include_envs:
      - ${include_env}
      # - ${include_env}_val
    sequence_length: ${dataset.train.config.sequence_length}
    control_timeskip: ${dataset.train.config.control_timeskip}
    fps_subsample: ${dataset.train.config.fps_subsample}
    relative_gripper: ${dataset.train.config.relative_gripper}
    use_depth: ${use_depth}
    binarize_gripper: ${dataset.train.config.binarize_gripper}
    binarize_gripper_threshold: ${dataset.train.config.binarize_gripper_threshold}
    binarize_gripper_upper_value: ${dataset.train.config.binarize_gripper_upper_value}
    binarize_gripper_lower_value: ${dataset.train.config.binarize_gripper_lower_value}
  max_videoreaders_in_memory: 128
  shuffle_mode: SEQUENTIAL
  device: gpu #here

and I get error in traning. This code runs normally on the CPU.
Traceback (most recent call last):
  File "/home1/rhs/code_workspace/dobb-e/imitation-in-homes/train.py", line 411, in main
    workspace.run()
  File "/home1/rhs/code_workspace/dobb-e/imitation-in-homes/train.py", line 190, in run
    self._train_epoch()
  File "/home1/rhs/code_workspace/dobb-e/imitation-in-homes/train.py", line 218, in _train_epoch
    for batch in iterator:
  File "/home1/rhs/.conda/envs/home_robot/lib/python3.9/site-packages/tqdm/std.py", line 1178, in __iter__
    for obj in iterable:
  File "/home1/rhs/.conda/envs/home_robot/lib/python3.9/site-packages/accelerate/data_loader.py", line 552, in __iter__
    current_batch = next(dataloader_iter)
  File "/home1/rhs/.conda/envs/home_robot/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 701, in __next__
    data = self._next_data()
  File "/home1/rhs/.conda/envs/home_robot/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1465, in _next_data
    return self._process_data(data)
  File "/home1/rhs/.conda/envs/home_robot/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1491, in _process_data
    data.reraise()
  File "/home1/rhs/.conda/envs/home_robot/lib/python3.9/site-packages/torch/_utils.py", line 715, in reraise
    raise exception
decord._ffi.base.DECORDError: Caught DECORDError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/home1/rhs/.conda/envs/home_robot/lib/python3.9/site-packages/torch/utils/data/_utils/worker.py", line 351, in _worker_loop
    data = fetcher.fetch(index)  # type: ignore[possibly-undefined]
  File "/home1/rhs/.conda/envs/home_robot/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home1/rhs/.conda/envs/home_robot/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 52, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home1/rhs/code_workspace/dobb-e/imitation-in-homes/dataloaders/decord_dataset.py", line 230, in __getitem__
    frames = self._get_video_frames(trajectory_slice)
  File "/home1/rhs/code_workspace/dobb-e/imitation-in-homes/dataloaders/decord_dataset.py", line 247, in _get_video_frames
    videoreader = self._get_video_reader(video_index)
  File "/home1/rhs/code_workspace/dobb-e/imitation-in-homes/dataloaders/decord_dataset.py", line 295, in _get_video_reader
    self._video_reader_cache[index] = decord.VideoReader(
  File "/home1/rhs/.local/lib/python3.9/site-packages/decord-0.6.0-py3.9-linux-x86_64.egg/decord/video_reader.py", line 54, in __init__
    self._handle = _CAPI_VideoReaderGetVideoReader(
  File "/home1/rhs/.local/lib/python3.9/site-packages/decord-0.6.0-py3.9-linux-x86_64.egg/decord/_ffi/_ctypes/function.py", line 173, in __call__
    check_call(_LIB.DECORDFuncCall(
  File "/home1/rhs/.local/lib/python3.9/site-packages/decord-0.6.0-py3.9-linux-x86_64.egg/decord/_ffi/base.py", line 78, in check_call
    raise DECORDError(err_str)
decord._ffi.base.DECORDError: [17:06:39] /home1/rhs/code_workspace/dobb-e/thirdpkg/decord/src/video/nvcodec/cuda_stream.cc:20: Check failed: e == cudaSuccess || e == cudaErrorCudartUnloading CUDA: initialization error at line: 20 in file: /home1/rhs/code_workspace/dobb-e/thirdpkg/decord/src/video/nvcodec/cuda_stream.cc

Note that here, the device variable is for decord and not for pytorch. As a result,

You need to install gpu-supported decord (https://github.com/dmlc/decord?tab=readme-ov-file#install-from-source) to use it in the first place, and
We don't use gpu decoding anyway since in our experiments it is faster to decode on CPU.

We recommend keeping this variable to cpu.


Question: Should Dio object created as singleton

Since I did not find an answer to this question in the documentation, I must ask here :)
Question:
I am creating class/service that will handle http requests, I will use Dio library, but I have a concern regarding the performance, do I need to declare dio object as static instance in order to save some resources? Is It necessary?
For example:
static const Dio http = Dio();
And do I have to call close() method every time I finished with http request?
Please advice.
Thanks,
Lazar

I'm just taking a look at this plugin, so I didn't read the documentation, but in Flutter you can instantiate anything using factory.
An example:
class CustomDio {
static CustomDio _singletonHttp;
Dio _http;
factory CustomDio() {
if (_singletonHttp == null) singletonHttp = CustomDio.();
return singletonHttp;
}
CustomDio.() {
_http = Dio();
}
get client => _http;
dispose() {
_httpClient.close();
}
}
I built this class out of the data from your question, I don't know if it's objectively what you want, but it's learning anyway.
CustomDio().client will always call the same instance in this example, and will take advantage of the keep alive of your server.
Even using http and thinking of using Dio for the first time today, to my knowledge you should close the http connection when no more requests are made, or when a downtime limit is reached.

Since I did not find an answer to this question in the documentation, I must ask here :)
Question:
I am creating class/service that will handle http requests, I will use Dio library, but I have a concern regarding the performance, do I need to declare dio object as static instance in order to save some resources? Is It necessary?
For example:
static const Dio http = Dio();
And do I have to call close() method every time I finished with http request?
Please advice.
Thanks,
Lazar

I'm just taking a look at this plugin, so I didn't read the documentation, but in Flutter you can instantiate anything using factory.
An example:
class CustomDio {
static CustomDio _singletonHttp;
Dio _http;
factory CustomDio() {
if (_singletonHttp == null) singletonHttp = CustomDio.();
return singletonHttp;
}
CustomDio.() {
_http = Dio();
}
get client => _http;
dispose() {
_httpClient.close();
}
}
I built this class out of the data from your question, I don't know if it's objectively what you want, but it's learning anyway.
CustomDio().client will always call the same instance in this example, and will take advantage of the keep alive of your server.
Even using http and thinking of using Dio for the first time today, to my knowledge you should close the http connection when no more requests are made, or when a downtime limit is reached.

Since I did not find an answer to this question in the documentation, I must ask here :)
Question:
I am creating class/service that will handle http requests, I will use Dio library, but I have a concern regarding the performance, do I need to declare dio object as static instance in order to save some resources? Is It necessary?
For example:
static const Dio http = Dio();
And do I have to call close() method every time I finished with http request?
Please advice.
Thanks,
Lazar

Any news if is correct to create a singleton?

@Allan-Nava Yes, it is correct in my opinion. Already used singleton for my production apps and it's working fine.

@Allan-Nava Yes, it is correct in my opinion. Already used singleton for my production apps and it's working fine.

can you share your code to create dio with singleton partten?

@Allan-Nava Yes, it is correct in my opinion. Already used singleton for my production apps and it's working fine.

can you share your code to create dio with singleton partten?

you can just create is using get_it dependency injection package and use it in every file.. i am doing the same here's the code: getIt.I
..registerSingleton(Dio());

I have created this dio service please check here.
https://gist.github.com/naumanahmed19/9b5a42bb0eeeb7d0f6a76ac023a20eae``


kafka: upgrade dependencies to 3.5.1

Commit Message: kafka: upgrade dependencies to 3.5.1
Additional Description: upgrade dependencies, the newest message type is not supported because I still need to deliver some more code there; should be safe to backport (because it's only Kafka protocol)
Risk Level: Low
Testing: integration testing with full stack; manual testing with envoy-kafka-tests
Docs Changes: version numbers
Release Notes: N/A
Platform Specific Features: N/A

/backport

/retest

Weirdness. Repokitteh didn't restart my builds. Here we go again.

https://github.com/envoyproxy/envoy/issues/28934

Ready for review - it finally builds!


Error in customer mails

Expected behavior:
If a customer got the mail click the link where is see his order history if he is not log in then redirect to login page
Actual behavior:
If the customer is got the mail if he wants to open a link attached in the mail he got error see in the image
Version:
v3.0

I'm unable to reproduce this error on my end. Any additional information that could help?

if the customer creates a new order he got the mail your order is processed successfully and you can see you order the link account/order if the customer is not login and open direct this email in other browser and phone then he got the error. if the customer is  login there is no problem he will directly see his order

On my side, when I client the order link, the page redirects back to the home page when not logged in.

but in my case no redirection after clicking in order link. I added also the session in account page but no resposnse


Problems :return inspect.signature(optimizer.step).parameters.get('closure').default == inspect._empty AttributeError: 'NoneType' object has no attribute 'default'

Hi,
Thanks for developing this awesome package!
Here is the problems occured after i used the package to train the examples in https://neurodiffeq.readthedocs.io/en/latest/getstart.html#ODE-Example-1:-Exponential-Decay-(using-the-legacy-solve-function):
Training Progress:   0%|          | 0/1000 [00:00<?, ?it/s]
Traceback (most recent call last):
File "C:\Users\Leonardo Shi\Desktop\MolecularReconsTest\MolecularLevelCCR\整花活\PINN.py", line 10, in
solution_ex, loss_ex = solve(
File "C:\Users\Leonardo Shi\AppData\Roaming\Python\Python310\site-packages\neurodiffeq\ode.py", line 139, in solve
return solve_system(
File "C:\Users\Leonardo Shi\AppData\Roaming\Python\Python310\site-packages\neurodiffeq\ode.py", line 307, in solve_system
solver.fit(max_epochs=max_epochs, monitor=monitor)
File "C:\Users\Leonardo Shi\AppData\Roaming\Python\Python310\site-packages\neurodiffeq\solvers.py", line 462, in fit
self.run_train_epoch()
File "C:\Users\Leonardo Shi\AppData\Roaming\Python\Python310\site-packages\neurodiffeq\solvers.py", line 397, in run_train_epoch
self._run_epoch('train')
File "C:\Users\Leonardo Shi\AppData\Roaming\Python\Python310\site-packages\neurodiffeq\solvers.py", line 333, in _run_epoch
if key == 'train' and not _requires_closure(self.optimizer):
File "C:\Users\Leonardo Shi\AppData\Roaming\Python\Python310\site-packages\neurodiffeq\solvers.py", line 29, in _requires_closure
return inspect.signature(optimizer.step).parameters.get('closure').default == inspect._empty
AttributeError: 'NoneType' object has no attribute 'default'
Thanks a lot for your time!
Cheers,
Leonardo.

Hi Leonardo,
Which version of NeuroDiffEq are you using? The line of error seems to be from a previous version. If you upgrade to the latest version using
pip install -U neurodiffeq

the problem should be resolved.

Thanks, the problem is solved by downloading the package directly.


XFS's FSID might change after reboot/remount

E.g. https://github.com/longhorn/longhorn/issues/971
We probably need to find another way of identifying a filesystem.

I just ran into this (#971) on one of the node that got rebooted.  4 out of 6 partition fsid changed.  The kubectl edit workaround was able to fix it.

We might want to stop identify disks using FSID. FSID can be used when checking the disk to prevent double accounting, but it's not stable in e.g. XFS case.

Another usage of FSID is to prevent wrongly mounted directory. For example, if the extra disk wasn't mounted on the node when manager starts, manager will know and prevent further operation on that disk. So we also need a way to make sure the path is indeed pointed to the intended disk if we're going to replace FSID.

API change:

DiskUpdate input is now a map[string]DiskSpec instead of []DiskSpec

UI changes:

Show the disk name in the UI (read-only)
For new disks, generate disk names like disk-0/1/2/3 and use it as the key.
When passing parameters to diskUpdate API call, passing map[string]DiskSpec instead of []DiskSpec.

@smallteeths ^^

Now LEP is available at https://github.com/longhorn/longhorn/blob/master/enhancements/20200331-replace-filesystem-id-key-in-disk-map.md

Validation: PASSED
Steps to test (1/2):

Deploy Longhorn, root disk on each node should be schedulable on /var/lib/longhorn
Add a disk to the node, where the new disk path is on existing node disk e.g /home or /mnt
Check longhorn events, should see the following event

Disk disk-1(/mnt/) on node meldafrawi-x2-longhorn-01 is not ready: disk has same file system ID 58fe937c58377e45 as other disks [58fe937c58377e45 disk-1]

Steps to test (1/2):

Create 2 disks with same size, format disk1 with ext4, and disk2 with xfs
Mount disk2 to a directory  /mnt
Ensure Replica Soft Anti-Affinity is enabled
Disable scheduling on all nodes
Add /mnt as new disk, now /mnt points to disk2, and enable scheduling
Create a volume, attach it to a node, replicas should be scheduled on disk2
Write data to volume and compute it's checksum checksum#1
Detach the volume, and disable scheduling on disk2
Mount disk1 to another directory
Copy all contents of disk2 to disk1, including longhorn-disk.cfg file
Unmount /mnt
Ummount disk1
Mount disk1 /mnt
Enable scheduling on /mnt, now /mnt points to disk1
Attach the volume, volume should be attached, , R/W operations should work.
check data checksum, checksum should match checksum#1
Create a new volume, replicas should be scheduled to the disk without issues
Attach the new volume to a node, volume should be attached, R/W operations should work.


Error inside LightTable

I have all of the requirements installed and elm at v0.15.1 installed with the Mac installer.
When I run any elm releated commands in LightTable I get the same error.
My LightTable is freashly installed on version 0.7.2, running OSX 10.11.1.
The error message is the following when running elm lint-
We couldn't connect.

Looks like there was an issue trying to connect to the project. Here's what we got:
events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: spawn elm-reactor ENOENT
    at exports._errnoException (util.js:837:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at doNTCallback2 (node.js:437:9)
    at process._tickCallback (node.js:351:17)

My folder structure is
├── Main.elm
├── elm-package.json
├── elm.js
└── elmclient.log

And the content of my elm-package.json is
{
    "version": "1.0.0",
    "summary": "helpful summary of your project, less than 80 characters",
    "repository": "https://github.com/user/project.git",
    "license": "BSD3",
    "source-directories": [
        "."
     Sorry about that :+1:

Experiencing same issue with 0.8.0 alpha on Linux. Have all necessary binaries in my $PATH

https://nodejs.org/api/errors.html#errors_enoent_no_such_file_or_directory
I'm pretty sure this error is an indication that elm-reactor cannot be found (from the path available to Light Table).
I just tried on a different mac. Tried first without installing elm and got the exact same error, then installed elm and it worked just fine. Haven't tried linux yet, but will give it a test run when I get a chance.

@rundis yup, I've forgot that I had nodejs installed through nvm that has custom binaries path. But I think it's a good idea to make this thing configurable


Create endpoint for viewing customer profile by account_number

Create an endpoint to get the customer's profile by account_number

User Story
The customer profile should be able to be retrieved using the customer's account number
Tasks

[ ] Implement an endpoint to handle the API requests to the ../bank_app/servers/authentication dir.
[ ] Implement the queries and logic to get the records from the db to the ../bank_app/db/../authentication dir.
[ ] Add any environment variable to the ../bank_app/core/config.py file.


[Bug] Doubts about additional cursors

Reproducible in vscode.dev or in VS Code Desktop?

[X] Not reproducible in vscode.dev or VS Code Desktop

Reproducible in the monaco editor playground?

[ ] Not reproducible in the monaco editor playground

Monaco Editor Playground Link
No response
Monaco Editor Playground Code
No response
Reproduction Steps
No response
Actual (Problematic) Behavior
No response
Expected Behavior
No response
Additional Context
When I select multiple lines of text, the cursor position is correct, but an additional vertical line will be added below, just like an additional cursor. I don't know how this came about.
https://github.com/microsoft/monaco-editor/assets/5136418/7fee6dd1-4c2d-44b6-ba7a-3f798be66509
my init config like this
value: 'xxx',
theme: 'vs-dark',
language: 'json',
links: false,
readOnly: true,
cursorStyle: 'underline-thin',
lineNumbers: 'off',
lineHeight: 24,
suggestLineHeight: 24,
contextmenu: false,
// set fontsize and family to avoid cursor offset
fontSize: 14,
fontFamily: 'Monaco',
showFoldingControls: 'always',
// auto layout, performance cost
automaticLayout: true,
wordWrap: 'on',
// long text indent when wrapped
wrappingIndent: 'indent',
// cursor line highlight
renderLineHighlight: 'none',
// highlight word when cursor in
occurrencesHighlight: false,
// disable scroll one page at last line
scrollBeyondLastLine: false,
// hide scroll sign of current line
hideCursorInOverviewRuler: true,
minimap: {
  enabled: false,
},
// vertical line
guides: {
  indentation: false,
  highlightActiveIndentation: false,
},
scrollbar: {
  useShadows: false,
  verticalScrollbarSize: '9px',
  horizontalScrollbarSize: '9px',
}

solved by adding accessibilitySupport: false

but I still don't know why this


add date scheduling

Add date scheduling lookup

Thanks Reid, I'll take a look at this now and leave some comments.

This is looking better! Looks like CI is failing and I think it might be because of a timezone issue in your tests. Can you take a look at those when you get a chance?

@tanner0101 Tests are passing on this now, what do you think?

Alright, so here's what I thinking in terms of what the public API for this should look like. Right now, scheduling a job looks like this:
services.register { container -> JobsConfig in
    var jobsConfig = JobsConfig()
    jobs.add(try EmailJob(emailService: container.make()))
    return jobsConfig
}

I propose that we do a few things:

Add a new method to JobsConfig that looks like this:

mutating public func schedule<J: Job>(_ job: J, at recurrenceRule: RecurrenceRule) {
    let scheduledJob = ScheduledJob(job: job, at: recurrenceRule)
    scheduledJobs[String(describing: scheduledJob.job.Data.self)] = scheduledJob
}

Change the ScheduledJob struct to look something like this:

public struct ScheduledJob<J: Job> {
    let job: J
    let recurrenceRule: RecurrenceRule

    public init(job: J, at recurrenceRule: RecurrenceRule) {
        self.job = job
        self.recurrenceRule = recurrenceRule
    }
}

The above two items allow you to register a scheduled job like this:
services.register { container -> JobsConfig in
    var jobsConfig = JobsConfig()
    let emailJob = try EmailJob(emailService: container.make())

    jobs.add(emailJob)
    jobs.schedule(emailJob, at: .every(.second(3)))
    return jobsConfig
}

Now, all of this raises the question of what the public API should look like for actually interacting with RecurrenceRule. I propose a few key features:

Static methods to facilitate easier setup and avoid the necessity of passing around RecurrenceRule()
The ability to specify step values and absolute values:

// Step
jobs.schedule(emailJob, at: .atHours([5, 6]).every(.minutes(22)))

// Absolute
jobs.schedule(emailJob, at: .atHour(5).atMinute(30).atSecond(19))

I'm interested to hear people's thoughts on all of the above. Before merging this we need to lock down what our public facing API is going to be so that we can ensure that we have the internal pieces necessary (and also to eliminate anything that isn't necessary).
cc @rnantes @tanner0101

@mcdappdev I am fine with those changes to JobsConfig and ScheduledJob as I did not focus to heavily on that. As for the RecurrenceRule that public API looks similar to what I have right now, which I find works well. Changing Static methods makes sense, I would just have to implement that.

@rnantes Great! I can handle all of the changes to JobsConfig and how to get this implemented on the backend side of things, but if you could make the updates otherwise that'd be great. I think we can also delete ScheduledJobsConfig as well.

Perfect!  deleting ScheduledJob config is fine by me.

I explain here how I have the RecurrenceRule API working here
RecurrenceRules
Setting up a RecurrenceRule uses similar principles of cron job scheduling
some good references: https://crontab-generator.org/, https://crontab-generator.org/
You can set constraints on these date components (RecurrenceRuleTimeUnits):

year (1970-)
quarter (1-4)
month (1-12) ex: 1 is January, 12 is December
weekOfYear (1-52)
weekOfMonth (1-5)
dayOfMonth (1-31) ex: 1 is the 1st of month, 31 is the 31st of month
dayOfWeek (1-7) ex: 1 Sunday, 7 Saturday
hour (0-23)
minute (0-59)
second (0-59)

Setting up RecurrenceRule Constraints
Single Value Constraints
RecurrenceRule().atHour(5).atMinute(30).atSecond(19) // will run at 5:30:19
Multiple Value Constraints
RecurrenceRule().atHours([5, 6]).atMinutes([19, 36]) // will run at 5:19, 5:36, 6:19, 6:36
Range Constraints
RecurrenceRule().atHoursInRange(lowerBound: 7, upperBound: 11).atMinute(19) // will run at 7:19, 8:19, 9:19, 10:19, 11:19
Step Value Constraints (.every())
RecurrenceRule().atHours([5, 6]).every(.minutes(15)) // will run at 5:00, 5:15, 5:30, 5:45, 6:00, 6:15, 6:30, 6:45, 7:00
WARNING step value repeat at the start of higher Date Components
RecurrenceRule().atHours([5, 6]).every(.minutes(22)) // will run at 5:00, 5:22, 5:44, 6:00, 6:22, 6:44
Convenience Functions
convenience methods also exist, examples include:
RecurrenceRule().every15Minues() // equivalent to RecurrenceRule().every(.minutes(22))
RecurrenceRule().hourly() // equivalent to RecurrenceRule().every(.hour(1))
RecurrenceRule().wednesdays() // equivalent to RecurrenceRule().atDayOfWeek(4)
RecurrenceRule().weekends() // equivalent to RecurrenceRule().atDaysOfWeek([1, 7])
RecurrenceRule().monthly() // equivalent to RecurrenceRule().atDayOfMonth(1)
Evaluating Recurrence Rules
You can find if a certain Date satisfies a RecurrenceRule with: evaluate(date: Date) throws -> Bool
You can find the next Date that will satisfy a RecurrenceRule with: resolveNextDateThatSatisfiesRule(date: Date) throws -> Date

Perfect. I don't think we need the last two functions as comments in the README as those will be internal. Would it be possible for you to list all of the available convenience functions? We're going to want to list them in the docs at some point.

Add a new method to JobsConfig that looks like this:
Change the ScheduledJob struct to look something like this:

Should ScheduledJob hold a Job? I think ScheduledJob should be a separate protocol that doesn't have an associated data type. Its run method should not have any parameters (besides the job context).

The above two items allow you to register a scheduled job like this:

I like how that looks, just think that EmailJob shouldn't be compatible as a ScheduledJob. What would the EmailJob.Data be?

Static methods to facilitate easier setup and avoid the necessity of passing around RecurrenceRule()

I think we should separate out some basic recurrence types to make a more readable API. Monthly, Daily and Hourly,  would be a good start I think. This would make it really easy to schedule commands using autocomplete.
let cleanup = CleanupJob()
jobs.schedule(cleanup).daily().at("8:00")
jobs.schedule(cleanup).weekdays().hourly().between("8:00", and: "17:00")
jobs.schedule(cleanup).monthly().day(5).at("5:00")

The types for this might look something like:
func schedule(_ job: ScheduledJob) -> Scheduler { ... }
final class Scheduler {
    struct Hourly {
        func between(_ start: String, and end: String) { ... }
    }
    struct Daily {
        func at(_ time: String) { ... }
        func hourly(_ time: String) -> Hourly { ... }
    }
    struct Monthly {
        func day(_ number: Int) -> Daily { ... }
    }
    func daily() -> Daily { ... }
    func weekdays() -> Daily { ... }
    func mondays() -> Daily { ... }
    func monthly() -> Monthly { ... }
}

@tanner0101 Those are great points, I hadn't thought about the no parameters thing for scheduled jobs. @rnantes Think you can make these changes as well?

@tanner0101 @mcdappdev
So far the implemented convenience methods for setting up ReccurrenceRule constraints are:
everySecond()
everyFiveSeconds()
everyTenSeconds()
everyTenSeconds()
everyFifteenSeconds()
every30Seconds()
everyMinute()
everyFiveMinutes()
everyTenMinutes()
everyFifteenMinutes()
every30Minutes()
hourly()
daily()
weekly()
weekly(dayOfWeek: Int)
monthly()
quarterly()
yearly()
sundays()
mondays()
tuesdays()
wednesdays()
thursdays()
fridays()
saturdays()
weekdays()
weekends()
I can work on adding more such as:
dailyAt(“13:00”)
weeklyOn(1, '8:00')
between('7:00', '22:00’)

So far the implemented convenience methods for setting up ReccurrenceRule constraints are:

I think one of the other nice parts about separating these out into different sub-builder types (besides making auto-complete really nice to use) is that Swift could help let you know that you haven't completed building a recurrence by issuing a warning about un-used return.
For example, if you do:
jobs.schedule(cleanup).monthly()

Swift could issue a warning:
jobs.schedule(cleanup).monthly()
^ Unused return. Use _= to ignore

You could get rid of the warning by declaring a complete recurrence rule:
jobs.schedule(cleanup).monthly().day(5).at(.midnight)

In this case at(...) would return @discardableResult (or nothing at all) since by calling it we know you must have declared a complete, sensical rule.

@tanner0101 that could definitely be a cleaner way to set up a recurrence. I'll look into implementing it that way.

Hey guys - how's this PR looking? I'm really keen to use it.

CC @rnantes

@tjshea it’s coming along, I’m still making some changes to the API Tanner suggested. Main functionality is there however.

Great. Thanks @rnantes - really looking forward to this one.

Sorry to be a pain @rnantes - any update? I've got a piece of functionality that needs scheduling and rather than write my own I would love to use your implementation :]

Sorry for the slower update @tjshae I just finished writing my final exams yesterday. However, I have done a lot of refactoring and just pushed some major changes.
The largest change was the addition of the scheduler struct with the API changes @tanner0101 suggested. For example, Now you can schedule jobs like:
try schedule(emailJob).yearly().on(.april, 20).at(.noon)

OR
try schedule(emailJob).daily().atHour(2).atMinute(2).atSecond(1)

OR
try schedule(emailJob).fridays().at("14:32").atSecond(0)

I structured the code in such way that you can leverage code completion to easily schedule a job coherently.  Additionally it should throw a warning if a schedule is not fully specified.
I also added a method where you can define RecurrenceRuleConstraints manually if you need more fine tuned control over the job scheduling.
let yearConstraint = try YearRecurrenceRuleConstraint.atYear(2043)
let dayOfWeekConstraint = try DayOfWeekRecurrenceRuleConstraint.atDaysOfWeek([1, 4, 6])
let hourConstraint = try HourRecurrenceRuleConstraint.atHoursInRange(lowerBound: 3, upperBound: 8)
let secondConstraint = try SecondRecurrenceRuleConstraint.secondStep(11)
schedule(emailJob).whenConstraintsSatisfied(yearConstraint: yearConstraint,
                                                    dayOfWeekConstraint: dayOfWeekConstraint,
                                                    hourConstraint: hourConstraint,
                                                    secondConstraint: secondConstraint)

I also plan on adding a cron method where you can schedule a job using a traditional cron string. for example:
schedule(emailJob).cron("*/5 * 4 * 1-3")

I still need some help to integrate the Scheduler struct @mcdappdev but I think it is coming along.
Excited to hear what you all think

This all sounds great @rnantes - so excited for this one. And congrats on finishing your finals! :]

Any update @rnantes ? Sorry to be a pain, but this functionality would rock right about now ;]

@rnantes what is the status on breaking this up into multiple PRs? We are about to release the first alpha and would love to get this wrapped up.


Dev containers fail to properly initialize

the build steps are all run as the root user, meaning that cargo.lock and all contents of the target folder are unaccessible by the vscode user

skill issue?


Scripted diff: add 'slug:' front matter to all posts

Closes #155
It looks like Jekyll's slug routine isn't handling our URLs well, I don't know why.  As seen here, the slug is used for part of the supposed-to-be unique id given to each page for things like Atom feeds, leading to the problem described in #155.
We aren't currently using page slugs for anything else and it's possible to set them manually, so this one line scripted diff just gives each page its own unique slug to ensure our feed contains entirely unique IDs.  There are probably better ways to do this, but I think this is acceptable for now.

ACK 37adedb6bb664dd801fe88a1f8743fe5dc881571
Thanks @harding

tACK 37adedb6bb664dd801fe88a1f8743fe5dc881571
Nice workaround @harding


Specific track doesn't get recognised and can't add the details

I just get: " Play some music to get started" , even after opening the song in a new tab, refresh, etc.
Link to song: https://youtu.be/p0ljJj50y3k

I just tried and the track gets correctly recognized for me.
Can you re-authenticate with Last.fm (see the extension's options page) or eventually try reinstalling the extension?

I suppose the song isn't scrobbled because Scrobble only Music category option is enabled (just because it is not in Music category).
@Radiac93 have you tried to disable this option and scrobble the song again?
However, Web scrobbler looks up for song metadata (the magnifier icon is showing) even if song won't be scrobbled (like in this case). It might be confusing.

@alexesprit Yes that makes it work, but doesn't that mean it scrobbles everything I open on YouTube?
Sorry for the late reply, only got the mail to notify me the thread was closed.
Thanks for the help anyways!

Yes that makes it work, but doesn't that mean it scrobbles everything I open on YouTube?

Disabled Scrobble only Music category option means 'scrobble everything'. Enabled one allows to scrobble from 'Music' category only.