[BUG] Cluster Manager task throttler blocks network threads

Describe the bug
"opensearch[b869f183befc74cff9f3b5572821ec21][transport_worker][T#7]" #49 daemon prio=5 os_prio=0 cpu=83095452.97ms elapsed=286686.74s tid=0x0000fffe34008180 nid=0x5638 waiting for monitor entry  [0x0000fffef0315000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at java.util.concurrent.ConcurrentHashMap.computeIfPresent(java.base@17.0.9/ConcurrentHashMap.java:1819)
        - waiting to lock <0x00000011e9000000> (a java.util.concurrent.ConcurrentHashMap$Node)
        at org.opensearch.cluster.service.ClusterManagerTaskThrottler.onBeginSubmit(ClusterManagerTaskThrottler.java:221)
        at org.opensearch.cluster.service.TaskBatcher.submitTasks(TaskBatcher.java:85)
        at org.opensearch.cluster.service.MasterService.submitStateUpdateTasks(MasterService.java:998)
        at org.opensearch.cluster.service.ClusterService.submitStateUpdateTasks(ClusterService.java:373)
        at org.opensearch.cluster.service.ClusterService.submitStateUpdateTask(ClusterService.java:351)
        at org.opensearch.snapshots.SnapshotsService.innerUpdateSnapshotState(SnapshotsService.java:3856)
        at org.opensearch.snapshots.SnapshotsService$UpdateSnapshotStatusAction.clusterManagerOperation(SnapshotsService.java:3951)
        at org.opensearch.snapshots.SnapshotsService$UpdateSnapshotStatusAction.clusterManagerOperation(SnapshotsService.java:3913)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.masterOperation(TransportClusterManagerNodeAction.java:177)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.clusterManagerOperation(TransportClusterManagerNodeAction.java:186)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction.lambda$doStart$1(TransportClusterManagerNodeAction.java:292)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction$$Lambda$6044/0x0000008801c64240.accept(Unknown Source)
        at org.opensearch.action.ActionRunnable$2.doRun(ActionRunnable.java:89)
        at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52)
        at org.opensearch.common.util.concurrent.OpenSearchExecutors$DirectExecutorService.execute(OpenSearchExecutors.java:412)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction.doStart(TransportClusterManagerNodeAction.java:289)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction.tryAction(TransportClusterManagerNodeAction.java:239)
        at org.opensearch.action.support.RetryableAction$1.doRun(RetryableAction.java:139)
        at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52)
        at org.opensearch.common.util.concurrent.OpenSearchExecutors$DirectExecutorService.execute(OpenSearchExecutors.java:412)
        at org.opensearch.action.support.RetryableAction.run(RetryableAction.java:117)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.doExecute(TransportClusterManagerNodeAction.java:200)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.doExecute(TransportClusterManagerNodeAction.java:88)
        at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:218)
        at org.opensearch.indexmanagement.controlcenter.notification.filter.IndexOperationActionFilter.apply(IndexOperationActionFilter.kt:39)
        at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:216)
        at org.opensearch.indexmanagement.rollup.actionfilter.FieldCapsFilter.apply(FieldCapsFilter.kt:118)
        at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:216)
        at org.opensearch.security.filter.SecurityFilter.apply0(SecurityFilter.java:294)
        at org.opensearch.security.filter.SecurityFilter.apply(SecurityFilter.java:165)
        at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:216)
        at org.opensearch.performanceanalyzer.action.PerformanceAnalyzerActionFilter.apply(PerformanceAnalyzerActionFilter.java:78)
        at org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:216)
        at org.opensearch.action.support.TransportAction.execute(TransportAction.java:188)
        at org.opensearch.action.support.HandledTransportAction$TransportHandler.messageReceived(HandledTransportAction.java:133)
        at org.opensearch.action.support.HandledTransportAction$TransportHandler.messageReceived(HandledTransportAction.java:129)
        at org.opensearch.security.ssl.transport.SecuritySSLRequestHandler.messageReceivedDecorate(SecuritySSLRequestHandler.java:210)
        at org.opensearch.security.transport.SecurityRequestHandler.messageReceivedDecorate(SecurityRequestHandler.java:323)
        at org.opensearch.security.ssl.transport.SecuritySSLRequestHandler.messageReceived(SecuritySSLRequestHandler.java:158)
        at org.opensearch.security.OpenSearchSecurityPlugin$6$1.messageReceived(OpenSearchSecurityPlugin.java:852)
        at org.opensearch.indexmanagement.rollup.interceptor.RollupInterceptor$interceptHandler$1.messageReceived(RollupInterceptor.kt:114)
        at org.opensearch.performanceanalyzer.transport.PerformanceAnalyzerTransportRequestHandler.messageReceived(PerformanceAnalyzerTransportRequestHandler.java:43)
        at org.opensearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:106)
        at org.opensearch.transport.InboundHandler.handleRequest(InboundHandler.java:271)
        at org.opensearch.transport.InboundHandler.messageReceived(InboundHandler.java:144)
        at org.opensearch.transport.InboundHandler.inboundMessage(InboundHandler.java:127)
        at org.opensearch.transport.TcpTransport.inboundMessage(TcpTransport.java:770)
        at org.opensearch.transport.netty4.Netty4MessageChannelHandler$$Lambda$5488/0x00000088013adaa0.accept(Unknown Source)

82.2% (8.2s out of 10s) cpu usage by thread 'opensearch[b869f183befc74cff9f3b5572821ec21][transport_worker][T#6]'
     6/10 snapshots sharing following 87 elements
       java.base@17.0.9/java.util.concurrent.ConcurrentHashMap.computeIfPresent(ConcurrentHashMap.java:1819)
       app//org.opensearch.cluster.service.ClusterManagerTaskThrottler.onBeginSubmit(ClusterManagerTaskThrottler.java:221)
       app//org.opensearch.cluster.service.TaskBatcher.submitTasks(TaskBatcher.java:85)
       app//org.opensearch.cluster.service.MasterService.submitStateUpdateTasks(MasterService.java:998)
       app//org.opensearch.cluster.service.ClusterService.submitStateUpdateTasks(ClusterService.java:373)
       app//org.opensearch.cluster.service.ClusterService.submitStateUpdateTask(ClusterService.java:351)
       app//org.opensearch.snapshots.SnapshotsService.innerUpdateSnapshotState(SnapshotsService.java:3856)
       app//org.opensearch.snapshots.SnapshotsService$UpdateSnapshotStatusAction.clusterManagerOperation(SnapshotsService.java:3951)
       app//org.opensearch.snapshots.SnapshotsService$UpdateSnapshotStatusAction.clusterManagerOperation(SnapshotsService.java:3913)
       app//org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.masterOperation(TransportClusterManagerNodeAction.java:177)
       app//org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.clusterManagerOperation(TransportClusterManagerNodeAction.java:186)
       app//org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction.lambda$doStart$1(TransportClusterManagerNodeAction.java:292)
       app//org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction$$Lambda$6044/0x0000008801c64240.accept(Unknown Source)
       app//org.opensearch.action.ActionRunnable$2.doRun(ActionRunnable.java:89)
       app//org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52)
       app//org.opensearch.common.util.concurrent.OpenSearchExecutors$DirectExecutorService.execute(OpenSearchExecutors.java:412)
       app//org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction.doStart(TransportClusterManagerNodeAction.java:289)
       app//org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction.tryAction(TransportClusterManagerNodeAction.java:239)
       app//org.opensearch.action.support.RetryableAction$1.doRun(RetryableAction.java:139)
       app//org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52)
       app//org.opensearch.common.util.concurrent.OpenSearchExecutors$DirectExecutorService.execute(OpenSearchExecutors.java:412)
       app//org.opensearch.action.support.RetryableAction.run(RetryableAction.java:117)
       app//org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.doExecute(TransportClusterManagerNodeAction.java:200)
       app//org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.doExecute(TransportClusterManagerNodeAction.java:88)
       app//org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:218)
       org.opensearch.indexmanagement.controlcenter.notification.filter.IndexOperationActionFilter.apply(IndexOperationActionFilter.kt:39)
       app//org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:216)
       org.opensearch.indexmanagement.rollup.actionfilter.FieldCapsFilter.apply(FieldCapsFilter.kt:118)
       app//org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:216)
       org.opensearch.security.filter.SecurityFilter.apply0(SecurityFilter.java:294)
       org.opensearch.security.filter.SecurityFilter.apply(SecurityFilter.java:165)
       app//org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:216)
       org.opensearch.performanceanalyzer.action.PerformanceAnalyzerActionFilter.apply(PerformanceAnalyzerActionFilter.java:78)
       app//org.opensearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:216)
       app//org.opensearch.action.support.TransportAction.execute(TransportAction.java:188)
       app//org.opensearch.action.support.HandledTransportAction$TransportHandler.messageReceived(HandledTransportAction.java:133)
       app//org.opensearch.action.support.HandledTransportAction$TransportHandler.messageReceived(HandledTransportAction.java:129)
       org.opensearch.security.ssl.transport.SecuritySSLRequestHandler.messageReceivedDecorate(SecuritySSLRequestHandler.java:210)
       org.opensearch.security.transport.SecurityRequestHandler.messageReceivedDecorate(SecurityRequestHandler.java:323)
       org.opensearch.security.ssl.transport.SecuritySSLRequestHandler.messageReceived(SecuritySSLRequestHandler.java:158)
       org.opensearch.security.OpenSearchSecurityPlugin$6$1.messageReceived(OpenSearchSecurityPlugin.java:852)
       org.opensearch.indexmanagement.rollup.interceptor.RollupInterceptor$interceptHandler$1.messageReceived(RollupInterceptor.kt:114)
       org.opensearch.performanceanalyzer.transport.PerformanceAnalyzerTransportRequestHandler.messageReceived(PerformanceAnalyzerTransportRequestHandler.java:43)
       app//org.opensearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:106)
       app//org.opensearch.transport.InboundHandler.handleRequest(InboundHandler.java:271)

"opensearch[b869f183befc74cff9f3b5572821ec21][transport_worker][T#4]" #46 daemon prio=5 os_prio=0 cpu=80430471.06ms elapsed=289343.25s tid=0x0000fffe7ee12660 nid=0x5635 runnable  [0x0000fffef0614000]
   java.lang.Thread.State: RUNNABLE
        at<EMAIL_ADDRESS>Method)
        at org.apache.logging.log4j.core.async.TimeoutBlockingWaitStrategy.signalAllWhenBlocking(TimeoutBlockingWaitStrategy.java:104)
        - locked <0x0000001001000b10> (a java.lang.Object)
        at com.lmax.disruptor.MultiProducerSequencer.publish(MultiProducerSequencer.java:218)
        at com.lmax.disruptor.RingBuffer.translateAndPublish(RingBuffer.java:990)
        at com.lmax.disruptor.RingBuffer.tryPublishEvent(RingBuffer.java:538)
        at org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.tryEnqueue(AsyncLoggerConfigDisruptor.java:387)
        at org.apache.logging.log4j.core.async.AsyncLoggerConfig.logToAsyncDelegate(AsyncLoggerConfig.java:157)
        at org.apache.logging.log4j.core.async.AsyncLoggerConfig.log(AsyncLoggerConfig.java:138)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:560)
        at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:163)
        at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2168)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2122)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2105)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2009)
        at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1878)
        at org.apache.logging.log4j.spi.AbstractLogger.warn(AbstractLogger.java:2757)
        at org.opensearch.cluster.service.ClusterManagerTaskThrottler.lambda$onBeginSubmit$0(ClusterManagerTaskThrottler.java:227)
        at org.opensearch.cluster.service.ClusterManagerTaskThrottler$$Lambda$6671/0x0000008801f25c08.apply(Unknown Source)
        at java.util.concurrent.ConcurrentHashMap.computeIfPresent(java.base@17.0.9/ConcurrentHashMap.java:1828)
        - locked <0x00000011e9000000> (a java.util.concurrent.ConcurrentHashMap$Node)
        at org.opensearch.cluster.service.ClusterManagerTaskThrottler.onBeginSubmit(ClusterManagerTaskThrottler.java:221)
        at org.opensearch.cluster.service.TaskBatcher.submitTasks(TaskBatcher.java:85)
        at org.opensearch.cluster.service.MasterService.submitStateUpdateTasks(MasterService.java:998)
        at org.opensearch.cluster.service.ClusterService.submitStateUpdateTasks(ClusterService.java:373)
        at org.opensearch.cluster.service.ClusterService.submitStateUpdateTask(ClusterService.java:351)
        at org.opensearch.snapshots.SnapshotsService.innerUpdateSnapshotState(SnapshotsService.java:3856)
        at org.opensearch.snapshots.SnapshotsService$UpdateSnapshotStatusAction.clusterManagerOperation(SnapshotsService.java:3951)
        at org.opensearch.snapshots.SnapshotsService$UpdateSnapshotStatusAction.clusterManagerOperation(SnapshotsService.java:3913)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.masterOperation(TransportClusterManagerNodeAction.java:177)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction.clusterManagerOperation(TransportClusterManagerNodeAction.java:186)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction.lambda$doStart$1(TransportClusterManagerNodeAction.java:292)
        at org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction$AsyncSingleAction$$Lambda$6044/0x0000008801c64240.accept(Unknown Source)
        at org.opensearch.action.ActionRunnable$2.doRun(ActionRunnable.java:89)
        at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52)

Related component
Cluster Manager
To Reproduce

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior

Network threads shouldn't get blocked.
Task submission should be faster

Additional Details
Plugins
Please list all plugins currently enabled.
Screenshots
If applicable, add screenshots to help explain your problem.
Host/Environment (please complete the following information):

OS: [e.g. iOS]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

[Triage - attendees 1 2 3 4 5 6 7 8 9 10]
@Bukhtawar thank you for creating this issue to track this problem.  In the future please include more details so its more clear how to identify this issue and how to know if it is resolved

Do you think we should move the task submission and throttling logic off network threads to avoid getting into retry loops and stalling transport?

I see, the task submission involves the following two operations

check for duplicate task before enqueue
throttling decision and enforcement

Let me know if i am missing something.
Both of these operations, looks to be light-weight based on the current implementation and should not incur time.
I think we can profile submitTask and evaluate if some of the operations needs to be moved to a background thread (working on the snapshot of PendingTask queue). For instance, the throttling decider can be moved to background thread and submitTask can only enforce the throttling decision.
On the retry of request once throttled, i think this should happen from the caller, and not add retry handlers in cluster-manager. We can have cluster-manager send additional signals about PendingTaskQueue once the request is throttled, which can be used by caller to decide on retries.

Do you think we should move the task submission and throttling logic off network threads to avoid getting into retry loops and stalling transport?
@Bukhtawar  As long as we are ensuring the work done on the transport thread is minimal, we dont move it to separate threadpool. @rajiv-kv  let profile submit-task method post fixing the logging overhead.

Do you think we should move the task submission and throttling logic off network threads to avoid getting into retry loops and stalling transport?

@Bukhtawar  As long as we are ensuring the work done on the transport thread is minimal, we dont need to move it to separate threadpool. @rajiv-kv  lets profile submit-task method post fixing the logging overhead.

We are probably also retrying in the network thread which I don't think is right. Let's verify the retry logic of it's on the network thread

Memory allocations during Task Throttling.

ClusterManagerThrottlingException seems to be making allocations for filling up stack-trace which can be removed.
Additionally we can make a shallow check without lock before computeIfPresent call to avoid lock allocations when the task queue is full.

Thanks @backslasht for sharing the dumps.

@rajiv-kv  / @sumitasr
With shallow checks, some race condition might occur when we decrement the counter and cluster manager can take the task, but shallow check outside of the lock reject the request.
Considering the tradeoff against the transport thread being blocked, I guess this race condition should be okay. Anyway data node will have retry and retry can go through.

@rajiv-kv / @sumitasr
With shallow checks, some race condition might occur when we decrement the counter and cluster manager can take the task, but shallow check outside of the lock reject the request.
Considering the tradeoff against the transport thread being blocked, I guess this race condition should be okay. Anyway data node will have retry and retry can go through.

Yes @dhwanilpatel , the throttling enforcement will be based on the size of queue observed when the request was submitted. It will not consider the in-flight tasks that are getting drained and might free-up the space.

Memory allocations during Task Throttling.
* `ClusterManagerThrottlingException` seems to be making allocations for filling up stack-trace which can be removed.

* Additionally we can make a shallow check without lock before `computeIfPresent` call to avoid lock allocations when the task queue is full.

Thanks @backslasht for sharing the dumps.

Proposed changes were merged in 2.17 as part of this PR - https://github.com/opensearch-project/OpenSearch/pull/15508.


train model

error:
ModuleNotFoundError: No module named 'mmdet.models.dense_heads .rpn_test_mixin'
I didn't see the file about  rpn_test_mixin

I had a similar problem. have you solve it


A couple suggestions with the library

So, this mainly goes for the mathematics library, but it might apply to others. And I have no idea how feasible these suggestions are, given how large the library is. But here they are, anyway, for pondering purposes:

Replace all C-style casts with C++ casts.
If possible, try to employ constraints and concepts using the Concepts library. Both of these are C++20 only, so this would jump the standard of C++ to C++20, but it would also provide significant static checking for all the templates. Right now, the concept used is the auto concept, which is akin to the old typename T template style: allow any type, even if it's obviously not a type that's compatible with the class, and let the compiler yell at you for operations that you couldn't possibly do on, say, a struct that doesn't define arithmetic operators.

As an example of the concepts, the Vector class template could be changed from:
template <int32_t N, typename Real>

to:
#include <concepts>

// ...

template <unsigned_integral N, floating_point Real>

Or if you wanted to allow vectors to work with both integral types and FP types:
template <typename N, typename E>
requires unsigned_integral<N> && (floating_point<E> || integral<E>)

This would give much cleaner error messages if someone decided to try to violate the constraints, and it would also make the purpose of the template arguments a bit clearer.

Thank you for the feedback.
I have replaced the C-style casts by static_cast in the GTL development code.
I am not willing yet to move to C++ 17 or later because some of the code users are still on older compilers.
The "concepts" sound useful, but one of the goals with a large part of my mathematical code is to support rational arithmetic types as well as floating-point types. Your suggestion for <floating_point Real> will not allow this. In GTL, I have added my own type traits to support arbitrary precision arithmetic with division (BSRational for example) or without division (BSNumber for example). I also eliminated the unreadable std::enable_if approach to make the code somewhat easire to read. I also had tried C++ 17 for enabling/disabling of code blocks based on conditions, but that turned out to be a pain.
I have a tool for instantiating template classes and functions, designed for trapping problems with the template parameters. I run this tool before posting any code. Yes, the compiler support rather than a manual tool is better, but for now the tool suffices to meet my time constraints for library development.
A long time ago I had chosen to use a signed integral type for array/vector accesses (via operator[]), and the compilers did not complain. Now they do. In the GTL code I have tried to be consistent about using size_t, and in some classes I have added template parameters to allow the user to choose an appropriate type. Such parameters are for data rather than lookups into array/vector.
Once I finish GTL development, that will give me some breathing room to think about the issues you mention.

Thanks, @davideberly. Would it be better for me to use GTL when using this library or GTE? (Also, one other suggestion I was going to suggest in another issue, but here works as well, is to add the marching cubes algorithm: right now you just generate the table, but the actual algorithm isn't there, and the file MarchinCubes.h is a bit misleading, as it implies that the algorithm is implemented, instead of just the LUT generation portion.)

GTL is not yet finished, although I have some files posted here at github. I keep trying to finish GTL, but my technical support queue seems never to be empty these days. Nearly all the GTE files have been ported to GTL, but a large chunk of time is writing unit tests and end-to-end tests in a test environment that is mostly automated (compared to GTE which has a lot of manual intervention).
The file SurfaceExtractorMC.h is the implementation of the Marching Cubes algorithm. The class SurfaceExtractorMC derives from the class MarchingCubes.
The sample application GeometricTools/GTE/Samples/Imagics/ExtractLevelSurfaces illustrates MarchingCubes; see line 139 of ExtractLevelSurfacesWindow3.cpp, the function CreateMeshCubes().


Name column in Group Editor / Object Permissions should be left aligned (in LTR), not centre aligned

Issue Summary
Since Wagtail 6.1, the Name column in the Settings -> Group Editor -> Object Permissions section is centre aligned, rather than left aligned (for LTR) as it was before:
Wagtail 6.1 and 6.2:

Wagtail 6.0:

Steps to Reproduce

Build and start the same project (eg. bakerydemo) with both Wagtail 6.0.x and Wagtail 6.1.x or 6.2. The project should avoid having any admin style customisations
In the admin, navigate to Settings -> Groups -> (group) to edit the group
Observe the alignment of the Name column in the Object permissions section

Any other relevant information. For example, why do you consider this a bug and what did you expect to happen instead?
For LTR languages such as English, left aligned simply looks better in less congested examples (eg. as above) than the centre aligned. This is effectively a regression that wasn't noticed in 6.1 and which has now found its way to 6.2.
It is acknowledged that the more congested example (see below), where there are additional permissions type columns, suffers from the additional challenge of extremely narrow columns. This bug might therefore be addressed as part of a more general effort to improve the overall styling of the object permissions table.

I have confirmed that this issue can be reproduced as described on a fresh Wagtail project: (no)
However, @gasman shared a similar issue with his bakerydemo instance via Slack:

Technical details

Python version: 3.8, 3.10, 3.11 - believed to be Python version agnostic.
Django version: 4.2 series - believed to be Django version agnostic.
Wagtail version: 6.1 and 6.2 (vs 6.0 and earlier)
Browser version: Firefox, Chrome (current) - believed to be browser agnostic.

Working on this
Anyone can contribute to this. View our contributing guidelines, add a comment to the issue once you’re ready to start.

Can I work on this issue?

Fixed in #12223


Remove or suppress the message: "default messager has already been registered"

In a multi-project gradle build, we have several projects that applies the azure-functions plugin. Unfortunately, it seems like the following snippet:
       try {
            AzureOperationAspect.aspectOf().beforeEnter(var8);
            AzureTaskManager.register(new GradleAzureTaskManager());
            AzureMessager.setDefaultMessager(new GradleAzureMessager(project.getLogger()));
            AzureFunctionsExtension extension = (AzureFunctionsExtension)project.getExtensions().create("azurefunctions", AzureFunctionsExtension.class, new Object[]{project});
            TelemetryAgent.getInstance().initTelemetry("azure-functions-gradle-plugin", (String)StringUtils.firstNonBlank(new String[]{AzureFunctionsPlugin.class.getPackage().getImplementationVersion(), "develop"}), BooleanUtils.isNotFalse(extension.getAllowTelemetry()));
            TelemetryAgent.getInstance().showPrivacyStatement();

Runs through the code:
AzureMessager.setDefaultMessager(new GradleAzureMessager(project.getLogger()));
Which checks against a static instance which is already populated in an previous application of the same plugin. This results in the code being executed in AzureMessager.java:
            AzureMessager.getMessager().warning("default messager has already been registered");

We'd like that message removed please.

Close as related fix has been mergd, @enaess Thanks a lot for your contribution!


Sync setting from osu framework

Sync some setting from osu-framework.
Also remember to change license header to MIT license.

Seems implemented.


[Site Request] Youtube Music album covers

Checklist

[x] I'm reporting a site feature request
[x] I've verified that I'm running youtube-dlc version 2020.10.31 2020.11.11-3
[x] I've searched the bugtracker for similar site feature requests including closed ones

Description

YouTube adds colored bars left and right to YouTube Music album covers for every thumbnail to align them with other videos on YouTube instead of leaving them in their original format. When using --embed-thumbnail youtube-dlc takes this skrewed up version of the thumbnail instead of the actual album cover.
YouTube Music:

YouTube:

The real cover images can be found in the DOM of a YT Music page after it's link has been generated by this.
<img id="img" class="style-scope yt-img-shadow" alt="" width="1048" src="https://lh3.googleusercontent.com/Bi3GBXWn_5HqRL52s3HMzIRqp-uSdqwE6gdOmvCnNgoKud1YfhJhcRL9MSmT2FR8MUSk7FhUl4h9y64=w544-h544-l90-rj">

youtube music extractor is different from youtube extractor?


[shmap/partial-auto] Fixes lowering for jax.lax.axis_index in shard_map for degenerated shmaps.

Please take a look at the test I added for the example.
We found that when the manual axis has size 1, the axis_index will be definitely a replicated constant 0 across all the devices. There is no need to add iota and sharding and go full to shard for that, which actually invokes a sharding normalization inside XLA.
Let's say if we do iota and adding the sharding custom ops, then the sharding will be something like,
devices=[1,8,1]<=[8] {replicated, manual} for the iota result.
Then this sharding is normalized to {replicated} in XLA. FullToShard custom call cannot take replicated sharding which will invoke a crash in GSPMD.

@mattjj @pschuh Can you please take a look? Thanks.


Please add docker-compose.yml file

Let's Talk About Your Feature Idea
We're always looking for ways to improve TypingMind Proxy! Let's discuss how your feature could address current limitations and enhance the plugin development experience.
1. What problem does this solve?
Makes it easier for user to start the docker service.
2. Describe your proposed solution.
Include the following docker-compose.yml file in the repo:
services:
  typingmind-plugins-server:
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    environment:
      - NODE_ENV=development

This way user just need to run: docker compose up -d

I've tried creating a docker-compose.yml like this and running it locally and setting the URL in TypingMind to http://<IP_ADDRESS>:8080. I get the error:
Error: Unable to generate a summary. Please try again later.
The docker logs don't show any errors.

I've tried creating a docker-compose.yml like this and running it locally and setting the URL in TypingMind to http://<IP_ADDRESS>:8080. I get the error:

My guess is that typingmind doesn’t have access to <IP_ADDRESS> since this will only work on the machine running the docker container. You’ll probably need to make sure the docker container is accessible from outside your local network. I’m using cloudflare tunnels to do this for example.


Setup Log4j

Setup Log4j so it will fix the warning messages
Fixes #62

from travis testing I see
https://travis-ci.org/logstash-plugins/logstash-output-kafka/builds/126962843#L648
vs. master's
https://travis-ci.org/logstash-plugins/logstash-output-kafka#L580-L582
looks like the log4j warnings are indeed gone!

LGTM

Woot! I tried to review over the phone but needed a bigger screen.
On May 2, 2016 1:24 PM, "Suyog Rao"<EMAIL_ADDRESS>wrote:

Merged #63
https://github.com/logstash-plugins/logstash-output-kafka/pull/63.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/logstash-plugins/logstash-output-kafka/pull/63#event-647856565


Add test cases for Repeated

Hi @frootloops – thanks for contributing this! It's definitely good to add tests for this type. It'd be great to flesh out these tests a little more. For example, to use expectRandomAccessCollectionAssociatedTypes to check it's assoc types, and to check the out-of-bounds checks are working (look for uses of expectCrashLater elsewhere in the stdlib tests).

Hi @airspeedswift! Sure! I will update the PR shortly

@airspeedswift please check out the PR again

@swift-ci please test and merge

@airspeedswift sorry for disturbing but it looks like CI hasn't started/finished properly

@swift-ci please test and merge

@frootloops You'll need to rebase and update your test.x

@CodaFi done

@swift-ci please test and merge

@swift-ci please test

Hmm looks like CI’s not listening.

Build failed
Swift Test Linux Platform
Git Sha - a9181b7feda798503a94acad94d81c0fdd79c9a1

Build failed
Swift Test OS X Platform
Git Sha - a9181b7feda798503a94acad94d81c0fdd79c9a1

There we go. Thanks @frootloops!


Colab link for notebooks

direct links to google colab or any other free online Jupyter server could enhance the visibility and usability of the notebooks without the need to download them and having lenstronomy installed locally.
What we would need to change in all the notebooks is that the installation of lenstronomy (and potentially other software) need to be done in the notebook itself with

!pip install lenstronomy

One way to not double install lenstronomy if operated in the current form is to have a condition:

try:
import lenstronomy
except:
!pip install lenstronomy

I think, Google colab had trouble installing fastell4py last time I tried it. So, notebooks using 'PEMD' mass profile would need to change to 'EPL' mass profile, just a heads up.


Added more infos about creating forks

Our current docs don't provide any information on how to work on a fork and keep the fork up2date.
I also added reference links to GitHub help pages for this.

Codecov Report

Merging #1613 into master will decrease coverage by 1.64%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1613      +/-   ##
==========================================
- Coverage   30.12%   28.48%   -1.65%
==========================================
  Files          76       78       +2
  Lines        5215     5547     +332
==========================================
+ Hits         1571     1580       +9
- Misses       3436     3759     +323
  Partials      208      208

Impacted Files
Coverage Δ

distributor/cmd/main.go
57.77% <0.00%> (-1.12%)
:arrow_down:

wait-service/main.go
0.00% <0.00%> (ø)

gatekeeper-service/main.go
0.00% <0.00%> (ø)

jmeter-service/main.go
6.71% <0.00%> (ø)

jmeter-service/jmeterUtils.go
0.00% <0.00%> (ø)

Continue to review full report at Codecov.

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


Loading Bar

this isn't an issue but can you please add an option to add a loading bar in htmlifier. Please make it so you can select the colour and you can also display the loading percentage.
Thanks.
P.S. Htmlifier is so good

It now uses a loading bar by default, and you can change the colour


Accepting diff breaks language server, need to reload file

Must reload file to restart language server so things like "Go to definition" keep working

Relevant environment info
- OS: Win 11
- Continue v0.0.409
- VSCode 1.82.3
- OpenAI GPT4
- TypeScript

To reproduce
Accept any /edit diff in TypeScript, clicking on any symbol doesn't work anymore, e.g.: can't go to its definition, it has become "dumb" plain text
Log output
No warnings/errors in the logs:

[2023-10-02 21:41:21,752] [DEBUG] Received GUI message {"messageType":"main_input","data":{"input":"/edit refactor to one bash line such that if the lockfile already exists we should wait, otherwise create the lockfile and not wait"}}

Warkaround
Closing and reopening the file gets things working again

Does it seem like the language server completely dies (i.e. you also can't get it working in other files)? And is this only happening on occasion?
My first hypothesis is that such frequent updates to the file when we stream the diff are overloading the language server. Might be possible to disable it for that time to avoid if so


Make modals and elements high contrast

There is no distinction between elements like the modal and the background. The effect is best reproduced on a non-retina screen.

set
 .modal-backdrop.in {
    opacity: 0.8;
}

in the end of client/src/components/layouts/global.css

@raisedadead, would darkening the backdrop suffice?
or would you like to have a clear distinction like a border?

would darkening the backdrop suffice?

IMHO, Shades of similar color are bad for a11y. We need high contrast elements that visually differentiate between elements.
A 1px border of a contrast color should be better.

Note that you have to check this on a non-retina like screen to understand the side-effect on low quality screens. :(

I know this is radical. but how about a light backdrop for dark mode.?

clearly no a good idea. a pr with border is coming up :)


Export focus / focus-trap related directives

Summary
Export focus / focus-trap related directives
Since more and more website need to support VPAT and Clarity includes many directives which are implementations for VPAT support. Others can use them instead of repeat them.
Examples
If I want to implement a customized dropdown list component and it need to be VPAT support, then I can use focus-trap to catch focus and use key-focus / key-focus-item to make dropdown items focusable and support keyboard event.
Conclusion
Export focus / focus-trap related directives will reduce many duplicated work on VPAT.

Hello, the focus trap and related things are not something we are currently considering to make public. They weren't designed for general purpose consumption and aren't documented well, so its likely they might not work as expected in some use cases.
There are at least two options:

You could clone the focus trap directives from Clarity and use them in your project. That way you can also update or change behaviors as needed.
Angular has several accessibility features in the CDK, including a focus trap. https://material.angular.io/cdk/a11y/overview

Closing as something we aren't considering at the moment.

Hello, the focus trap and related things are not something we are currently considering to make public. They weren't designed for general purpose consumption and aren't documented well, so its likely they might not work as expected in some use cases.
There are at least two options:

You could clone the focus trap directives from Clarity and use them in your project. That way you can also update or change behaviors as needed.
Angular has several accessibility features in the CDK, including a focus trap. https://material.angular.io/cdk/a11y/overview

Closing as something we aren't considering at the moment.


return error when tables is empty

Codecov Report

Merging #37 (625dd31) into main (51f9d4c) will decrease coverage by 0.17%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #37      +/-   ##
==========================================
- Coverage   76.72%   76.54%   -0.18%
==========================================
  Files          52       52
  Lines        3686     3697      +11
==========================================
+ Hits         2828     2830       +2
- Misses        858      867       +9

Impacted Files
Coverage Δ

src/server/async/ipc_server.cc
79.54% <0.00%> (-15.20%)
:arrow_down:

src/client/io.cc
69.90% <0.00%> (-1.10%)
:arrow_down:

src/server/async/rpc_server.cc
97.29% <0.00%> (+0.15%)
:arrow_up:


Create New BB: Profile Card with Stats

This is a Building Block for our upcoming Social Media Kit. For anyone who wants to contribute some building blocks to the site, feel free to comment below to let us know you're taking this one on!
Description/Interaction: Another profile card, but this time with some stats. Should include at least a profile pic, name, and stats. Feel free to add more functionality to it.
Please use category "containers" in yml file. Have fun!
Example:

If anyone is looking to take this up....
Here is a Reference => http://foundation.zurb.com/sites/docs/typography-helpers.html#statistics
Go for it !!!

Closing this as added in #180


Global placement fixes

Hi @donn, any chance we could merge this? I've been experimenting with enabling PL_ROUTABILITY_DRIVEN (similar to ORFS) and it needs this patch to do reasonable things.

@antonblanchard I asked a question in my review.

@antonblanchard I asked a question in my review.

I'm might be missing something obvious, but I can't see the question above.

@donn I don't see that comment at all. It's marked Pending on your image, that might have something to do with it.

Hmm. Can I blame GitHub's UI for that one? :upside_down_face:

As to why I added a call to set_rc, the short answer is we do it everywhere else so I wanted to be consistent.
For the long answer... I've been trying to understand if the TLEF capacitance data is adequate for pre SPEF parasitic capacitance estimates and I'm not sure it is. The TLEF spec has figures for plate capacitance and edge capacitance, but what does that edge capacitance even represent? I presume it is a mix of fringe and coupling capacitance, but that is going to vary a lot depending on the density of the design and how close other wires are.
In ORFS there are a set of scripts to take SPEF data from routed designs, and back calculate the layer capacitance estimates. This should provide a better estimate than the TLEF data I think. This process also allows a design that is very different (eg extremely dense, or extremely sparse) to do a first pass to calculate better layer capacitance values, and use them in subsequent tape outs. A lot of guesswork on my side, so @jjcherry56 @maliberty feel free to correct me :)

I would say an even bigger motivation for correlating the global routing rc estimations to spef values with set_layer_rc is to guarentee consistency with rcx (spef) which is in turn correlated with commercial extraction. The TLEF values do not take context into account (wires above, below and adjacent). The correlation matches a layer rc per micron that includes the context for all the wires in the ORFS tests. The other issue that was a constant headache was determining which corner/min/max values in the datasheet correspond to the pdk commercial extraction values.

At any rate, sky130 no longer includes values for set_rc. So I'll just go ahead and merge this- the reasoning "for consistency" is good enough for me.

At any rate, sky130 no longer includes values for set_rc. So I'll just go ahead and merge this- the reasoning "for consistency" is good enough for me.

@donn why does it no longer include set_rc values?


add NVRTC_LIB_OVERRIDE

closes https://github.com/coreylowman/cudarc/issues/246
slightly related to https://github.com/coreylowman/cudarc/issues/219

works for me

I think a more straightforward change would be to add std::format!("{lib_name}{pointer_width}_{major}0_0"), to the list of choices under https://github.com/coreylowman/cudarc/blob/6fa8132e87c66efd56c9580235af66559a513d2e/src/lib.rs#L115C9-L115C68.
Just so its consistent with how it works now.
No idea why windows is so different for cuda world lol.

moving to https://github.com/coreylowman/cudarc/pull/247


Join database to second secondary

Based on a support case I had open with Microsoft you have to after the direct seeding of the database is completed on the second secondary join database to the secondary.  I had to do this each of the 8 times I created a distributed AG.

@tboggiano : Thanks for your contribution to the SQL documentation! The author, @MikeRayMSFT, has been notified to review your proposed change.

@tboggiano : Thank you for the contribution. Can you make a couple of small changes?
Please change:
"seoncdary of the second availabilty"
to
"secondary of the second availability"
After that we can sign-off on the change and you will be attributed for the update.
Otherwise I'm happy to update the article directly with your suggestion, but you will not be attributed.
Again, thank you for the contribution.

@tboggiano thank you for your submission. We appreciate your efforts to improve our content! #sign-off

#sign-off


Establish working relationships with Cell Ontology partners

Initial kickoff meeting held and regular meetings are planned. Milestone date was Jan 31st and target was met.


Support V2 update

https://github.com/yjs/yjs#using-v2-update-format
It'd be great to support the v2 format for better compression. Since https://github.com/y-crdt/yrb-actioncable is it's own provider, we could enhance to use v2 by default, or add a configuration to allow users to choose which version they'd like to use.
I'm happy to help  with the Ruby side, but I won't be able to do much on the Rust side of things.

The biggest caveat is that we don't use binary encoded messages in the first place. ActionCable does not allow us to send binary messages directly, so they need to be Base64 encoded. v2 isn't the recommended default by now.

I'm still learning about yjs among other things, so forgive me if I'm asking silly questions.
Since the encoder/decoder is here, theoretically, we could change to whatever encoder you want to send data over the wire. Right now it's JSON.
https://github.com/y-crdt/yrb-actioncable/blob/main/gems/yrb-actioncable/lib/y/actioncable/sync.rb#L132
The bigger issue appears to be in the javascript where the JS library only supports sending JSON.
https://github.com/rails/rails/blob/main/actioncable/app/javascript/action_cable/subscription.js#L83
https://github.com/rails/rails/blob/main/actioncable/app/javascript/action_cable/connection.js#L24
Am I on the right track here encoding/decoding? If so does it seem worthwhile to handle transport this way vs using base64? If so I can poke around and see if I can get something to work.

Since the encoder/decoder is here, theoretically, we could change to whatever encoder you want to send data over the wire. Right now it's JSON.

Yeah, when I first looked at this, I thought exactly the same and wanted to use binary encoded data. I only learned later that the ActionCable message encoder is a somewhat different abstraction on top of the actual protocol. The only job of the encoder is to handle Ruby object encoding. Raw ActionCable messages always requires a JSON envelope for the message to be transmitted. You can put whatever you want into that JSON message, even when it's not JSON. In other words, you need to Base64 the binary and stuff it into the envelope as a message. You can't really change the underlying protocol without changing ActionCable itself (on the server as well as on the client-side).
In general, you are right. Both, the v1 and v2 binary encoding of yjs/yrs, would benefit from using actual binary transport (https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/binaryType) at the WebSocket level. The y-websocket Node.js implementation has a nice example of how this can be achieved (https://github.com/yjs/y-websocket/blob/master/bin/utils.js#L238), but for Rails this requires a rewrite of ActionCable or at least some heavy modification. As much as I agree with you here, I did decide to not go down the route of trying to contribute this to Rails, due to many unknowns:

Does the Rails community really want this? ActionCable is fairly simple and easy to understand. This would add lots of complexity.
Eventually WebSocket will be replaced with WebTransport. This seems to be the right time to rethink the Channel/Cable concept IMO.

I believe, the bigger problem is getting towards a reliable transport mechanism. ActionCable w/ Redis is by design not suitable for the job. e.g., Redis PubSub is for “live” clients only, but we eventually want to sync to all clients at-least-once. You can find preliminary work on reliable transport is in this PR/branch https://github.com/y-crdt/yrb-actioncable/pull/17.

btw… I can easily support v2 in yrb if you really need it. I can just add v2 companion methods for diff, sync, and state. It is relatively straightforward. But, what I recall from one of the y-crdt meetings, Kevin and Bartosz (Y.js/Yrs maintainers) are not sure about the future of v2. There might as well be a v3, or v4, before we settle on a new default.

Sorry for the delay in responding. Thanks for doing this for me, much appreciated!


False positive on rule "Azurerm Container Registry Must Contain Associated Locks"

Expected Behavior
My playbook should not fall into the error Azurerm Container Registry Must Contain Associated Locks
Actual Behavior
KICS analysis return (what I think to be) a false positive on the rule Azurerm Container Registry Must Contain Associated Locks
Steps to Reproduce the Problem

Have the following playbook

---
- name: Deploy shared resources
  hosts: infra
  environment:
    AZURE_CLIENT_ID: "{{ azure.client_id }}"
    AZURE_SECRET: "{{ azure.secret }}"
    AZURE_SUBSCRIPTION_ID: "{{ azure.subscription_id }}"
    AZURE_TENANT: "{{ azure.tenant }}"

  tasks:

    - name: "Create shared resource group {{ global.shared.rg_name }}"
      azure.azcollection.azure_rm_resourcegroup:
        name: "{{ global.shared.rg_name }}"
        location: "{{ global.location }}"
        state: present

    - name: "Create ACR {{ global.shared.acr_name }}"
      azure.azcollection.azure_rm_containerregistry:
        name: "{{ global.shared.acr_name }}"
        resource_group: "{{ global.shared.rg_name }}"
        state: present
      register: acr

    - name: "Create lock for ACR {{ global.shared.acr_name }}"
      azure.azcollection.azure_rm_lock:
        managed_resource_id: "{{ acr.id }}"
        name: "{{ global.shared.acr_name }}_lock"
        level: can_not_delete

In checkmarx/kics:debian run the analysis /app/bin/kics scan -p group_vars/backends/vars.yml -o ${PWD} --report-formats json,sarif --ignore-on-exit results --verbose --log-level=DEBUG

IMHO: This is due to the fact of both Ansible module works. You can't use the exact same name in the module azure_rm_containerregistry and in azure_rm_lock
Specifications

Version: 1.4.8
Platform: Debian
Subsystem: Ansible

Please let me know if something is not clear

Hello, @LvffY 🙂 Thank you so much for reaching us and reporting the bug.
We will add the managed_resource_id verification. The query was only checking for 'resource_group'.


Settings - Redirecting to screens with animation takes pause before redirecting to screen

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to settings
Click Preferences or Workspaces (screens with animations on top)
Try clicking other options like Profile or Security it redirects instantly

Expected Result:
User should be redirected instantly
Actual Result:
Takes a little pause after clicking Preferences/Workspaces
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[x] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: v1.3.61-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/115492554/b9aa35da-9e2f-4daa-b443-c4a707b479b4
https://github.com/Expensify/App/assets/115492554/3088dcfe-0b65-4dfb-8f2e-2788a0c5e72b
Expensify/Expensify Issue URL:
Issue reported by: @DinalJivani
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1692735915055619
View all open jobs on GitHub

This is reproducible but barely noticeable and doesn't hurt user experience in my opinion. I'd lean to closing but curious for a quick buddy check cc @vitHoracek

Yeah I agree, its probably the animation in the page, while this is true its slower, I think this is just handled under perfomance improvements we are working on (any page should be opening instantly) so We can close this one


The package being build is not included in the output.

When building the code for redistributing (e.g. a frontend or a module), the dependencies and also the current package information must be included in the output file. As the final bundle includes both, the dependencies and the new code, all licences must be present.
Steps to reproduce:
# From the repository root
cd test/e2e/example
node ../../../node_modules/webpack/bin/webpack.js --config ../webpack.config.js

check that test/e2e/example/dist/oss-licences.json does not contain the example package (webpack-license-plugin-test-example)

I'm not sure this is required - most of the times I've seen this package in use you would not want the current package to be included. Do you use this to build libraries or what's your use case?

@sebaspf Are you following up on this PR? 😉

Sorry, long time no see ;-) Yes, I used it to generate a license disclaimer for the complete package, in that case you want to include the current license. I changed afterwards to the license-webpack-plugin for that.

@sebaspf you could easily add that to the result manually, but I'm happy to see that a similar plugin helped!


How to use this Apache Age from .Net 7.0?

For Apache Age there is a driver for Python, Golang and a couple of other languages, but there is no driver in C# for .Net 7.0. How to use this graph DBMS from .Net 7.0?
If there is, give a link to an example connection from .Net.

There is no driver for .Net yet but what you can do is use some existing library to connect to PostgreSQL and then load Apache Age using PostgreSQL queries.  For loading Apache Age make sure you have Apache Age installed and set up in localhost.
To load Apache Age use these commands
CREATE EXTENSION IF NOT EXISTS age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;

Use Npgsql which is PG driver for C#. I ideally there should be a AGE plugin for Npgsql.

<EMAIL_ADDRESS>How to use this Apache Age from .Net 7.0? #640
To use it from .NET 7.0, you can follow these general steps:
Install the Npgsql library, which is the .NET data provider for PostgreSQL.
Install Apache Age as a PostgreSQL extension.
Connect to your PostgreSQL database using Npgsql.
Execute Age queries in PostgreSQL using the Npgsql command object.
Here's an example C# code snippet to connect to a PostgreSQL database and execute an Age query:
using Npgsql;
var connString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase";
using var conn = new NpgsqlConnection(connString);
conn.Open();
var cmd = new NpgsqlCommand("MATCH (n) RETURN n", conn);
var reader = cmd.ExecuteReader();
while (reader.Read())
{
// Process the results
}
reader.Close();
Note that the Age query is a standard PostgreSQL query with the syntax of the Cypher query language. You can also use the Npgsql adapter to execute Age commands, which have a similar syntax to Cypher queries.

An alternative is to use Npgsql.org  whose is a driver of PostgreSQL for C#, but for now does not exist a driver for Apache AGE from .NET, maybe in the future this feature will be developed to Npgsql

@glazkovalex Any updates on this issue?

<EMAIL_ADDRESS>Как использовать Apache Age из .Net 7.0? #640
Чтобы использовать его из .NET 7.0, вы можете выполнить следующие общие шаги:
Установите библиотеку Npgsql, которая является поставщиком данных .NET для PostgreSQL.
Установите Apache Age как расширение PostgreSQL.
Подключитесь к базе данных PostgreSQL с помощью Npgsql.
Выполняйте запросы Age в PostgreSQL с помощью командного объекта Npgsql.
Вот пример фрагмента кода C# для подключения к базе данных PostgreSQL и выполнения запроса Age:
использование Npgsql;
var connString = "Host=myserver;Имя пользователя=mylogin;Пароль=mypass;База данных=mydatabase"; используя var conn = new NpgsqlConnection(connString); конн.Открыть();
var cmd = new NpgsqlCommand("MATCH (n) RETURN n", conn); вар читатель = cmd.ExecuteReader(); while (reader.Read()) { // Обрабатываем результаты }
читатель.Закрыть();
Обратите внимание, что запрос Age — это стандартный запрос PostgreSQL с синтаксисом языка запросов Cypher. Вы также можете использовать адаптер Npgsql для выполнения команд Age, синтаксис которых аналогичен запросам Cypher.

<EMAIL_ADDRESS>How to use this Apache Age from .Net 7.0? #640
To use it from .NET 7.0, you can follow these general steps:
Install the Npgsql library, which is the .NET data provider for PostgreSQL.
Install Apache Age as a PostgreSQL extension.
Connect to your PostgreSQL database using Npgsql.
Execute Age queries in PostgreSQL using the Npgsql command object.
Here's an example C# code snippet to connect to a PostgreSQL database and execute an Age query:
using Npgsql;
var connString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase"; using var conn = new NpgsqlConnection(connString); conn.Open();
var cmd = new NpgsqlCommand("MATCH (n) RETURN n", conn); var reader = cmd.ExecuteReader(); while (reader.Read()) { // Process the results }
reader.Close();
Note that the Age query is a standard PostgreSQL query with the syntax of the Cypher query language. You can also use the Npgsql adapter to execute Age commands, which have a similar syntax to Cypher queries.

Thank you!

@LakshyaNandwana Does your query work on command line?

@rafsun42 Yes, the query can be executed from the command line.

@LakshyaNandwana Have you loaded age and add ag_catalog to search path from your c# code?

@rafsun42 Can you pleae send me the code on how to add ag_catalog to search path from c# code?

@LakshyaNandwana That is a command just like SELECT. So you should be able to run it as you run SELECT from C# code.

@rafsun42 Thank you, the query works after adding the ag_catalog to search path.

I suppose we can all shift forward to talk about .NET 8 now. 👍 😄
Of course this is about more than simply getting queries out to Postgres but also about efficient compute and memory handling on the "application" side of things. I'll be looking at ways to build a convenient wrapper/extension for Npgsql and have alreayd started looking at some other attempts that have been made over the years.

Hi. I've created an AGE driver for .NET, and it currently supports only .NET 8 (support for other versions and .NET Standard coming soon). You can check it out here: https://github.com/Allison-E/pg-age.
To know how it works, you should take a look at the wiki (even though it's still under construction).
Your contributions and suggestions are welcomed 😄.

Emannuel this is awesome! I've forked it and will spend some quality time with it over the US holiday this week. Thanks!

Hi. I've created an AGE driver for .NET, and it currently supports only .NET 8 ...
...
Your contributions and suggestions are welcomed 😄.

@Allison-E, hellow!
A very interesting project!
Support.Net.Standard is completely optional, since Npgsql.Entity Framework is Core.PostgreSQL is still under .Net 8.
It would be very useful to support Linq in queries, that is, hybrid queries to relational data and graph data in a single Linq query, as well as mapping the results to objects! So that you can combine a Linq query to relational data with a text subquery in the Cypher Query Language via User-defined function, EF.Functions and Interceptors. That is, so that the Entity Framework Core outputs, for example, these queries:
demo(# SELECT id FROM cypher('my_graph', $$
demo$# MATCH (v:Person) RETURN v.id $$)
demo(# AS (id int));

    name
------------
 "Daniel"
 "Emmanuel"
(2 rows)


Implementing transclusion

Hi, I am working on a project which needs a form of file transclusion[1] implemented.
In short, the syntax I wanted to add to the parser would be similar to inline links: :[name](path/to/markdown.md) - thre's an extra colon in first position -  inspired by one of the comments in the commonmark discussion [2].
I want to add this feature but I couldn't find any obvious way of injecting my logic into the parser - especially since there's a specific comment regarding monkey patching. Is there something I'm missing, or am I approaching the problem the wrong way?
[1] https://talk.commonmark.org/t/transclusion-or-including-sub-documents-for-reuse/270
[2] https://talk.commonmark.org/t/transclusion-or-including-sub-documents-for-reuse/270/7

Hi @mariusor,
It is actually possible to create a custom render object like this:
class CustomRender < Redcarpet::Render::HTML
  def preprocess(document)
    document.split("\n").map do |line|
      if line =~ /\:\[(.+)\]\((.+)\)/
        # Not sure what you want to do with the title
        # but you can reference it through `$1` here.
        File.read($2)
      else
        line
      end
    end.join("\n")
  end
end

... since there's a specific comment regarding monkey patching

I guess you are referring to this specific section of the README:

On a related topic: if your Markdown gem has a lib/markdown.rb file that monkeypatches the Markdown class, you're a terrible human being. Just saying.

But that's another topic ; actually, most Markdown processors implement a Markdown.new(text).to_html API but the problem is that it is bad because you don't know which Markdown processor you are using since Markdown is a generic name so monkey-patching such class can be dangerous if you change your parser.
Anyway, Redcarpet provides a completely different API, the #to_html one is just kept to ease the transition from another parser and for the sake of backward compatibility.
I'm giving this a close but if you have any further question, feel free to ask ! :-)

OK, thank you, @robin850.
This solves the issue, but then it seems to muddle the sepparation between parser and the renderer. Also it doesn't allow reusing (or extending) the logic for the link parsing itself.

Also it doesn't allow reusing (or extending) the logic for the link parsing itself.

I'm not sure to understand what you mean here, could you explain please ?

Well, I'm not sure how it would work for redcarpet, but usually one would be able to reuse the parts which parse the link elements, either by reusing the regular expression for links, or the parse method itself.

You can create a custom render object that extends from Redcarpet::Render::HTML and define a link method on it that will handle links as you wish.


Failed to establish a new connection

Hi,
As I attempt to configure the dmarc-visualizer on my server, parsedmarc container restarts because of
elasticsearch.exceptions.ConnectionError: ConnectionError(<urllib3.connection.HTTPConnection object at 0x7c92fbbe6100>: Failed to establish a new connection: [Errno 111] Connection refused) caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7c92fbbe6100>: Failed to establish a new connection: [Errno 111] Connection refused)
INFO:cli.py:1031:Starting parsedmarc
/usr/local/lib/python3.9/site-packages/elasticsearch/connection/base.py:208: ElasticsearchWarning: Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.elastic.co/guide/en/elasticsearch/reference/7.17/security-minimal-setup.html to enable security.
docker-compose.yml
`version: '3.5'
services:
parsedmarc:
build: ./parsedmarc/
volumes:
- ./files:/input:ro
- ./output_files:/output
command: parsedmarc -c /parsedmarc.ini /input/* --debug
depends_on:
- elasticsearch
restart: on-failure
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.5
container_name: elasticsearch
environment:
- discovery.type=single-node
ports:
- 9200:9200
volumes:
- ./elastic_data:/var/lib/elasticsearch/data
grafana:
build: ./grafana/
ports:
- 3000:3000
user: root
environment:
GF_INSTALL_PLUGINS: grafana-piechart-panel,grafana-worldmap-panel
GF_AUTH_ANONYMOUS_ENABLED: 'true'
`
Would you kindly assist me in fixing the problem?

I have exactly the same. Can you check please?


RDconnetc data lost

Dear author：
When I use the code to reanalysis, and I found the realted files about RDconnetc were lost. Could you help me to fix it?

Hi. Thank you for your interest! The data was queried via RD-Connect platform. Due to its sensitive nature, the access is restricted to validated users (as stated in the description) and we unfortunately do not have rights to distribute them. We however provide detailed querying and filtering parameters so that validated users of the platform can reproduce the analyses. Please refer to 'RD-Connect cohort' subsection in the Methods of the paper, thank you!

Hi. Thank you for your reply! In fact, I want to use your ieda for my research, so that to promote and cite your paper.  These files were lost, and I could not run it well for gene prioritization in rare disease patients.  Could you help me to fix it? or share the demo data for me to run?


How can i find code of Chart in this image

I get that from this link : https://klinecharts.com/sample

The author has not open sourced it yet. See https://github.com/liihuu/KLineChart/discussions/141


feat(frontend): Add a better auth flow and UI handling

End-user friendly description of the problem this fixes or functionality that this introduces

[ ] Include this change in the Release Notes. If checked, you must provide an end-user friendly description for your change below

Give a summary of what the PR does, explaining any non-trivial design decisions
If in saas mode, always display the waitlist modal if user is not authed

Link of any specific issues this addresses

Looks great, thanks Stephan!


Is there a way to make streaming faster?

I am using clappr in my Ionic 3 project. Its working good but the only issue is that the streaming is really slow. I always have to wait at least 10 seconds. This is my code:
                    var playerElement = document.getElementById("player");
		this.api = new Clappr.Player({
			source: "https://mystreamingserver/media.m3u8",
			baseUrl: 'assets/js/clappr-master/dist',
			width: '100%',
			height: '100%',
			autoplay: true,
			preload: true,
			mimeType: 'application/x-mpegurl',
			watermark: 'assets/imgs/watermark.png',
			position: 'bottom-left',
			disableVideoTagContextMenu: false,
			disableKeyboardShortcuts: true,
			useHardwareVideoDecoder: false,
			chromeless: true
		});
		this.api.attachTo(playerElement);
                this.api.load("https://mystreamingserver/media.m3u8", 'application/x-mpegurl', true);`

Maybe this issue is related to your streaming, how long are the chunks? what's the avg latency for a given chunk?

Hi @leandromoreira sorry I don't have knowledge about chunks, can you tell me how can I find. One thing I want to share is that when I play the same media in the native Android VLC player, it works fine and there is no delay.

@muzammilversiani have you tried to use the stream provided to test? I mean use this source http://www.streambox.fr/playlists/x36xhzz/x36xhzz.m3u8 and see if the same delay happens.

Hi @leandromoreira
I just tried your streaming link it took 4-5 seconds and after that it ran smoothly without buffering. I have attached screenshots of both the streaming requests. There is a difference, the bunny one is requesting only .ts files whereas mine is calling both m3u8 and ts.

@muzammilversiani by looking only at these logging I assume that part of your start up problem is related to the size of your chunks, you can see that it took many seconds to download a single video segment file (.ts).
Try to shrink your segment size (like from 10s to 4s or 5s), this option is probably available at your stream service.

Hi @leandromoreira ok I will try and let you know.
Thank you so much

Hi @leandromoreira thank you so much mate, that fixed the issue, the channels are loading faster than before. There is still something I need to ask. Sometimes I get the error "Could not load the playback" or something like this. I happens when the first segment (.ts) file failed to fetch for some reasons. Is there any way to retry. I mean if the segment failed to fetch, player should retry this until it gets the segment?

I'm glad, sure you can see an example about retrying errors at the documentation

@leandromoreira thank you so much man! Its working just perfect!


Install Upgrade process confusion

It's too difficult to install/upgraed the software.
Let's say you have 2.4x and want to move to 2.6x
You have to delete designer.fbs, functions and designer folder from documents. That's painful.
Then, it still doesn't work in the same powershell session, because the module was already loaded. So if you run Powershell-Designer, the old files copy right back to the document folder.
This caused testing confusion as well, I'm not sure if the release before 2.6 was even valid.

Resolving by changing all paths back to module directory. Sacrificing ease of customizing, but if you're advanced enough to customize, you ought to be advanced enough to copy your changes to the module directory. This will also prevent your changes from being lost when upgrading version to version.


Two broken tests under certain Windows configurations

PHPMD Version: Current master.
Under Windows with various configurations - but not all - the two tests below break.
As you can see, it doesn't matter if I use my system-wide installed phpunit or the one installed as dependency.
I could even exchange it with some old version like 3.7.37, the tests still break.
It doesn't seem to be related with the installed Xdebug (2.2.5) either.
PHP 5.4.31 and PHP 5.5.11 break.
All machines, on which those tests break are Windows 7 machines and have some version of XAMPP installed.
On one Windows 20'8 Server R2 with vanilla PHP 5.3.18 including Xdebug 2.2.2 or 2.2.5 those tests don't break.
What I could find out about the first test is very odd.
Instead of getting a metrik of 14 for the testReportContainsCouplingBetweenObjectsWarning class, the test randomly(!) changes (mostly) between 9 and 10.
Today when I ran the tests the first time, it even got 14 and thus didn't fail.
Could it be some caching or buffering issue, may be?
Another thing.
When I debug the test in PhpStorm instead of just running it in the command line, the metrik is always 14 and the first test works.
D:\dev\xampp\htdocs\phpmd>phpunit
PHPUnit 4.3.1 by Sebastian Bergmann.

Configuration read from D:\dev\xampp\htdocs\phpmd\phpunit.xml.dist

..F.................F..........................................  63 / 384 ( 16%)
............................................................... 126 / 384 ( 32%)
............................................................... 189 / 384 ( 49%)
............................................................... 252 / 384 ( 65%)
............................................................... 315 / 384 ( 82%)
............................................................... 378 / 384 ( 98%)
......

Time: 5.96 seconds, Memory: 21.25Mb

There were 2 failures:

1) PHPMD\Integration\CouplingBetweenObjectsIntegrationTest::testReportContainsCouplingBetweenObjectsWarning
Failed asserting that '
' contains "has a coupling between objects value of 14. Consider to reduce the number of dependencies under 13.".

D:\dev\xampp\htdocs\phpmd\src\test\php\PHPMD\Integration\CouplingBetweenObjectsIntegrationTest.php:91
D:\dev\xampp\php\pear\PHPUnit\TextUI\Command.php:176
D:\dev\xampp\php\pear\PHPUnit\TextUI\Command.php:129

2) PHPMD\Node\ClassNodeTest::testGetMethodNamesReturnsExpectedResult
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array (
     0 => 'PHPMD\Node\ClassNodeTest'
-    1 => 'testGetMethodNamesReturnsExpe...Result'
 )

D:\dev\xampp\htdocs\phpmd\src\test\php\PHPMD\Node\ClassNodeTest.php:77
D:\dev\xampp\php\pear\PHPUnit\TextUI\Command.php:176
D:\dev\xampp\php\pear\PHPUnit\TextUI\Command.php:129

FAILURES!
Tests: 384, Assertions: 465, Failures: 2.

D:\dev\xampp\htdocs\phpmd>vendor\bin\phpunit.bat
PHPUnit 4.3.1 by Sebastian Bergmann.

Configuration read from D:\dev\xampp\htdocs\phpmd\phpunit.xml.dist

..F.................F..........................................  63 / 384 ( 16%)
............................................................... 126 / 384 ( 32%)
............................................................... 189 / 384 ( 49%)
............................................................... 252 / 384 ( 65%)
............................................................... 315 / 384 ( 82%)
............................................................... 378 / 384 ( 98%)
......

Time: 5.71 seconds, Memory: 20.75Mb

There were 2 failures:

1) PHPMD\Integration\CouplingBetweenObjectsIntegrationTest::testReportContainsCouplingBetweenObjectsWarning
Failed asserting that '
' contains "has a coupling between objects value of 14. Consider to reduce the number of dependencies under 13.".

D:\dev\xampp\htdocs\phpmd\src\test\php\PHPMD\Integration\CouplingBetweenObjectsIntegrationTest.php:91

2) PHPMD\Node\ClassNodeTest::testGetMethodNamesReturnsExpectedResult
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array (
     0 => 'PHPMD\Node\ClassNodeTest'
-    1 => 'testGetMethodNamesReturnsExpe...Result'
 )

D:\dev\xampp\htdocs\phpmd\src\test\php\PHPMD\Node\ClassNodeTest.php:77

FAILURES!
Tests: 384, Assertions: 465, Failures: 2.

The build on AppVeyor proves, that it can work on Windows:
https://ci.appveyor.com/project/ravage84/phpmd-cmdg5/build/3
Nonetheless the same code that built fine in AppVeyor produces the two errosr above on my local Windows 7 machine.

I can't reproduce it on Windows 10. Regarding the given errors and the close end of life of Windows 7, I propose to drop this issue.


Skip position change

How can I set skip option on bottom?

Hey @mouli457, I don't understand what you're trying to achieve.

I am using  skip option to stop the instructions, by default skip is displaying at right top (above the right bar button item),so I want change the skip button position.

@mouli457 Alright, the answer is here, in the README. You need to implement:
func coachMarksController(_ coachMarksController: CoachMarksController, constraintsForSkipView skipView: UIView, inParent parentView: UIView) -> [NSLayoutConstraint]?

can you please  tell me how to change constraints values to change skip position?

Everything you need to know is in the README section that I've linked. Quoting:

This method will be called by the CoachMarksController before starting the tour and whenever there is a size change. It gives you the skip button and the view in which it will be positioned and expects an array of NSLayoutConstraints in return. These constraints will define how the skip button will be positioned in its parent. You should not add the constraints yourself, just return them.
Returning nil will tell the CoachMarksController to use the defaults constraints, which will position the skip button at the top of the screen. Returning an empty array is discouraged, as it will most probably lead to an akward positioning.
For more information about the skip mechanism, you can check the Example/ directory.


Failed to connect to bus: No such file or directory

I get this message everytime I try to start the server with the service command. Any idea why this is happening?
After running "sudo  systemctl list-units -t service --all" this is listed among other entries:
factorio.service                      loaded    activating auto-restart
When I try to run that without sudo I get the same error.
I think I figured it out: I tried to start the service as a non root and that may have caused a problem

So, I fixed the Failed to connect to bus part...... and now if i run "service factorio status" I get this:
Jan 11 10:35:28 srv44160 systemd[1]: factorio.service: Unit entered failed state.
Jan 11 10:35:28 srv44160 systemd[1]: factorio.service: Failed with result 'exit-code'.

oh, glad you found a resolution =)

I am new to linux but I learned something new so it worked out fine.


Add workflow to @kaspersky/components Storybook

It needs to build and publish Storybook after merging PR.
It can be deployed to Vercel, Netlify or Github pages.

Done. Placed here.


full epoll support on linux #162

question
As of sofa v5.4.0, SofaNettyJaxrsServer RestServer AbstractHttp2ClientTransport aren't fully support epoll IO model correctly.
Your advice
Add fully epoll IO model support by the option epoll comes from ClientTransportConfig and ServerConfig
Environment

SOFARPC version: v5.4.0
OS version: Linux Family

Hi, @eonezhang  Thanks for contributing.
The Travis CI build failed because you need run mvn clean compile before you push your code.

Codecov Report

Merging #163 into master will increase coverage by <.01%.
The diff coverage is 50%.

@@             Coverage Diff              @@
##             master     #163      +/-   ##
============================================
+ Coverage     68.53%   68.54%   +<.01%
  Complexity      942      942
============================================
  Files           340      340
  Lines         14163    14172       +9
  Branches       2271     2275       +4
============================================
+ Hits           9707     9714       +7
+ Misses         3298     3293       -5
- Partials       1158     1165       +7

Impacted Files
Coverage Δ
Complexity Δ

...c/transport/http/AbstractHttp2ClientTransport.java
78.26% <0%> (-0.63%)
27 <0> (ø)

...va/com/alipay/sofa/rpc/server/rest/RestServer.java
64.76% <100%> (ø)
0 <0> (ø)
:arrow_down:

...pay/sofa/rpc/server/rest/SofaNettyJaxrsServer.java
57.65% <50%> (-3.13%)
0 <0> (ø)

.../main/java/com/alipay/sofa/rpc/tracer/Tracers.java
39.74% <0%> (-2.57%)
0% <0%> (ø)

...ent/aft/impl/ServiceHorizontalMeasureStrategy.java
84.44% <0%> (-2.23%)
26% <0%> (-1%)

.../sofa/rpc/bootstrap/DefaultClientProxyInvoker.java
87.09% <0%> (-1.62%)
0% <0%> (ø)

...alipay/sofa/rpc/registry/zk/ZookeeperRegistry.java
56.29% <0%> (-0.79%)
0% <0%> (ø)

...ay/sofa/rpc/client/AllConnectConnectionHolder.java
53.91% <0%> (+0.55%)
0% <0%> (ø)
:arrow_down:

...y/sofa/rpc/bootstrap/DefaultProviderBootstrap.java
66.49% <0%> (+2.53%)
0% <0%> (ø)
:arrow_down:

...pay/sofa/rpc/transport/ClientTransportFactory.java
78.46% <0%> (+4.61%)
0% <0%> (ø)
:arrow_down:

... and 1 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 25c5690...e3399b5. Read the comment docs.


Updated compose version to 0.3.0-SNAPSHOT

修改docker-compose配置文件中容器镜像的版本号。

Coverage remained the same at 93.75% when pulling fa9347cf22ffc56620366bf541f93857c4facc8b on sunming0213:master into 18675004a281c477025a00cb8dba08f4799677f9 on ServiceComb:master.


[feature request] python 3.11 wheel

Add Python 3.11 wheel to PyPI for Python 3.11 users to use this project.

I believe the next release will include it automatically, as the build tools involved have updated to add 3.11 as a target.

The latest release version 3.0.310 includes a Python 3.11 wheel, thank you.

Yeah, I realized I ran the dist too early, before I had picked up the version bump from the upstream slang repo. I'm re-running it now so that the pyslang version properly gets bumped to 4.0


+values 2 scopes2 dictionaries.json [patch]

you need to add [patch] into commit message

added [patch]

Changes Unknown when pulling ac77956361f4414260af9867cd0568afb0c6b87f on EdwardVoloshin-patch-3 into ** on master**.


Change of focus mechanism in TizenViewElementary

This PR changes the way it works when moving the Focus of TizenView using Arrow Key.
Previously, it was automatically focus using Arrow Key, but after this PR, Enter Key (Return Key) must be entered to focus.
The purpose of this PR is to allow users to select the desired view comfortably by using Arrow Key when several TizenViewElementary exists.
PR related to what is mentioned in issue #341.

What if the user wants to change the behavior? (It's very difficult for the user to build their own embedder.) Shouldn't this feature be implemented in the embedding side instead of the embedder?

I thought about how to implement movement only with Embedding, but it seems impossible.
Since the KeyventCallback of ElmflutterView is registered by Embedder, I think it is impossible to control key events except Embeddder.
If we add a flag and provide an API that can manipulate it, the user can change the behavior, but I don't know if this is the right direction.
@swift-kim

@Swanseo0 I was talking about NUI. ElmFlutterView is out of our interest because EFL will be deprecated as of Tizen 7.0.

So the "select to focus" feature will be

For ElmFlutterView: enabled by default
For NUIFlutterView: enabled by default (may have an option to disable)

Is this your expectation? I thought it could also be an opt-in feature disabled by default.

Is this your expectation?

Right!

I thought it could also be an opt-in feature disabled by default.

In fact, the first thing I thought was just default. However, we can provide the ability to choose (opt-in or opt-out).

@swift-kim
We could add another property in FlutterDesktopWindowProperties and change the behavior at runtime for ElmFlutterView, then this feature would both be enabled/disabled by the user for both ElmFlutterView and NUIFlutterView. Is this a viable solution?

@HakkyuKim It looks possible but I personally want to avoid that since it will unnecessarily add extra complexity.

I'm okay with the changes as long as the behavior of ElmFlutterView is the same as NUIFlutterView's default behavior. For example
For ElmFlutterView: enabled by default
For NUIFlutterView: enabled by default (may have an option to disable)
Or
For ElmFlutterView: disabled by default
For NUIFlutterView: disabled by default (may have an option to enable)

In Android's FlutterView, the scenario where the focus leaves the flutter view does not work properly.
It's probably like ours.
But we think it's good that this is supported because we need to support the scenario of using the remote controller on the TV.
I think that ElmFlutterView has a separate type and setter/gertter and can be supporte through FlutterDesktopViewProperties, and in NUI, it can be supported by embedding.

And I think that focused box(?)/highlighted box(?) need to be drawn according to user selection (type).

Please reopen this in flutter-tizen/embedder if needed.


add type definitions for partial and compose

This pull request add type definitions for _.partial and _.compose.
The type definition for compose is very simple and I really don't know how do I describe the fact that the first function's return value is the return value of the function that is returned from compose:
declare function compose(...functions: Function): Function;

// USAGE:
(

_.compose(
  function (name:string):string { return name + ', hello!'; },
  function (user:Object):string { return user.name; }
): (user: Object) => string

)

I'd be happy to provide a more stricter type definition but I really don't know how to approach that. I'd be happy to read any feedback. Thanks.

Tests passing!

Is there something I can do in order to get this merged?

Thanks!


Transition animation?

Is there a way to add animations to transition between slides? For example, click next will have the next slide slide in from the right. Similarly, clicking back would have the current slide slide out to the right.
I want the animations to be directional aware.

You can do that with angular animated. The effect will looks like this -> https://gyazo.com/759f4417797bc11a34c800484fdf895d

@disnoa That link leads to a 403

Ops!, sorry! https://gyazo.com/4e9491ce95826c5537387850803120c6

@disnoa That only has 1 direction for transition. In your example, the back animation should be the reversed animation of the next.

+1 for animations. Custom animations and not just sliding would be awesome.

Working on it, don't know if it will make next release but its in pipeline

Up.
Can anyone share example with an animation steps?


TypeError: shadowRootNode.getElementById is not a function.

iOS users often have this error:

Date : 2024/02/16 12:32:32
errorMsg : TypeError: shadowRootNode.getElementById is not a function. (In 'shadowRootNode.getElementById(emo-${emoji.id})', 'shadowRootNode.getElementById' is undefined)
errorUrl : https://x.com/v1/others/emoji-picker-element/picker.js
errorLine : 1203
errorCol : 66
errorStack : "emojiToDomNode@https://x.com/v1/others/emoji-picker-element/picker.js:1203:66\ncheckZwjSupport@https://x.com/v1/others/emoji-picker-element/picker.js:296:35\ncheckZwjSupportAndUpdate@https://x.com/v1/others/emoji-picker-element/picker.js:1204:20"
userAgent : Mozilla/5.0 (iPhone; CPU iPhone OS 15_8_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6.6 Mobile/15E148 Safari/604.1

It only does this with iOS

Well I tested if shadowRoot.getElementById is supported in iOS 15.5, and it is:

So I'm sorry, but I'm totally stumped. :confused:

Here are other user agents affected:

errorMsg : TypeError: shadowRootNode.getElementById is not a function. (In 'shadowRootNode.getElementById(emo-${emoji.id})', 'shadowRootNode.getElementById' is undefined)
errorUrl : https://x.com/v1/others/emoji-picker-element/picker.js
errorLine : 1203
errorCol : 66
errorStack : "emojiToDomNode@https://x.com/v1/others/emoji-picker-element/picker.js:1203:66\ncheckZwjSupport@https://x.com/v1/others/emoji-picker-element/picker.js:296:35\ncheckZwjSupportAndUpdate@https://x.com/v1/others/emoji-picker-element/picker.js:1204:20"
userAgent : Mozilla/5.0 (iPhone; CPU iPhone OS 16_7_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1

Date : 2024/02/17 01:59:06
errorMsg : TypeError: shadowRootNode.getElementById is not a function. (In 'shadowRootNode.getElementById(emo-${emoji.id})', 'shadowRootNode.getElementById' is undefined)
errorUrl : https://x.com/v1/others/emoji-picker-element/picker.js
errorLine : 1203
errorCol : 66
errorStack : "emojiToDomNode@https://x.com/v1/others/emoji-picker-element/picker.js:1203:66\ncheckZwjSupport@https://x.com/v1/others/emoji-picker-element/picker.js:296:35\ncheckZwjSupportAndUpdate@https://x.com/v1/others/emoji-picker-element/picker.js:1204:20"
userAgent : Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/121.0.6167.171 Mobile/15E148 Safari/604.1

The debug is generated with a window.onerror on a production location. Since this morning, in 12 hours it has detected 205 errors linked to the log that I showed you. I haven't tested with an iPhone. Users are not on an application, but on their browser, probably Safari.

Sorry, but this doesn't really help me narrow it down. getRootNode should always return either a Document or  ShadowRoot, and so I don't understand how its getElementById can be undefined:
https://github.com/nolanlawson/emoji-picker-element/blob/82b1f7fabc6a90f7a8b9e05571580e3cfde120a8/src/picker/components/Picker/Picker.js#L434-L435
Are users reporting any visual errors in the component itself? Or are you just seeing this error in your logs?

I updated. But I think I found the problem. Here are the explanations:

I use this script:

    <script type="module">
      async function hasIDB() {
        if (typeof indexedDB === 'undefined') {
          return false
        }

        try {
          const idbFailed = await new Promise(resolve => {
            const db = indexedDB.open('test-idb')
            db.onerror = () => resolve(true)
            db.onsuccess = () => {
              indexedDB.deleteDatabase('test-idb')
              resolve(false)
            }
          })
          if (idbFailed) {
            return false
          }
        } catch (e) {
          return false
        }
        return true
      }

      async function polyfillIDB() {
        await import('/v1/others/test/fake-indexeddb.js?v=1708213879284')
        // Can't override the indexedDB global, but we can monkey-patch it
        for (const func of ['open', 'deleteDatabase']) {
          indexedDB[func] = FakeIndexedDB[func].bind(FakeIndexedDB)
        }
        for (const func of ['bound', 'lowerBound', 'upperBound', 'only']) {
          IDBKeyRange[func] = FDBKeyRange[func].bind(FDBKeyRange)
        }
      }

      (async () => {
        if (!(await hasIDB())) {
          await polyfillIDB()
        }
        const {Picker} = await import('/v1/others/emoji-picker-element/index.js?v=1708213879284')
        //const picker = new Picker()
        //document.body.appendChild(picker)
      })()

    </script>

The menu is then called but not in the mobile version:  - I don't use the emoji menu on the mobile version, because They manage to have emojis via their keyboard for certain people.

The code to detect mobile and non-mobile that I use:
function is_mobile_width() {
    const n = navigator;
    if (n && n.userAgentData && n.userAgentData.mobile) {
        return true;
    }
    else if (document.body.clientWidth <= 950) {
        return true;
    }
    else {
        return false;
    }
}

So in the end, the thing I should do is not to call the first script in the mobile version. Currently the first script is global, for all users. Sorry for bothering you for nothing.

Interesting. I still don't understand how this caused shadowRootNode.getElementById to not be a function? But if you think the problem is with your app instead of emoji-picker-element then I'm happy to close this issue. Thanks for reporting!

Hey @nolanlawson!
I'm encountering this issue as well.
D.getElementById is not a function. (In 'D.getElementById(`emo-${X.id}`)', 'D.getElementById' is undefined)

User-Agent: Mobile Safari UI/WKWebView
iOS Version: 17.2.1

Hm that's really bizarre. @aerovulpe I suppose you're using the latest version of the package? But Sentry doesn't give you the un-minified stacktrace? And you're also only seeing this on iOS Safari?

I upgraded to 1.21.1 from 1.20.1 before dropping a comment. I haven't seen a Sentry error related to shadowRootNode.getElementById since the upgrade, so I think https://github.com/nolanlawson/emoji-picker-element/commit/19331c6be6de9da9199a43c6aa13e48fd310a952 may have fixed it!
Unfortunately, I don't have the un-minified stack trace, and it only affected certain iOS Safari users, but it seems the issue has been fixed empirically.
I'll keep monitoring, and I'll let you know if anything pops open, but it's probably safe to reclose this.
Thanks again!

Sounds good! Please reopen if the issue crops up again in 1.21.1.


Backport CI fix for missing hub cmd in Github runners

Merging, the failing CI tests are due to the block device change issue in Github free runners.


Cannot run the workshopper

When running this workshopper I see the following error in console
Once complete, execute @workshoppers/scope-chains-closures verify <your-file.js> to verify your
solution.

## Notes

  * [1]: There are also 4 other scopes in the language: Global, `with`, `catch`,
  *      and `eval`. These tend not to be used much, so we will ignore them.
  *
  *
  * [2]: This workshop will concentrate only on Lexical Scoping.

events.js:167
      throw er; // Unhandled 'error' event
      ^

Error: shutdown ENOTCONN
    at ReadStream.Socket._final (net.js:366:25)
    at callFinal (_stream_writable.js:612:10)
    at process._tickCallback (internal/process/next_tick.js:63:19)
Emitted 'error' event at:
    at emitErrorNT (internal/streams/destroy.js:82:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)

and when verifying the solution it says
ERROR: No adventure is currently selected. Select an adventure from the menu.

I assume that it is because of the above error

I checked again and the issues are with node 10 (10.5.0 and 10.6.0). It works with node 9 (9.11.2)

You can work around the issue with
npm install -g n

I am still having this issue.


Prescribed Test stubs are not complete, don't populate data model on callbacks

Expected behavior
With the test lookup, I should get the same behavior as any normal Lookup result when running the geocode method on callback as prescribed, populating the data model. My example is in after_validation (active_record store) from README.
Actual behavior
The test lookup, utilized as prescribed by the stubs in the README documentation, does not return a result that has populated latitude and longitude methods. The stub does not convert coordinates into latitude and longitude on result stubbing.
Steps to reproduce
Add a stub just as you're told to in the README documentation
Environment info

Geocoder version: 1.4.9
Rails version: 5.1.5
Database (if applicable): Postgres
Lookup (if applicable): test

Proposed Solutions

Update documentation to reflect need for proper stubbing to be used (including latitude & longitude) for callbacks to populate attributes accordingly
Stubbing could ensure proper data is passed to the stub methods and raise exceptions when
Fill in the gaps on stubbing depending on input. For example, per the README, if coordinates is passed, populate latitude and longitude from it.

Thanks! This is also discussed in #1258 and I completely agree. Your solution number 3 is the one to go with. The only reason I've held off fixing is because it will break some people's tests, so it will be part of the next minor release (1.5.0), hopefully coming soon.
Added the fix in a v1.5 branch: b284f71965982ed1c404638012492ca2aee2c379

Sweet - thanks!