Found a bug which causes tx_byte_allocate() not thread-safe when use -O3 optimization!!

The way we use byte pool
We use byte pool as heap in our project,  the detail code in our project was copied from the following link which implemets CMSIS API
for threadx.
https://github.com/STMicroelectronics/stm32_mw_cmsis_rtos_tx/blob/main/cmsis_os2.c
In cmsis_os2.c, byte pool is created in MemInit() and after that, we can just use MemAlloc() and MemFree() to request and release memorry.

static uint8_t *MemAlloc(uint32_t mem_size, uint8_t pool_type)  was defined at line 158.
static osStatus_t MemInit(void) was defined at line 247.
The control block or so called handle was defined at line 142 to 144 as global varibles:
TX_BYTE_POOL HeapBytePool;
TX_BYTE_POOL StackBytePool;
TX_BLOCK_POOL BlockPool;

What happened?
MemAlloc() and MemFree() just worked fine at most of the time. But occationally, MemAlloc() failed with code of TX_NO_MEMORY .  While, when we looked into this issue and after debugged a lot, we found that there was still enough memorry but the alloc algorithm not worked well.
Why this happened?
After days of debugging, we found that the value of tx_byte_pool_fragments went wrong when this issue happen.
To prove this, we defined a global varible of the same type, and do the same operation when tx_byte_pool_fragments increased or decreased. This is simple because tx_byte_pool_fragments only changes in the function _tx_byte_pool_search() which defined in threadx/threadx/common/src/tx_byte_pool_search.c.
It turned out that, when MemAlloc() failed with code of TX_NO_MEMORY , the value of tx_byte_pool_fragments in struct TX_BYTE_POOL was just different with the global varible we defined.
The root cause
After a deep dive into the source code of threadx, we found that _tx_byte_pool_search() can be interrupted after TX_RESTORE at line 258. This is a good design to let taskes with high priority alloc from the pool at first. But as mentioned above,  The control block or so called handle was defined as global varibles,  which may be changed by another high priority task.
Further explanation

After put a volatile before the tx_byte_pool_fragments varible, the issue was fixed and never came up.
When we changed the gcc compilation parameter from -O3 to -O1, this  issue was fixed and never came up.

Further proof
The following is the asm code of _tx_byte_pool_search(),  when  tx_byte_pool_fragments increases or decreases, it uses the value
from the register LR instead of re-load the value from ram which may be changed already.
The asm code may be different for the reason of different gcc version or MCU, in our case , the MCU is Cortex-R5 based and gcc version is arm-none-eabi-gcc 6.2.1 .
Looking forward for your reply!
start-address: 0x01a29818, end-address: 0x01a29990

xzimage.elf:     file format elf32-littlearm

Disassembly of section .text:

01a29818 <_tx_byte_pool_search>:
/*                                            calculation,                */
/*                                            resulting in version 6.1.7  */
/*                                                                        */
/**************************************************************************/
UCHAR  *_tx_byte_pool_search(TX_BYTE_POOL *pool_ptr, ULONG memory_size)
{
 1a29818:       e92d41f0        push    {r4, r5, r6, r7, r8, lr}
UCHAR           *work_ptr;
ULONG           total_theoretical_available;

    /* Disable interrupts.  */
    TX_DISABLE
 1a2981c:       e10fc000        mrs     ip, CPSR
 1a29820:       f10c00c0        cpsid   if

    /* First, determine if there are enough bytes in the pool.  */
    /* Theoretical bytes available = free bytes + ((fragments-2) * overhead of each block) */
    total_theoretical_available = pool_ptr -> tx_byte_pool_available + ((pool_ptr -> tx_byte_pool_fragments - 2) * ((sizeof(UCHAR *)) + (sizeof(ALIGN_TYPE))));
 1a29824:       e590e00c        ldr     lr, [r0, #12]
 1a29828:       e5907008        ldr     r7, [r0, #8]
 1a2982c:       e24e3002        sub     r3, lr, #2
 1a29830:       e0873183        add     r3, r7, r3, lsl #3
    if (memory_size >= total_theoretical_available)
 1a29834:       e1530001        cmp     r3, r1
 1a29838:       9a000018        bls     1a298a0 <_tx_byte_pool_search+0x88>
    }
    else
    {

        /* Pickup thread pointer.  */
        TX_THREAD_GET_CURRENT(thread_ptr)
 1a2983c:       e3094464        movw    r4, #37988      ; 0x9464
#endif

            /* Check to see if this block is free.  */
            work_ptr =  TX_UCHAR_POINTER_ADD(current_ptr, (sizeof(UCHAR *)));
            free_ptr =  TX_UCHAR_TO_ALIGN_TYPE_POINTER_CONVERT(work_ptr);
            if ((*free_ptr) == TX_BYTE_BLOCK_FREE)
 1a29840:       e30e8eee        movw    r8, #61166      ; 0xeeee
        current_ptr =      pool_ptr -> tx_byte_pool_search;
 1a29844:       e5903014        ldr     r3, [r0, #20]
        TX_THREAD_GET_CURRENT(thread_ptr)
 1a29848:       e3404000        movt    r4, #0
            if ((*free_ptr) == TX_BYTE_BLOCK_FREE)
 1a2984c:       e34f8fff        movt    r8, #65535      ; 0xffff
UINT            first_free_block_found =  TX_FALSE;
 1a29850:       e3a06000        mov     r6, #0
        examine_blocks =   pool_ptr -> tx_byte_pool_fragments + ((UINT) 1);
 1a29854:       e28e2001        add     r2, lr, #1
        TX_THREAD_GET_CURRENT(thread_ptr)
 1a29858:       e5945000        ldr     r5, [r4]
        pool_ptr -> tx_byte_pool_owner =  thread_ptr;
 1a2985c:       e5805020        str     r5, [r0, #32]
            if ((*free_ptr) == TX_BYTE_BLOCK_FREE)
 1a29860:       e5934004        ldr     r4, [r3, #4]
 1a29864:       e1540008        cmp     r4, r8
            else
            {

                /* Block is not free, move to next block.  */
                this_block_link_ptr =  TX_UCHAR_TO_INDIRECT_UCHAR_POINTER_CONVERT(current_ptr);
                current_ptr =  *this_block_link_ptr;
 1a29868:       15933000        ldrne   r3, [r3]
            if ((*free_ptr) == TX_BYTE_BLOCK_FREE)
 1a2986c:       0a00000e        beq     1a298ac <_tx_byte_pool_search+0x94>
            }

            /* Another block has been searched... decrement counter.  */
            if (examine_blocks != ((UINT) 0))
 1a29870:       e3520000        cmp     r2, #0
            {

                examine_blocks--;
 1a29874:       12422001        subne   r2, r2, #1
            }

            /* Restore interrupts temporarily.  */
            TX_RESTORE
 1a29878:       e121f00c        msr     CPSR_c, ip

            /* Disable interrupts.  */
            TX_DISABLE
 1a2987c:       e10fc000        mrs     ip, CPSR
 1a29880:       f10c00c0        cpsid   if

            /* Determine if anything has changed in terms of pool ownership.  */
            if (pool_ptr -> tx_byte_pool_owner != thread_ptr)
 1a29884:       e5904020        ldr     r4, [r0, #32]
 1a29888:       e1540005        cmp     r4, r5
 1a2988c:       0a000017        beq     1a298f0 <_tx_byte_pool_search+0xd8>
            {

                /* Pool changed ownership in the brief period interrupts were
                   enabled.  Reset the search.  */
                current_ptr =      pool_ptr -> tx_byte_pool_search;
 1a29890:       e5903014        ldr     r3, [r0, #20]
                examine_blocks =   pool_ptr -> tx_byte_pool_fragments + ((UINT) 1);

                /* Setup our ownership again.  */
                pool_ptr -> tx_byte_pool_owner =  thread_ptr;
            }
        } while(examine_blocks != ((UINT) 0));
 1a29894:       e29e2001        adds    r2, lr, #1
                pool_ptr -> tx_byte_pool_owner =  thread_ptr;
 1a29898:       e5805020        str     r5, [r0, #32]
        } while(examine_blocks != ((UINT) 0));
 1a2989c:       1affffef        bne     1a29860 <_tx_byte_pool_search+0x48>
        }
        else
        {

            /* Restore interrupts.  */
            TX_RESTORE
 1a298a0:       e121f00c        msr     CPSR_c, ip

            /* Set current pointer to NULL to indicate nothing was found.  */
            current_ptr =  TX_NULL;
 1a298a4:       e3a00000        mov     r0, #0
        }
    }

    /* Return the search pointer.  */
    return(current_ptr);
}
 1a298a8:       e8bd81f0        pop     {r4, r5, r6, r7, r8, pc}
                if (first_free_block_found == TX_FALSE)
 1a298ac:       e3560000        cmp     r6, #0
                    pool_ptr->tx_byte_pool_search =  current_ptr;
 1a298b0:       05803014        streq   r3, [r0, #20]
                next_ptr =             *this_block_link_ptr;
 1a298b4:       e5936000        ldr     r6, [r3]
                available_bytes =   TX_UCHAR_POINTER_DIF(next_ptr, current_ptr);
 1a298b8:       e0464003        sub     r4, r6, r3
                available_bytes =   available_bytes - ((sizeof(UCHAR *)) + (sizeof(ALIGN_TYPE)));
 1a298bc:       e2444008        sub     r4, r4, #8
                if (available_bytes >= memory_size)
 1a298c0:       e1510004        cmp     r1, r4
 1a298c4:       9a000016        bls     1a29924 <_tx_byte_pool_search+0x10c>
                    if ((*free_ptr) == TX_BYTE_BLOCK_FREE)
 1a298c8:       e5964004        ldr     r4, [r6, #4]
 1a298cc:       e1540008        cmp     r4, r8
 1a298d0:       0a000009        beq     1a298fc <_tx_byte_pool_search+0xe4>
                        current_ptr =  *next_block_link_ptr;
 1a298d4:       e5963000        ldr     r3, [r6]
                        if (examine_blocks != ((UINT) 0))
 1a298d8:       e3520000        cmp     r2, #0
                            examine_blocks--;
 1a298dc:       13a06001        movne   r6, #1
 1a298e0:       12422001        subne   r2, r2, #1
                        if (examine_blocks != ((UINT) 0))
 1a298e4:       1affffe1        bne     1a29870 <_tx_byte_pool_search+0x58>
 1a298e8:       e3a06001        mov     r6, #1
 1a298ec:       eaffffe1        b       1a29878 <_tx_byte_pool_search+0x60>
        } while(examine_blocks != ((UINT) 0));
 1a298f0:       e3520000        cmp     r2, #0
 1a298f4:       1affffd9        bne     1a29860 <_tx_byte_pool_search+0x48>
 1a298f8:       eaffffe8        b       1a298a0 <_tx_byte_pool_search+0x88>
                        *this_block_link_ptr =  *next_block_link_ptr;
 1a298fc:       e5964000        ldr     r4, [r6]
                        pool_ptr -> tx_byte_pool_fragments--;
 1a29900:       e24ee001        sub     lr, lr, #1
                        *this_block_link_ptr =  *next_block_link_ptr;
 1a29904:       e5834000        str     r4, [r3]
                        if (pool_ptr -> tx_byte_pool_search ==  next_ptr)
 1a29908:       e5904014        ldr     r4, [r0, #20]
                        pool_ptr -> tx_byte_pool_fragments--;
 1a2990c:       e580e00c        str     lr, [r0, #12]
                        if (pool_ptr -> tx_byte_pool_search ==  next_ptr)
 1a29910:       e1540006        cmp     r4, r6
                            pool_ptr -> tx_byte_pool_search =  current_ptr;
 1a29914:       03a06001        moveq   r6, #1
 1a29918:       05803014        streq   r3, [r0, #20]
                        if (pool_ptr -> tx_byte_pool_search ==  next_ptr)
 1a2991c:       13a06001        movne   r6, #1
 1a29920:       eaffffd2        b       1a29870 <_tx_byte_pool_search+0x58>
        if (available_bytes != ((ULONG) 0))
 1a29924:       e3540000        cmp     r4, #0
 1a29928:       0affffdc        beq     1a298a0 <_tx_byte_pool_search+0x88>
            if ((available_bytes - memory_size) >= ((ULONG) TX_BYTE_BLOCK_MIN))
 1a2992c:       e0442001        sub     r2, r4, r1
 1a29930:       e3520013        cmp     r2, #19
 1a29934:       9a00000b        bls     1a29968 <_tx_byte_pool_search+0x150>
                *free_ptr =             TX_BYTE_BLOCK_FREE;
 1a29938:       e30e5eee        movw    r5, #61166      ; 0xeeee
                next_ptr =  TX_UCHAR_POINTER_ADD(current_ptr, (memory_size + ((sizeof(UCHAR *)) + (sizeof(ALIGN_TYPE)))));
 1a2993c:       e2812008        add     r2, r1, #8
                pool_ptr -> tx_byte_pool_fragments++;
 1a29940:       e28ee001        add     lr, lr, #1
                *next_block_link_ptr =  *this_block_link_ptr;
 1a29944:       e7836002        str     r6, [r3, r2]
                next_ptr =  TX_UCHAR_POINTER_ADD(current_ptr, (memory_size + ((sizeof(UCHAR *)) + (sizeof(ALIGN_TYPE)))));
 1a29948:       e0832002        add     r2, r3, r2
                *this_block_link_ptr =  next_ptr;
 1a2994c:       e1a04001        mov     r4, r1
                *free_ptr =             TX_BYTE_BLOCK_FREE;
 1a29950:       e34f5fff        movt    r5, #65535      ; 0xffff
                *this_block_link_ptr =  next_ptr;
 1a29954:       e1a06002        mov     r6, r2
                *free_ptr =             TX_BYTE_BLOCK_FREE;
 1a29958:       e5825004        str     r5, [r2, #4]
                pool_ptr -> tx_byte_pool_fragments++;
 1a2995c:       e580e00c        str     lr, [r0, #12]
                *this_block_link_ptr =  next_ptr;
 1a29960:       e5907008        ldr     r7, [r0, #8]
 1a29964:       e5832000        str     r2, [r3]
            *this_block_link_ptr =  TX_BYTE_POOL_TO_UCHAR_POINTER_CONVERT(pool_ptr);
 1a29968:       e5830004        str     r0, [r3, #4]
            pool_ptr -> tx_byte_pool_available =  (pool_ptr -> tx_byte_pool_available - available_bytes) - ((sizeof(UCHAR *)) + (sizeof(ALIGN_TYPE)));
 1a2996c:       e2477008        sub     r7, r7, #8
            if (current_ptr == pool_ptr -> tx_byte_pool_search)
 1a29970:       e5902014        ldr     r2, [r0, #20]
            pool_ptr -> tx_byte_pool_available =  (pool_ptr -> tx_byte_pool_available - available_bytes) - ((sizeof(UCHAR *)) + (sizeof(ALIGN_TYPE)));
 1a29974:       e0474004        sub     r4, r7, r4
 1a29978:       e5804008        str     r4, [r0, #8]
            if (current_ptr == pool_ptr -> tx_byte_pool_search)
 1a2997c:       e1520003        cmp     r2, r3
                pool_ptr -> tx_byte_pool_search =  *this_block_link_ptr;
 1a29980:       05806014        streq   r6, [r0, #20]
            TX_RESTORE
 1a29984:       e121f00c        msr     CPSR_c, ip
            current_ptr =  TX_UCHAR_POINTER_ADD(current_ptr, (((sizeof(UCHAR *)) + (sizeof(ALIGN_TYPE)))));
 1a29988:       e2830008        add     r0, r3, #8
 1a2998c:       e8bd81f0        pop     {r4, r5, r6, r7, r8, pc}

Hi,
I just found that there is no "-O3" parameter for CMAKE_ASM_FLAGS_RELEASE in arm-none-eabi.cmake file.
https://github.com/azure-rtos/threadx/blob/master/cmake/arm-none-eabi.cmake
So, is "-O3" forbidden for ASM compilation?

Historically, GCC -O3 optimization did not produce reliable code. I would not recommend using -O3 until/unless the entire ThreadX source is built with -O3 and passes all verification tests.  That said, it would be useful to issue a pull request for your proposed change so it can be evaluated further.

This is very cool bug.
Probably calling dummy function from other c file will resolve it as the compiler now can't know if the global changed.
Other approach will be to define pool_ptr to be pointer to volatile.
What do you think about it @yuhiping ?

This is indeed an interesting issue. I like using volatile more than
calling a dummy function - just from the perspective of performance.  In
your fix, did you just add volatile to the pool_ptr API parameter?
On Sun, Feb 4, 2024 at 12:12 AM amgross @.***> wrote:

This is very cool bug.
Probably calling dummy function from other c file will resolve it as the
compiler now can't know if the global changed.
Other approach will be to define pool_ptr to be pointer to volatile.
What do you think about it @yuhiping https://github.com/yuhiping ?
—
Reply to this email directly, view it on GitHub
https://github.com/eclipse-threadx/threadx/issues/334#issuecomment-1925625696,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A3YCNAN3HI6MPUDD6JQ3YUDYR47GLAVCNFSM6AAAAABA2ZUUZ2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRVGYZDKNRZGY
.
You are receiving this because you commented.Message ID:
@.***>

I didn't tried the fix, but indeed adding the volatile to the parameter is what I thought

This is very cool bug. Probably calling dummy function from other c file after the TX_RESTORE will resolve it as the compiler now can't know if the global changed. Other approach will be to define pool_ptr to be pointer to volatile. What do you think about it @yuhiping ?

@amgross Sorry for the late reply. Yes, as you suggested,  adding the volatile to the parameter is just our solution.

This is indeed an interesting issue. I like using volatile more than calling a dummy function - just from the perspective of performance. In your fix, did you just add volatile to the pool_ptr API parameter?
…
On Sun, Feb 4, 2024 at 12:12 AM amgross @.***> wrote: This is very cool bug. Probably calling dummy function from other c file will resolve it as the compiler now can't know if the global changed. Other approach will be to define pool_ptr to be pointer to volatile. What do you think about it @yuhiping https://github.com/yuhiping >

Hey @williamelamie I actually don't think this is the right solution, it exposes the underlying implementation via a public interface and is not very localized.   Personally I think the function should make local copies while appropriately managing variable properties (eg: volatile).  This doesn't address potentially issues that may arise in SMP, for example a barrier might be needed in SMP designs and the use of VOLATILE for the function prototype won't solve that.
I think a cleaner alternative to keep the changes localized to this function are create a local variable that is volatile and keep the function signature the same
I duplicated this with the same compiler version compiling for M33 (gcc 6.2) as well as GCC 8.   The below 2 line solution fixes the issue for me and we don't need to change the public API now.    Note that this bug is also present with -O2 as well.   With optimizing for size (-Os) or debug (-Og), which are the flags most embedded developers use, the bug is not present.
This is actually a pretty nasty little problem...
UCHAR  *_tx_byte_pool_search(TX_BYTE_POOL *pool_ptr_in, ULONG memory_size)
 {
<snip>
// add local volatile ptr
TX_BYTE_POOL volatile * pool_ptr = pool_ptr_in;

original assembly
<snip>

    total_theoretical_available = pool_ptr -> tx_byte_pool_available + ((pool_ptr -> tx_byte_pool_fragments - 2) * ((sizeof(UCHAR *)) + (sizeof(ALIGN_TYPE))));
/**
----> R7 loaded with the tx_byte_pool_fragments count at function entry, and re-used throughout the whole function call
*/
80092f0:       68c7            ldr     r7, [r0, #12]

<snip>

            TX_DISABLE

            /* Determine if anything has changed in terms of pool ownership.  */
            if (pool_ptr -> tx_byte_pool_owner != thread_ptr)
 8009330:       6a04            ldr     r4, [r0, #32]
 8009332:       42a5            cmp     r5, r4
 8009334:       d03f            beq.n   80093b6 <_tx_byte_pool_search+0xd6>
tx_byte_pool_search.c:270
            {

                /* Pool changed ownership in the brief period interrupts were
                   enabled.  Reset the search.  */
                current_ptr =      pool_ptr -> tx_byte_pool_search;
                examine_blocks =   pool_ptr -> tx_byte_pool_fragments + ((UINT) 1);
/**
----->  Bug here...  R7 is reused from early and not reloaded
-----> (in the original bug for the Cortex R5 it used the LR, but the bug is the same).
-----> R8 is the variable examine blocks
**/
 8009336:       f107 0801       add.w   r8, r7, #1

<snip>

            }
        } while(examine_blocks != ((UINT) 0));
 800933e:       f1b8 0f00       cmp.w   r8, #0

and using the local volatile it's fixed
<snip>
TX_DISABLE
            {
                /* Pool changed ownership in the brief period interrupts were
                   enabled.  Reset the search.  */
                current_ptr =      pool_ptr -> tx_byte_pool_search;
 8009330:       6942            ldr     r2, [r0, #20]
tx_byte_pool_search.c:270
/**
----> fixed: R3 is now the register holding tx_byte_pool fragments.   This correctly re-loads R3 with pool_fragments count from the ptr instead of re-using the register
*/
                examine_blocks =   pool_ptr -> tx_byte_pool_fragments + ((UINT) 1);
 8009332:       68c3            ldr     r3, [r0, #12]
tx_byte_pool_search.c:273

                /* Setup our ownership again.  */
                pool_ptr -> tx_byte_pool_owner =  thread_ptr;
 8009334:       6206            str     r6, [r0, #32]
tx_byte_pool_search.c:270
/**
----> add 1 to fragments count in R3 to get the examine_blocks, this is correct now
*/
                examine_blocks =   pool_ptr -> tx_byte_pool_fragments + ((UINT) 1);
 8009336:       3301            adds    r3, #1
tx_byte_pool_search.c:275
            }
        } while(examine_blocks != ((UINT) 0));
 8009338:       2b00            cmp     r3, #0
 800933a:       d1eb            bne.n   8009314 <_tx_byte_pool_search+0x34>
__set_basepri_value():

Another option would be to make the tx_byte_pool_owner structure member in TX_BYTE_POOL volatile, like the following:
struct TX_THREAD_STRUCT volatile
                    *tx_byte_pool_owner;

This is a slightly smaller change and something that might be good to apply to the head of each suspension list, since they are used by the tx_*_prioritize functions in a similar manner as tx_byte_pool_owner structure.

Is it possible that this is an issue with the cpu-specific port?
If we look at the implementation of TX_RESTORE in  threadx/ports/cortex_r5/gnu/inc/tx_port.h, it is implemented like this:
#define TX_RESTORE    asm volatile (" MSR CPSR_c,%0 "::"r" (interrupt_save) );

Other implementations, like the Cortex-M4, have a memory-clobber in the inline-assembly that restores the interrupt-posture:
__asm__ volatile ("MSR  PRIMASK,%0": : "r" (int_posture): "memory");

I can't test it right now, but I think it would be interesting to check if adding a memory-clobber in the Cortex-R5 port would fix this. My understanding is that it should prevent the compiler from reusing the cached value from the register.

Is it possible that this is an issue with the cpu-specific port?

Nice observation.   Yes, you found the issue, you are correct, the clobbers is wrong and the compiler fence is missing.   I'm using BASEPRI for Cortex M33/M4 instead of CPSID, and there's actually a bug in threadX BASEPRI support that triggers the same issue as Cortex R5
#ifdef TX_PORT_USE_BASEPRI
__attribute__( ( always_inline ) ) static inline void __set_basepri_value(UINT basepri_value)
{
    __asm__ volatile ("MSR  BASEPRI,%0 ": : "r" (basepri_value));
}
#else

Note the missing clobber, so no compiler fence is inserted.
For non-BASEPRI approach (CPSID)
__attribute__( ( always_inline ) ) static inline UINT __disable_interrupts(void)
{
UINT int_posture;

    int_posture = __get_interrupt_posture();

#ifdef TX_PORT_USE_BASEPRI
    __set_basepri_value(TX_PORT_BASEPRI);
#else
    __asm__ volatile ("CPSID i" : : : "memory");
#endif
    return(int_posture);
}

The barrier is present.
So the barrier is there for non PRIMASK approach using CPSID , but if you use BASEPRI, the memory fence/barrier is missing.
The fix for BASEPRI (verified) is:
#ifdef TX_PORT_USE_BASEPRI
__attribute__( ( always_inline ) ) static inline void __set_basepri_value(UINT basepri_value)
{
    __asm__ volatile ("MSR  BASEPRI,%0 ": : "r" (basepri_value) : "memory");
}
#else

This fixes the issues for Cortex M33/M4 using BASEPRI.  For anyone not using BASEPRI, this won't be an issue on Cortex M33/M4 as the non-BASEPRI path correctly inserts a compiler barrier.
For Cortex R5, TX_DISABLE is defined as
#define TX_DISABLE                              asm volatile (" MRS %0,CPSR; CPSID if ": "=r" (interrupt_save) );

This is incorrect, the fence is missing.   It should be
#define TX_DISABLE                              asm volatile (" MRS %0,CPSR; CPSID if ": "=r" (interrupt_save) : "memory");

Summary:
2 bugs present in the tx ports.

barrier missing in basepri for cortex M
barrier missing in TX_DISABLE for cortex R

With the barriers in place, the problem will be gone.
This is actually a big problem, these missing fences can trigger some really hard to find issues.

What with ARC EM, do it need also to be changed?
https://github.com/eclipse-threadx/threadx/blob/485a02faec6edccef14812ddce6844af1d7d2eef/ports/arc_em/metaware/inc/tx_port.h#L306-L307

What with ARC EM, do it need also to be changed?
https://github.com/eclipse-threadx/threadx/blob/485a02faec6edccef14812ddce6844af1d7d2eef/ports/arc_em/metaware/inc/tx_port.h#L306-L307

Looks like it's using a compiler built_in, the compiler built_in's will take care of the memory fences for you.
For example
https://github.com/foss-for-synopsys-dwc-arc-processors/embarc_osp/blob/67ea926c6a62aa6e19efdc3b11cba3ea0b467e29/include/arc/arc_builtin.h#L198
	Asm("seti %0" : : "ir" (key) : "memory");


⚠ Bofrost.lu has degraded performance

In 19ea573, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1840 ms

Resolved: Bofrost.lu performance has improved in 1a30ece.


VS2017 Compile Error Android Project

Android Project, rebuild, build....cannot get rid of:
Severity	Code	Description	Project	File	Line	Suppression State
Error		Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Colored'.	Instagram.Android	C:\Projects\Samples\Instagram-master\Instagram\Instagram.Android\obj\Debug_library_projects_\Xamarin.Android.Support.v7.AppCompat\library_project_imports\res\values-v24\values-v24.xml	2
Severity	Code	Description	Project	File	Line	Suppression State
Error		Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'.	Instagram.Android	C:\Projects\Samples\Instagram-master\Instagram\Instagram.Android\obj\Debug_library_projects_\Xamarin.Android.Support.v7.AppCompat\library_project_imports\res\values-v24\values-v24.xml	2

Its likely you don't have the latest build tools installed. Open the Android SDK manager, and install the latest stable SDK and build tools.


Split adding test repos and forcing locally built kotlin-dsl plugins versions

This is another follow up to:

https://github.com/gradle/gradle/pull/26501

Another stepstone towards using K2 for scripting.

@bot-gradle test and merge

Your PR is queued. See the queue page for details.

I've triggered a build for you. Click here to see all failures if there's any.

Pre-tested commit build failed. Click here to see all build failures.

@bot-gradle test and merge

Your PR is queued. See the queue page for details.

I've triggered a build for you. Click here to see all failures if there's any.


Github link to element repo in element catalog

Could a link to each elements github repo in https://github.com/PolymerElements be included under the action section near cart, demo, doc( shown in the left of the screenshot below)? I've heard this request in the Polymer Slack Channel and think it would help the community contribute to the project more efficiently.

I support this. If not shown in this table for space, at least could be in the sidebar on an Element's page with the other actions. I'd like to be able to quickly jump to the code of an element if I want to take a closer look.

@Bshally Could you add an enhancement label to this issue for triage purposes? Thanks.

Looked through the github docs and they show how to do it, but it seems absent from my interface. I believe I cannot add a label to this issue as I am not listed as a contributor: Stackoverflow

Ah, yeah, I forgot about that. Sorry about that. I was just trying to help out the Polymer team :P

Appreciated! This is really good feedback, we'll look to add something like this.

This is especially important for some of the elements with very poor or completely absent documentation.  For example iron-flex-layout has "No Documentation Found".  A github link would allow people to easily look at the style provided by that element.

+1. A lot of elements are missing docs and the only source of truth is Github atm.

@ebidel Yeah I've noticed this too, which makes it even more frustrating when there's not an easy way to get to GitHub from there. Hopefully soon!

Add "Installation" section above "Documentation" in catalog view of iron-component-page that shows a link to the GitHub repo as well as an easily clickable way to add to collection and a bower install one-liner.


fix: ci dependency review

What this PR does / why we need it:

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Which issue/s this PR fixes

How Has This Been Tested?

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I've read the CONTRIBUTION guide
[ ] I have added CI tests to cover my changes.
[ ] All new and existing tests passed.

Closes: #178


Correct conditional configuration of db property

Follow-up of #18475 (thanks @rob006 !)

@rob006 looks alright?

@rob006 looks alright?

👍

👍


system_config: fix clang version output on Linux

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew typecheck with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?

If you have Homebrew LLVM installed on Linux, brew config will show
Clang: 12.0.1 build (parse error)

because Homebrew LLVM does not give a build number. Some (but not all) installations
from the system package manager do have this information, so let's show
it if it's available but skip complaining if not.
I've kept the original code for macOS because we always expect Apple's
build number to show there.

Review period ended.


Fix getting all needed headers before beginning to sync txs

Not working with test wallet... gave Jack results.


Fix broken spans in diffs

Gitea runs diff on highlighted code fragment for each line in order to provide
code highlight diffs. Unfortunately this diff algorithm is not aware that span tags
and entities are atomic and cannot be split.
The current fixup code makes some attempt to fix these broken tags however, it cannot
handle situations where a tag is split over multiple blocks.
This PR provides a more algorithmic fixup mechanism whereby spans and entities are
completely coalesced into their respective blocks.
This may result in a incompletely reduced diff but - it will definitely prevent the
broken entities and spans that are currently possible.
As a result of this fixup several inconsistencies were discovered in our testcases
and these were also fixed.
Fix #14231
Signed-off-by: Andrew Thornton<EMAIL_ADDRESS>

Codecov Report

Merging #14678 (09ab1be) into master (487f2ee) will increase coverage by 0.07%.
The diff coverage is 98.36%.

@@            Coverage Diff             @@
##           master   #14678      +/-   ##
==========================================
+ Coverage   42.21%   42.29%   +0.07%
==========================================
  Files         767      767
  Lines       81624    81739     +115
==========================================
+ Hits        34458    34569     +111
- Misses      41531    41534       +3
- Partials     5635     5636       +1

Impacted Files
Coverage Δ

modules/structs/issue.go
0.00% <ø> (ø)

modules/queue/unique_queue_disk_channel.go
53.73% <50.00%> (-0.12%)
:arrow_down:

modules/setting/setting.go
49.03% <100.00%> (ø)

modules/templates/base.go
42.30% <100.00%> (+1.13%)
:arrow_up:

services/gitdiff/gitdiff.go
73.70% <100.00%> (+4.93%)
:arrow_up:

models/unit.go
46.57% <0.00%> (-2.74%)
:arrow_down:

models/repo_list.go
77.87% <0.00%> (-0.89%)
:arrow_down:

routers/repo/view.go
41.16% <0.00%> (-0.63%)
:arrow_down:

models/login_source.go
27.70% <0.00%> (+0.26%)
:arrow_up:

... and 2 more

Continue to review full report at Codecov.

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

:rocket:


[Roadmap] 1.0.2 patch release

1.0.0 was a big release marking a milestone in the history of the XGBoost project. It is expected that some users will face issues as they upgrade from 0.90 to 1.0.0. After a week or so, I'd like to create a patch release that fixes a few urgent bugs.
Criteria for inclusion:

The patch should fix an issue that was newly introduced in 1.0.0. Outstanding bugs that were present in 0.90 will not qualify.
The patch should be small and do not present a high risk of breaking other functionalities. So a bug fix that requires a huge code change does not qualify.
In general, the list here should be short, so no more than 5 patches.
Two or three committers should agree to include it.

List of patches:

[x] Fix a small typo in sklearn.py that broke multiple eval metrics (#5341)
[x] Restore loading model from buffer. (#5360)
[x] Use type name for data type check. (#5364)

@trivialfis @dmlc/xgboost-committer
ps. Historically, we (maintainers) did not back port bug fixes to a previous release. We make exception here because 1.0.0 is a big jump from 0.90.

@hcho3 I think we are good to go now?

Yes, I believe we can release a new patch release.

1.0.2 is now available.


doc: Missing API documentation

As mentioned in issue #12265, some APIs aren't included in the generated
API docs because a doxygengroup directive was missing.   This PR adds missing display and networking APIs.

Codecov Report

Merging #12269 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #12269   +/-   ##
=======================================
  Coverage    48.2%    48.2%
=======================================
  Files         294      294
  Lines       44192    44192
  Branches    10603    10603
=======================================
  Hits        21302    21302
  Misses      18624    18624
  Partials     4266     4266

Impacted Files
Coverage Δ

include/net/socket.h
100% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


High RAM usage

Hi, I made this simple node.js app:
http://pastebin.com/Ua9Q6zqj
As you can see, I load database.json file, do some alasql query on it and return that data as response.
database.json is ~50MB in size.
My problem is that this app uses 400-600MB of RAM!
I made this version too, where I open database.json file using .require, but memory consumption is same!
http://pastebin.com/EEhcPmyG
What am I doing wrong, I suppose it is some issue regarding the size of my JSON file? It is array of 55000 records, each one having 20 fields, if that info helps you?

nodejs/express/V8 engine use a lot of memory.
The garbage collector for V8 is also notoriously slow.
In my experience, a simple application eats like 350Mb-500Mb.
What I would do in this situation is try read in a JSON that is a 10% sample of the current JSON, and then see what the mem usage is.

@markon1 Did you try what nickdeis said?

I will close this. Please reopen if anything new comes up.

Any update on above? How we can optimize the RAM uses for ALASQL, I have a simple App made in Codeiniter PHP, however all the code are written in Javascript, Using PHP just to login.
I have a json file approx 16MB (size will grow day by day, at-least 0.5 MB daily), and I need to generate 20 C3.js charts via fetching data from json and passing to C3.js javascript function.
Earlier I was querying my json file like below.
alasql(['select customer_c, sum(spocto_id) as spocto_id, sum(POS) as pos FROM JSON("../bfl.json") where row_num=1 group by customer_c']).then(function(res){
}).catch(function(err){
console.log('Chart 1 & 2, Total Records & POS - Does the file exist? There was an error:', err);
});
I was doing total 20 query for my 20 charts and after doing some calculation was passing it to C3JS javascript function to draw the chart.
I have some filters to apply after I generate all the charts, below is screenshot of my full page, kindly ignore the black patches I did that to hide the names.

When I open google chrome it uses approx 200MB of RAM however when I load my page it goes upto 500-600 MB of RAM uses, and when I apply filters again and again to see specific data, RAM uses keeps increasing dramatically and the application crashes, see below screenshots, RAM uses goes upto 3GB.
RAM USES

BROWSE CRASHED

Because of this reason my App does not even open on low configuration 2GB RAM PCs :(
Later on I thought might be I am loading file again and again like below
FROM JSON("../bfl.json")
in ALASQL that's why it's taking a lot of RAM.
Then I changed the way and included json file in my page. and assigned all the data to a variable "json_data"

Then started querying like below
var res = alasql('select customer_c FROM ? group by customer_c order by customer_c',[json_data]);
I noticed that my speed increased a bit while applying filters however the RAM uses is same, it keeps increasing as I use my filters and fetch data again and again.
I checked same with enabling and disabling the cache like below however the RAM uses is same.
alasql.options.cache = false; // Use cache
Is there any way to free up the memory or any other way to use ALASQL effectively, this is very critical for me, and I haven't seen any optimization technique after googling.
Can Anyone help or suggest something please???

Put it into a webworker - goes more smooth.

@guptavijay208 where you able to figure out how to use the web worker with es6 modules?


Neovim crashes

Description
Neovim crashes
Neovim version
0.8-dev
Operating system and version
Ubuntu 22.4
Expected behavior
Neovim doesn't crash
Actual behavior
Neovim crashes
Minimal config
Install gitsigns.nvim

Steps to reproduce
Open many files, I guess?
Gitsigns debug messages
Unfortunately, I didn't have debug_mode set. I only have a screenshot:

Looks like the libuv poll object is causing the crash. I suspect this is a platform issue, or either your Neovim build is broken.

Looks like the libuv poll object is causing the crash. I suspect this is a platform issue, or either your Neovim build is broken.

fwiw, I use neovim's unstable ppa. I'm gonna try building neovim myself and see if the problem persists.

Tried building myself, a few crashes happened :cry:. Not sure where to look, gonna turn it off  temporarily

I've committed ca6b3220b3985284271c0852296d681578ecceb1 so you can disable the watcher.

Thanks! I'm gonna try it out


make the items the links

This PR implements option 1 from https://github.com/ioos/ioos-code-sprint/issues/23#issuecomment-1885461876. We can change to option 2 if that one is preferred.

LGTM


[CROSSDATA-426] [Streaming] Expand Streaming Tests

Description
This PR add streaming integration tests end to end with kafka and zookeeper from Spark tests suite.

LGTM

Well done! Thanks!


Support for BPMN models without swimlanes

Q
A

Branch?
master

Bug fix?
no

New feature?
yes

BC breaks?
no

Deprecations?
no

Tests pass?
yes

Fixed tickets
#23

License
BSD-2-Clause

This will provide support for BPMN models without swimlanes by providing the default role. All existing assertions in allocateWorkItem() / startWorkItem() / completeWorkItem() on Workflow that assert the participant acts as the given role will still be called with the default role ID __ROLE__.

Might be worth using isset instead of count in the provideRoleIdForFlowObject function. If there are multiple processes, where one process has lanes but one does not, it will still be unable to find a role for a task.
This was something I was trying to solve but it was tricky when trying to map the participants, but with this solution it should be easy.

Currently multiple processes using pools are not supported, and practically they should not be supported, IMO.
As to isset, I think that count is intentional than isset in the contexts.


Hiding the timeline

Hi,
Is there any way to hide the timeline? Currently, there is sidebarWidth which allows to set 0, hence, only showing the Timeline.
See this sample
Is there anyway to do like timelineWidth={0} so that only the sideBar will be shown, and the timeline is hidden.
Thanks.

@bwgjoseph there is no way currently to do that. I would suggest forking the library  and applying the changes you are suggesting.


Fix crashing on fate completion

Adds the missing entries for Dawntrail zones that were causing it to crash

Thanks :D


Simplify classifiers code

I think that the classifiers code are very complex, and it's not because of data science context knowledge necessary to understand it. I'm afraid that few people will be able to maintain it in a near future.
There is some magic numbers, a considerably amount of method chains and big methods in some classifiers.
https://github.com/datasciencebr/rosie/tree/master/rosie/chamber_of_deputies/classifiers

I would like to address this issue but I need help with what that code are trying to say.
I believe that solve this issue will help with transparency making easier for people understand each classifier and will help people contribute with classifier as well.
My plan is address one classifier at time:

[ ]  election_expenses_classifier.py
[ ] irregular_companies_classifier.py
[ ] meal_price_outlier_classifier.py
[ ] monthly_subquota_limit_classifier.py
[ ] traveled_speeds_classifier.py

Who I believe that can help with this?
@cuducos @anaschwendler @jtemporal @Irio

Hi @lipemorais thanks for that. I really believe that this might help a lot!
I'll help you refactoring the classifiers, and my suggestions is one PR for each one, and that we keep testing in small bytes, always checking if the number os suspicions for each classifier remain the same in the way to that refactor.
Please any doubt, say here and we keep a conversation that everyone can participate 🎉

I will start with election_expenses_classifier.py.
As soon as I have some doubt I will put it here. :)

Closed automatically, reopened because we still have refactors to do ; )


Couldn't recover session from backup node with non-sticky mode

This is my scenario:
tomcat 8
memcached 1.4.15
memcached-session-manager 2.3.0
spymemcached 2.9.1
Manager configuration in  both Tomcats:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" lockingMode="auto" memcachedNodes="n1:host1_ip:11211,n2:host2_ip:1211"  sticky="false"  />
host1 hosts tomcat server1 and n1
host2 hostst tomcat server2 and n2
These are the steps I reproduce and what I see in memcached:
1.-wget --user=user --password=pass server1/some_path
IN MEMCACHED NODE n1:

<30 set validity:72E32CC53C53AB04F2A2AB19D82C351A-n1 0 1800 20
30 STORED
<30 add lock:72E32CC53C53AB04F2A2AB19D82C351A-n1 0 5 6
30 STORED
<30 set 72E32CC53C53AB04F2A2AB19D82C351A-n1 0 3600 571
30 STORED
<30 get 72E32CC53C53AB04F2A2AB19D82C351A-n1
30 sending key 72E32CC53C53AB04F2A2AB19D82C351A-n1
30 END
<30 get validity:72E32CC53C53AB04F2A2AB19D82C351A-n1
30 sending key validity:72E32CC53C53AB04F2A2AB19D82C351A-n1
30 END
<30 set validity:72E32CC53C53AB04F2A2AB19D82C351A-n1 0 1800 20
30 STORED
<30 delete lock:72E32CC53C53AB04F2A2AB19D82C351A-n1
30 DELETED
<30 add 72E32CC53C53AB04F2A2AB19D82C351A-n1 0 5 1
30 NOT_STORED

IN MEMCACHED NODE n2:

<30 set bak:72E32CC53C53AB04F2A2AB19D82C351A-n1 0 3600 571
30 STORED
<30 set bak:validity:72E32CC53C53AB04F2A2AB19D82C351A-n1 0 1800 20
30 STORED
<30 get ping-n2
30 END
<30 add bak:72E32CC53C53AB04F2A2AB19D82C351A-n1 0 5 1
30 NOT_STORED
<30 set bak:validity:72E32CC53C53AB04F2A2AB19D82C351A-n1 0 1800 20
30 STORED

2.-I kill memcached node n1 (pkill memcached)
3.- wget server2/some_path --header "Cookie: JSESSIONID=72E32CC53C53AB04F2A2AB19D82C351A-n1"
IN MEMCACHED NODE n2:

<30 get ping-n2
30 END
<30 get bak:validity:72E32CC53C53AB04F2A2AB19D82C351A-n1
30 sending key bak:validity:72E32CC53C53AB04F2A2AB19D82C351A-n1
30 END
<30 get bak:72E32CC53C53AB04F2A2AB19D82C351A-n1
30 sending key bak:72E32CC53C53AB04F2A2AB19D82C351A-n1
30 END
<30 set validity:72E32CC53C53AB04F2A2AB19D82C351A-n2 0 1800 20
30 STORED
<30 set 72E32CC53C53AB04F2A2AB19D82C351A-n2 0 3600 571
30 STORED

4.-401 Unauthorized response
What is funny is that from this moment I can restore the session if I manually modify cookie's suffix:
72E32CC53C53AB04F2A2AB19D82C351A-n2
Thank you for your time.
I am quite a noob in this area so I would appreciate if you tried to keep it simple.
PS: I can seem to enable logging by following the instructions in project's wiki. Are they supposed to show up in catalina.out after restarting Tomcat instance? What should I see there?

Ok I think I have some logs that might be useful:

2019-02-08 09:50:13.119 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to exception on {QA sa=/<IP_ADDRESS>:11211, #Rops=1, #Wops=0, #iq=0, topRop=Cmd: get Keys: ping-n1Exp: 0, topWop=null, toWrite=0, interested=1}
java.io.IOException: Disconnected unexpected, will reconnect.
at net.spy.memcached.MemcachedConnection.handleReads(MemcachedConnection.java:552)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:480)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:261)
at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:964)
2019-02-08 09:50:13.119 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/<IP_ADDRESS>:11211, #Rops=1, #Wops=0, #iq=0, topRop=Cmd: get Keys: ping-n1Exp: 0, topWop=null, toWrite=0, interested=1}, attempt 0.
2019-02-08 09:50:13.119 WARN net.spy.memcached.protocol.ascii.AsciiMemcachedNodeImpl:  Discarding partially completed op: Cmd: get Keys: ping-n1Exp: 0
Feb 08, 2019 9:50:13 AM de.javakaffee.web.msm.MemcachedSessionService changeSessionIdOnMemcachedFailover
INFO: Session needs to be relocated as node n1 is not available, loading backup session for 53E4991C4D6894C03E38AD515EA77301-n1
2019-02-08 09:50:13.120 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to exception on {QA sa=/<IP_ADDRESS>:11211, #Rops=1, #Wops=0, #iq=0, topRop=Cmd: get Keys: ping-n2Exp: 0, topWop=null, toWrite=0, interested=1}
java.io.IOException: Disconnected unexpected, will reconnect.
at net.spy.memcached.MemcachedConnection.handleReads(MemcachedConnection.java:552)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:480)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:261)
at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:964)
2019-02-08 09:50:13.121 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/<IP_ADDRESS>:11211, #Rops=1, #Wops=0, #iq=0, topRop=Cmd: get Keys: ping-n2Exp: 0, topWop=null, toWrite=0, interested=1}, attempt 0.
2019-02-08 09:50:13.121 WARN net.spy.memcached.protocol.ascii.AsciiMemcachedNodeImpl:  Discarding partially completed op: Cmd: get Keys: ping-n2Exp: 0
Feb 08, 2019 9:50:13 AM de.javakaffee.web.msm.MemcachedSessionService loadBackupSession
INFO: No next available node found for nodeId n1
2019-02-08 09:50:13.140 WARN net.spy.memcached.MemcachedConnection:  handling node for operation is not set
Feb 08, 2019 9:50:13 AM de.javakaffee.web.msm.LockingStrategy onBackupWithoutLoadedSession
WARNING: An error when trying to load/update validity info.
java.util.concurrent.CancellationException: Cancelled
at net.spy.memcached.internal.OperationFuture.get(OperationFuture.java:170)
at net.spy.memcached.internal.GetFuture.get(GetFuture.java:62)
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1125)
at de.javakaffee.web.msm.storage.MemcachedStorageClient.get(MemcachedStorageClient.java:62)
at de.javakaffee.web.msm.LockingStrategy.loadSessionValidityInfoForValidityKey(LockingStrategy.java:333)
at de.javakaffee.web.msm.LockingStrategy.onBackupWithoutLoadedSession(LockingStrategy.java:231)
at de.javakaffee.web.msm.LockingStrategyAuto.onBackupWithoutLoadedSession(LockingStrategyAuto.java:70)
at de.javakaffee.web.msm.MemcachedSessionService.backupSession(MemcachedSessionService.java:1070)
at de.javakaffee.web.msm.RequestTrackingHostValve.backupSession(RequestTrackingHostValve.java:232)
at de.javakaffee.web.msm.RequestTrackingHostValve.invoke(RequestTrackingHostValve.java:161)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1519)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1475)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2019-02-08 09:50:15.122 INFO net.spy.memcached.MemcachedConnection:  Reconnecting {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2019-02-08 09:50:15.123 INFO net.spy.memcached.MemcachedConnection:  Reconnecting {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2019-02-08 09:50:15.123 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@4fc63b44
2019-02-08 09:50:15.124 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to failure to connect to {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:423)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:261)
at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:964)
2019-02-08 09:50:15.125 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}, attempt 1.
2019-02-08 09:50:15.125 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@7fca5141
2019-02-08 09:50:19.128 INFO net.spy.memcached.MemcachedConnection:  Reconnecting {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2019-02-08 09:50:19.129 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@323d9199
2019-02-08 09:50:19.130 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to failure to connect to {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:423)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:261)
at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:964)
2019-02-08 09:50:19.130 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}, attempt 2.
2019-02-08 09:50:27.139 INFO net.spy.memcached.MemcachedConnection:  Reconnecting {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2019-02-08 09:50:27.140 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@61329002
2019-02-08 09:50:27.141 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to failure to connect to {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:423)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:261)
2019-02-08 09:50:27.141 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}, attempt 3.
2019-02-08 09:50:43.158 INFO net.spy.memcached.MemcachedConnection:  Reconnecting {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2019-02-08 09:50:43.159 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@7e826fc3
2019-02-08 09:50:43.160 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to failure to connect to {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:423)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:261)
at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:964)
2019-02-08 09:50:43.160 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}, attempt 4.
2019-02-08 09:51:13.173 INFO net.spy.memcached.MemcachedConnection:  Reconnecting {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
2019-02-08 09:51:13.174 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@3bae9855
2019-02-08 09:51:13.174 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to failure to connect to {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:423)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:261)
at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:964)
2019-02-08 09:51:13.175 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/<IP_ADDRESS>:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}, attempt 5.

Hello Pablo
Perhaps if you increase the log level, you can try to understand what is happening:
https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#configure-logging
It seems connection is lost while session is relocated in node 2. It's a little bit strange because in your first information it seems the key are created in node 2 (72E32CC53C53AB04F2A2AB19D82C351A-n2). If everything works fine you should receive a "Set-cookie" headed with n2. So, your browser should use that new cookie in the further requests.
Raúl

Hello Pablo
Perhaps if you increase the log level, you can try to understand what is happening:
https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#configure-logging
It seems connection is lost while session is relocated in node 2. It's a little bit strange because in your first information it seems the key are created in node 2 (72E32CC53C53AB04F2A2AB19D82C351A-n2). If everything works fine you should receive a "Set-cookie" headed with n2. So, your browser should use that new cookie in the further requests.
Raúl

That's exactly what happens, but I guess that means the session is restarted, right? What I want is that if the server fails in the middle of a download, another server can take over, recover the session (from the backup memcached node) and continue with the download from the point it was left.

If I don't understand it wrong, the session is not lost. Only the identifier is changed and browser or client is responsible of request using the new cookie.


Add a custom protocol over SSH for TCP and UDP communication (#9)

Summary
This introduces a new backend (& custom protcol) called sshpy.

Before I merge this, I need to implement these things (afaik):

I'm using 32 bit numbers for no reason. I should probably switch this to 16 bits, but maybe keep this for the client IDs
I probably should write documentation on the protocol and the code, since it isn't really off the shelf, and the code is ~1.3k lines so far in total

This PR will fix issue #9.


docs: Fixing Superset typo in docker-compose local installation guide

SUMMARY
Update typo in local Docker installation guide where Superset is misspelled as Sueprset
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
Before

After

ADDITIONAL INFORMATION
Fixes 24919

thanks for contributing this PR and catching that!  I just recently fixed this typo in the Kubernetes documentation, looks like the same thing got copy-pasted into here also.  It has the same typo "telmetry" also.
Could you look at the change I made in https://github.com/apache/superset/pull/24834/files and apply that here to improve the overall quality of the language and fix the telmetry typo?  You'd just need to change what appears after To opt-out of this data collection in my PR to be docker-compose specific, not Kubernetes-specific.


Case-insensitive Titles

I noticed the list titles are case-insensitive, in the sense that if I create a list with the title asf, I cannot create another with title ASF.
Thinking about whether we should treat them in this way, though it does seem unlikely anyway that the user would want to create two lists with the same name but different cases.

This is intentional behaviour. I'd think that have two lists with the same title is an oversight rather than a purposeful action.

Makes sense 👍


Update finalize! signature in Container::Stubs

Currently Container.enable_stubs! causes Container.finalize! signature to change:
method no longer accepts "freeze" keyword argument. This causes consumers that
rely on this api to crash, i.e. dry-rails railtie

Thanks, I merged this even though it seems like we have no specs for this tricky thingie. I'll be working on a better solution before 1.0.0 where this entire stubs module will be most likely gone. This should be based on a simple configuration setting.


feat: #1264 config prod bcsc

refs: #1264

Config PROD BCSC issuer urls through terraform
Remove the gender from attribute mapping
Remove gender from the read/write permission maximum list
Config AWS DEV to use PROD token url and user info url for BCSC identity provider

Hi Ian, I think the use_override_proxy_endpoints is not related to the flyway, we only use it here when set up token and user info urls


How to display node names and colors in 3D mode?

After using it, I think the 3D mode graph effect is great, but I noticed that node names and colors cannot be displayed in 3D mode. I'm not sure if it's because I haven't configured it or if the feature is not currently supported. If it's not currently supported, when will this feature be available?

I'd even make these features myself if necessary.


the pretrained model

where are the pretrained models?

Dear @xk-wang ,
We do not provide any pretrained models, since this would increase the repository. I can recommend you to download the Böck dataset and then train own models. The Jupyter Notebook (https://github.com/TUD-STKS/PyRCN/blob/master/examples/onset_detection.ipynb) is now updated so that it can give you a starting point.
I will further update the notebook in the next weeks, since we have published a new onset paper. This will then include all steps to do all the parameter optimizations and evaluation steps.
In the meantime, if you would like to optimize onset models, you can ask me any questions via mail (as you have done before)!

OK, Thank you @renierts sorry after a long time to reply.


Broken link in README

The "Linux platform notes section of the README" links to this dead page. Link text is "gtk-rs dependencies".
I looked around the gtk-rs website a bit but couldn't the correct link. Upstream README also has bad link: https://github.com/gtk-rs/gtk/issues/1063

I wrote original note and will fix that in a next few days.

Looks like this link from upstream is the best one, despite they are suggesting to use latest versions of dependencies, not ones from your distro. I think our users will see that and we don't need to clarify.


Fix seccomp profile

This is to fix the seccomp profile rule that was put in place for the CVE.

I see the new test, but I don't see any actual change to the profile?

@solarkennedy WIP.


Is there a way to restrict the parameter space differently at each iteration?

I'd like to only compute acquisition function values for a subset of the parameters within the total parameter space. Is there an easy way for me to do this? In other words, could I restrict the parameter space considered to some input set of parameters?

You can always create a new instance of Optimizer / or surrogate directly from sratch with your observations, where you drop or add any of the dimensions that are necessary for your cause. This will restrict your estimator / acquisition function to work only with the parameters that you require. Feel free to reopen if this does not address your issue.

First of: @iaroslav-ai, you really rock tonight! I've never seen as many updates on one night.
But, with this question: Setting a new instance of the Optimizer with one of the previous dimensions left out (to mimic that a parameter in that dimension is set to a set-point) - would this not remodel everything - and "forget" about potential cross-interactions between any of the other remaining dimensions.
I do not have the coding skills to do this, but my intuition of the problem would be to go along the lines of making a model like "expected_minimum" with full flexibility in all but one dimension and then calculate an aquisition function. Ofcourse for this to work, we need to make the "expected_minimum-look-alike" through a bayesian process, that returns a std.
Could this work?

Ah I see. I understood that some dimensions are to be dropped; But I guess that you just want to fix some, and calculate acquisition function over the rest of parameters? I think I had a code snippet that does someting similar, I take a look. But I remember that it was not straightforward at least

Thanks for a positive comment btw :)

Hm the best I can come up with is #325 and this corresponding snippet. What this does though is allow a fixed "context" vector, which is fixed for optimization of acquisition function. This is done in context of Transfer Learning. Maybe something for you to look at, but not exactly fixing the dimensions of the acquisition function / surrogate.
I guess if I was in your position I would look at the latest surrogate that Optimizer produces, and use that one directly; You could define a function of your own, that takes a subset of dimensions, and for the rest keeps values fixed. You could use minimize from scipy in gradient free mode, to avoid calculating the gradients.
Beyond that, I do not have anything better at the moment :/

Would a simple API update be to allow the caller to constrain the space of expected_minimum_random_sampling on a subsequent call?


We're using both blanket and istanbul

@cliftonc We use istanbul for coverage in npm test, but then use blanket in npm coverage.  Why?  From what I've read online, we should be able to use istanbul for the coveralls stuff too.  Something like:
npm test && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js

Probably just showing its age,  I don't think you could when first written.  Let's simplify it.

So I reworked the npm scripts.  Right now the travis build is using npm run coveralls which re-runs the tests, we should be able to switch it to npm run coveralls-after-test so that it can just re-use the coverage reports generated by the test run.  Unfortunately, I don't know how to do that.

Also, sorry about tanking our coverage by using --include-all-sources.  :cry: It was necessary, I think.

Agreed, it would be nice to factor enough out of the commands into core lib that we can start testing commands with a few simple git / fs mocks.

Bosco uses nyc these days.


Add more debugging info

Not sure how to diagnose issue here.  Is there a way to provide more info about what's going on?
[th][th][th][th][th][th][th][th][th][th]Expecting value: line 1 column 1 (char 0)
Expecting value: line 1 column 1 (char 0)
Expecting value: line 1 column 1 (char 0)
Expecting value: line 1 column 1 (char 0)
Expecting value: line 1 column 1 (char 0)
Expecting value: line 1 column 1 (char 0)
...
Expecting value: line 1 column 1 (char 0)
Expecting value: line 1 column 1 (char 0)
[-th]
0 OK, 10 Failed

json parsing error


✋🏽Design Decisions for Hand-Labeled Features

Background / Recap
We want to know: which types of team communication processes matter in different team activities? Our goal is to extract theories of teams' communication processes (e.g., "teams perform better when members speak more positively than negatively") and "map"  these theories to the different contexts (tasks) in which teams operate. For example, does such positive thinking matter less when the activity is analytical, rather than creative?
The crux of our work now is in extracting features that match these theories of team processes, as closely as possible. Here is where we encounter a design decision: specifically, what should the role of hand-labeling be in this process?
Overview of the Problem
Many of the most interesting features in a team's communication process are complex and difficult to quantify --- for example, a member's "assertiveness," or a team's level of "coordination" and "cooperation," certainly leave traces in what team members say, but can elude precise definition. Therefore, it may be important to consider the role that hand-labeling features can play in helping to quantify these difficult-to-measure behavioral features.
There are three potential uses for hand-labeling:

As features. This is essentially the approach taken by Hancheng and Mark, et al. in their 2020 CSCW paper (Cao et al. 2020). Here, they asked humans to rate 20 conversational features sourced from the organizational behavior literature (e.g., "generating many ideas," "positive interaction," "passive-aggressive interaction").  The advantage of obtaining these labels is the ability to potentially augment predictive models with human insight. However, they found that these hand-labeled features were ultimately not very predictive of whether a team chooses to work together again after an interaction (their dependent variable of interest), so it is questionable whether this approach is worth the requisite cost.
As training data. Alternatively, we can computationally define all features, using human labels in training process. In training, human labels can either be used for supervised learning (e.g., see paper C.9), or as part of the input in a specific formula (e.g., paper C.12); both of these examples are discussed in more detail later. To do this, we would likely need to split off a portion of our data for training purposes; but since we only have a few hundred teams, this could waste a precious resource. An alternative is to pre-train computational feature extractors on some other dataset (e.g., Twitter or Yelp reviews), and then fine-tune using a smaller subset of our real data.
As validation data.  But if we go with option (2), how would we know if our computational features are accurate proxies of these behavioral features? We probably need to also pre-label a "validation set" as well. But if we're pre-labeling all of this --- and if the human judgment is ultimately the gold standard that these fancy models are meant to approximate --- we then end up back at (1). Effectively, if we're labeling that much, shouldn't we just use hand-labeling for everything?

What (and how much) should we hand-label?
We reach a decision point with a few considerations:

Hand-labels can be a great "gold standard," as human judgments offer a nuanced perspective that can either augment models or help to benchmark them.
However, hand-labeling everything can be costly.
Additionally, Hancheng and Mark's work shows that hand labels may not add much value.
We can include hand labels in the training and validation process.
But if use hand labels in training/validation, this (1) still becomes costly; (2) causes us to lose a chunk of our dataset due to the train/test split; and (3) assumes that hand labels are the "ground truth" (which may or may not be the right assumption).

Appendix: Learning by (Previous Authors') Examples
Here are two examples of previous work that uses human labeling in different ways:

C.9 trains a classifier to predict whether a conversation is "friendly," "flirtatious," "awkward," or "assertive." The input features are the prosodic and lexical features of the conversation, and human labels (done by the participants of the conversation) are used for supervised learning.

C.12 uses humans to annotate political interviews for turn segmentation and content (e.g., is the answer informative/responsive? Does the speaker seem satisfied with the response?). They then use these annotations to calculate the extent to which a speaker is "cooperative" or not: the "degree of cooperation" is defined as the proportion of a speaker's features that are rated as cooperative, divided by the sum of all cooperative and non-cooperative features.

Other Ideas

Could we use the weights from the pre-trained model in C.9 to predict constructs like "assertiveness?" (But then, we'd still need validation data...)

Maybe Alison Woods Brooks would have an idea, since she studies conversations & has been doing work with Susan Athey? It's possible they have some computational (non manual) way of coding tone or other similar attributes

@linneagandhi @JamesPHoughton just to follow up on this -- I'd love to make the connection to connect with Allison and Susan!

Bumping this issue following 2nd year paper presentation --- seems like this might be a priority as people will ask us about validation.

Closing as this is about a previous version of the project and no longer related to the toolkit


Getting async praw warinings

Describe the bug

I'm running praw in a jupyter notebook as I used to. When I run anything with praw, I get the warning "It appears that you are using PRAW in an asynchronous environment."
To Reproduce
import praw
reddit=praw.Reddit('spez')
redditor=reddit.user.me()
print(redditor.name)
Expected behavior
I should not be getting the async warning
System Info

OS: Windows 10
Python: Python 3.8.5
PRAW Version: 7.1.2

Why am I getting the warning and how can I disable it?

You can disable it by passing check_for_async=False in the initialization of the reddit instance: praw.Reddit(check_for_async=False). See here for more info: https://praw.readthedocs.io/en/latest/getting_started/configuration/options.html#miscellaneous-configuration-options

@kneelesh48 are you explicitly using anything async in your code?
If not our async detection may be faulty.

import praw
reddit=praw.Reddit('spez')
redditor=reddit.user.me()
print(redditor.name)
I run just these 4 lines in a new jupyter notebook on 2 different Windows machines and got the same warnings.
Of course I used another section instead of spez in my praw.ini file.

Thanks for the update @kneelesh48. I reopened this issue because jupyter is prolific enough that we should probably exclude it from our async detection. Thanks for reporting.


HELP!!!!!!!!!! Can anyone help me in understanding how knowledge graph works internally in llama index?

Question Validation

[X] I have searched both the documentation and discord for an answer.

Question
I am having trouble understanding knowledge graph working in llama index. I understood few parts but I am not having clear understanding of other sections. Following are the things I understood:

Why knowledge graph is needed and how to construct it using llm
How to use existing knowledge graph like neo4j or nebula.
How user query is converted to cypher query for getting answer from KG.

What i don't understand:

I have seen two way to construct answer from KG. First is direct cypher query creation, next is subgraph creation. In both case I have seen we are only retrieving the triplets like source relationship and target. But many cases without actual context from where this has been retrieved only with source-relationship-target triplet we cannot give accurate answer. So are we storing the chunk from where this triplet was created? If yes are we using that also to generate answers? If yes wouldn't that overflow our context window? and how will it be different from normal vector search?
I have seen index query engine showing answers for question which are not in graph, so how to set prompt here?

@dosubot Understood. So you are not storing the chunk where the triplet has been extracted. If that the case just relying on the triplets will it be complete answer? If the context from where this was retrieved is not included. Also let say if an entity in question has more than 100 relations, isn't it a leap of faith to put all its relation in context?
What does graph_store_query_depth and similarity_top_k do?
Also my second question is I saw a section in your document which shows how to manually add triplets in graph. Here you are also inserting the text chunk. Why is that?

@vishnu9000 isn't it a leap of faith to put all its relation in context -- its fine, since a response synthesizer is used which handles context limits
graph_store_query_depth and similarity_top_k do -- the first one modifies how "deep" to retrieve (If I retrieve a triplet, do I retrieve its neighbors? Neighbors of neighbors? etc.). Similarity_top_k is used when you constructed the triplets with embeddings.
Here you are also inserting the text chunk. Why is that? -- triplets are mapped to a text chunk where the triplet was extracted from. This is what include_text parameter does (i.e. do I send a the chunks where matching triplets are found to the LLM, or just the triplets alone)

I really recommend just reading the source code for a deeper understanding here

What happens to the Chunks that we pass to the KG creation function in Llamaindex (knowledgegraphindex() or ...)
How the chunks will be stored, how the retrieval happens
what are the 4or5 json files that are getting created if we store the using simple graph store


Fixed: Exception: max_epochs is deprecated, use max_steps instead.

Title says it all.  Appreciate all the work!

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Joseph N. Ruskiewicz 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.

Thanks for this. Can you please also modify the README?

Ah yeah, my bad.

Hey @twobitunicorn, can you please sign the CLA?

@jmoralez my bad! all signed.

I think each commit has a different email. Can you maybe squash them into a single one with the same user?

That was weird.  Sorry about that.  Should be fixed.


CLI "inspect" command

The inspect CLI command is a proposed command that can be used to fetch build artifacts, given a URI.
Proposed UX:
polywrap inspect <URI> [options]

Fetch a wrapper's package schema

Options:
  -o, --output-dir <path>              Output directory for the build artifacts (default: ./wrap)
  -c, --client-config <config-path>    Add custom configuration to the PolywrapClient
  -p, --pretty                         write output in pretty-printed format
  -h, --help                           Display help for command

Example:
polywrap inspect wrap://ens/goerli/v3.uniswap.wrappers.eth --pretty`

@krisbitney can you create a more detailed devexp description in this issue?

@krisbitney can you create a more detailed devexp description in this issue?

I edited the issue to describe a UX. The inspect command wasn't my idea and I don't remember whose it was, so it's possible that person had something else in mind.


[WFCORE-4338] Race condition on PID file allows for termination of ar…

…bitrary processes by local users
Issue: https://issues.jboss.org/browse/WFCORE-4338

@gaol thanks


Nutrients access?

I can see both Google Fit and Apple Healthkit provide information on nutrients. Is it possible to access this through this tool? Or if not, how hard would it be to add this as a feature?

Hi @Doychev , for the moment it is not possible to access this feature. We can implement in the future, should not be so hard. We also accept PR :)


NIFI-9754: Introduced VersionedExternalFlow

Updated stateless and StandardProcessGroup, etc. to make use of VersionedExternalFlow
Updated StatelessDataflowDefinition to use ExternalVersionedFlow instead of generic type
Updated Stateless Bootstrap to avoid loading stateless engine libs from root class path but instead use a NarClassLoader to load the statelss nar

Thank you for submitting a contribution to Apache NiFi.
Please provide a short description of the PR here:
Description of PR
Enables X functionality; fixes bug NIFI-YYYY.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[ ] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[ ] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[ ] Has your PR been rebased against the latest commit within the target branch (typically main)?

[ ] Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not squash or use --force when pushing to allow for clean monitoring of changes.

For code changes:

[ ] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[ ] Have you written or updated unit tests to verify your changes?
[ ] Have you verified that the full build is successful on JDK 8?
[ ] Have you verified that the full build is successful on JDK 11?
[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI for build issues and submit an update to your PR as soon as possible.

Thanks @gresockj . Addressed above.

+1 All looks good to me

Sounds good -- I will merge once the checks complete.


added extunix specific ttyname for pager functionality

Try using cat example.diff | dune exec ./_build/install/default/bin/diffcessible

Running this without CLI options seems to break my terminal ^^
$ dune exec diffcessible
<empty non reactive terminal, killing diffcessible leaves the terminal broken>

When calling ./_build/install/default/bin/diffcessible or if anything goes wrong, start the app with an empty diff content with title Error

TODO: Add cram tests for using cat example.diff | dune exec ./_build/install/default/bin/diffcessible and dune exec ./_build/install/default/bin/diffcessible

Squashed and merged


202410 async notebook reworks

This change includes a new notebook focused on historical data that includes pagination and calls to the API directly rather than via the package. It also includes major edits to the existing "all timeline" notebook, focusing it on real-time ingestion, and shortening it considerably.

Still need to review #21, but many of the comments that applied to 14 will apply here.


Remove TP5 Nano page

@enderb-ms - Ender can we remove, or just update at this point?

@enderb-ms

Looks like this is on the microsoft/nanoserver repo description now

No references to the page. LGTM

may be a bit off topic but may some of you knows out of the box:  why was there such a big increase in size with the last kumulative update of nanu?


Added Bank Loan Approval Prediction

🛠 Related Issue
closes - #516
📝 Description
Added Bank Loan Approval Prediction
🔍 Type of PR
🐛 Bug fix
[y ] ✨ Feature enhancement
📚 Documentation update
🛑 Other (specify): _______________
📸 Screenshots / 🎥 Videos (if applicable)
[Attach screenshots or videos]
✅ Checklist
[ X] I have performed a self-review of my code.
[X ] I have read and followed the Contribution Guidelines.
[ X] I have tested the changes thoroughly before submitting this pull request.
[X ] I have provided relevant issue numbers, screenshots, and videos after making the changes.
[ X] I have commented my code, particularly in hard-to-understand areas.
ℹ Additional Context
[Include any additional context or information that might assist reviewers in understanding the changes]

@Akshat111111 sir you asked me to put the folder into the respective file, i have done it. please check


[BugFix BetaBlocking] Fix PSTN start Call (#2739)

update parsing function to handle phone numbers

add test for E.164 formatting

Change files

Duplicate change files for beta release

What

Why

How Tested

Process & policy checklist

[ ] I have updated the project documentation to reflect my changes if necessary.
[ ] I have read the CONTRIBUTING documentation.

Is this a breaking change?

[ ] This change causes current functionality to break.

E.164 Plan-conforming telephone numbers are limited to only digits and to a maximum of fifteen digits


Set Lang to "en", but still got tweets in other language

Issue Template
Please use this template!
Initial Check

If the issue is a request please specify that it is a request in the title (Example: [REQUEST] more features). If this is a question regarding 'twint' please specify that it's a question in the title (Example: [QUESTION] What is x?). Please only submit issues related to 'twint'. Thanks.

Make sure you've checked the following:

[] Python version is 3.6;
[] Updated Twint with pip3 install --user --upgrade -e git+https://github.com/twintproject/twint.git@origin/master#egg=twint;
[] I have searched the issues and there are no duplicates of this issue/question/request.

Command Ran

Please provide the exact command ran including the username/search/code so I may reproduce the issue.

Description of Issue

Please use as much detail as possible.

Environment Details

Using Windows, Linux? What OS version? Running this in Anaconda? Jupyter Notebook? Terminal?

Hi. I have already set language to English like this:
import twint
c = twint.Config()
c.Search = "a"
c.Limit = 100
c.Store_csv = True
c.Output = "none.csv"
c.Lang = "en"
But the output still contained tweets in other languages

Could you please help me figure out what's the problem?

Please search the existing issues before creating a new one.
#1015 is exactly the same issue as yours. Go through that thread once. Please close this issue, as it is a duplicate.


ENYO-4978: Fix sliderTooltip Deprecation in 1.x

Issue Resolved / Feature Added
Slider.sliderTooltip is moving to ProgressBar.ProgressBarTooltip in #1467
Fixing the typo in #1478 from Tooltip.ProgressBarTooltip to ProgressBar.ProgressBarTooltip
Links
ENYO-4978
Comments
Enact-DCO-1.0-Signed-off-by: Teck Liew<EMAIL_ADDRESS>

Since we are still exporting moonstone/Slider.SliderTooltip, is this deprecation even necessary? If ProgressBarTooltip is backwards compatible, I think we'd be okay. Thoughts?

Actually, I agree. Should we rollback the merge from #1478? Or fix it in this PR?

NOPE! #1516 so we'll just go the easier route and revert.


Added search engine exclusion section

Docs Build status updates of commit 8a291db:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docfx.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Passing State Methods as Callbacks not working

Seems that if I define a method in a State Class
static _states() {
  return [
   class State extends ParentState {
    $enter() {
    this.eventTarget.addEventListener('EVENT', this.method); // NOT WORKS
    this.method(); // WORKS
   }
   method(){}
  }
 ]
}

and I call it in $enter with this.mehod() it works.
If I pass I as callback in another function It will be not called.

Are this related to StateMachineRouter?
Maybe the function is not ever defined?
Is possible to define methods in State classes?

Hi @mattiapontonio,
you can ensure proper context binding e.g. by passing () => this.method() to event listener. The context within state machine is a complex matter, but we hope to put proper documentation for lightning's state machine in place soon enough.
Best regards


No module named 'rave_python'

I was trying to test flutterwave python SDK. Now i got this error:
`from rave_python import Rave, RaveExceptions, Misc
ModuleNotFoundError: No module named 'rave_python'`

Hope you installed it correctly.... And if you are using a virtual env make sure you had installed it in the virtual env

Hope you installed it correctly.... And if you are using a virtual env make sure you had installed it in the virtual env

Run this:
pip install rave-python
Instead of:
pip install rave_python

pip install rave-python

Still not working!

Hello @comfortchambeshi ,
Please note that this is a linting error raised by your IDE.
Kindly ignore and proceed with your development.
Rest assured the team is working on removing the error.
Regards,


IOS not playing video

What version of Streaming-Meda-Cordova-Plugin are you using?
com.hutchind.cordova.plugins.streamingmedia 0.1.4 "StreamingMedia"
What version of Cordova are you using?
6.3.1
What devices are affected?
Iphone 5
Version IOS 10.0.2
Please describe the issue in detail, with relevant code samples
When I play the video with a local video absolute path I only get a black screen with media controls (volume, play, next, previous) in IOS, Android is working ok.
In Xcode I can see a Warning:
WARNING: ['StreamingMedia'] took '87.544189' ms. Plugin should use a background thread.

I having the same issue... In android, local files works just fine but on a remote server, it's not playing. For ios, local files won't work the same you're showing right now, but on a remote server, it works fine.
Summary:
IOS
local - not working
server - working
Android
local - working
server - not working

any updates on this?

@chugas @jordanlance I used cordova file plugin and accesses the directory with cordova.file.applicationDirectory+"www/videos/" + videoUrl and i was able to play video locally on IOS.

use the file plugin api.
additionally try removing and re-adding a platform. you can also try to remove node modules and do an npm install.


Convert item variations to json and add support for trident, slayer helm and same-name different id items

@raiyni can you check this please?

Shayzien armour should probably be excluded from this

Well, things like (t) dhides are included, and this sort of falls into same category. And as it is optional to use, simply supporting it sort of makes sense. And for shift-click config if for some reason you want to configure shift-click action for it, it makes sense too it will apply to all shayzien armour

I would expect that it doesn't alias completely different items.

Well they are not different, just weaker variations of it (if you mean the one that is used for shamans)

Should it alias a normal defence potion to a super defence potion?

Dumper is now here: https://github.com/deathbeam/runelite/tree/item-variations-dumper.


[delegate-cash] Attribute vaults to order for delegate cash

ℹ What is the context for these changes?
This PR is a part of the effort to implement delegate cash.
This PR specifically adds a listener for when the delegations are fetched and then attributes the vault addresses to the order.
🕹 Demonstration
With  enableDelegateCash = true
https://user-images.githubusercontent.com/18248358/226959260-a3c5fd5b-27b0-46b4-b8c9-ec2488ba45d7.mov
With enableDelegateCash = false
https://user-images.githubusercontent.com/18248358/226959334-af2d672d-73e6-444a-ba56-5655fc1a06fa.mov

🎩 How can this be tophatted?

Set up a delegate.cash account
Checkout this branch
Add console statements in attributeOrder to log the vault address(es)
Verify when you connect with your hot wallet, that the vault wallet address(es) are logged

Note: The writing to the cart cannot be tested in the playground as it needs to be tested in the online store.
✅ Checklist

[x] Tested on mobile
[x] Tested on multiple browsers
[x] Tested for accessibility
[x] Includes unit tests
[x] Updated relevant documentation for the changes (if necessary) POST-MERGE

/snapit

/snapit


Show a warning if a filename includes leading or trailing whitespace

After https://github.com/Microsoft/vscode/issues/12013 has landed I think we could help the user avoid producing files with leading or trailing whitespace by simply showing a warning as soon as the filename has that. It would just be a hint to prevent accident whitespace in filenames. I guess it could be quite frustrating to debug an issue that only came in by having a file with whitespace, especially if it is trailing whitespace that is not possible to see in the explorer.

Good idea. We can add that in the filename validator.


[Bug] train.vim failed after install with vim-plug

What happened:
After with vim-plug command :TrainUpDown failing with:
Error detected while processing function train#show_matches:
line    1:
E5108: Error executing lua Vim(call):E117: Unknown function: conf#set_name
Press ENTER or type command to continue

What you expected to happen:
:TrainUpDown should show matches.
How to reproduce it:
nvim -c ":PlugInstall" -c ":TrainUpDown"
Environment:
nvim --version
NVIM v0.5.0-575-g225f0bcd9
Build type: Debug
LuaJIT 2.1.0-beta3

Did you follow all the steps in the readme to install?

Of course not, I should definitely RTFM, but for my defense, installing Plug 'tjdevries/std.vim' is falling with:
x std.vim:
    Cloning into '/Users/m/.vim/plugged/std.vim'...
    remote: Repository not found.
    fatal: repository 'https://github.com/tjdevries/std.vim.git/' not found

Ha, :) my bad.
I will fix this (and maybe just remove the dep entirely, since I don't think we really use it anymore). I might be able to do it sometime today.

Oh, it's also because it's actually tjdevries/standard.vim contrary to what I had in the repo. That should install fine I think

Thank you, I thought I make PR with this plugin name, but I guess it is not worth, because you would probably write a new README very soon.
And PR with one line in README it's not looking great ;)

Haha, thanks :) Hope it's working well for you :)

I got a similar error:
Error detected while processing function train#show_matches:
line    1:
E5108: Error executing lua /home/thomas/.vim/plugged/train.nvim/lua/train/window.lua:1: module 'plenary.window.float' not found:
        no field package.preload['plenary.window.float']
        no file '/.vim/lua/plenary/window/float.lua'
        no file '/.vim/lua/plenary/window/float/init.lua'
        no file '/home/thomas/.vim/plugged/gruvbox/lua/plenary/window/float.lua'
        no file '/home/thomas/.vim/plugged/gruvbox/lua/plenary/window/float/init.lua'
        no file '/home/thomas/.vim/plugged/goyo.vim/lua/plenary/window/float.lua'
        no file '/home/thomas/.vim/plugged/goyo.vim/lua/plenary/window/float/init.lua'
(...)  goes on for every plugin

nvim --version:

NVIM v0.5.0-nightly
Build type: Release
LuaJIT 2.0.5
Compilation: /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/shims/linux/super/gcc-9 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNDEBUG -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fno-common -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -DMIN_LOG_LEVEL=3 -I/tmp/neovim-20200824-30366-1r2rc0q/build/config -I/tmp/neovim-20200824-30366-1r2rc0q/src -I/home/linuxbrew/.linuxbrew/include -I/tmp/neovim-20200824-30366-1r2rc0q/deps-build/include -I/usr/include -I/tmp/neovim-20200824-30366-1r2rc0q/build/src/nvim/auto -I/tmp/neovim-20200824-30366-1r2rc0q/build/include
Compiled by thomas@Thomas-i7

Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "
/home/linuxbrew/.linuxbrew/Cellar/neovim/HEAD-8c49e3d/share/nvim"

OK, I've removed the plenary thing for now since it's WIP anyway. Maybe someday it will be done, but there are a few bugs in neovim core that prevent this from happening atm.
You should not have to have plenary now.


Do not limit the type of separator for date value

Initially, the datepicker is assumes that date values are separated by a '/' for 'date mode' and a space for 'month mode'. This change will remove that assumption and take the separator from the date value itself. This is done by looking for any non-alphanumeric character in the string and using that as the separator.

@jcreencia: Do we need to do a release, update the widgets dependency, etc etc?

Yes, will release and update myob-widgets :)


What type of update are you requesting?
A new version of an existing package
Current Package Identifier
Microsoft.RemoteDesktopClient
Package Version
1.2.4677.0
Please describe the changes you would like to see
I would like to see a new version available to download and install - https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RW1d1KN
Additionally, it would be useful if this app was kept up to date regularly.

#125023


Add Carthage support for RxTimelane

I've added Carthage support for RxTimelane.
ToDo:

Merge https://github.com/icanzilb/TimelaneCore/pull/4
Check this out this branch and resolve the package for swiftpm
Merge this pull request
create 1.0.1 versions on RxTimelane and TimelaneCore

Everything should work fine then :)

This looks great @mRs- , is there any ongoing maintenance work that this change requires?

The ToDo List is more for you as the owner of this repository. My changes are all finished 😀

My question had a different sentiment - I don't use Carthage myself (or at least not regularly) so I'm not quite sure if adding support for Carthage is a one time change or as the library evolves over time some changes will need to be made to the Carthage compatibility. (I vaguely remember users complaining sometimes that "Carthage support was broken" on some of my other repos so I stopped supporting Carthage whatsoever). I'm just double checking what I'm committing to if I merge this PR

As long there is a shared framework path in the xcodeproj file everything should be fine. When there is a new RxSwift Version a bump in the Cartfile must be done.
Currently I'm using Carthage too and fixing problems like this should be easy for every dev in the future. The changes are most of the time really simple and everyone with a bit Carthage experience can do it.

So I came around to testing this PR and here's the result.

The TimelaneCore PR is merged
I checked out you branch
I ran carthage update:

*** Checking out RxSwift at "5.0.1"
*** Checking out TimelaneCore at "1.0.1"
Marins-MBP:RxTimelane marin$ carthage build
*** xcodebuild output can be found in /var/folders/b0/92hzk1lj6w1_k_qrm0zxpl_80000gn/T/carthage-xcodebuild.F7ormy.log
*** Downloading RxSwift.framework binary at "ShaiTheBravest"
***  Skipped installing RxSwift.framework binary due to the error:
	"Incompatible Swift version - framework was built with 5.0.1 (swiftlang-1<IP_ADDRESS> clang-1<IP_ADDRESS>) and the local version is 5.1.3 (swiftlang-1100.0.282.1 clang-1<IP_ADDRESS>)."

    Falling back to building from the source
*** Building scheme "RxBlocking" in Rx.xcworkspace
*** Building scheme "RxSwift" in Rx.xcworkspace
*** Building scheme "RxRelay" in Rx.xcworkspace
*** Building scheme "RxCocoa" in Rx.xcworkspace
*** Building scheme "RxTest" in Rx.xcworkspace
*** Skipped building TimelaneCore due to the error:
Dependency "TimelaneCore" has no shared framework schemes

In the Carthage sub-folder there are frameworks for all platforms for all the rx libraries but no .framework for Timelane.
How does it work for you? I reckon we need some instructions in the README as well - not sure if what I did are the expected steps

I forgot to push my local changes for TimelaneCore 🤦♂

It happens, just ping me when you push everything up

Another PR added Carthage support for TimelaneCore so this one is unblocked - thank you!

Nice!