can not insert a normal Japanese or Chinese character after the link

Do you want to request a feature or report a bug?
bug(may be?)
What is the current behavior?
This is the same issues as bellow:
1803
430
When insert a normal a-z or 0-9 character after the link, it's OK.
But when insert a Japanese 「あ」or Chinese「中」after the link, it lost the
ability to "not continue" mutable entity of Link. However, there is no such problem when copy a Japanese「あ」 or Chinese「中」 after the link.
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. You can use this jsfiddle to get started: https://jsfiddle.net/gmertk/e61z7nfa/.
What is the expected behavior?
The URL link range is not inherited when inputting an English character.
I hope the URL link range is also not inherited when writing Japanese 「あ」or Chinese「中」characters after the URL link.
Which versions of Draft.js, and which browser / OS are affected by this issue? Did this work in previous versions of Draft.js?
draft-js: ^0.11.5
Browser: chrome
OS: windows

I also write handleBeforeInput  function in my Editor, but when I input English character "a", I can enter this function and be processed correctly. When I input Japanese"あ", I cannot enter the processing of this function and report such an exception message:
nullthrows.js:16 Uncaught Error: Got unexpected null or undefined     at nullthrows (nullthrows.js:16)     at DOMObserver.registerMutation (DOMObserver.js:150)     at DOMObserver.registerMutations (DOMObserver.js:102)     at MutationObserver.<anonymous> (DOMObserver.js:57) nullthrows @ nullthrows.js:16 registerMutation @ DOMObserver.js:150 registerMutations @ DOMObserver.js:102 (anonymous) @ DOMObserver.js:57
`const handleUnContiguousEntity = (chars: string): EditorState | null => {
const contentState = editorState.getCurrentContent();
const selectionState = editorState.getSelection();
const currentBlock = contentState.getBlockForKey(selectionState.getStartKey());
if (!selectionState.isCollapsed()) {
return null;
}
const startOffset = selectionState.getStartOffset();
// console.log('-----------------startOffset-----------------');
// console.log(startOffset);
// we are not at the start of the block
if (startOffset === 0) {
return null;
}
const entityKeyBeforeCaret = currentBlock.getEntityAt(startOffset - 1);
const entityKeyAfterCaret = currentBlock.getEntityAt(startOffset);
const isCaretOutsideEntity = entityKeyBeforeCaret !== entityKeyAfterCaret;
// console.log('-----------------isCaretOutsideEntity-----------------');
// console.log(isCaretOutsideEntity);
if (entityKeyBeforeCaret && isCaretOutsideEntity) {
const entity = contentState.getEntity(entityKeyBeforeCaret);
const isMutable = entity.getMutability() === 'MUTABLE';
const { contiguous = true } = entity.getData();
// if entity is mutable, and caret is outside, and contiguous is set the false
// remove the entity from the current char
// console.log('-----------------contiguous-----------------');
// console.log(contiguous);
if (isMutable && !contiguous) {
const newContentState = Modifier.insertText(
contentState,
selectionState,
chars,
editorState.getCurrentInlineStyle(),
undefined
);
// console.log('-----------------ここに到着だ-----------------');
const newEditorState = EditorState.push(editorState, newContentState, 'insert-characters');
return newEditorState;
}
}
return null;
};
const handleBeforeInput = (chars: string): DraftHandleValue => {
// console.log('-----------------handleBeforeInput-----------------');
// console.log(chars);
const newEditorState = handleUnContiguousEntity(chars);
if (newEditorState) {
handleChange(newEditorState);
return HandleTypes.HANDLED;
}
return HandleTypes.NOT_HANDLED;
};`

I also write the handleBeforeInput function in my Editor, but when I input English character "a", I can enter this function and be processed correctly. When I input Japanese"あ", I cannot enter the processing of this function and report such an exception message:

nullthrows.js:16 Uncaught Error: Got unexpected null or undefined
at nullthrows (nullthrows.js:16)
at DOMObserver.registerMutation (DOMObserver.js:150)
at DOMObserver.registerMutations (DOMObserver.js:102)
at MutationObserver. (DOMObserver.js:57)

the bellow code is my handleBeforeInput :
handleBeforeInput

I have the same issue...
Does anyone know the solution?


[Q] Is it possible to run exceljs without a nodejs environment?

I plan to use this in a NetSuite project which sadly doesn't have node environment. Is there a way to use exceljs without having node? Such as having a js file (something built with webpack for exapmle) with all the dependencies included.

possible?


update nextjs to v11

Codecov Report

Merging #175 (dd6aac9) into main (52dd390) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #175   +/-   ##
=======================================
  Coverage   85.23%   85.23%
=======================================
  Files          22       22
  Lines         210      210
  Branches       33       33
=======================================
  Hits          179      179
  Misses         31       31

Impacted Files
Coverage Δ

src/components/Buttons/index.tsx
100.00% <ø> (ø)

src/components/Footer/index.tsx
100.00% <ø> (ø)

src/components/Form/index.tsx
60.86% <ø> (ø)

src/components/LanguagePicker/index.tsx
66.66% <ø> (ø)

src/components/ThemePicker/ThemePicker.tsx
100.00% <ø> (ø)

src/components/ThemePickerTheme/index.tsx
100.00% <ø> (ø)

src/contexts/LanguageContext.ts
100.00% <ø> (ø)

src/contexts/MessageContext.ts
100.00% <ø> (ø)

src/pages/index.tsx
63.15% <ø> (ø)

src/stores/LanguageStore.tsx
100.00% <ø> (ø)

... 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 52dd390...dd6aac9. Read the comment docs.


Distinguish Between Catching Up, Stalled, Ready, Reparsing and Initializing

Expose distinction in API headers, healthz route, logs
Log a warning for STALLED every N seconds
(Initial mempool build should be under 'Initializing'

These messages are showing up too frequently. It should be like one per 10s.


[DO NOT MERGE] release v0.12.2

queuing up v0.12.2 release for visibility
A few more cleanups to do

sanity checked test gens. all good

Good evening guys.. how are you today.?. I have a big concern. On how can i transfer my ETH to my
Another wallet account


Make the swing and stance controller interfaces identical

Put the swing proportion calculation inside the swing controller.
https://github.com/stanfordroboticsclub/StanfordQuadruped/blob/61144b1133bcaa87fe707060cc8c04aa8df51142/src/Controller.py#L54

Or better yet, create a pure virtual controller interface these adhere to.


Recipe Conflict

The recipe for the gold to diamond tank upgrade conflicts with the recipe for Iron Chest's gold to diamond chest upgrade, making it impossible to craft. I propose rotating the recipe 90 degrees to fix this problem. Theres also probably other recipes that conflict, but I didn't check.

It doesn't look like there is likely going to be movement on Iron Chests changing their recipes.
Alternate suggestion: What about replacing the glass blocks with glass panes in all the upgrade recipes? This will keep them all consistent and keeps users from having to know about and modify the config in what is honestly a very high likelihood of recipe conflict.

I think the pane solution is a great idea.  I also think the rotation isn't a bad idea, as the glass is horizontal in the recipes currently, and one might think that in a tank, the vertical walls are what are glass.


Pathing fixes

Codecov Report

Merging #191 into master will increase coverage by 0.75%.
The diff coverage is 87.5%.

@@            Coverage Diff             @@
##           master     #191      +/-   ##
==========================================
+ Coverage   79.81%   80.56%   +0.75%
==========================================
  Files          87       87
  Lines        3482     3484       +2
  Branches      658      658
==========================================
+ Hits         2779     2807      +28
+ Misses        701      675      -26
  Partials        2        2

Impacted Files
Coverage Δ

src/singlepage/UMAPVisualization.tsx
0% <0%> (ø)
:arrow_up:

src/data/index.ts
100% <100%> (ø)
:arrow_up:

src/data/Markers.ts
15.38% <0%> (+15.38%)
:arrow_up:

src/data/Nucleotide.ts
52.38% <0%> (+52.38%)
:arrow_up:

Continue to review full report at Codecov.

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


Tests performance - slow CD/CI

Before, I have only heard about slow CD/CI because of tests.
Now, I witness it.

If going forward our focus is to use enterprise version of hashistack to develop features then we can limit the number of tests that are run when a PR is created by running only tests valid for enterprise version.
We can add another workflow file that would run the complete set of tests(oss, enterprise ) nightly as a scheduled job.

Should we limit the tests and implement scheduled matrixes?

Should we limit the tests and implement scheduled matrixes?

Let's discuss it next meeting

Performance of GitHub-hosted macOS runner

The only reason that we use macOs is that OS has pre-installed vagrant relevant issue. Might be useful to have vagrant in linix-latest.


REQUEST: Multi-vendor Marketplace?

Is WellCommerce capable of handling a multi-vendor marketplace?

@spencerthayer Hi Spencer, which features are needed for multi-vendor version? Please give a few examples. We do have a multi-store feature but i suppose that the multi-vendor version requires some advanced tuning of core functionalities.

Like the following: http://www.vnecoms.com/magento-marketplace/

Is there any news about it? I will like it! :)


Document SSR build with externals

🚀 Feature Proposal
Document how to create a SSR build with externals. On the server, modules should not be duplicated to avoid problem with context. More detail here: https://github.com/smooth-code/loadable-components/issues/193#issuecomment-461870911
An example of correct configuration using webpack: https://github.com/smooth-code/loadable-components/blob/master/examples/server-side-rendering/webpack.config.babel.js
Motivation
See https://github.com/smooth-code/loadable-components/issues/193

For now, you can rely on the example: https://github.com/smooth-code/loadable-components/blob/master/examples/server-side-rendering/webpack.config.babel.js

Hey @neoziro, a million thanks for this amazing project :)
I am not so used to webpack's externals but I understand the theory of it.
I have an issue where I am running the server-side compiled app source code, which complains on some modules not being found.
What struggles me is that those modules are either supposed to be used for the client-side only, or part of the server-side code and therefore should be bundled together with the server-side chunks?
In my example, heavily inspired by https://github.com/smooth-code/loadable-components/tree/master/examples/server-side-rendering, except that I use ChunkExtractorManager.
In the app itself, I use among others apollo-client, react-router, @emotion/core (css-in-js).
The webpack config looks like:
module.exports = [
  {
    name: 'web',
    entry: 'src/client/index.js',
    // ...
  },
  {
    name: 'node',
    entry: 'src/client/App.js',
    // ...,
    externals: [nodeExternals()],
    // ...
  }
];

The server-side code looks like:
const nodeExtractor = new ChunkExtractor({
    statsFiles: path.resolve(BUILD_FOLDER, 'loadable-stats.node.json')
  });
  const { default: App } = nodeExtractor.requireEntrypoint();

  const webExtractor = new ChunkExtractor({
    statsFiles: path.resolve(BUILD_FOLDER, 'loadable-stats.web.json')
  });

  const AppWrapper = (
    <ChunkExtractorManager extractor={webExtractor}>
      <ApolloProvider client={apolloClient}>
        <StaticRouter location={request.url} context={context}>
          <App />
        </StaticRouter>
      </ApolloProvider>
    </ChunkExtractorManager>
  );

  try {
    await getDataFromTree(AppWrapper);
  } catch (error) {
    console.warn('Unable to load initial data', error);
  }

  const html = ReactDOMServer.renderToString(AppWrapper);

When I build my app, webpack outputs:
    // ...

     [8] external "@babel/runtime/helpers/classCallCheck" 42 bytes {10} [built]
    // ...

So when I try to run that server-side code, I received errors like: Error: cannot find module 'react-router-dom' or the same with @emotion/core or some others.
Any chance you would know which modules should be specified in "externals"?

Hello @flosch-hb, I think I got your problem.
Externals defines modules that remains a require('xxx') in the final bundle generated by webpack. When you run this bundle it will look for xxx module in node_modules. In your case I think you miss these modules. Just npm install react-router-dom, etc... and it should work properly.

Hey @neoziro, those modules are actual dependencies (part of the package.json dependencies) since they are required by the client-side bundles.
This is what confuses me the most but I think I just do not fully understand the concept of externals itself, I will try to get my mind around it!

Or well, in my case, the package is bundled by https://github.com/serverless-heaven/serverless-webpack which uses webpack under the hood to build the bundles, then deploy them to our Cloud Provider... Maybe the issue is on this side, I need to figure that out :)

I'm still wrapping my head around this package but will give my two cents based on what's working for me.
Since you're already bundling two separate bundles for server and client (I'm doing the same), what if, instead of doing this:
const nodeExtractor = new ChunkExtractor({
    statsFiles: path.resolve(BUILD_FOLDER, 'loadable-stats.node.json')
  });
  const { default: App } = nodeExtractor.requireEntrypoint();

You just do:
import App from "./wherever/it/is/App";

It works for me, no need to deal with confusing externals.
Does it make sense @neoziro ?

@acaua yeah it works, except in development, you have to restart the server at every change. Loadable Components reset require cache for you in development mode.

@neoziro Thanks for the reply.
That's what I've been doing. I use nodemon to watch for changes and restart my server.
How does it work on the SSR example? Does it support HMR?
Or is it just that there's no need to rebundle the server on every change, you keep the server running and only rebundle the client? Would the second cas require a full reload on the browser?

You keep the server running and you only rebundle the client. Then you reload the browser and it should be up to date.


Getting Fluent::Plugin::CloudwatchLogsOutput::TooLargeEventError

Problem
I'm using image fluent/fluentd-kubernetes-daemonset:v1.12.2-debian-cloudwatch-1.3 and I also tried with the latest one, but I'm getting this error while trying to log to Cloudwatch.
#<Thread:0x00007f7b44f9b2c8 /fluentd/vendor/bundle/ruby/3.1.0/gems/fluent-plugin-cloudwatch-logs-0.14.3/lib/fluent/plugin/out_cloudwatch_logs.rb:323 run> terminated with exception (report_on_exception is true):
/fluentd/vendor/bundle/ruby/3.1.0/gems/fluent-plugin-cloudwatch-logs-0.14.3/lib/fluent/plugin/out_cloudwatch_logs.rb:382:in `put_events_by_chunk': Log event in <LOG_GROUP_NAME> is discarded because it is too large: 671770 bytes exceeds limit of 262144 (Fluent::Plugin::CloudwatchLogsOutput::TooLargeEventError)
    from /fluentd/vendor/bundle/ruby/3.1.0/gems/fluent-plugin-cloudwatch-logs-0.14.3/lib/fluent/plugin/out_cloudwatch_logs.rb:326:in `block (2 levels) in write'

I know this is an issue with the Cloudwatch API that limits the size of the events. Is this fixed for other versions of that image? I've seen that for fluent-bit, the solution was to truncate the log if it's too big.
Any idea on how to fix it for this specific image?
...
Steps to replicate
This is my current config:
02_output.conf: |-
  <label @NORMAL>
    <match **>
      @type cloudwatch_logs
      @id out_cloudwatch_logs_containers
      region "#{ENV.fetch('REGION')}"
      log_group_name_key group_name
      remove_log_group_name_key true
      log_group_aws_tags "{ \"Name\": \"#{ENV.fetch('CLUSTER_NAME')}\", \"kubernetes.io/cluster/#{ENV.fetch('CLUSTER_NAME')}\": \"owned\" }"
      log_stream_name_key stream_name
      remove_log_stream_name_key true
      auto_create_stream true
      retention_in_days 365
      concurrency 16
      <buffer>
        @type memory
        flush_thread_count 16
        flush_mode interval
        flush_at_shutdown true
        # total_limit_size 1GB
        # flush_interval 1s
        # chunk_limit_size 512k
        queued_chunks_limit_size 32
        retry_forever false
        retry_timeout 10m
        retry_max_times 5
        disable_chunk_backup true
      </buffer>
      <format>
        @type single_value
        message_key log
        add_newline false
      </format>
    </match>
  </label>

Reproducing is kinda difficult, but basically make a container log a very large log entry.
Expected Behavior or What you need to ask
I would expect the plugin to truncate the event or split it in different events.
Using Fluentd and CloudWatchLogs plugin versions

OS version

Debian 11 bullseye

Bare Metal or within Docker or Kubernetes or others?

Kubernetes

Fluentd v0.12 or v0.14/v1.0

paste result of fluentd --version or td-agent --version

fluentd 1.15.3

I'm seeing the same issue using the latest "0.14.3" version. Is there even a workaround for this?


Http response at 400 or 500 level

Http response at 400 or 500 level
The above error occurred in task ft
created by takeEvery(network/selectNetwork, ft)
created by ht
Tasks cancelled due to error:
takeEvery(network/selectNetwork, ft)
Error: Http response at 400 or 500 level
at new D (https://wallet.oasisprotocol.org/static/js/2.48cea8b1.chunk.js:2:1047878)
at Ft (https://wallet.oasisprotocol.org/static/js/2.48cea8b1.chunk.js:2:1070696)
at _t. (https://wallet.oasisprotocol.org/static/js/2.48cea8b1.chunk.js:2:1069926)
at Ue (https://wallet.oasisprotocol.org/static/js/2.48cea8b1.chunk.js:2:1056709)
at Be (https://wallet.oasisprotocol.org/static/js/2.48cea8b1.chunk.js:2:1056515)
at xt (https://wallet.oasisprotocol.org/static/js/2.48cea8b1.chunk.js:2:1064004)
at Tt (https://wallet.oasisprotocol.org/static/js/2.48cea8b1.chunk.js:2:1064785)
at _t.r.W (https://wallet.oasisprotocol.org/static/js/2.48cea8b1.chunk.js:2:1065726)
at _t.r.R (https://wallet.oasisprotocol.org/static/js/2.48cea8b1.chunk.js:2:1065705)

I am unable to use my wallet for this erroe

Oasis monitor was up and down in the last days. Duplicate of #403. We are working on this.


White screen with "initialCols" & "initialRows" set large value

Environment
Windows build number: Microsoft Windows [Version 10.0.18362.418]
Windows Terminal version :  0.6.2951.0
White screen when  drag the window with large "initialCols" & "initialRows" set(e.g. 110 * 30).

Steps to reproduce
set "initialCols" to 110, and set  "initialRows"  to 30, then drag a new opened window.
Expected behavior
normally show.
Actual behavior
terminal  screen be white when I open a window and drag it, but when I maximize it, it recover to normal.

This looks like a /dupe of #3065.

more information: if set "initialCols" , "initialRows" to (90,25), this problem will not appear.


mfrac linethickness causes render issues

When linethickness is set, the fractions don't render properly, the line height is wrong ( <math><mrow><mo>-</mo><mfrac linethickness="1"><mn>1</mn><mn>3</mn></mfrac></mrow></math>).
I tried to render in multiple ways:

And this how it renders:

The ones that have linethickness="1" set don't render properly.
(I observed that em is used to render that line.)
Is there any fix for this?
Thank you!

The display for linethickness="0" is also correct, as that means there should be no line, which is what you are seeing.
Note that line thickness is a length, and so should either have units or be a named length (like medium).  Unitless lengths are deprecated, and are available only for backward compatibility.  They are supposed to represent a multiple of the default length, and so in that sense, the result is incorrect, but it turns out that MathJax treats linethickness="1" as linethickness="1em" in this case.  That needs to be fixed.
It is not clear what result you are looking for.  If linethickness="1" is supposed to produce the normal line thickness, then you could use linethickness="medium".  Otherwise, use an explicit unit to get the size you want.
It is possible to use a MathML pre-filter to convert unitless line thickness to multiples of .06em (the size of medium).  How that is done differs between version 2 and version 3, so I would need to know which you are using in order to advise you further.

I've made a pull request to fix the unitless linethickness value in version 3.

Thank you for your quick response!
You are right, The display for linethickness="0" is also correct, I am sorry for that mistake.
I thought linethickness="1" is supposed to produce the normal line thickness, without having to replace "1" with "medium".
What I need this for:
I get a string like: "-13" and I have to render it as html, which I do with dangerouslysetinnerhtml) without having to parse the string.
I am using mathjax-full "^3.0.0".
I assume that after your PR is merged, linethickness="1" will produce normal line thickness, right?

I thought linethickness="1" is supposed to produce the normal line thickness

It is, but that usage is discouraged by the MathML specification:
"A number without a unit is interpreted as a multiple of the reference value. This form is primarily for backward compatibility and should be avoided, prefering explicit units for clarity."

I assume that after your PR is merged, linethickness="1" will produce normal line thickness, right?

After it is merged, it will be in the develop branch.  This will become part of v3.0.2 when develop is merged into master.  At that point, the mathjax-full package will be updated, and you can use npm install to get the fixed version.
In the meantime you could use something like
mml = mml.replace(/ linethickness\s*=\s*"([1-9][0-9]*(?:\.[0-9]*)?)"/g,
          function (match, n) {return ` linethickness="${parseFloat(n)*.06}"`})

in order to work around the problem for now.

Awesome. Thanks a lot for helping! 👍


Bug in makemore part-1, in computing the liklihood

n +=1 should be in the outer loop, I guess.
You want to count the words, not the characters.
A forum would be very nice, Youtube comments could do it, but it is full of nontechnical comments. Could we use pytorch forums maybe?

Sorry, I was confused.

Sorry, I was confused.


add github actions workflow for build and test on linux

This uses the official swift docker images to execute make build test. It uses a test matrix for swift and protobuf versions. Currently it runs tests on both swift 5.1.5 and 5.2 with protobuf 3.11.4. The individual dependencies of the test target are broken into steps to allow better diagnostics and caching of the conformance test runner.

Couple of notes/ideas:
We will need to be vigilant about updating the protobuf versions here -- in particular, the protocolbuffers project does regularly expand the conformance test and we do want to track that.
It might be worth asking the protocolbuffers project if they could include the conformance test binary in their release package (or a separate package?) to avoid the overhead of building it every time.


mysterious dp lib?

when i try and run glados.py, i get this error:
Traceback (most recent call last):
File "/home/mark/coding/glados-tts/glados.py", line 3, in
from utils.tools import prepare_text
File "/home/mark/coding/glados-tts/utils/tools.py", line 3, in
from utils.text.cleaners import Cleaner
File "/home/mark/coding/glados-tts/utils/text/cleaners.py", line 9, in
from dp.phonemizer import Phonemizer
ModuleNotFoundError: No module named 'dp.phonemizer'
i checked on pypi, and dp is actually some project with no description that "Automatically transform recursive functions to dynamic programming". so I'm not sure how this is related. please help.

dp.phonemizer is DeepPhonemizer. It should be automatically installed if you install the dependencies with requirements.txt.


can I make the different widgets show different colors for the same measured value

can I make the different widgets show different colors for the same measured value (for example CPU temperature, I want to show a different color in the gauge, and a different color in the graph, thanks, (Cloud4RPi is really insanely great so thanks)

Thank you for your interest in our product. You can specify user-defined color for each series in a chart widget. Unfortunately, a gauge widget does not provide this feature for now. We will consider your suggestion.


retro-esophageal left/right subclavian artery

Consider changing the primary label for retro-esophageal left subclavian artery MP:0013952 to use the non-hyphenated form (retroesophageal). Add retro-esophageal as a synonym.
Also, add retro-esophageal as a synonym to retroesophageal right subclavian artery MP:0004160.

Primary label is now retroesophageal for both terms. Made both retro-esophageal and retro-oesophageal exact synonyms.


Rework tutorial notebook

Also, please make sure that the tutorial notebook still works (probably in a separate PR). Right now, the notebook assumes a relative path wrt to where Klimakoffer is located, which doesn't really fit anymore.
Originally posted by @sloede in https://github.com/klimakoffer/Klimakoffer.jl/pull/10#r735714549
Optimally, the notebook should contain only something like "Make sure the notebook is copied to the root directory of Klimakoffer.jl, then load Klimakoffer.jl with using Klimakoffer" or something similar.

Rework done.
https://nbviewer.org/urls/gist.githubusercontent.com/jmark/bd7d5b8ba88d1915e966c417b61d0637/raw/klimakoffer.ipynb


Upgrade our issue templates to use GitHub issue forms ✍

Introduction
GitHub has recently rolled out a public beta for their issue forms feature. This would allow you to create interactive issue templates and validate them 🤯.
Appwrite currently uses the older issue template format. Your task is to create GitHub issue forms for this repository. Please use Appwrite's issue templates as a reference for this PR.
Tasks summary:

[ ] Fork & clone this repository
[ ] Prepare bug report issue form in .github/ISSUE_TEMPLATE/bug.yaml
[ ] Prepare documentation issue form in .github/ISSUE_TEMPLATE/documentation.yaml
[ ] Prepare feature request issue form in .github/ISSUE_TEMPLATE/feature.yaml
[ ] Push changes to master and test issue forms on your fork
[ ] Submit pull request

If you need any help, reach out to us on our Discord server.
Are you ready to work on this issue? 🤔 Let us know, and we will assign it to you 😊
Happy Appwriting!

Can you assign me this issue?

As soon as we kick off Hacktoberfest at 12 am EST :)

@KerinPithawala Assigned it to you! All the best 🚀


Total Duration is incorrect (00:00) when video first loads.

While video is sitting in Stop mode, total duration shown on the right side of the scrubbar is 00:00.
There needs to be a duration param we can pass in the options array from the server.

That parameter already exists.
JD - http://j.hn/
Sent from a device with a teeny 3  inch screen.
On Dec 14, 2011, at 5:09 PM, Russell Brooks
<EMAIL_ADDRESS>wrote:

While video is sitting in Stop mode, total duration shown on the right side of the scrubbar is 00:00.
There needs to be a duration param we can pass in the options array from the server.

Reply to this email directly or view it on GitHub:
https://github.com/johndyer/mediaelement/issues/330


Configure SAP API Management policies to avoid CORS issues and generate an API Key

Tutorials: https://developers.sap.com/tutorials/btp-integration-suite-integral-api-management.html
In Step 1.6 Set should be used instead of Add

<AssignMessage async="false" continueOnError="false" enabled="true" xmlns='http://www.sap.com/apimgmt'>
        <Set>
            <Headers>
                *
                set-cookie, origin, accept, maxdataserviceversion, x-csrf-token, authorization, dataserviceversion, accept-language, x-http-method, content-type, X-Requested-With, apikey
                3628800
                GET, PUT, POST, DELETE
                set-cookie, x-csrf-token, x-http-method
            </Headers>
        </Set>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" type="response">response</AssignTo>
</AssignMessage>

Using Add causes the error
header contains multiple values '*, *', but only one is allowed

Thanks jcawley5! I already made the change and created the pull request.

As this has been resolved, I am closing the issue.


community: update Slack link before expiration

The link in https://github.com/risinglightdb/risinglight/pull/382 will expire in 21 days... We should add a permanent link into our GitHub readme.

It seems that my link is now permanent 🤪


Add some Roadmap Mockups

To help inform what our individual components should look like, let's use an open source tool to show some ideas.

inkscape is always good
jupyterlab-drawio would be a good one, as it can write to svg

I'll do a PR getting drawio in there, probably branched from #6

Adding to this: some mockups of URI collapsing for visualization. This will become a larger and larger problem as we develop additional ways to interact with the RDF data.


V2.6 Kiosk mode no data is shown

Hi Tijs,
Fellow Belgian here ;)
As i'm still waiting for my installer to wrap his head around creating an API user I decided to go ahead and set it up with the KIOSK method.
This is my first time working with HomeAssistant so it's a fresh install on vmware ESXI 8 litterally the only hting i've done to it is install HACS and your repository. Your work is pretty intuitive and had no problem setting up the kiosk however i'm not getting any data from it (even though the kiosk url works just fine in a web browser)
Any ideas?

On closer inspection the error seems to be SSL related as it is in https://github.com/tijsverkoyen/HomeAssistant-FusionSolar/issues/103
This error originated from a custom integration.
Logger: custom_components.fusion_solar.sensor
Source: helpers/update_coordinator.py:262
Integration: Fusion Solar (documentation, issues)
First occurred: 5:00:00 PM (1 occurrences)
Last logged: 5:00:00 PM
Error requesting FusionSolarKiosk data: HTTPSConnectionPool(host='region05eu5.fusionsolar.huawei.com', port=443): Max retries exceeded with url: /rest/pvms/web/kiosk/v1/station-kiosk-file?kk=NjOyGILu8PMwJa4hAHC37cPuLiBzGCc7 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')))

A quick inspection of /etc/ssl/certs does in fact reveal the globalsign root CA certificate valid until 2028:

Doing more research:
The SSL certificate for the region05eu5.fusionsolar.huawei.com website is the following:
GlobalSign_RSA_OV_SSL_CA_2018
-----BEGIN CERTIFICATE----- MIIETjCCAzagAwIBAgINAe5fIh38YjvUMzqFVzANBgkqhkiG9w0BAQsFADBMMSAw HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFs U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xODExMjEwMDAwMDBaFw0yODEx MjEwMDAwMDBaMFAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52 LXNhMSYwJAYDVQQDEx1HbG9iYWxTaWduIFJTQSBPViBTU0wgQ0EgMjAxODCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKdaydUMGCEAI9WXD+uu3Vxoa2uP UGATeoHLl+6OimGUSyZ59gSnKvuk2la77qCk8HuKf1UfR5NhDW5xUTolJAgvjOH3 idaSz6+zpz8w7bXfIa7+9UQX/dhj2S/TgVprX9NHsKzyqzskeU8fxy7quRU6fBhM abO1IFkJXinDY+YuRluqlJBJDrnw9UqhCS98NE3QvADFBlV5Bs6i0BDxSEPouVq1 lVW9MdIbPYa+oewNEtssmSStR8JvA+Z6cLVwzM0nLKWMjsIYPJLJLnNvBhBWk0Cq o8VS++XFBdZpaFwGue5RieGKDkFNm5KQConpFmvv73W+eka440eKHRwup08CAwEA AaOCASkwggElMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G A1UdDgQWBBT473/yzXhnqN5vjySNiPGHAwKz6zAfBgNVHSMEGDAWgBSP8Et/qC5F JK5NUPpjmove4t0bvDA+BggrBgEFBQcBAQQyMDAwLgYIKwYBBQUHMAGGImh0dHA6 Ly9vY3NwMi5nbG9iYWxzaWduLmNvbS9yb290cjMwNgYDVR0fBC8wLTAroCmgJ4Yl aHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9yb290LXIzLmNybDBHBgNVHSAEQDA+ MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5j b20vcmVwb3NpdG9yeS8wDQYJKoZIhvcNAQELBQADggEBAJmQyC1fQorUC2bbmANz EdSIhlIoU4r7rd/9c446ZwTbw1MUcBQJfMPg+NccmBqixD7b6QDjynCy8SIwIVbb 0615XoFYC20UgDX1b10d65pHBf9ZjQCxQNqQmJYaumxtf4z1s4DfjGRzNpZ5eWl0 6r/4ngGPoJVpjemEuunl1Ig423g7mNA2eymw0lIYkN5SQwCuaifIFJ6GlazhgDEw fpolu4usBCOmmQDo8dIm7A9+O4orkjgTHY+GzYZSR+Y0fFukAj6KYXwidlNalFMz hriSqHKvoflShx8xpfywgVcvzfTO3PYkz6fiNJBonf6q8amaEsybwMbDqKWwIX7e SPY= -----END CERTIFICATE-----
Which SHOULD be signed by:
GlobalSign_Root_CA_-_R3
-----BEGIN CERTIFICATE----- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH WD9f -----END CERTIFICATE-----
So the chain goes as:
GlobalSign_Root_CA_-_R3 <--- Root CA
GlobalSign_RSA_OV_SSL_CA_2018 <--- website
Inspection of the /etc/ssl/certs/ca-certificates.crt file reveals that the Root CA is in fact installed however running:
openssl s_client -connect region05eu5.fusionsolar.huawei.com:443
gives me the errors:
verify error:num=20:unable to get local issuer certificate
verify error:num=21:unable to verify the first certificate
Now when i manually add the website SSL cert to the /etc/ssl/certs/ca-certificates.crt file the command works
openssl s_client -connect region05eu5.fusionsolar.huawei.com:443
However that does not translate to a successfull connection in the hoas web interface
AND WHAT'S MORE when i restart homeassistant to try to get it to take effect all my changes are reset :(
Hopefully someone with better knowledge of how Home assistant handles it's SSL certs will come along here?

I don't know that much about SSL but could it be that you are running Home Assistant on an outdated (host-)system?

I don't know that much about SSL but could it be that you are running Home Assistant on an outdated (host-)system?

I'm a support engineer aspiring to become system engineer so i know just enough to get me in trouble :p
Hmm the Home Assistant itself is only a day old I got the vmware vmdk file from the home assistant website
I can replicate the behavior on a completely up to date windows 10 VM running on the same host machine
HOWEVER another up to date windows 10 running on bare metal instance can access the site just fine
so... there could be some merit in your suggestion!
The Host is an ESXi 8 machine, I will look into this and report back

Found this:
Might be a moment before I find the time to dig into the host machine as I'm currently at work and I don't like to f*** around with the host remotely.
`Yes, the behavior you are observing could potentially be influenced by the host hypervisor in a virtualized environment. Hypervisors are responsible for managing and allocating resources to virtual machines (VMs), and they can have an impact on various aspects of VM behavior, including networking and SSL/TLS certificate verification.
Here are a few ways in which the host hypervisor might affect SSL resolution in guest VMs:
Time Synchronization: SSL/TLS certificates are time-sensitive, and if there is a significant time discrepancy between the host and the guest VMs, it can lead to SSL verification issues. Hypervisors often provide time synchronization services to guest VMs, and any misconfiguration or issues in this synchronization process can lead to certificate validation errors.
Networking Configuration: Hypervisors manage the networking infrastructure for virtual machines. If there are misconfigurations or limitations in the network setup, such as firewall rules, NAT (Network Address Translation) settings, or DNS resolution, it could result in SSL/TLS connection errors.
Root CA Trust: While the root CA certificate you provided should be trusted by default, there might be situations where the trust chain is not being established properly due to configuration issues on the hypervisor or the VMs. It's worth double-checking the trust store and SSL settings on both the host and the VMs.
Virtualized Hardware: Virtualized hardware can sometimes introduce quirks or limitations that affect the behavior of SSL/TLS connections. Although this is less common, it's possible that certain SSL-related operations might be impacted by virtualized hardware.
Interference: Hypervisor-level security features, such as intrusion detection or network monitoring, could potentially interfere with SSL connections if they are not properly configured.
Since you mentioned that the issue is reproducible on both Windows and Linux guest VMs running on the same host, it's more likely that the issue is related to host-level configurations or settings that affect the behavior of the VMs. I would recommend reviewing the time synchronization, network settings, and security configurations on the host hypervisor as well as the guest VMs to ensure they are properly aligned with your requirements. Additionally, verifying the trust stores and SSL configurations on both the host and the VMs could help pinpoint the cause of the SSL errors you are experiencing.`

Ok, thx for your effort!
So this is not related to this integration but to the virtualisation of the host-system, or the image used to run Home Assistant. Probably better to report it there?

The problem you have is because huawei isn't including the intermediate certificate on their chain. I don't think you can fix this locally.
https://www.ssllabs.com/ssltest/analyze.html?d=region05eu5.fusionsolar.huawei.com&hideResults=on

The problem you have is because huawei isn't including the intermediate certificate on their chain. I don't think you can fix this locally.
https://www.ssllabs.com/ssltest/analyze.html?d=region05eu5.fusionsolar.huawei.com&hideResults=on

Yes after letting it sink in for a while i came to the same conclusion, the ssl lab link just drove the point home. (Great resource thanks for that)
Options:
-Find a way to permanently add the intermediary certificate to the trusted store of my home assistant
I've figured out that placing a .crt in /usr/local/share/ca-certificates and then running update-ca-certificates will do just that butbi have uet to get the web ui to actually pick it up and it does not persist with a reboot.
-Get Huawei to fix their certificate
-Try to get the intermediary into a future release of homa assistant

Email sent, fingers crossed

I've finally recieved an answer from Huawei support and it just shows they don't really grasp the issue :)
*** Solution Description ***
[Problem Description]
[Problem Analysis]
[Root Cause]
[Solution]We figure out that this problem came out because the customer connect with our domain name by Home assistant OS.
That is not our supported scenes to be used.
Please recommend the customer that use Chrome or Edge browser and FusionSolar App to experience our products.

From what I can see the issue is fixed: https://www.ssllabs.com/ssltest/analyze.html?d=region05eu5.fusionsolar.huawei.com&hideResults=on&latest


Can't activate gitlab project

gitlab integrates Drone, when the gitlab project is activated in Drone, an error message pops up, and the error message is empty,
The version of gitlab is 15.3.1, and the version of Drone is the latest version.
docker run
--volume=/var/lib/drone:/data
--env=DRONE_GITLAB_SERVER=http://<IP_ADDRESS>:9090
--env=DRONE_GITLAB_CLIENT_ID=8bae21f3d3c8b5a722ae1aa55c61eb6dbd14d9e1aca9a7f720fb638a3ca4c5ca
--env=DRONE_GITLAB_CLIENT_SECRET=b0927a462d5c19eae39216483ee7a0d83f8c31e5c7b2011c9bb6a8c976a3cd0b
--env=DRONE_RPC_SECRET=b63a8848e42f3d96108e04a5fb99f41e
--env=DRONE_SERVER_HOST=<IP_ADDRESS>:7070
--env=DRONE_SERVER_PROTO=http
--env=DRONE_USER_CREATE=username:root,admin:true
--publish=7070:80
--publish=8443:443
--restart=always
--detach=true
--name=drone
drone/drone:2

Hi @mystrjiang ,
I have faced similar issue. What I have found to be working is that I login to Drone using the main user which is used to integrate Gitlab with Drone and restart Drone Docker container.
After performing these 2 actions, I get to easily enable the repo.
I hope this helps.


Numbering not incrementing correctly

It appears that the increments aren't resetting when getting to the lower level numbers.

closed with https://github.com/markbattistella/docsify-autoHeaders/commit/750866304b21bffd1b4443491d85b5d970481e30


broken markup on long messages

Hi there ))
Request::sendMessage
        do {
            //Chop off and send the first message
            $data['text'] = mb_substr($text, 0, 4096);
            $response     = self::send('sendMessage', $data);

            //Prepare the next message
            $text = mb_substr($text, 4096);
        } while (mb_strlen($text, 'UTF-8') > 0);

This breaks markup on long texts.
I remove this and found that texst that are longer than 4096 symbols are successfully delivers to the chat.
So, may be this part of code is a bug or something?

That code cuts the text but doesn't account for any markdown or HTML markup, if it cuts text while a tag is still open it will error out. In this case you should handle it yourself with your own helper function

According to the docs the message (without any markup) can be no longer than 4096 characters.
@kur1977 Out of curiosity, how long is the message you're successfully sending when you remove the snippet?

@noplanman
After removing this part of code I succesfully sended the marked-up messages that more than twice bigger than 4096 charecters.

@kur1977 I've updated the method in #1163 to allow for splitting or not, returning all message responses.
With that I'll close this off and let users manage their own message sending.


Allow to set masternode / masterip through CLI

When trying to run the benchmark locally this was helpful

/assign @krzysied

Thanks @mrueg !


Add topics filter for matching

This commit improves the matching service with the following enhancements:

Add dropdown for users to select topic before matching
Edit server getRandomQuestionByFilter to filter for selected topics

LGTM!
Note after discussion: A following enhancement to consider is to change storage of code to server-side rather than local storage.


GeoRuby::SimpleFeatures::EWKBFormatError errors

When my model refreshes, I'm getting this error sometimes:

      def read_point
        i = @position
        @position += 16
        fail EWKBFormatError.new('Truncated data') if @ewkb.length < @position
        @ewkb.unpack("@#{i}#{@double_mark}#{@double_mark}@*")
      end

I'm getting this in my production and I also get it in my test cases intermittently. My testcases are threaded which is why I thought they were happening.
But... they are also happening on production which is not using threading and it is just normal Rails / Puma. It seems like there is some kind of race condition being hit when the database records are being refresh.
I'm using Sequel orm which might be the source, but I don't think that is causing it.
Can someone give me some insight why this might be happening intermittently?

Nevermind, the other library I was using wasn't threadsafe:
https://github.com/bsears/sequel-postgis-georuby/pull/1
This PR will fix it for those that use Sequel


Implicit use of Japanese fonts should be avoided in sass files, or Chinese characters will display improperly

...And to be more internationalized, I suggest the project use system default fonts or allow users to customize fonts for the editor and the presentation.

Marp have some problems by specified to Japanese (as you pointed). So I added this issue to v0.0.9 milestone.
The font customizability for editor have implemented by #75 (But have not UI).
For theme, we would use international font (e.g. system based font) in default and Gaia theme. (It means to lose backward compatibility of rendering)

I want to discuss about the default font-family of editor.
https://github.com/yhatt/marp/pull/93#discussion_r81475623


Modal: Content moves to the right in Windows browsers

This problem have almost all early versions scripts of modal windows. In Windows (not Mac) after launch modal window content under modal window moves to the right. Root of problem - scrollbar in Windows have 15px, scrollbar in Mac - 0px.

Same issues in Twitter Bootstrap: https://github.com/twbs/bootstrap/issues/9886 , https://github.com/twbs/bootstrap/issues/9855 . In 3.3.2 problem was solved.

I confirm this behavior on Chrome/Chromium & Firefox, Linux & Win 10; seems like it was tested only on one browser. Another issue is it displays two scrollbars at one moment (as can be seen on the gif).  Probably caused by a hacky usage of modal's wrapper element.

@slider23 nice catch! @tomasvarg. Thanks for the browser information.


Feature: directive template preloading

For directive you can specify templateUrl: url, I don't believe there is a way to preload the file other than to fire ajax request in some controller ahead of time?
One work around I found is use inline template, but then you lose the ability to also load the template on-demand.
I'm thinking of something like
<div>
  <ng-preload="myDirective"></>

  then sometimes latter
  <my-directive></>
</div>

Use case is mainly to eliminate flickering.

I stumbled upon code to use $templateRequest to preload the template.
The problem is templateUrl is a live ajax call, I cannot do that in the framework I am working in because the file paths are not public.
            $templateRequest('logo.html').then(function(html) {
                var template = angular.element(html);
                element.append(template);
                $compile(template)(scope);
            });


Auth refactor

Pull Request Test Coverage Report for Build 212

32 of 34 (94.12%) changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 91.248%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/controllers/authController.js
25
27
92.59%

Totals

Change from base Build 208:
0.2%

Covered Lines:
470

Relevant Lines:
511

💛  - Coveralls


Update repository after transfer

See https://github.com/senzing-garage/garage-roadmap/issues/3

Pull requests:

https://github.com/senzing-garage/g2-sdk-go-mock/pull/106
https://github.com/senzing-garage/g2-sdk-go-mock/pull/107
https://github.com/senzing-garage/g2-sdk-go-mock/pull/108
https://github.com/senzing-garage/g2-sdk-go-mock/pull/109


Unable to connect to elasticsearch7.10 via username / password credentials

exporter: latest
es: 7.10.2
no use username and password
# ./elasticsearch_exporter --es.all --es.indices --es.shards --es.timeout=15s --es.uri=http://<IP_ADDRESS>:9200
level=info ts=2021-09-09T02:26:43.73825064Z caller=clusterinfo.go:214 msg="triggering initial cluster info call"
level=info ts=2021-09-09T02:26:43.73834197Z caller=clusterinfo.go:183 msg="providing consumers with updated cluster info label"
level=error ts=2021-09-09T02:26:43.739367923Z caller=clusterinfo.go:267 msg="failed to get cluster info" err="Get \"http://<IP_ADDRESS>:9200/\": EOF"
level=error ts=2021-09-09T02:26:43.739413442Z caller=clusterinfo.go:188 msg="failed to retrieve cluster info from ES" err="Get \"http://<IP_ADDRESS>:9200/\": EOF"
level=info ts=2021-09-09T02:26:53.748037653Z caller=main.go:174 msg="initial cluster info call timed out"
level=info ts=2021-09-09T02:26:53.748222046Z caller=main.go:209 msg="starting elasticsearch_exporter" addr=:9114

use username and password
# ./elasticsearch_exporter --es.all --es.indices --es.shards --es.timeout=15s --es.uri=http://kibana_system:dlakj2scs@<IP_ADDRESS>:9200
level=info ts=2021-09-09T02:30:01.586649138Z caller=clusterinfo.go:214 msg="triggering initial cluster info call"
level=info ts=2021-09-09T02:30:01.586745901Z caller=clusterinfo.go:183 msg="providing consumers with updated cluster info label"
level=error ts=2021-09-09T02:30:01.587677352Z caller=clusterinfo.go:267 msg="failed to get cluster info" err="Get \"http://kibana_system:***@<IP_ADDRESS>:9200/\": EOF"
level=error ts=2021-09-09T02:30:01.587724141Z caller=clusterinfo.go:188 msg="failed to retrieve cluster info from ES" err="Get \"http://kibana_system:***@<IP_ADDRESS>:9200/\": EOF"
level=info ts=2021-09-09T02:30:11.596232317Z caller=main.go:174 msg="initial cluster info call timed out"
level=info ts=2021-09-09T02:30:11.596400593Z caller=main.go:209 msg="starting elasticsearch_exporter" addr=:9114

I don't think it's related to username/password. This seems networking related. It could be a firewall, or http vs https. Make sure you can reach these URLs in a browser or with CURL.

Because my cluster uses xpack certificate, when I try to use certificate authentication, it prompts x509 error. Now I use the user name and password, and then skip SSL authentication, which is currently working properly

Hello I have a similar issue but a little different.
If I try to provide the elastic username and password as part of the URI, it works fine however, if I set the ES_PASSWORD and ES_USERNAME env variables, I get 401 while trying to connect to the elastic master node. Did someone else encountered this issue? My elastic version is 7.10.1 and i'm using the lastest version of the exporter.

@ggeo1992 I have encountered the same issue with 1.2.0/1.2.1, seems fixed using master

I was about to comment that I'm seeing the same issue as @ggeo1992, but after looking into what you mention, @nvollmar, I see that the release currently tagged as latest, v1.2.1, is 3 months old and thus older than the env variable support. That explains it.

Chiming in one year later.
Is there a fix to this?
I have tried several settings, the only thing working was to put the credentials in the URL and ignore SSL like @ktpktr0  suggested, which works like a charm, but this should not be the solution.
When using the certificate I get a 509 error complaining about the self-signed certificate
When changing from https to http I get a 401 error that it can't log in
Using

Elasticsearch 8.4.0
elasticsearch_exporter quay.io/prometheuscommunity/elasticsearch-exporter tag: v1.5.0

ES_USERNAME and ES_PASSWORD are working fine as long as no any reserved character is used (RFC 3986). This is my initial conclusion but I may be wrong


Encodes a polyline with very close points, but raises DecodingError when decoding it

I seem to have hit some kind of corner case (Python 3.7.7 on macOS):

from pypolyline.util import encode_coordinates, decode_polyline

ps = [(51.7157979, -1.1944854), (51.715798, -1.1944871)]

encode_coordinates(ps, 5)  # b'wvszHphhF?>'

decode_polyline(encode_coordinates(ps, 6), 6)  # [[51.715798, -1.194485], [51.715798, -1.194487]]
decode_polyline(encode_coordinates(ps, 5), 5)  # pypolyline.util.DecodingError: Your Polyline was not valid and could not be decoded

# Rounding coordinates to 5 decimal digits
ps2 = [tuple(map(lambda coord: round(coord, 5), p)) for p in ps]  # [(51.7158, -1.19449), (51.7158, -1.19449)]

decode_polyline(encode_coordinates(ps2, 5), 5)  # [[51.7158, -1.19449], [51.7158, -1.19449]]

I'm not sure the fact that the points are very close to each other has anything to do with the error. Google's Polyline Decoder doesn't seem to have any decoding troubles.

Hmmm this isn't causing an error for me, either on macOS (although 3.7.2) or CI. Are you running v0.2.2?

Sorry, forgot to include the package version. No, I'm on v0.1.17, which is what I get from pip:
$ pip install -U pypolyline
Requirement already up-to-date: pypolyline in ./.venv-airvi/lib/python3.7/site-packages (0.1.17)
Requirement already satisfied, skipping upgrade: numpy>=1.11.0 in ./.venv-airvi/lib/python3.7/site-packages (from pypolyline) (1.18.4)

I'll try to install v0.2.2 from Github Releases later on this week and report the results.
Thank you for a quick reply!

Sorry, v0.2.2 available on PyPI now.

...and the exception is gone. Thank you!


Adds a check for config

Fixes the issue where the config is not loaded first before it tries to make a call for Namespace

/lgtm

Should fix prod error:


Add vectos/formulation

Cool idea :-)
Have you thought about integrating with Dependabot?

@Fristi What is Dependabot?

Automated dependency updates for a lot languages, except Scala (work in progress I believe)
https://dependabot.com/

Thanks for the link. I think they should hire me. :-)
Will check later if that can be integrated somehow.

@Fristi scala-steward is only a few days old and very much WIP so if you see something odd or if it behaves badly, feel free to complain about it.

Sure I'll let you know. I had this idea also for a while 👍So far so good


Deanonymize fields

r? @fitzgen

Was also looking for the test expectation differences so that I could comment on them, see if they were serious or not, and maybe get an inkling for what might be triggering it.

So there are none!
If you would like to see what differences I'm encountered on my system LLVM here it is.

I'd expect that there would be some corresponding bits removed from codegen.

Sorry! Completely forgot about them.

@bors-servo r+

:pushpin: Commit bb80f14 has been approved by fitzgen

:hourglass: Testing commit bb80f14f416d5b7374a8dc5670a7797cb69fb372 with merge 98c15403fa3eab91ba6157eaff201722869f8538...

:sunny: Test successful - status-travis
Approved by: fitzgen
Pushing 98c15403fa3eab91ba6157eaff201722869f8538 to master...

:eyes: Test was successful, but fast-forwarding failed: 422 Update is not a fast forward

I think that means rebase + squash :p

@fitzgen done!

@bors-servo r+

:pushpin: Commit a8663ae has been approved by fitzgen

:hourglass: Testing commit a8663ae36aa7cc1acbe396bfc51863c45d4832c8 with merge fcbe260eacd10df38b563d9658203293d4e1f8ec...

:sunny: Test successful - status-travis
Approved by: fitzgen
Pushing fcbe260eacd10df38b563d9658203293d4e1f8ec to master...


'Model' object has no attribute 'in_multi_worker_mode'

Please make sure that this is a Bug or a Feature Request and provide all applicable information asked by the template.
If your issue is an implementation question, please ask your question on StackOverflow or on the Keras Slack channel instead of opening a GitHub issue.
System information

Have I written custom code (as opposed to using example directory):
OS Platform and Distribution (e.g., Linux Ubuntu 16.04):
TensorFlow backend (yes / no):  yes
TensorFlow version:  tf-nightly-gpu
Keras version:  2.2.5
Python version:  3.7
CUDA/cuDNN version:  9.2/7.0
GPU model and memory: Nvidia gtx 1080

I think keras is imcompatible with tf-nightly-gpu since it works fine with py36/tf 1.13/keras.
Is there any resolution for this problem?

I'm facing this error too... Here is my stacktrace: (Apparently downgrading to tf 1.14.0 solves the issue it seems)
Train on 4710 samples, validate on 1571 samples
AttributeError                            Traceback (most recent call last)
 in ()
----> 1 full_model.fit([co_X_train, X_train], [y_train], callbacks=[cp_callback], epochs=TOTAL_EPOCHS, batch_size=BATCH_S, validation_split=0.25)
4 frames
/usr/local/lib/python3.6/dist-packages/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
1176                                         steps_per_epoch=steps_per_epoch,
1177                                         validation_steps=validation_steps,
-> 1178                                         validation_freq=validation_freq)
1179
1180     def evaluate(self,
/usr/local/lib/python3.6/dist-packages/keras/engine/training_arrays.py in fit_loop(model, fit_function, fit_inputs, out_labels, batch_size, epochs, verbose, callbacks, val_function, val_inputs, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps, validation_freq)
133         'metrics': callback_metrics or [],
134     })
--> 135     callbacks._call_begin_hook('train')
136     callbacks.model.stop_training = False
137     for cbk in callbacks:
/usr/local/lib/python3.6/dist-packages/keras/callbacks.py in call_begin_hook(self, mode)
101         """Helper function for on{train|test|predict}_begin methods."""
102         if mode == _TRAIN:
--> 103             self.on_train_begin()
104         elif mode == _TEST:
105             self.on_test_begin()
/usr/local/lib/python3.6/dist-packages/keras/callbacks.py in on_train_begin(self, logs)
217         """
218         for callback in self.callbacks:
--> 219             callback.on_train_begin(logs)
220
221     def on_train_end(self, logs=None):
/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/callbacks.py in on_train_begin(self, logs)
903   def on_train_begin(self, logs=None):
904     # pylint: disable=protected-access
--> 905     if self.model._in_multi_worker_mode():
906       # MultiWorkerTrainingState is used to manage the training state needed
907       # for preemption-recovery of a worker in multi-worker training.
AttributeError: 'Model' object has no attribute '_in_multi_worker_mode'

I had the same issue. Downgrading to tf 1.14.0 solved it for me as well.
The issue first appeared for me when i tried to document the learning process by using callbacks.
Without callbacks tf 1.15.0 worked as well.

I got this error when the mixed usage of Keras API and tensorFlow.keras API.
For example:
from keras.models import Model
from TensorFlow.keras.callbacks import ReduceLROnPlateau

This error may occurs if you trying to use or combine tensorflow(tf) with keras package or layers inside a model or at while compiling a model
for example simply instead of using
tf.keras.callbacks.ModelCheckpoint()
tf.keras.callbacks.CSVLogger
then remove tf write the code as
keras.callbacks.ModelCheckpoint()
keras.callbacks.CSVLogger

happy coding

@Hemanthkumar2112 thanks man. Worked for me with tf-gpu==1.15.0


Nvidia support regarding open source kernel modules?

Will Hyprland support the Nvidia open source kernel modules? I think we can forget the proprietary drivers, but as the open-source drivers for newer generation GPUs have come out as the new and recommended default for Ada Lovelace, Turing, and Ampere, I think the possibility of support should start to be considered.

There is no difference between open-source and proprietary modules from HL's perspective

What do you mean by support, though? Nvidia has always been supported - look at the commits and nvidia-related issues.

Also, nvidia-open doesn't support rtd3 on Turing gpus, so no.

what @izmyname said, basically.
Officially supported - no.  All the implementations that are a notorious buggy mess are in the userspace driver, which remains FOSS.

Please, please, please stop calling the nvidia drivers "open source". They are absolutely not, only the kernel modules are, which is like 20% of the driver.

I still try to provide the best support regardless of the gpu - but I can't guarantee anything, esp with nv.

what @izmyname said, basically.
Officially supported - no.  All the implementations that are a notorious buggy mess are in the userspace driver, which remains closed source.

Please, please, please stop calling the nvidia drivers "open source". They are absolutely not, only the kernel modules are, which is like 20% of the driver.

While you are right, I kind of assumed native support for e.g. hardware cursor. Anyhow, just a small question, thank you for all your work as always vaxry!


Bot thinks my OS is 32 bit although it's 64 bit

It's now asking me for a 32 bit version of encrypt.dll. How do I fix it?

Answer: install the 64-bit python.


Permit changing of device icon in Homekit

Is your feature request related to a problem? Please describe:
The fan device icon appears as a standing desk fan in the Home app. The icon cannot be changed to the "ceiling fan" icon.
Describe the solution you'd like:
Permit changing of the device icon in Homekit.
Additional context:
In the Home app, smart switch icons can be changed to show the device it controls e.g. light, standing fan, ceiling fan, etc.

Hello,
On a Mac running macOS Mojave (10.14.5) I have the same experience as you have.  But on a Mac running Ventura 13.1, or an iPhone with iOS 16.3 I am able to select a ceiling fan icon from a choice of three (standing, desk and ceiling).
What version of your device's operating system are you running.

Hello,
I am using an iPhone 13 Pro Max running iOS 16.3. My fan is a Haiku H/I Series.
The issue is replicated on an iPhone X running iOS 16.2 and an iPad Air running iPadOS 16.3.

Homebridge version: v1.6.0
Plugin version: v0.5.3
This is the only version of the plugin I have used (first installed last week), so I am unable to tell if it's an issue that started after an update.
I just tried setting the plugin as a child bridge, and unfortunately the problem persists.
Thanks!

Are you displaying the fan and possibly its lights and switches in HomeKit as a single tile or separate tiles?  When I show mine as a single tile it appears to lock the icon.

My fan doesn’t have lights but setting “showTemperature” to False fixes the issue! Looks like exposing the temperature sensor to HomeKit locks the icon?

After changing the icon, re-enabling the temperature sensor locks the icon to the new icon.

That's good.  Are you displaying the fan and the temperature sensor as a single tile or separate tiles?

PS - that was a great idea to disable the temperature sensor

Hello. I've looked into this and it seems the best way for me to deal with this issue would be for the plugin to treat the fan and all the switches and sensors as individual accessories.  I imagine that could be done in a configurable way but to be frank, given there is a relatively easy workaround, I'm not keen to put in the effort.

I agree, maybe a brief note in the readme about the workaround might suffice

Sounds good.  This is what I propose to add to the readme.  Let me know if you have notes.
Other
If you find you cannot change the fan icon in Apple's Home app and you are showing your fan with its lights and/or switches as a single tile, then show it as separate tiles.  That should unlock the icon so you can change it, then set it back to Show as Single Tile and the icon will be locked with your change in effect.
In some cases the Home app doesn't have the option to Show as Separate Tiles or Show as Single Tile in the Fan's settings, e.g. a Haiku H/I with no light and no optional switches being shown.  In this case the work-around is to add "showTemperature": false to your  config.json for the fan, restart, then change the icon, then remove the "showTemperature" line or change the setting to true, and restart.

Looks great!

Okey doke.  The readme is updated now.  Thanks for your help.


Fix cluster state on initial creation

Previously, we attempted to copy over cluster state while polling for status, but accidentally overrode the local pointer address instead of the object itself. This change copies the cluster over. Added test cases for cluster and endpoint services, which behaves the same way.

TFTR!


Better return codes

If guetzli fails for some reason, it always returns 1. I would much rather see that different values were used. Like this:
1: can’t find file
2: no output file
3: too many arguments
And so on. Very simple change

I have unofficial fork of guetzly here, you can create issue there and I will add this support.


Issue-46 Updated MjpegFileWriter.java and removed commented-out-line

@istiaqahmed121998 yes, you can merge it


Unexpected behavior for return clauses in a query

CQL R1, STU 2 has the following description for return clauses:
The return clause of a CQL query allows the results of the query to be shaped. In most cases, the results of a query will be of the same type as the primary source of the query. However, some scenarios involve the need to extract only specific elements or to perform computations on the data involved in each element.

Based on this, the understanding is that items associated to the specified retrieve may be returned or the result of a function that is operating on something within the retrieve.
It does not appear that items that are foreign to the actual retrieve should be able to be returned. For example:
["Intervention, Performed"] I
    return ["Procedure, Performed"]

However, CQL-to-ELM appears to be supporting
["Intervention, Performed": "Referral"] I
    return ["Procedure, Performed": "Laparoscopy"]

Is this by design?

This is legal CQL, yes. The expression in a return is allowed to be any arbitrary expression. In this case, it's hard to see how that would be useful, and the result would be the same as just invoking ["Procedure, Performed": "Laparoscopy"]. There are, however, valid use cases for returning an expression that is not related to the source, such as:
["Procedure, Performed": "Laparoscopy"] P
  return 'There are Laparoscopy Procedures for this Patient'

In the example provided, I would think you would want to check for the nullness of P before returning that there were Laparoscopy procedures.
For example,
["Procedure, Performed": "Laparoscopy"] P
return if P.code is not null then 'There are Laparoscopy Procedures for this Patient'
In that case, that would not violate what I'm suggesting, because the return is based on something specifically associated to an item in the retrieved set.
If you are suggesting that the return does not have to be associated with anything in the retrieve, I think that could cause an issue in CQL-based HQMF, because the HQMF's data criteria section would show up with an entry based on the retrieve in the CQL definition, which may never get used anywhere. For example, if I had done something like the following, the Intervention would should show up in the corresponding HQMF's data criteria because of rules in CQL-based HQMF, even in the case where the Intervention was not used anywhere else in the logic:
["Intervention, Performed": "Referral"] I
return ["Procedure, Performed": "Laparoscopy"]
The presence of that data criteria entry could have an impact on what gets reported for the measure.

In the example provided, I would think you would want to check for the nullness of P before returning that there were Laparoscopy procedures.

Well, checking that the Code is not null isn't quite checking for the "nullness of P". You could have a Procedure, Performed that didn't have a Code, and it would still be a Procedure, Performed. I think what you're saying is that you'd want to make sure that there was at least one Procedure, Performed in the result, which is what the constant return does, because of the fact that the return of a query is distinct. If there are no Procedure, Performed elements, then the result of the query will be an empty list:
{ }

If there are any Procedure, Performed elements, then the result of the query will be:
{ 'There are Laparoscopy Procedures for this Patient' }

Thanks Bryn. I agree in theory, but I don't expect that unknown procedures would actually be recorded. Even if they were, I have a difficult time seeing where it would be useful to capture them. It's possible. At any rate, this does not really address the issue from a CQL-based HQMF side that I'm trying to bring up. Perhaps this is more specific CQL-based HQMF 'issue' is a discussion for another forum though. Thoughts?

Yeah, from the base CQL specification perspective, the return clause is by design any expression and I wouldn't want to limit that flexibility. I can see it maybe being guidance in the CQL-Based HQMF IG, or even style-guide type material though.


Code of Conduct page should include phone numbers for contacting committee

I'm not at a computer right now to make the PR, but the CoC phone number is: +447743352447


retry connection on 'unexpected packet in response to channel open' error

after computer came back from sleep
07:24:43PM: debug: mdns.LocalIfaceMsgFilter: Checking on: <IP_ADDRESS>:5353
ERROR: logging before flag.Parse: E1003 19:24:43.951572   39341 portforward.go:178] lost connection to pod
07:24:43PM: debug: KubePortForward: Finished port forwarding (err: %!s(<nil>))
07:24:43PM: debug: ReconnSSHClient: Received err: ssh: unexpected packet in response to channel open: <nil> (isEOF: false)
07:24:43PM: error: TCPProxy: Could not establish remote connection to '<IP_ADDRESS>:80': ssh: unexpected packet in response to channel open: <nil>
07:24:43PM: debug: mdns.LocalIfaceMsgFilter: Checking on: <IP_ADDRESS>:5353

btw, pointing to ip that does not exist results in the following error
07:29:09PM: debug: ReconnSSHClient: Received err: ssh: rejected: connect failed (Connection timed out) (isEOF: false)
07:29:09PM: error: TCPProxy: Could not establish remote connection to '<IP_ADDRESS>:80': ssh: rejected: connect failed (Connection timed out)


Improve the documentation grammar in some places

Some documentations are unclear - the most noticeable are the missing usages of the word "the", and in general others are unclear in the way the sentence is constructed.

I'm a new fan and a prospective contributor - first I will try to improve the documentation on Observables.

That's fantastic @fnqista and very appreciated. :)
I plan to overhaul many docs in April so please feel welcome to share any suggestions about anything (confusing explanation, missing examples etc.) whenever you encounter it and I will make sure to address it.

I should have linked this issue in monix.io - I will just close this since I have submitted a PR also on the monix.io repo


How to call downloader script

Hello,
I am having issues running any notebook that depends on downloaded files ( from VA_CalebAFaces to MuseGAN).
It seems that my app/data folder is empty, however, I cannot find any call on the notebooks to download the files.
But I do see the downloader scripts in app/scripts.
I guess this is an easy fix, or I might be missing something obvious? :)

My bad, it was there all along :)
https://github.com/davidADSP/Generative_Deep_Learning_2nd_Edition#-downloading-data


Unable to initialise genesis file

Unable to initialise genesis file
Description
In my understanding, when generating the genesis.json file we should be able to point to the local directories using the --validators-prefix, --validators-path flag, or the --validators flag in order to pass information about the validators to the genesis command.
However, it seems that the CLI only accepts the --validators flag. And it is unclear what format it expects if we use the format
--validators <P2Pport1:Address1:BLSPubKey1>,<P2Pport2:Address2:BLSPubKey2>,<P2Pport3:Address3:BLSPubKey3>,<P2Pport4:Address4:BLSPubKey4>

We receive the following error.
bash: File name too long

If we pass either  --validators-prefix or --validators-path flags when the --validators flag is present, the following errors are thrown:
if any flags in the group [validators validators-path] are set none of the others can be; [validators validators-path] were all set
if any flags in the group [validators validators-prefix] are set none of the others can be; [validators validators-prefix] were all set

These errors make sense so when I try removing the --validators flag, we receive the following error:
genesis validators aren't provided

As a consequence it seems like the --validators flag has to be submitted. Kindly confirm the expected format of this flag with an example input.
Your environment

PopOS (Ubuntu 22.04)
Latest Comit #5011dd2
No containerization as of now.

Steps to reproduce

Initialise the polybft secrets

./polygon-edge polybft-secrets --data-dir test-chain --num 4 --insecure

Expected behavior
Genesis file should be created.
Actual behaviour
Unable to generate genesis.json file.

This feature works now. Looks like the transaction allowlisting / blocklisting flags are required in the genesis command. Closing this issue.


Best way to bundle non-npm libraries in a new directory?

Does anyone know the best way to add a new directory (relative to the root) for jquery plugins? I am trying to add some css/js from a plugin that has no npm package and now webpack cannot find the files when I try to add them to the vendor bundle. I've tried to add an alias in the webpack.config.vendor.js file but webpack still cannot find them. My files are in /libs (at the same level as node_modules).
Is there any recommended (better) way to do this? I'm still pretty new to all of this...
my webpack.config.vendor.js:
var isDevBuild = process.argv.indexOf('--env.prod') < 0;
var path = require('path');
var webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var extractCSS = new ExtractTextPlugin('vendor.css');

module.exports = {
    resolve: {
        modules: ["libs", "node_modules"],
        alias: {
            libs: path.resolve(__dirname, 'libs', 'assets')
        },
        extensions: ['.js']
    },
    module: {
        loaders: [
            { test: /\.(png|woff|woff2|eot|ttf|svg)(\?|$)/, loader: 'url-loader?limit=100000' },
            { test: /\.css(\?|$)/, loader: extractCSS.extract(['css-loader']) }
        ]
    },
    entry: {
        vendor: [
            'aurelia-event-aggregator',
            'aurelia-fetch-client',
            'aurelia-framework',
            'aurelia-history-browser',
            'aurelia-logging-console',
            'aurelia-pal-browser',
            'aurelia-polyfills',
            'aurelia-route-recognizer',
            'aurelia-router',
            'aurelia-templating-binding',
            'aurelia-templating-resources',
            'aurelia-templating-router',
            'bootstrap',
            'bootstrap/dist/css/bootstrap.css',
            'jquery',
            'material-kit', //just for testing I added them both...
            'libs/material-kit' //just for testing I added them both...
        ],
    },
    output: {
        path: path.join(__dirname, 'wwwroot', 'dist'),
        publicPath: '/dist/',
        filename: '[name].js',
        library: '[name]_[hash]',
    },
    plugins: [
        extractCSS,
        new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }), // Maps these identifiers to the jQuery package (because Bootstrap expects it to be a global variable)
        new webpack.DllPlugin({
            path: path.join(__dirname, 'wwwroot', 'dist', '[name]-manifest.json'),
            name: '[name]_[hash]'
        })
    ].concat(isDevBuild ? [] : [
        new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } })
    ])
};

When I run webpack --config webpack.config.vendor.js:
x:\somepath>webpack --config webpack.config.vendor.js
Hash: 99022573b1fcdca2ba39
Version: webpack 2.1.0-beta.25
Time: 2113ms
                               Asset    Size  Chunks             Chunk Names
89889688147bd7575d6327160d64e760.svg  109 kB          [emitted]
                           vendor.js  986 kB       0  [emitted]  vendor
                          vendor.css  315 kB       0  [emitted]  vendor
  [74] dll vendor 12 bytes {0} [built]
    + 80 hidden modules

ERROR in dll vendor
Module not found: Error: Can't resolve 'libs/material-kit' in 'x:\somepath'
 @ dll vendor

ERROR in dll vendor
Module not found: Error: Can't resolve 'material-kit' in 'x:\somepath'
 @ dll vendor
Child extract-text-webpack-plugin:
        + 7 hidden modules

Thanks!

Just referencing a directory won't include its files. You need to import the actual .js files into your application. For example, in boot-client.ts,
import '../../some/directory/file.js';

Make sure that works before trying to put them in your vendor bundle.

@SteveSandersonMS So just to be clear here. If I have a random TS file (living in wwwroot let's say) I want to include with the site (code written against a jQuery plugin) I just import the file into my boot-client.ts? I don't need to then do anything with webpack or any other integration?
Thanks!

If I have a random TS file (living in wwwrootlet's say)

Preferably don't put .ts files in wwwroot, because then you'll deploy them to production and make them world-readable.

I just import the file into my boot-client.ts? I don't need to then do anything with webpackor any other integration?

Importing the file will cause it to be included in the bundle, and its code will be evaluated when your page starts up. Whether evaluating the code does what you want depends on what the code is and what you want it to do :)


Build and upload for conda

Would be nice to have sanic uploaded on anaconda.org to be accessible via the conda package manager (see: https://github.com/conda/conda#building-your-own-packages)

Dupe of #848


[New Feature]: Implement a compiler server

Currently each completion starts in a new process. Reusing the same JVM as daemon process should improve performance.
Scope

Reusing the same server for LS will be considered under a separate issue.
At this stage a single server process will only handle a single project.
Current implementation will not be removed. Other CLI commands will keep using the existing implementation. If the communication to the server fails, CLI will fallback to the current implementation.

Changes to the CLI
Name daemon is picked in the CLI to avoid any confusion with Ballerina services.

bal build --no-daemon - This will build the project without using the daemon.
bal daemon start - This will start the daemon manually. Normally this is not needed as the daemon will be started automatically when needed.
bal daemon stop - This will stop the daemon manually.
bal daemon status - This will show the status of the daemon.

Communication
Server will start on a random port in a predetermined range. This port will be written to a file in the project build directory.
         handshake: validate server version
CLI --------------------------------------------> Compiler Server (Deamon)
    <--------------------------------------------

       request: build/test/run for a given root
     ------------------------------------------->
     <-------------------------------------------

Complication

We only support a single project because the existing compiler is not designed to run multiple projects in the same JVM. To enable it we may need to get rid of any global state.
There is a risk of accumulating stale caches. We need to monitor the build directory and clean server if it is deleted. Maybe we need a time-to-live as well.
Ballerina listeners can't currently be started in only the loopback interface. This is a security issue. We may need to fix this if we are to use Ballerina for the backend.

How to handle multiple projects. Assume, I have 3 active projects, and I want to build these three ones after the other. How the demon behaves in this situation?
In LS implementation we can handle multiple projects IIRC. @IMS94 Can you please comment, on how we handle this?

Multiple package support is not implemented in the Project API level. I.e. multi-package projects. I assume the lang-server uses a map of Projects and load the Project instances based on the file path.

Yes, we don't support multi package projects at Project API level. But as @sameerajayasoma said, LS keeps a map of projects (user can have several Ballerina projects in the current VSCode workspace) and use the file path to differentiate the project when required.
We do that in BallerinaWorkspaceManager class. I think we can use a single process to support multiple projects at the compile server level using a similar approach. We have to make sure that no 2 compilations run for the same project at the same time. In LS we have used locks per project to achieve that.
Since the client will communicate with the compiler server over a port, I think we will need a way to  do the following:

Start a compilation for a given project
Cancel the compilation of a project (If user press Ctrl +C)
Check compilation status of a project (already running or not) -  (the project root path can be the identifier) or away to get notified when compilation is finished.

Will the request sent from client be blocked until the compilation completes?

Above things are in addition to checking the compile server status.
Impact for Language Server
Currently, LS keeps track of user's changes to the files in memory (there's a syncing protocol defined in language server protocol for that). Because of that, will LS be able to benefit of a compiler server (since the in-memory changes have to be reflected in the compile server to perform the compilation correctly) ?

Thanks @IMS94
I think having a single process will simplify things. I will use that approach.

Cancel the compilation of a project
Yes, I think we should use a duplex communication channel (similar to LS protocol), it can be TCP socket or a WebSocket instead of REST. Then CLI can send additional messages (such as Ctrl+C) while the compilation is happening.

Will the request sent from client be blocked until the compilation completes?
Yes I think it makes sense reject or block parallel compilations.

Impact for Language Server
I as pointed in scope section, eventual goal is to merge LS and this compiler server. At that point we should find a code level abstraction that preserve the current behavior for LS side (ie: compile from in memory) while also providing CLI behavior of compiling form disk.

Caveat regarding the single process: I think lower passes (such as codeGen) is not tested in multi-project mode, since LS only needs pre-bir-gen side. So there might be race-conditions in that prat of the compiler.

Users can have unsaved documents open in VSCode.
I am not planing this level in integration yet, but when we do, we'll have to refactor code to see different open files depending on the path (CLI vs VSCode)

Sorry I didn't fully understand the question. But AST not sharable between CLI and VSCode (if there are open files that are not saved), is that what you are referring ?

@jclark suggested trying to communicate between the CLI and the compiler server using the LS protocol as well. I am trying this out.

Progress
Currently I have implemented a CLI that can talk to the backend via the language server protocol. I managed to send the build command as workspace/executeCommand instruction and execute it in the backend.

Normal bal build takes 5450 ms.
First run of the compiler server approach takes 3000 ms. (out of which backend is 1500ms)
Didn't expect this to be faster. I think it's only faster because I am skipping some steps.
Subsequent runs of the compiler server approach takes 1400 ms. (out of which backend is 200ms)

Plan

I need to figure out all and implement the missing steps of compiler server backend (lookup central, create fat jar).

To support run we need to send program output incrementally. I think we can use LSP's new $/progress feature for this.

It is still too slow. I suspect cli is too slow since it still has all the classes. We may need to write a thinner CLI. (James suggested maybe we should look into a non-JVM language). But need to profile before doing anything.

Another option is to switch paths and focus on the VSCode.
Challenge 1 : Need to learn VSCode extension code.
Challenge 2 : Where to provide args?
Challenge 3 : We can provide run command off of the in memory buffers, but build needs to see on disk files. This is difficult to achieve under the current project API since it sees a virtual file system. We could autosave.
Advantage 1 : This may be more useful for the average user, assuming they use VSCode more often than CLI.
Advantage 2 : I don't need to worry about LS process management or writing a client.

@manuranga I prefer having a compiler sever exposed via the CLI (instead of focusing only on the VSCode experience), because probably we can expect considerable performance improvements of the debug server with the proposed CLI approach.
To provide a bit of context, right now the debugger server depends on the bal run command to launch the debuggee program.Therefore, if the user wants to rerun a debug session even without doing any code changes, the subsequent sessions will still go through all the compilation phases again and again, which could be avoided with this compiler sever approach.
So once you have a working version of the compiler server, I'm happy to try integrating the same with the debug server and working on the possible improvement points.

Ballerina extension has many UIs where a user can start a Ballerina application.

But they all seem to come down to ether

Runing bal command form VSCode
Running the Debug Server (DS) which in turn runs the bal command

Finally the compiled program is executed as a yet another process.
Solution A)
Make the bal command use a background server, and not touch the VSCode extension.
Pro: No need to for me to touch the VSCode extension code.
Con: Add an additional layer, namely, CLI calling Compiler Server. Currently the added latency is too much for this approach to be an improvement over existing (2-3s). Maybe possible to improve using a thinner approach.
Solution B)
Compile inside the exiting LS process in above case 1, and compile inside DS in case 2.
Pro:  Faster
Con: I have to touch both LS and DS
@NipunaRanasinghe and others, I currently think solution B is the way to go. wdyt?

@jclark pointed out that for above solution 2 to work I need to increase the lifetime of DS. AFAIK we start a DS every time use a start a new debugging session. Please confirm @NipunaRanasinghe. Does it make sense to keep a DS running and only connect to it for each session?
Solution C)
Compile inside the exiting LS process in above case 1, DS talks to LS in case 2.
Solution D)
Have a separate Build Server, make LS, DS, CLI all talk to it.

@jclark pointed out that for above solution 2 to work I need to increase the lifetime of DS. AFAIK we start a DS every time use a start a new debugging session. Please confirm @NipunaRanasinghe. Does it make sense to keep a DS running and only connect to it for each session?

@manuranga yes true. Right now we use the single session mode approach for our DS, mainly to avoid complexities in multi session mode (e.g. having to handle multiple client sessions and remote VMs at once, requirement to implement the whole DS in a concurrent-safe way).

so for solution B, we will require a major rewrite in the DS side.
for solution C, we will have to open another connection with LS (per session?), which will make DS to be depended on LS (which is okay assuming that LS is guaranteed to be always running and stable)
regarding solution D, isn't it somewhat similar to solution A? (apologies If I'm missing something obvious) because if we have a separate build server and make CLI talk to it, in LS and DS we should be able to keep using CLI commands (which will talk to the build server similar to option A)
on a side note, IMO it might be better to look for a solution which will abstract this compilation to a layer coupled with CLI (instead of implementing the same in each component like LS and DS), which will become more scalable incase we'll have more use cases similar to LS and DS in the future.

@manuranga we did a PoC sometime back to see if we can use LS to build the executable the blocker we faced was that the Project API not designed to handle syntax node analysis tasks again after codegen. Have you notice the same or if so we might have to solve that before hand. Otherwise once you do the codegen you will not be able to reuse the same project in LS.

regarding solution D, isn't it somewhat similar to solution A? (apologies If I'm missing something obvious) Because if we have a separate build server and make CLI talk to it, in LS and DS we should be able to keep using CLI commands (which will talk to the build server similar to option A) right?

In Solution A, the CLI is not long-running. It has to be started each time which adds latency. Solution A will only be feasible after significant changes to CLI since current one is too slow. But we get to keep the CLI abstraction. In Solution D, LS and DS has to communicate with a per-running Build Server via TCP.

@manuranga we did a PoC sometime back to see if we can use LS to build the executable the blocker we faced was that the Project API not designed to handle syntax node analysis tasks again after codegen. Have you notice the same or if so we might have to solve that before hand. Otherwise once you do the codegen you will not be able to reuse the same project in LS.

Haven't noticed yet, will keep an eye. If someone remembers what exactly broke it would be helpful.
After looking at above, I think Solution C is the lowest cost, others will take 1 month at least. Since getting something released is high priority, my current plan is to get Solution C case 1 as the first stage, tested and released first. We can reconsider the plan after that.

I am trying to find a place to show a stop button for long running processors (such as services). I couldn't find a good contribution-point. Only options I can think of is to add a whole panel, instead using built-in ᴏᴜᴛᴘᴜᴛ panel. This is bit of extra work but looks like it's needed.
@gigara Does that sound Ok?

@manuranga How about Progress notification?

Thanks @gigara, that actually gave me even easier idea. I added a new command to stop a running program, Ballerina: Stop. Maybe I can even link it form the output window.

@jclark raised a point on CLI inputs and CLI specific features (such as reading a password). I just check and it doesn't work in the current debugger either, but in current Run it does. DAP spec gives a way for the debugee to run in a CLI. We could do something slimier. Should it be opt-in or the default behavior?

@manuranga We have already implemented this run-in-terminal feature to support CLI inputs. (For instructions refer to the terminal attribute documentation in Ballerina launch.json configurations). However, currently the user has to opt-in for this (which is the common behaviour in other language debuggers as well), but we can easily make it the default behaviour if we want to.

Another option is to emulate user inputs by sending them to Server over LSP, where Server will feed them into debugee via the pipe. Under this approach we still can't support full CLI features (such as reading passwords) and it's more work for the extension side.
If we use the above run-in-terminal feature, do we still need to think of this path?

We also discussed the possibility of creating Run as another (long running) debugger. In this case we will get the default debug UI for free.
IIUC this is equivalent to running the debugger without having any breakpoints, right? Looks okay but we may need to check on any performance impacts of always running the JVM in debug mode (https://stackoverflow.com/questions/3722841/side-effects-of-running-the-jvm-in-debug-mode)

We have already implemented this
Great. Opt-in is good.

If we can use the above run-in-terminal feature, do we still need to think of this path?
This is to support input in the default case. Of course we can decide not to support inputs in default case and only support it in run-in-terminal.

IIUC this is equivalent to running the debugger without having any breakpoints
No. The idea is to show as a debugger in the UI, but actually run java normally. This is just to get the floating toolbar appear in the UI.

Hi @NipunaRanasinghe and others,
As the next iteration, my plan is to convert current implementation into a debugger.
I have experimented with DebugAdapterInlineImplementation, it is working. I am using the Run Without Debugging feature (which currently just debugs) to trigger fast-run now. Regular Debug still goes via existing path. I am planing to rewire Run code lens to also trigger Run Without Debugging command.
This gives me the floating debugging button toolbar. However I couldn't not figure out how to disable Pause button in the toolbar. I am setting the capabilities to say I don't support supportSuspendDebuggee but it still shows up.

@manuranga apologies for the late response.

Hi @NipunaRanasinghe and others,
As the next iteration, my plan is to convert current implementation into a debugger. I have experimented with DebugAdapterInlineImplementation, it is working. I am using the Run Without Debugging feature (which currently just debugs) to trigger fast-run now. Regular Debug still goes via existing path. I am planing to rewire Run code lens to also trigger Run Without Debugging command.

I think this approach will be more promising as we'll have more control over the process we are running, with the support of DAP capabilities.

This gives me the floating debugging button toolbar. However I couldn't not figure out how to disable Pause button in the toolbar. I am setting the capabilities to say I don't support supportSuspendDebuggee but it still shows up.

The supportSuspendDebuggee flag actually indicates whether the debuggee should stay suspended(or resume the execution) when the debug server gets disconnected.
It seems DAP doesn't support disabling the pause functionality via the capability registration atm. Probably we can open an ticket in DAP Repository to verify it with the maintainers.

In today's call with @sameerajayasoma we summarized the solution in to 3 approaches

Make sure the tree is always in valid state after desugar. Same tree used for semantic api after backend.
Clone the tree before backend. Use one for backend and other for semantic api.
Throw away the tree after backend and start from a new tree for semantic api.

Currently I am exploring 3.

I tried the approach 3. It solved some issues I had with before, but some Semantic APIs are not working.

Found out cloned BLangPakage is missing a link to top level nodes. Looking into it now.

Approach 3 seems promising, after changing to invaliding each document, instead the whole module. Simple service works under run fast now. In the process of creating unit tests for this.
Still having issues with multi module projects.

Looks good. What is the percentage run improvement with FastRun?

nBallerina project run
Cold start CLI = 2m 8s
Warm start CLI = 7s
Fast run = 3.8s
hello world run
Cold start CLI = 24s
Warm start CLI = 1.13s
Fast run = 200ms

What exactly is the difference between cold and warm start?

Fist build or after bal clean it's cold. Subsequent builds are warm up to 24h.
In 2201.8.4 the warm CLI times are significantly improved.

Multi-module projects work if I remove the shrinkDocumnet fix, which is a temporary fix for OOM issue when working with healthcare libraries. It removes source as soon as each module is code generated. But that means Fast Run feature crashes the LS when working with healthcare libraries.
There is a chance this will be fixed by the other fix for the OOM issue, but it is not yet released.


[#SUPPORT] Only enable routes drop monitor in dev and prod

What?
The router_routes_drop monitor get easily triggered when running the tests in environments with little routes, like ci or staging.
We do not need to monitor this on those environments, but it is still useful in prod. We can also keep it in dev for testing/development.

Note: as we add count, it will actually recreate the monitor in prod, because the ID changes (add a .0 suffix). That is fine and expected.

How to test?
You can apply these monitors in dev like this:
PAAS_CF_DIR=$(pwd)
mkdir /tmp/testing_tf
cd /tmp/testing_tf
ln -s ${PAAS_CF_DIR}/terraform/datadog/{datadog.tf,variables.tf,router.tf} .

terraform apply -var datadog_api_key=$(paas-pass datadog/dev/datadog_api_key) -var datadog_app_key=$(paas-pass datadog/dev/datadog_app_key) -var aws_account=dev  -var env=hector -var-file  ${PAAS_CF_DIR}/terraform/dev.tfvars

You will see that it creates the monitor.

Remember do terraform destroy
Who?
Anyone but @keymon

Can we rename the variable __datadog_monitor_total__routes_drop__enabled to datadog_monitor_total_routes_drop_enabled?
This would be more in line with the rest of the style.