ci: create issue labeled reply

Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.
List which issues are fixed by this PR. You must list at least one issue.
If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
Changelog
ref: https://github.com/flutter/flutter/issues/73478 https://github.com/flutter/flutter/issues/73472 https://github.com/flutter/flutter/issues/73468 https://github.com/flutter/flutter/issues/73455 https://github.com/flutter/flutter/issues/73337
Now when you label waiting for customer response, the GitHub Actions will help you to comment this.
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test exempt.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I signed the CLA.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Can you add more context? What is this change for?

Can you add more context? What is this change for?

Can you add more context? What is this change for?

Like https://github.com/xrkffgg/test-ci/issues/63
when you add a specific label, the github actions bot will help you to comment this to remind users. Save yourself the need to comment manually.
In this PR, when you label waiting for customer response, the bot will help you to comment

${{ github.event.issue.user.login }} is the issue auth

Hello @${{ github.event.issue.user.login }}. Please provide your flutter doctor -v, your flutter run --verbose and a minimal complete reproducible code sample? Thank you!

Can you add more context? What is this change for?

Like https://github.com/xrkffgg/test-ci/issues/63
when you add a specific label, the github actions bot will help you to comment this to remind users. Save yourself the need to comment manually.
In this PR, when you label waiting for customer response, the bot will help you to comment

${{ github.event.issue.user.login }} is the issue auth

Hello @${{ github.event.issue.user.login }}. Please provide your flutter doctor -v, your flutter run --verbose and a minimal complete reproducible code sample? Thank you!


Move all cmake machinery under tst

To reduce confusion we want to move all the cmake machinery we currently have to live under the test folder. At the top level we should provide something very basic (Makefile?) and documentation to help users integrate libuavcan and nnvg with their application.

At the top level we should provide something very basic (Makefile?) and documentation to help users integrate libuavcan and nnvg with their application.

Maybe we should provide nothing on the top level except for documentation? I recall seeing users of IAR or Keil IDE not knowing what to do with a makefile. Examples for particular build systems could be moved somewhere into deeper chapters of the user documentation.


docs: add instructions for Langchain

Hi! A month ago I made a few contributions to Langchain to support vLLM and its OpenAI-compatible server.
This PR aims at updating vLLM's documentation to showcase how to use vLLM with Langchain and to redirect to the tutorial I wrote there for further details. Hope you find this contribution meaningful.

Hi @mspronesti , does this LangChain-VLLM support quantized model?
Because the vllm-project already supported quantized model (AWQ format) as shown in https://github.com/vllm-project/vllm/pull/1032
However, when I use the same way and just pass "quantization='awq" to your LangChain-VLLM, it seems does not work and just show OOM.
model_path = "/home/quadrep/toan/projects/LLMs/weights/vicuna-33B-AWQ"
model = VLLM(model=model_path, tensor_parallel_size=2, trust_remote_code=True, max_new_tokens=512, quantization='awq')
--> Error: torch.cuda.OutOfMemoryError: CUDA out of memory.

Hi @pvtoan, quantization is not an explicit parameter of langchain's vLLM. You need to pass it as follows
model = VLLM(
  model=model_path,
  tensor_parallel_size=2,
  trust_remote_code=True,
  max_new_tokens=512,
  vllm_kwargs={"quantization": "awq"}
)

Also, notice that tensor_parallel_size=2 implies you want to serve the model in a distributed manner, with 2 GPUs. Hope this helps :)

Btw @WoosukKwon  I have also resolved the conflicts in this PR, in case you are interested in merging It.

Thank you for your contribution!


could you please add support for Azure OpenAI

could you please add support for Azure OpenAI

@fieri @yufeikang happy to take lead on this and help increase coverage using https://github.com/BerriAI/litellm
let me know if this sounds good

Hello! Azure support is already available. Can you help test it? You need to set the environment variables AZURE_OPENAI_ENDPOINT and either AZURE_OPENAI_AD_TOKEN or AZURE_OPENAI_API_KEY.


Blazor Wasm - Documentation for ad b2c custom challenge for password reset

I feel that linking to a classic asp.mvc application from the blazor wasm docs is confusing. Please add a wasm-example of how to create custom challenge for password-reset. This example doesn't even nudge me in the right direction.
Regards,
Pär

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: e8b5f81a-f216-b345-d434-c0ebbf70ff00
Version Independent ID: e77fb894-d7a0-ae0c-7f4c-1030df97f073
Content: User flows in Azure Active Directory B2C - Azure AD B2C
Content Source: articles/active-directory-b2c/user-flow-overview.md
Service: active-directory
Sub-service: b2c
GitHub Login: @msmimart
Microsoft Alias: mimart

Hello @psandgren , Thanks for your feedback! We will investigate and update as appropriate.

Hi @psandgren,
You can enable the Self-Service password reset to the sign-up or sign-in user flow. With this solution Azure AD B2C doesn't return any error message and the app doesn't need to be aware of the password reset flow.

Sign in to the Azure portal.
Select the Directory + Subscription icon in the portal toolbar, and then select the directory that contains your Azure AD B2C tenant.
In the Azure portal, search for and select Azure AD B2C.
Select User flows.
Select a sign-up or sign-in (type of Recommended) user flow you want to customize.
Under Settings in the left menu, select Properties.
Under Password complexity, select Self-service password reset.
Select Save.
Under Customize in the left menu, select Page layouts.
In the Page Layout Version, choose 2.1.2 - Current, or above.
Select Save.

Hello @psandgren , Hope above mentioned instruction helps you with right direction. If you have any queries, feel free to reach out to us. Thanks.

Hi @psandgren,
You can enable the Self-Service password reset to the sign-up or sign-in user flow. With this solution Azure AD B2C doesn't return any error message and the app doesn't need to be aware of the password reset flow.

Sign in to the Azure portal.
Select the Directory + Subscription icon in the portal toolbar, and then select the directory that contains your Azure AD B2C tenant.
In the Azure portal, search for and select Azure AD B2C.
Select User flows.
Select a sign-up or sign-in (type of Recommended) user flow you want to customize.
Under Settings in the left menu, select Properties.
Under Password complexity, select Self-service password reset.
Select Save.
Under Customize in the left menu, select Page layouts.
In the Page Layout Version, choose 2.1.2 - Current, or above.
Select Save.

Hi @yoelhor!
I wouldn't really call that a full experience since you get an error if you click the "Go back"-arrow, but at least it's better than nothing. Thanks!
Regards,
Pär


interstitialAd is null, call

hello,
I'm trying to use the interstitial banner, but I always return the same error: interstitialAd is null, call
  admobid = {
     banner: 'ca-app-pub-5322935628707109/xxxxx',
     interstitial: 'ca-app-pub-5322935628707109/xxx',
   }

  admob.banner.config({
    id: admobid.banner,
    isTesting: true,
    autoShow: true,
  })
  admob.banner.prepare()

  admob.interstitial.config({
    id: admobid.interstitial,
    isTesting: true,
    autoShow: false,
  })
admob.interstitial.prepare()
admob.interstitial.show()

I am using ionic 1 and am calling the above code in method: $ionicPlatform.ready(function() {});
help me please

Did you tried the example code?

Hi,
I'm having the same issue on Ionic 1 also, although the pub is showing up, both banner and interstitial.
The errors are:
Uncaught (in promise) adView is null, call createBannerView first.
Uncaught (in promise) interstitialAd is null, call createInterstitialView first.
Is this an issue with Ionic 1 only?
Thanks and Regards

Prepare ads first. This happens if banner or interstitial is not prepared. Then in LOAD events show the ad.
@ratson It's not ionic 1 related. I use the plugin with ionic 1 and it works perfectly well.

also happen with ionic2/3.

@lveigas have you solved the issue for Ionic 1?
These seem to be the "problematic" lines:
https://github.com/ratson/cordova-plugin-admob-free/blob/b0d6945d7ebf29bfa193308458f5d69f00d880f6/src/android/banner/BannerExecutor.java#L173
and:
https://github.com/ratson/cordova-plugin-admob-free/blob/b0d6945d7ebf29bfa193308458f5d69f00d880f6/src/android/interstitial/InterstitialExecutor.java#L127
Both return the reported errors, and note that there's a very similar phrase but without the . (dot) in the end....

Hi @rodrigograca31,
Yes, I did solve it, but I don't remember exactly how since it was a long time ago, but I believe it was by preparing the ads first, invoking createBannerView and createInterstitialView methods before showing the ads.
Hope this helps.
Regards,
Luís Veigas

I did some testing and seems "the problem" for banners at least is because we are using autoShow: true and then admob.banner.show() but the ad was already shown so there's no adview


win32: rewrite screenshot code

I've rewritten the win32 screenshot code (as much as I could without obfuscating the the source code), mostly to get rid of the Ms-LPL license. I was so free to add myself to the CONTRIBUTORS list.

Looks good to me. Thanks for taking the time to write out the MS-LPL stuff (and for adding yourself to CONTRIBUTORS, I forgot to ask you to do that in the last PR).


Infinite loop of "The TypeScript language service died unexpectedly"

VSCode Version: 1.3.1
OS Version: Microsoft Windows [Version 10.0.10586]

Steps to Reproduce:

Uninstall VSCode
Install VSCode
Navigate to an empty directory
Open VSCode
Create a new file empty.ts

The error message "The TypeScript language service died unexpectedly 5 times in the last 5 Minutes. Please consider to open a bug report."
My settings.json is an empty object.
The problem can be solved by adding "typescript.tsdk": "C:\\Program Files\\nodejs\\node_modules\\typescript\\lib" to settings.json. My global tsc --version is 2.0.0.

@andy-ms where did you get 2.0.0 from. npm install<EMAIL_ADDRESS>doesn't install any usable typescript package.

2.0.0 was the version installed by npm install -g typescript@next back when I wrote this issue.
I just removed "typescript.tsdk" from my settings and an empty project is now working, but I'm still sporadically getting the above error. Is there anything I can do in such a situation to detect what caused it?

@andy-ms does a non empty file work. If so does the status line in the right corner give some hint about the TS version used ?
And just to be super sure. You neither have a tsdk setting in the user nor in the workspace settings.

The workspace was just created (there is no .vscode, so there are no workspace settings. The status line just says "TypeScript". If I change the language to "TypeScript React" it still has this problem.

@andy-ms I have no clue why this happens since this works for me without problems. Did you choose a special install location for VS Code ? If not does C:\Program Files (x86)\Microsoft VS Code\resources\app\extensions\typescript\server\typescript\lib exist with a similar content ?

Yes, that folder exists for me with the same files listed.

OK. if you add a workspace setting and restart code afterwards do you still see the problem ?
     "typescript.tsdk": "C:\\Program Files (x86)\\Microsoft VS Code\\resources\\app\\extensions\\typescript\\server\\typescript\\lib"

Yes, with that as the only line in my settings.json (besides { and }) I still get the error.

@andy-ms I have no idea what is going on. You have the correct version of the tsserver. Do you still see this with VS Code 1.4. If so, can I give you instruction on how to debug this?

I still get it with 1.4. I'd be happy to try debugging it.

Thanks for offering your help. You need to do the following:

install VS Code insider so that you have a second independent instance (https://code.visualstudio.com/insiders)
create a new empty workspace folder and open a command prompt on it. Start code from the command prompt using code.cmd --debugPluginHost
start the insider build
go to the debug viewlet and press the configure icon on the top to create a launch.json config file.
change the port in the Attach section to 5870

{
			"name": "Attach",
			"type": "node",
			"request": "attach",
			"port": 5870,
			"address": "localhost",
			"restart": false,
			"sourceMaps": false,
			"outDir": null,
			"localRoot": "${workspaceRoot}",
			"remoteRoot": null
		}

select the attach debug configuration from the drop down.
press the green arrow to attach
no open the file: C:\Program Files (x86)\Microsoft VS Code\resources\app\extensions\typescript\out\typescriptServiceClient.js in the insider build
set a breakpoint on line 172 and 176 (assuming using code 1.4)
create a new TS in code and wait until the breakpoint gets hit.
which breakpoint gets hit and if 172 what exception are you receiving ?

@andy-ms is your workspace on a mounted SharePoint WebDav folder. If so this is a dup of https://github.com/Microsoft/vscode/issues/3860

I see line 176 getting hit (this is the one after childProcess.on('exit') and err is 7. (My sample directory is on my own hard drive, not sharepoint.)

That means the node process exits with error number 7. Still no clue why :-(

Despite the message, the error happens within a few seconds of running code . (where vscode was not already open) in the previously-created directory with just an empty a.ts in it.

@andy-ms. Very strange :-(.
The easiest to track this down is to run and debug VS Code from source. How to do so is documented here: https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run-from-source.
Would you be willing to set this up. Otherwise I will add additional options to the next build to ease this.

Sorry, but I was unable to build on Windows (using the latest c++ devtools from visual studio gives errors with oniguruma) and the problem does not happen on linux, so it'll have to wait until the next build.

@andy-ms that looks like the problem we started seeing when upgrading the C/C++ tooling with VS Update 3. We have worked around it by updating the node-gyp package npm is using to version 3.4.0. (We are currently blocked from upgrading npm itself to >=3.9, the latest comes with the fixed node-gyp.).

@andy-ms can you still reproduce thus ?

@dbaeumer I am also facing the same issue. I have noticed that if VS Code is ran as administrator, the problem goes away. In every other case, it goes into the infinite loop.
I am using VS Code v1.7.2, Node v5.9.0, tsc v2.0.10 on WIndows 10.

@Sayan751 strange. Works for me using an non administrator account.
One idea to better understand this is the following:

can you install TS somewhere else on your disk where you have read / write access using npm install<EMAIL_ADDRESS>use the typescript.tsdk setting to point VS Code to that TS installation. E.g. "typescript.tsdk": "C:/tmp/node_modules/typescript/lib"

Does that help?

I can't reproduce this any more with VSCode 1.7.2. I just get a message "Info | Version mismatch! global tsc (2.2.0-dev.20161118) != VS Code's language service (2.0.10). Inconsistent compile..."

@andy-ms the version mismatch points to the fact that your global tsc version is 2.2.0-dev.20161118 and the VSC version is 2.0.10. Since you don't have the tsdk setting pointing to 2.2.0-dev.20161118 it might happend that running tsc in the terminal produces different errors than the language service inside VS Code (because they are different version). You can disable that check by pressing the 'Don't check again' button.

@dbaeumer I confirm, that this helps. Thank you for that.

use the typescript.tsdk setting to point VS Code to that TS installation. E.g. "typescript.tsdk": "C:/tmp/node_modules/typescript/lib"

I think this is the workaround for now.

@Sayan751 good to hear. Now we need to understand why TS is not running from the installation directory. Is there anything special. Have you installed VS Code into a special location ?

@dbaeumer I can't remember changing any default option during installation. On my machine the installation path is "C:\Program Files (x86)\Microsoft VS Code\Code.exe"

@Sayan751 is there anything in the TypeScript Output Channel (Ctrl+Shift+U) select TypeScript from the drop down?

@dbaeumer When I use the default typescript.tsdk location, I get the following error messages in TypeScript Output repetitively:
[Info  - 1:03:42 PM] Using tsserver from location: c:\Program Files (x86)\Microsoft VS Code\resources\app\extensions\typescript\node_modules\typescript\lib\tsserver.js
[Error - 1:03:43 PM] TSServer exited with code: 1
[Info  - 1:03:43 PM] Using tsserver from location: c:\Program Files (x86)\Microsoft VS Code\resources\app\extensions\typescript\node_modules\typescript\lib\tsserver.js
[Error - 1:03:43 PM] TSServer exited with code: 1

However, when I override the default typescript.tsdk with local typescript inside node_modules, the error message goes away, and it simply says:
[Info  - 1:03:44 PM] Using tsserver from location: C:\Path\To\My\Code\node_modules\typescript\lib\tsserver.js

and along with that the infinite loop of the pop-up stops.

@Sayan751 could you do the following in advance:

open a terminal (e.g. PowerShell)
set the environment variable TSS_LOG="-level verbose -file c:\tmp\server.log" (in PowerShell $env:TSS_LOG="-level verbose -file c:\tmp\server.log"). Adopt the file location accordingly
start VS Code from the terminal using code command

Can you provide the content of the log file.

@dbaeumer Please find the logs attached.
vs-code log.zip

@Sayan751 surprisingly there is nothing that points to a crash in the log. If I give you instructions would you be able to debug this a little. I have no clue why this is happening.

@mhegazy and idea how we could find out why the tsserver exits without being ask to do so.

@dbaeumer I would like to debug this. However, it may take some time to get back you. Additionally also attaching some latest logs.
logs.zip

@Sayan751 thanks for the logs. Will have a look. When you have time to help me with that please ping.

@dbaeumer ping

Closing since it sounds like the original issue has been resolved.
If you seeing a similar problem with VSCode 1.9+, please open a new bug and we will investigate.
Thanks


[Auto-generated] Check & update dependencies (pyproject.toml)

Update dependencies (pyproject.toml)
Automatically created PR based on the 'CI - Check pyproject.toml dependencies' workflow in SINTEF/ci-cd.

Codecov Report
Base: 93.42% // Head: 93.42% // No change to project coverage :thumbsup:

Coverage data is based on head (eff0b1b) compared to base (33ea854).
Patch has no changes to coverable lines.

Additional details and impacted files
@@                  Coverage Diff                   @@
##           ci/dependency-updates      #94   +/-   ##
======================================================
  Coverage                  93.42%   93.42%
======================================================
  Files                         22       22
  Lines                        350      350
======================================================
  Hits                         327      327
  Misses                        23       23

Flag
Coverage Δ

linux
93.42% <ø> (ø)

windows
?

Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


R home is configured to incompatible R version

Using latest 2.4.0 release, my rservice container is in a crashloop.
R version = 4.4.1
spotfire@infra-dev-spotfire-spotfire-rservice-6f577fd7bf-r5wd5:/opt/spotfire/nodemanager$ R --version
R version 4.4.1 (2024-06-14) -- "Race for Your Life"
Copyright (C) 2024 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
https://www.gnu.org/licenses/.

Relevant logs:
Adding properties from nm/services/R/conf/additional-custom.properties to nm/services/R/conf/custom.properties
Using hostname: <redacted>
Naming service instance to infra-dev-spotfire-spotfire-rservice-f47f4dccb-rhfmc
Post install configuration of Spotfire Server Node Manager 14.4.0 was successful.
Bootstrapping Spotfire Node Manager 14.4.0  (build ID:f53c76c)...
INFO 2024-07-10T20:51:27,524+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: buildDate: 2024-05-22
INFO 2024-07-10T20:51:27,524+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: buildId: f53c76c3b2c6122b8cb97b6b9508d7439e0f4c61
INFO 2024-07-10T20:51:27,525+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.connection.time-to-live-seconds: 1080
INFO 2024-07-10T20:51:27,525+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.long-connect-timeout: 100000
INFO 2024-07-10T20:51:27,525+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.long-read-timeout: 360000
INFO 2024-07-10T20:51:27,525+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.non-streaming.connect-timeout: 10000
INFO 2024-07-10T20:51:27,525+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.non-streaming.connection-request-timeout: 10000
INFO 2024-07-10T20:51:27,526+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.non-streaming.read-timeout: 2000
INFO 2024-07-10T20:51:27,526+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.pool.default-max-per-route: 2000
INFO 2024-07-10T20:51:27,526+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.pool.max-total: 2000
INFO 2024-07-10T20:51:27,526+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.streaming.connect-timeout: 3600000
INFO 2024-07-10T20:51:27,526+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.streaming.connection-request-timeout: 3600000
INFO 2024-07-10T20:51:27,526+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.streaming.read-timeout: 3600000
INFO 2024-07-10T20:51:27,526+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.validate-after-inactivity-ms: 5000
INFO 2024-07-10T20:51:27,527+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: monitoring.http-probes.enabled: true
INFO 2024-07-10T20:51:27,527+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.autoconfigure.pre-check.max-tries: 20
INFO 2024-07-10T20:51:27,527+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.autoconfigure.pre-check.retry-delay-seconds: 20
INFO 2024-07-10T20:51:27,527+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.bundle.version: 78.0.14922.59310
INFO 2024-07-10T20:51:27,527+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.certificate-monitor.retry-delay-seconds: 1
INFO 2024-07-10T20:51:27,527+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.communication.port: 9443
INFO 2024-07-10T20:51:27,527+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.configuration: /opt/spotfire/nodemanager//nm/config/config.json
INFO 2024-07-10T20:51:27,528+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.core-pool-keep-alive-time: 10
INFO 2024-07-10T20:51:27,528+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.core-pool-size: 50
INFO 2024-07-10T20:51:27,528+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.expire-offline: -1
INFO 2024-07-10T20:51:27,528+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.externally-managed: true
INFO 2024-07-10T20:51:27,528+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.heartbeat.minimum-missed: 2
INFO 2024-07-10T20:51:27,528+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.heartbeat.threshold: 12000
INFO 2024-07-10T20:51:27,528+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.host: <redacted>
INFO 2024-07-10T20:51:27,529+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.host.names: <redacted>
INFO 2024-07-10T20:51:27,529+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.install.dir: /opt/spotfire/nodemanager//nm
INFO 2024-07-10T20:51:27,529+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.keystore.location: /opt/spotfire/nodemanager//nm/trust/keystore.p12
INFO 2024-07-10T20:51:27,529+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.maximum-pool-size: 60
INFO 2024-07-10T20:51:27,529+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.memorydump-after-failures: -1
INFO 2024-07-10T20:51:27,529+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.parallel-downloads: 10
INFO 2024-07-10T20:51:27,529+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.ports:
INFO 2024-07-10T20:51:27,530+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.registration.port: 9080
INFO 2024-07-10T20:51:27,530+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.remote: true
INFO 2024-07-10T20:51:27,530+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.service-defaults: services
INFO 2024-07-10T20:51:27,530+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.service.disable-restart-on-stop: true
INFO 2024-07-10T20:51:27,530+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.service.restart-threshold-milliseconds: 30000
INFO 2024-07-10T20:51:27,530+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.service.shutdown.delay: 60
INFO 2024-07-10T20:51:27,530+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.supervisor.known: infra-dev-spotfire-spotfire-server:9443-9080
INFO 2024-07-10T20:51:27,531+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.topology.cache-enabled: false
INFO 2024-07-10T20:51:27,531+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.topology.cache-timeout: 60
INFO 2024-07-10T20:51:27,531+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.topology.cache-timeout-absolute: 90
INFO 2024-07-10T20:51:27,531+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.topology.inspection-interval: 10
INFO 2024-07-10T20:51:27,531+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.use.ip: false
INFO 2024-07-10T20:51:27,531+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.worker-threads: 50
INFO 2024-07-10T20:51:27,531+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: performance-monitoring.metrics-exporter.enabled: true
INFO 2024-07-10T20:51:27,532+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: security.trust.hostname-verification-enabled: true
INFO 2024-07-10T20:51:27,532+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: server.backend.communication.port: 9443
INFO 2024-07-10T20:51:27,532+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: server.backend.registration.port: 9080
INFO 2024-07-10T20:51:27,532+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: server.name: infra-dev-spotfire-spotfire-server
INFO 2024-07-10T20:51:27,532+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: technicalVersion: 78.0.14922.59310
INFO 2024-07-10T20:51:27,532+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: user-agent.name: NodeManager
INFO 2024-07-10T20:51:27,893+0000 [*Initialization*] nodemanager.config.NodeManagerPropertyPlaceHolder: Found custom node manager properties in /opt/spotfire/nodemanager/nm/config/nodemanager.properties
INFO 2024-07-10T20:51:27,993+0000 [*Initialization*] server.security.HttpUtils: Retrieved the current fully qualified host name: infra-dev-spotfire-spotfire-rservice-f47f4dccb-rhfmc
INFO 2024-07-10T20:51:28,005+0000 [*Initialization*] nodemanager.executor.ExecutorServiceFactory: ScheduledThreadPool is using 50 threads and 10 semephore permits.
INFO 2024-07-10T20:51:28,006+0000 [*Initialization*] nodemanager.executor.ExecutorServiceFactory: Thread pool is using 50 threads with a maximum of 60 and a keepalive time of 10s.
INFO 2024-07-10T20:51:28,031+0000 [*Initialization*] server.http.HttpService: Switching to server Node [serverName=infra-dev-spotfire-spotfire-server, port=9443]
INFO 2024-07-10T20:51:28,168+0000 [*Initialization*] server.nodemanager.NodeManager: Overriding the server name with the nodemanager.host property that has been set: <redacted>
INFO 2024-07-10T20:51:28,168+0000 [*Initialization*] server.nodemanager.NodeManager: Adding <redacted> to alternate addresses [infra-dev-spotfire-spotfire-rservice-f47f4dccb-rhfmc]
INFO 2024-07-10T20:51:28,188+0000 [*Initialization*] server.nodemanager.NodeManager: Node Manager ID: b3451523-8bcb-4ba8-ba3f-b5614b610021
INFO 2024-07-10T20:51:28,189+0000 [*Initialization*] server.nodemanager.NodeManager: Site ID: null
INFO 2024-07-10T20:51:28,189+0000 [*Initialization*] server.nodemanager.NodeManager: Node Manager Server Name: <redacted>
INFO 2024-07-10T20:51:28,189+0000 [*Initialization*] server.nodemanager.NodeManager: Addresses: [<redacted>, infra-dev-spotfire-spotfire-rservice-f47f4dccb-rhfmc]
INFO 2024-07-10T20:51:28,189+0000 [*Initialization*] server.nodemanager.NodeManager: Communication port: 9443 and registration port 9080
INFO 2024-07-10T20:51:28,190+0000 [*Initialization*] server.nodemanager.NodeManager: Technical Version: 78.0.14922.59310
INFO 2024-07-10T20:51:28,190+0000 [*Initialization*] server.nodemanager.NodeManager: Product Version: 14.4.0
INFO 2024-07-10T20:51:28,190+0000 [*Initialization*] server.nodemanager.NodeManager: Build Date: 2024-05-22
INFO 2024-07-10T20:51:28,190+0000 [*Initialization*] server.nodemanager.NodeManager: Java vendor: Debian, Java version: 17.0.11
INFO 2024-07-10T20:51:28,191+0000 [*Initialization*] server.nodemanager.NodeManager: Available processors: 4, Max memory: 268435456,
INFO 2024-07-10T20:51:28,222+0000 [*Initialization*] actionlog.monitoring.MonitoringManager: No action log configuration found, monitoring will not take place
INFO 2024-07-10T20:51:28,226+0000 [*Initialization*] actionlog.monitoring.MonitoringManager: Logging performance monitoring measures with interval of 60 seconds
INFO 2024-07-10T20:51:28,490+0000 [*Initialization*] web.controller.NodeManagerInterceptor: Metrics exporter enabled
INFO 2024-07-10T20:51:28,617+0000 [*Initialization*] web.controller.NodeManagerInterceptor: Metrics exporter enabled
INFO 2024-07-10T20:51:28,621+0000 [*Initialization*] web.controller.MetricsController: Metrics exporter enabled
INFO 2024-07-10T20:51:28,637+0000 [*Initialization*] server.nodemanager.NodeManagerInitializer: Initializing (node ID: b3451523-8bcb-4ba8-ba3f-b5614b610021)
INFO 2024-07-10T20:51:28,638+0000 [*Initialization*] server.nodemanager.NodeManagerInitializer: No keystore defined. Delaying startup until keystore is created...
INFO 2024-07-10T20:51:29,129+0000 [*Initialization*] nodemanager.trust.CertificateMonitor: CSR with fingerprint 9bc616e24f6b7538a72d5c2dbcfe8dd18ce2b9fd714b4975c5680f04d5ea43a9 submitted successfully to the server Node [serverName=infra-dev-spotfire-spotfire-server, port=9443]
INFO 2024-07-10T20:51:29,309+0000 [] web.controller.RemoteTrustController: Received a new certificate from a supervisor.
INFO 2024-07-10T20:51:29,437+0000 [] nodemanager.trust.CertificateMonitor: The Node Manager will restart to load the new keystore.
INFO 2024-07-10T20:51:35,159+0000 [*Shutdown*] server.nodemanager.NodeManager: Node Manager shutting down...
INFO 2024-07-10T20:51:35,161+0000 [*Shutdown*] server.nodemanager.NodeManager: Node Manager shutting down...
INFO 2024-07-10T20:51:35,162+0000 [*Shutdown*] server.nodemanager.HeartBeatGenerator: Cancelling any scheduled heartbeat tasks.
INFO 2024-07-10T20:51:35,162+0000 [*Shutdown*] server.nodemanager.HeartBeatGenerator: Result of cancel: true
INFO 2024-07-10T20:51:35,162+0000 [*Shutdown*] server.nodemanager.HeartBeatSender: Heart beat submission has been cancelled.
INFO 2024-07-10T20:51:35,166+0000 [*Shutdown*] server.nodemanager.NodeManager: Node Manager shutting down...
INFO 2024-07-10T20:51:35,167+0000 [*Shutdown*] nodemanager.executor.ExecutorServiceFactory: Shutting down the executor services...
Starting Spotfire Node Manager 14.4.0  (Build Version: 78.0.14922.59310, Build Date: 2024-05-22, Build ID: f53c76c)...
INFO 2024-07-10T20:51:39,431+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: buildDate: 2024-05-22
INFO 2024-07-10T20:51:39,431+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: buildId: f53c76c3b2c6122b8cb97b6b9508d7439e0f4c61
INFO 2024-07-10T20:51:39,432+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.connection.time-to-live-seconds: 1080
INFO 2024-07-10T20:51:39,432+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.long-connect-timeout: 100000
INFO 2024-07-10T20:51:39,432+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.long-read-timeout: 360000
INFO 2024-07-10T20:51:39,432+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.non-streaming.connect-timeout: 10000
INFO 2024-07-10T20:51:39,433+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.non-streaming.connection-request-timeout: 10000
INFO 2024-07-10T20:51:39,433+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.non-streaming.read-timeout: 2000
INFO 2024-07-10T20:51:39,433+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.pool.default-max-per-route: 2000
INFO 2024-07-10T20:51:39,433+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.pool.max-total: 2000
INFO 2024-07-10T20:51:39,434+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.streaming.connect-timeout: 3600000
INFO 2024-07-10T20:51:39,434+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.streaming.connection-request-timeout: 3600000
INFO 2024-07-10T20:51:39,434+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.streaming.read-timeout: 3600000
INFO 2024-07-10T20:51:39,434+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: http.validate-after-inactivity-ms: 5000
INFO 2024-07-10T20:51:39,434+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: monitoring.http-probes.enabled: true
INFO 2024-07-10T20:51:39,434+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.autoconfigure.pre-check.max-tries: 20
INFO 2024-07-10T20:51:39,435+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.autoconfigure.pre-check.retry-delay-seconds: 20
INFO 2024-07-10T20:51:39,435+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.bundle.version: 78.0.14922.59310
INFO 2024-07-10T20:51:39,435+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.certificate-monitor.retry-delay-seconds: 1
INFO 2024-07-10T20:51:39,435+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.communication.port: 9443
INFO 2024-07-10T20:51:39,435+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.configuration: /opt/spotfire/nodemanager//nm/config/config.json
INFO 2024-07-10T20:51:39,435+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.core-pool-keep-alive-time: 10
INFO 2024-07-10T20:51:39,435+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.core-pool-size: 50
INFO 2024-07-10T20:51:39,436+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.expire-offline: -1
INFO 2024-07-10T20:51:39,436+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.externally-managed: true
INFO 2024-07-10T20:51:39,436+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.heartbeat.minimum-missed: 2
INFO 2024-07-10T20:51:39,436+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.heartbeat.threshold: 12000
INFO 2024-07-10T20:51:39,436+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.host: <redacted>
INFO 2024-07-10T20:51:39,436+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.host.names: <redacted>
INFO 2024-07-10T20:51:39,437+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.install.dir: /opt/spotfire/nodemanager//nm
INFO 2024-07-10T20:51:39,437+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.keystore.location: /opt/spotfire/nodemanager//nm/trust/keystore.p12
INFO 2024-07-10T20:51:39,437+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.maximum-pool-size: 60
INFO 2024-07-10T20:51:39,437+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.memorydump-after-failures: -1
INFO 2024-07-10T20:51:39,437+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.parallel-downloads: 10
INFO 2024-07-10T20:51:39,437+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.ports:
INFO 2024-07-10T20:51:39,437+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.registration.port: 9080
INFO 2024-07-10T20:51:39,438+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.remote: true
INFO 2024-07-10T20:51:39,438+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.service-defaults: services
INFO 2024-07-10T20:51:39,438+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.service.disable-restart-on-stop: true
INFO 2024-07-10T20:51:39,438+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.service.restart-threshold-milliseconds: 30000
INFO 2024-07-10T20:51:39,438+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.service.shutdown.delay: 60
INFO 2024-07-10T20:51:39,438+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.supervisor.known: infra-dev-spotfire-spotfire-server:9443-9080
INFO 2024-07-10T20:51:39,438+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.topology.cache-enabled: false
INFO 2024-07-10T20:51:39,439+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.topology.cache-timeout: 60
INFO 2024-07-10T20:51:39,439+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.topology.cache-timeout-absolute: 90
INFO 2024-07-10T20:51:39,439+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.topology.inspection-interval: 10
INFO 2024-07-10T20:51:39,439+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.use.ip: false
INFO 2024-07-10T20:51:39,439+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: nodemanager.worker-threads: 50
INFO 2024-07-10T20:51:39,439+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: performance-monitoring.metrics-exporter.enabled: true
INFO 2024-07-10T20:51:39,439+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: security.trust.hostname-verification-enabled: true
INFO 2024-07-10T20:51:39,439+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: server.backend.communication.port: 9443
INFO 2024-07-10T20:51:39,440+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: server.backend.registration.port: 9080
INFO 2024-07-10T20:51:39,440+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: server.name: infra-dev-spotfire-spotfire-server
INFO 2024-07-10T20:51:39,440+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: technicalVersion: 78.0.14922.59310
INFO 2024-07-10T20:51:39,440+0000 [*Initialization*] server.config.NodeManagerPropertySource: Defining configuration: user-agent.name: NodeManager
INFO 2024-07-10T20:51:39,809+0000 [*Initialization*] nodemanager.config.NodeManagerPropertyPlaceHolder: Found custom node manager properties in /opt/spotfire/nodemanager/nm/config/nodemanager.properties
INFO 2024-07-10T20:51:40,041+0000 [*Initialization*] server.security.HttpUtils: Retrieved the current fully qualified host name: infra-dev-spotfire-spotfire-rservice-f47f4dccb-rhfmc
INFO 2024-07-10T20:51:40,044+0000 [*Initialization*] nodemanager.executor.ExecutorServiceFactory: ScheduledThreadPool is using 50 threads and 10 semephore permits.
INFO 2024-07-10T20:51:40,045+0000 [*Initialization*] nodemanager.executor.ExecutorServiceFactory: Thread pool is using 50 threads with a maximum of 60 and a keepalive time of 10s.
INFO 2024-07-10T20:51:40,069+0000 [*Initialization*] server.http.HttpService: Switching to server Node [serverName=infra-dev-spotfire-spotfire-server, port=9443]
INFO 2024-07-10T20:51:40,162+0000 [*Initialization*] server.nodemanager.NodeManager: Overriding the server name with the nodemanager.host property that has been set: <redacted>
INFO 2024-07-10T20:51:40,168+0000 [*Initialization*] server.nodemanager.NodeManager: Node Manager ID: b3451523-8bcb-4ba8-ba3f-b5614b610021
INFO 2024-07-10T20:51:40,170+0000 [*Initialization*] server.nodemanager.NodeManager: Site ID: 5c2c7b84-e1f4-4187-9799-85a2a48f0ebc
INFO 2024-07-10T20:51:40,170+0000 [*Initialization*] server.nodemanager.NodeManager: Node Manager Server Name: <redacted>
INFO 2024-07-10T20:51:40,170+0000 [*Initialization*] server.nodemanager.NodeManager: Addresses: [<redacted>, infra-dev-spotfire-spotfire-rservice-f47f4dccb-rhfmc]
INFO 2024-07-10T20:51:40,170+0000 [*Initialization*] server.nodemanager.NodeManager: Communication port: 9443 and registration port 9080
INFO 2024-07-10T20:51:40,170+0000 [*Initialization*] server.nodemanager.NodeManager: Technical Version: 78.0.14922.59310
INFO 2024-07-10T20:51:40,170+0000 [*Initialization*] server.nodemanager.NodeManager: Product Version: 14.4.0
INFO 2024-07-10T20:51:40,172+0000 [*Initialization*] server.nodemanager.NodeManager: Build Date: 2024-05-22
INFO 2024-07-10T20:51:40,172+0000 [*Initialization*] server.nodemanager.NodeManager: Java vendor: Debian, Java version: 17.0.11
INFO 2024-07-10T20:51:40,172+0000 [*Initialization*] server.nodemanager.NodeManager: Available processors: 4, Max memory: 268435456,
INFO 2024-07-10T20:51:40,212+0000 [*Initialization*] actionlog.monitoring.MonitoringManager: No action log configuration found, monitoring will not take place
INFO 2024-07-10T20:51:40,221+0000 [*Initialization*] actionlog.monitoring.MonitoringManager: Logging performance monitoring measures with interval of 60 seconds
INFO 2024-07-10T20:51:40,513+0000 [*Initialization*] web.controller.NodeManagerInterceptor: Metrics exporter enabled
INFO 2024-07-10T20:51:40,648+0000 [*Initialization*] web.controller.NodeManagerInterceptor: Metrics exporter enabled
INFO 2024-07-10T20:51:40,652+0000 [*Initialization*] web.controller.MetricsController: Metrics exporter enabled
INFO 2024-07-10T20:51:40,679+0000 [*Initialization*] server.nodemanager.NodeManagerInitializer: Initializing (node ID: b3451523-8bcb-4ba8-ba3f-b5614b610021)
INFO 2024-07-10T20:51:40,689+0000 [*Initialization*] security.trust.CertUtil: Contents of the internal key store (/opt/spotfire/nodemanager/nm/trust/keystore.p12):
INFO 2024-07-10T20:51:40,689+0000 [*Initialization*] security.trust.CertUtil: Alias name : spotfire node manager certificate
INFO 2024-07-10T20:51:40,690+0000 [*Initialization*] security.trust.CertUtil: 	Version : 3
INFO 2024-07-10T20:51:40,690+0000 [*Initialization*] security.trust.CertUtil: 	Subject : CN=b3451523-8bcb-4ba8-ba3f-b5614b610021, O=Spotfire
INFO 2024-07-10T20:51:40,690+0000 [*Initialization*] security.trust.CertUtil: 	Issued by : CN=Spotfire Signing CA, O=Spotfire
INFO 2024-07-10T20:51:40,690+0000 [*Initialization*] security.trust.CertUtil: 	Serial number : 99579f8c6e8115efc75947b679657b4506aebca1
INFO 2024-07-10T20:51:40,691+0000 [*Initialization*] security.trust.CertUtil: 	Valid from : Wed Jul 10 19:51:29 UTC 2024
INFO 2024-07-10T20:51:40,691+0000 [*Initialization*] security.trust.CertUtil: 	Valid until : Fri Jul 10 19:51:29 UTC 2026
INFO 2024-07-10T20:51:40,691+0000 [*Initialization*] security.trust.CertUtil: 	Subject Alternative Name : iPAddress: <redacted>
INFO 2024-07-10T20:51:40,692+0000 [*Initialization*] security.trust.CertUtil: 	Subject Alternative Name : dNSName: <redacted>
INFO 2024-07-10T20:51:40,694+0000 [*Initialization*] security.trust.CertUtil: 	Fingerprint (SHA1) : d94540a797f9e10b87212878a28e36cd1a57239f
INFO 2024-07-10T20:51:40,694+0000 [*Initialization*] security.trust.CertUtil: 	Fingerprint (SHA256) : fba02eb91b1cc39806fa37ae8398c06c4cd78f64c0e461e8bf2744f3c2e539f8
INFO 2024-07-10T20:51:40,694+0000 [*Initialization*] security.trust.CertUtil: 	Signature Algorithm : SHA256withRSA
INFO 2024-07-10T20:51:40,694+0000 [*Initialization*] security.trust.CertUtil: Alias name :<PHONE_NUMBER>a47209976e53259bdcd77105e82238
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: 	Version : 3
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: 	Subject : CN=Spotfire Signing CA, O=Spotfire
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: 	Issued by : CN=Spotfire Root CA, O=Spotfire
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: 	Serial number :<PHONE_NUMBER>a47209976e53259bdcd77105e82238
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: 	Valid from : Wed Jul 10 19:42:46 UTC 2024
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: 	Valid until : Mon Jul 10 19:42:46 UTC 2034
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: 	Fingerprint (SHA1) : c5aeb6939e944b3e4467b44041940b209d36e7bc
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: 	Fingerprint (SHA256) : 4a9417dee1890691461167e6ef0e9a8fcdc628ed00e5af50e0f163628f1e24a7
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: 	Signature Algorithm : SHA256withRSA
INFO 2024-07-10T20:51:40,695+0000 [*Initialization*] security.trust.CertUtil: Alias name : 2f2ba0782c28cc7736c1935cdc98acf0e6fb8441
INFO 2024-07-10T20:51:40,696+0000 [*Initialization*] security.trust.CertUtil: 	Version : 3
INFO 2024-07-10T20:51:40,696+0000 [*Initialization*] security.trust.CertUtil: 	Subject : CN=Spotfire Root CA, O=Spotfire
INFO 2024-07-10T20:51:40,696+0000 [*Initialization*] security.trust.CertUtil: 	Issued by : CN=Spotfire Root CA, O=Spotfire
INFO 2024-07-10T20:51:40,696+0000 [*Initialization*] security.trust.CertUtil: 	Serial number : 2f2ba0782c28cc7736c1935cdc98acf0e6fb8441
INFO 2024-07-10T20:51:40,696+0000 [*Initialization*] security.trust.CertUtil: 	Valid from : Wed Jul 10 19:42:44 UTC 2024
INFO 2024-07-10T20:51:40,696+0000 [*Initialization*] security.trust.CertUtil: 	Valid until : Mon Jul 10 19:42:44 UTC 2034
INFO 2024-07-10T20:51:40,696+0000 [*Initialization*] security.trust.CertUtil: 	Fingerprint (SHA1) : 2b52eceae3433c677203fe569885f8f8f0bb7c4a
INFO 2024-07-10T20:51:40,696+0000 [*Initialization*] security.trust.CertUtil: 	Fingerprint (SHA256) : 203117113eb13feb4b0db2e750f73215e102a97b6c58fc3d87d64a774a925f38
INFO 2024-07-10T20:51:40,696+0000 [*Initialization*] security.trust.CertUtil: 	Signature Algorithm : SHA256withRSA
INFO 2024-07-10T20:51:40,807+0000 [*Initialization*] server.nodemanager.NodeManagerInitializer: Started
INFO 2024-07-10T20:51:40,807+0000 [*AcquireAuthorization*] nodemanager.trust.DelayUntilAuthorizedGate: Checking to see if we (<redacted> b3451523-8bcb-4ba8-ba3f-b5614b610021) are trusted. Using infra-dev-spotfire-spotfire-server:9443
INFO 2024-07-10T20:51:41,075+0000 [*AcquireAuthorization*] nodemanager.trust.DelayUntilAuthorizedGate: Received response 200 OK We are trusted.
INFO 2024-07-10T20:51:41,077+0000 [*AcquireAuthorization*] server.nodemanager.NodeManagerInitializer: Started startup sequence
INFO 2024-07-10T20:51:41,077+0000 [*AcquireAuthorization*] server.nodemanager.NodeManager: NodeManager starting up and registering services serving <redacted>
INFO 2024-07-10T20:51:41,077+0000 [*AcquireAuthorization*] server.nodemanager.NodeManager: Node manager configured to run on port 9443 with ID b3451523-8bcb-4ba8-ba3f-b5614b610021 in site 5c2c7b84-e1f4-4187-9799-85a2a48f0ebc
INFO 2024-07-10T20:51:41,077+0000 [*AcquireAuthorization*] service.registry.Registry: Discovering services in /opt/spotfire/nodemanager/nm/services/R
INFO 2024-07-10T20:51:41,084+0000 [*AcquireAuthorization*] server.nodemanager.NodeManager: This node manager has the service:  R ID: 178016a3-8075-410b-adc1-6548efeeb18e in R
INFO 2024-07-10T20:51:41,085+0000 [*AcquireAuthorization*] nodemanager.action.AutoConfigureNodeManager: The Node Manager has a default configuration file: /opt/spotfire/nodemanager/nm/config/default.conf
INFO 2024-07-10T20:51:41,098+0000 [*AcquireAuthorization*] server.nodemanager.NodeManager: Ready to service requests.
INFO 2024-07-10T20:51:41,236+0000 [46c6b85c-8ac6-424a-823d-ec84a97dd3bc] nodemanager.control.PrimusCommandHandler: Received PRIMUS_ANNOUNCE from Node [serverId=d69c89ea-2d7e-42cd-b6cc-2ca8ed52b77e, serverName=<redacted>, port=9443, siteID=5c2c7b84-e1f4-4187-9799-85a2a48f0ebc]. Command GUID: 46c6b85c-8ac6-424a-823d-ec84a97dd3bc  Originated by NodeAnnounceCommandHandler
INFO 2024-07-10T20:51:41,236+0000 [46c6b85c-8ac6-424a-823d-ec84a97dd3bc] nodemanager.control.PrimusCommandHandler: Discovered supervisor nodes in the network: [Node [serverId=d69c89ea-2d7e-42cd-b6cc-2ca8ed52b77e, serverName=<redacted>, capabilities=[], platform=LINUX, port=9443, primus=false, primusCapable=true, remote=false, online=true, siteID=5c2c7b84-e1f4-4187-9799-85a2a48f0ebc]]
INFO 2024-07-10T20:51:41,237+0000 [46c6b85c-8ac6-424a-823d-ec84a97dd3bc] server.http.HttpService: Switching to server Node [serverId=d69c89ea-2d7e-42cd-b6cc-2ca8ed52b77e, serverName=<redacted>, port=9443, siteID=5c2c7b84-e1f4-4187-9799-85a2a48f0ebc]
INFO 2024-07-10T20:51:41,237+0000 [46c6b85c-8ac6-424a-823d-ec84a97dd3bc] nodemanager.primus.HttpServerManager: Sending a new heart beat message to <redacted> from: Node [serverId=b3451523-8bcb-4ba8-ba3f-b5614b610021, serverName=<redacted>, port=9443, siteID=5c2c7b84-e1f4-4187-9799-85a2a48f0ebc, externallyManaged]
INFO 2024-07-10T20:51:41,242+0000 [46c6b85c-8ac6-424a-823d-ec84a97dd3bc] nodemanager.primus.PrimusPropertyManager: recognized primus change because current list is empty.
INFO 2024-07-10T20:51:41,242+0000 [46c6b85c-8ac6-424a-823d-ec84a97dd3bc] nodemanager.primus.PrimusPropertyManager: Saving new server information in properties file. <redacted>:9443
INFO 2024-07-10T20:51:41,243+0000 [46c6b85c-8ac6-424a-823d-ec84a97dd3bc] nodemanager.primus.PrimusPropertyManager: Saving supervisor list as <redacted>:9443-9080
INFO 2024-07-10T20:51:41,244+0000 [46c6b85c-8ac6-424a-823d-ec84a97dd3bc] nodemanager.trust.CertificateMonitor: Server list changed.
INFO 2024-07-10T20:51:51,134+0000 [ff8cb45d-352d-4c26-8a84-192dedbf41d3] nodemanager.control.ServiceConfigCommandHandler: Received IDENTIFY_SERVICES from Node [serverId=d69c89ea-2d7e-42cd-b6cc-2ca8ed52b77e, serverName=<redacted>, port=9443, siteID=5c2c7b84-e1f4-4187-9799-85a2a48f0ebc]. Command GUID: ff8cb45d-352d-4c26-8a84-192dedbf41d3  Originated by HeartBeatInspector
INFO 2024-07-10T20:51:51,134+0000 [ff8cb45d-352d-4c26-8a84-192dedbf41d3] nodemanager.control.ServiceConfigCommandHandler: Announcing to supervisor 1 service configurations
INFO 2024-07-10T20:51:51,134+0000 [ff8cb45d-352d-4c26-8a84-192dedbf41d3] nodemanager.control.ServiceConfigCommandHandler: Announcing installation:  R <IP_ADDRESS>
INFO 2024-07-10T20:51:51,294+0000 [ad8496bd-2751-4696-a7b6-26d52f619427] nodemanager.control.StartServiceCommandHandler: Received START_SERVICE from Node [serverId=d69c89ea-2d7e-42cd-b6cc-2ca8ed52b77e, serverName=<redacted>, port=9443, siteID=5c2c7b84-e1f4-4187-9799-85a2a48f0ebc]. Command GUID: ad8496bd-2751-4696-a7b6-26d52f619427
INFO 2024-07-10T20:51:51,296+0000 [ad8496bd-2751-4696-a7b6-26d52f619427] nodemanager.control.StartServiceCommandHandler: Creating a new service based on a configured option with ID 1de304b7-c489-48dc-8065-8706f35fd92f
INFO 2024-07-10T20:51:51,297+0000 [ad8496bd-2751-4696-a7b6-26d52f619427] nodemanager.control.ServiceManipulator: Requested port 9501 is available for service 1de304b7-c489-48dc-8065-8706f35fd92f
INFO 2024-07-10T20:51:51,303+0000 [ad8496bd-2751-4696-a7b6-26d52f619427] server.nodemanager.NodeManager: Registering service 1de304b7-c489-48dc-8065-8706f35fd92f infra-dev-spotfire-spotfire-rservice-f47f4dccb-rhfmc capabilities [R]
INFO 2024-07-10T20:51:51,303+0000 [ad8496bd-2751-4696-a7b6-26d52f619427] nodemanager.service.AbstractServiceManager: Determining if the service 1de304b7-c489-48dc-8065-8706f35fd92f should restart (attempt #0, startedCount=0). Last exit code was N/A
INFO 2024-07-10T20:51:51,304+0000 [ad8496bd-2751-4696-a7b6-26d52f619427] nodemanager.service.AbstractServiceManager: Service 1de304b7-c489-48dc-8065-8706f35fd92f should be be restarted: Last exit message:
INFO 2024-07-10T20:51:51,304+0000 [ad8496bd-2751-4696-a7b6-26d52f619427] server.nodemanager.NodeManager: Starting service 1de304b7-c489-48dc-8065-8706f35fd92f
INFO 2024-07-10T20:51:51,306+0000 [service-1de304b7-c489-48dc-8065-8706f35fd92f-0] nodemanager.service.AbstractServiceManager: Acquired lock prior to starting service 1de304b7-c489-48dc-8065-8706f35fd92f
INFO 2024-07-10T20:51:51,306+0000 [service-1de304b7-c489-48dc-8065-8706f35fd92f-0] nodemanager.service.AbstractServiceManager: Running service status script for service 1de304b7-c489-48dc-8065-8706f35fd92f with command /opt/spotfire/nodemanager//nm/services/R/Tools/isservicerunning.sh
INFO 2024-07-10T20:51:51,306+0000 [service-1de304b7-c489-48dc-8065-8706f35fd92f-0] nodemanager.service.AbstractServiceManager: Could not find the tool for 1de304b7-c489-48dc-8065-8706f35fd92f (/opt/spotfire/nodemanager//nm/services/R/Tools/isservicerunning.sh)
INFO 2024-07-10T20:51:51,307+0000 [service-1de304b7-c489-48dc-8065-8706f35fd92f-0] nodemanager.service.AbstractServiceManager: The process status for 1de304b7-c489-48dc-8065-8706f35fd92f was checked and returned FAILED
INFO 2024-07-10T20:51:51,329+0000 [service-1de304b7-c489-48dc-8065-8706f35fd92f-0] nodemanager.service.AbstractServiceManager: Executing /opt/spotfire/nodemanager//nm/services/R/start-r-service.sh process for service 1de304b7-c489-48dc-8065-8706f35fd92f of type [R] in R
INFO 2024-07-10T20:51:51,354+0000 [ee1fca87-8d30-46f2-b92a-0f2ede3aac69] nodemanager.control.ServiceConfigCommandHandler: Received IDENTIFY_SERVICES from Node [serverId=b3451523-8bcb-4ba8-ba3f-b5614b610021, serverName=<redacted>, port=9443, siteID=5c2c7b84-e1f4-4187-9799-85a2a48f0ebc, externallyManaged]. Command GUID: ee1fca87-8d30-46f2-b92a-0f2ede3aac69  Originated by NetworkServiceRegistry
INFO 2024-07-10T20:51:51,355+0000 [ee1fca87-8d30-46f2-b92a-0f2ede3aac69] nodemanager.control.ServiceConfigCommandHandler: Announcing to supervisor 2 service configurations
INFO 2024-07-10T20:51:51,355+0000 [ee1fca87-8d30-46f2-b92a-0f2ede3aac69] nodemanager.control.ServiceConfigCommandHandler: Announcing service instance: 1de304b7-c489-48dc-8065-8706f35fd92f status STARTING
INFO 2024-07-10T20:51:51,355+0000 [ee1fca87-8d30-46f2-b92a-0f2ede3aac69] nodemanager.control.ServiceConfigCommandHandler: Announcing installation:  R <IP_ADDRESS>
INFO 2024-07-10T20:51:56,969+0000 [] server.nodemanager.ServiceMonitor: The service 1de304b7-c489-48dc-8065-8706f35fd92f should not be restarted since restarts are disabled for all services
ERROR 2024-07-10T20:51:56,969+0000 [] server.nodemanager.ServiceMonitor: (FAILED) Process 1de304b7-c489-48dc-8065-8706f35fd92f notified. Next Status STOPPED
INFO 2024-07-10T20:51:56,974+0000 [] server.nodemanager.ServiceMonitor: Notifying about service: 1de304b7-c489-48dc-8065-8706f35fd92f in state FAILED/STOPPED. Last status message: R home is configured to incompatible R version. Recent Logs: com.tibco.spotfire.topology.exception.UnsupportedEngineConfigurationException: canary engine validation failed
	at com.tibco.spotfire.topology.engine.EngineQueueHandler.engineCanary(EngineQueueHandler.java:135) ~[service-core.jar:?]
	at com.tibco.spotfire.topology.engine.EngineQueueHandler.initialize(EngineQueueHandler.java:103) ~[service-core.jar:?]
	at com.tibco.spotfire.topology.engine.EngineQueueHandler.onApplicationEvent(EngineQueueHandler.java:674) [service-core.jar:?]
	at com.tibco.spotfire.topology.engine.EngineQueueHandler.onApplicationEvent(EngineQueueHandler.java:68) [service-core.jar:?]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185) [spring-context.jar:6.1.5]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178) [spring-context.jar:6.1.5]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156) [spring-context.jar:6.1.5]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:451) [spring-context.jar:6.1.5]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:384) [spring-context.jar:6.1.5]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:984) [spring-context.jar:6.1.5]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) [spring-context.jar:6.1.5]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) [spring-boot.jar:3.2.4]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) [spring-boot.jar:3.2.4]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) [spring-boot.jar:3.2.4]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) [spring-boot.jar:3.2.4]
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149) [spring-boot.jar:3.2.4]
	at com.tibco.spotfire.topology.ServiceMain.main(ServiceMain.java:50) [service-core.jar:?]
	at com.tibco.spotfire.topology.Application.main(Application.java:40) [service-core.jar:?]
Error: start-r-service.sh: The R service encountered exceptions. Check the r-service-***.log for more details.

My mistake. I neglected to include the 1.21.0 build files in the container image. All works! Thanks.


Exception When Running a Temporary Scene in the Sandbox and Hot-Reloading Core Plugins

Summary
When hot-reloading core plugins while running the Sandbox mode in a Scene that has never been saved anywhere, there will be an exception when leaving Sandbox mode due to an attempt to return to a (now destroyed) temporary Scene.
Attachments
[Edit] ERR: An error occurred: ArgumentException: Can't switch to Scene '' because it doesn't seem to exist.
            Parameter name: scene
            CallStack:
               at Duality.Resources.Scene.SwitchTo(ContentRef`1 scene, Boolean forceImmediately) in c:\Stuff\svn\Projects\Duality\master\Duality\Resources\Scene.cs:line 155
               at Duality.Editor.Sandbox.Stop() in c:\Stuff\svn\Projects\Duality\master\DualityEditor\Sandbox.cs:line 158
               at Duality.Editor.Forms.MainForm.actionStopSandbox_Click(Object sender, EventArgs e) in c:\Stuff\svn\Projects\Duality\master\DualityEditor\Forms\MainForm.cs:line 585
               at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
               at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
               at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
               at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
               at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
               at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
               at System.Windows.Forms.Control.WndProc(Message& m)
               at System.Windows.Forms.ToolStrip.WndProc(Message& m)
               at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Done.


Add player command latency compensation

Somewhat experimental fix for #73. Worked very well with XBMC/Kodi (coming soon to a PR near you), didn't seem to have any ill effect on VLC or MPC, the two existing players I tested with.
playerCommandDelay should generally be set to an amount of time longer than the expected largest delay between sending a play/pause/seek command and having that command reflected in the status reported back to the client. Some kind of autoconfiguration (or just a warning if "fighting" is observed) would be nice, but this at least provides a configuration option for user adjustment.
With appropriate configuration, I suspect this fixes issues with madVR when "delay playback start until render queue is full" as well, as reported in #52.

If Syncplay detects the relevant change has actually been implemented (e.g. because the player has a play/pause or position state consistent with the most recent desired change), does this override playerCommandDelay time, or would Syncplay continue to ignore the player even though it had indicated that it had implemented the relevant command?

Right now it continues to ignore the player, yes. It could watch for the "expected" state, but since the delay is honored for seeks as well doing so could be tricky.
The benefit of skipping the delay, as I see it, is faster reaction to some state changes. I'm not convinced it's worth the complexity, since sufficiently long command delays will be compensated for by seeking if necessary- skipping the delay just eliminates some seeks.

Ok, I gave it some thought.
For a second lets discard all changes in player classes and _playerRequest method and cookie idea, but keep _playerCommand.
Wouldn't following achieve the same result if executed there (not tested)?
self._askPlayerTimer.stop()
self._askPlayerTimer.start(constants.PLAYER_ASK_DELAY, false)
# Reschedule ask player to time.time() + PLAYER_ASK_DELAY
# so players can update it's state after receiving a command

Also, I don't like idea of making cookie value configurable (it's too hard to comprehend it's function to modify)

Wouldn't following achieve the same result if executed there (not tested)?

It doesn't work in the case where a call to _playerCommand happens between a call to askForStatus and the player calling back to updatePlayerStatus. Without a cookie to flag that the data coming into updatePlayerStatus is stale, the client could wrongly see the old status.

Also, I don't like idea of making cookie value configurable (it's too hard to comprehend it's function to modify)

I think it's important to be configurable, since selection of an appropriate value could depend on many variables (machine speed, network conditions..) and longer delays, while not exactly harmful, tend to be more annoying (causing more seeking on pause).
In general, I'd say the guideline is "increase this value if you see rapid switches between playing and paused without any input, but keep it as low as possible " which is pretty easy to understand. There's probably room for UI improvement to make that more obvious, but I don't think removing the option is the right answer.

Okay. It seems you're right on that one.
Now the question is: what are the consequences of setting playerCommandDelay on a high (or any) value, I don't think I figured them all yet.
Let's say I set it for 5 seconds, what's then?

I'm speculating a little here since I haven't tested it, but mainly it'll act as if the player is stalled while waiting for the timeout to expire.
For example, a room has two users A and B. B has a 5-second command delay. Both players are initially paused. On unpause, A begins playing with negligible latency while B's command delay causes the client to report as playing, but time is not advancing. This quickly becomes a situation where B appears to be lagging, so A rewinds to be back in sync. When B's delay expires, their client reports the actual player time, which is up to 5 seconds ahead of what B's client was reporting. This causes more seeking.
In the worst case, B rewinds to be back in sync with A at this point, and once again is subject to its command delay which could put both clients in a loop of seeking. Otherwise A can seek forward to be back in sync, which isn't an issue.

So I guess this implementation trades play/pause loops with seek loops in some configurations, but that could be fixed by artificially advancing the client's time in a fashion similar to how it currently records the playing/paused state on sending a command to the player.

Check out my edit on previous post.
I think loop / rewind should not occur because of self._lastPlayerUpdate but I might be wrong and it needs testing

Real-world data point: I need about 150ms delay for robust sync across my LAN with Kodi (with syncplay controlling Kodi on another machine).
I tested some with two clients, each with a 5-second delay and observed no looping. Same result if one has a long delay but the other none, so it looks we're okay on that count.

The question then is how to handle the option controlling this functionality. What it looks like now, in the GUI:

The short description isn't very meaningful to most users, whereas I think the tooltip explains when you might want to change it (though the current wording could be improved). I could leave it as is but improve the tooltip, add better explanation to the label (so users don't need to read the tooltip to learn what it's good for), or do something else that sounds better to everybody.

On the other hand I tested it out got heavy loops after seeking.
Cookie introduces following issues:

Executing two player commands at once:

If you pause and unpause (i.e. miss-click) your player actually starts playing, but everyone's else will start only after the delay (introducing desync and slowdowns).
If you seek and unpause (common for i.e. "Did you see that") it yet again introduces delay.

When your player was seeked by some other client right before updating it's global status it literally breaks. It's fun issue.

Your player seeks and starts ignoring incoming statuses for the delay.
Your player reports its position based on _lastPlayerUpdate thus it reports it's position from before the seek.
People are rewinded / seeked to old position.
On a good day your new position is reported to Syncplay before other clients make you seek back. You execute seek yet again.
On a very good day everything breaks actually.
Setting delay value low though mitigates those issues. At 0.05 it should be actually unnoticeable.

I think your way of thinking is correct and it addresses some issues. I'm thankful for your insight. Yet it might require some modifications or getting different approach.
Readjustment of delay value could be based on player / set by the player after approximating necessary value (i.e. calculated by your delay with Kodi).
Cookie might be actually not necessary for mpv at all (I think it handles API calls on separate thread thus is very fast in replying), but apparent in MPC (all API calls are delegated to main thread and can be delayed if it's stuck processing something else).
I think rescheduling askForStatus (as provided in previous example) might be a nice start too. It should at least fix half of the issues (askForStatus is executing in the main twisted loop). Forcing cookie to be no longer than PLAYER_ASK_DELAY is another possible improvement.
Other than that, it's possible to make askForStatus -> updateLocalState commands async (i.e. deferred implementation) and all the delays could be handled within player classes. Which I think is good idea to consider, but haven't thought it through.
@tarl Please express your thoughts on this and let's leave the decision for @Et0h

Executing two player commands at once:

Yeah, that's an inherent limitation of this approach. The delay should be kept as low as possible for any given configuration.

Your player reports its position based on _lastPlayerUpdate thus it reports it's position from before the seek.

This can be improved or fixed by handling seeks in the same way play/pause commands are (update the client state on sending the command, assuming that's what the player will do).

Setting delay value low though mitigates those issues. At 0.05 it should be actually unnoticeable.

We could even make the default delay 0, which would ensure none of the new (potential) issues can occur in the default configuration. Similarly, instruct users to increase the value only if necessary.

Considering that this patch (or more generally handling slow players) blocks XBMC/Kodi support, here's what I propose for merging:

Change the default command delay to 0, so users who don't change that will see no change in behavior.
Tweak the GUI for this option to discourage changing it unless actually necessary, clarify its purpose some.

With that machinery in place, we ensure it won't break existing users but it provides a platform to build on. I can then land the new player module I've been working on, and work can go into improvements such as:

Investigate alternate approaches to the problem
Autoconfiguring command delay
Rescheduling askForStatus (saving some wasted work during delays and generally improving player status latency by 0.5*PLAYER_ASK_TIME following a command)

I think many of the issues could be resolved if Syncplay knew what the player state should be assuming recent changes had yet to be executed, and what the state should be assuming all changes had been implemented.
With this information Syncplay can have a good sense of whether the player had successfully implemented all requested changes so that it could start trusting what the player said again, and in the meantime report to the server a best-guess situation based on what the position and play/pause state should be assuming the state changes had been implemented (and, if playing, assuming that position will move forward at 1 second per second).
Some of this work already exists for VLC and mpv (e.g. with getCalculatedPosition) but may need more testing.

That should be pretty easy. It's already doing that for _playerPaused in _serverPaused and _serverUnpaused, and we already do an adjustment based on the last player update time in getPlayerPosition, so updating _playerPosition on server seek will probably do the job.

I hammered on 094a204 with a lot of seeking and couldn't get it to do anything bad; seems okay?

Re: Line 523 of client.py, not sure if it one is supposed to set self._playerPosition to position before or after the user offset has been applied - will need to check.

Tested things out and things seem to work okay with low ignore levels set. With high ignore levels there can be some lag if you seek just after someone else, or if you pause/unpause and seek.

One possibility is that the seconds to ignore is set as "Auto" in settings GUI by default, and this then uses a per-player default setting. Then people can specify a different number if they wish to deviate from the per-player default. This can be achieved in the GUI by reducing minimum value of the spinbox and using setSpecialValueText.

The problem with an Auto setting is that a user can't tell what that automatic value is- if the default isn't high enough, they'd have to guess rather than having a starting point to work from.
I suppose the configuration option could be an adjustment from a per-player default, so the initial value is always zero and the actual amount of time involved depends on the player in use. Then the user's approach is simply to give it a positive value if the delay is not long enough in their configuration, or a negative value if they want to make the delay shorter.
This also helps prevent some problems where somebody might have a custom delay configured for a particularly slow player, but they switch to another one. If the options were "auto" or a fully-specified time delay, the faster player would tend to have a much longer delay than required if the user does not also change the delay setting. An adjustment from the default may still have a longer delay than necessary for the new player, but the actual length of that delay will tend to be lower.

Hmm, I see what you mean. If the latency issue only affects MPC-HC and XBMC then I guess one option would be to allow for per-player configuration of the delay values for these two players.

That's an option, but would require more work to support in the GUI (AFAICT the configuration GUI doesn't do anything on a per-player basis so it would need some new machinery to do so).
Or I guess the easy choice is to duplicate the option for each player that might need it, so with the current design (for example) there would be two spinboxes, one each for MPC-HC and XBMC.

Syncplay stores custom player command line arguments on a per-player-path
basis. However, I want to avoid clutter of the main tab. Could reuse the
way data is stored for that but use player names rather than paths, and
have it in misc. So long as it is stored in a flexible sensible
player-agnostic manner we can start with two spin boxes and have the option
to change it later without the config file getting out of date.
On 27 Oct 2015 00:50, "Peter Marheine"<EMAIL_ADDRESS>wrote:

That's an option, but would require more work to support in the GUI
(AFAICT the configuration GUI doesn't do anything on a per-player basis so
it would need some new machinery to do so).
Or I guess the easy choice is to duplicate the option for each player that
might need it, so with the current design (for example) there would be two
spinboxes, one each for MPC-HC and XBMC.
—
Reply to this email directly or view it on GitHub
https://github.com/Syncplay/syncplay/pull/77#issuecomment-151327743.

@tari: I merged this PR to shared-playlists branch as we test that thoroughly ATM. Though it had some conflicts so you might check into that.
If there aren't any issues found it will be just merged.

We tried this out in the Shared Playlist branch and it caused issues. Trying to do two actions in quick succession from the client was problematic, and it made Syncplay feel much less responsive.
The current view is that ignoring the player after a command has been issued before it has been implemented should be handled by the player code, as that can best take account of the behaviour of the specific player.

Slight clarification:
Player code = Syncplay's player class


solves hover effect issue in dark mode

Notes for Reviewers
This PR fixes #10351
Signed commits

[x] Yes, I signed my commits.

🚀 Preview for commit fdb5583676fafad8504af3ca1cc1ba957d9826cd at: https://65da4e9c3712083b3a006748--meshery-docs-preview.netlify.app

🚀 Preview for commit 8ea44ed35c84f9de37eb67af056f4ec5c6a64bc7 at: https://65da50074e315f3c2aaf14c6--meshery-docs-preview.netlify.app

@ayush844
Let's discuss it on the websites call.
Please add this as an agenda item in the meeting minutes, if you would :)

🚀 Preview for commit 9b2d06d1f57ba17b92df0c81323d4b17090703c8 at: https://65dc8f350acc2cbfda1f5352--meshery-docs-preview.netlify.app

@tofikwest, thank you for reviewing. This is most helpful. 👍

@ayush844, it's your first PR on the project! Exciting. 🎉

🚀 Preview for commit ea9c61efd4a8a8fdc2c5952d61107c630ff224f6 at: https://65dd4b1a9b6a8869bc4a8704--meshery-docs-preview.netlify.app


Add milestones and tasks to correct components

Note: Github is telling me it can't automatically merge. Any thoughts?

because it has conflicting files??
"Conflicting files
frontend/src/components/Sidebar/styles.jsx
frontend/src/views/HomePage/HomePage.jsx"


Exception in focus function section causes build failure

For tarantool, here is the log:
https://oss-fuzz-build-logs.storage.googleapis.com/log-507b4d63-a7cb-4228-8e8c-bc7c54334a05.txt

same is for fio

Should be fixed in https://github.com/ossf/fuzz-introspector/pull/261 I believe -- We should run the tests and if all works we can update oss-fuzz

This should be fixed -- I ran both tarantool and fio locally and found no issues. Once https://github.com/google/oss-fuzz/pull/7774 is merged on OSS-Fuzz we should see them switch.


Setup CD

Abstract
Let’s be honest, the maintainers are lazy, let’s automate the release.
Possible triggers

When a tag is pushed
When a GitHub Release is created
When a push to a release branch is done (could also be a merged PR)
Manual Actions trigger

Implementation details
A GitHub Actions workflow would trigger, package everything, and push it to PyPi.
Two secrets will have to be added: PYPI_USERNAME and PYPI_PASSWORD.
Additional details
This can also be used to setup a nightly release, as proposed in #7.

I think this sounds good, though I don't have much experience managing releases. However, I think a release branch and/or GitHub releases sounds good. We probably don't want to make a new release for every push. What do you think?

Yeah, the idea would be to trigger it when a push is done to a specific
branch, so only when a PR from the development branch (for instance master)
is merged to to release, so it will contain many contributions in the new
release.

That sounds perfect! How do you think is a good way to do the branching? Like CPython with master (main) as the development branch and maintenance versions on separate branches? Or maybe some other way?

Since PyPi uses a linear history, you can’t (and probably won’t need) any
backport, so my idea would be to merge from feature branches or forks to
main that’d act as a development branch, and when a release is ready to be
pushed merge it with release, and that will trigger a release, create a tag
and whatnot

That sounds a lot like the CPython way of doing things as well. I like it.
Would you like to work on this CD? It sounds like you know much more than I on this topic.

Sure thing!

Awesome; thanks! Keep me posted.

it makes it simple to push the PyPi and can also take care of managing development dependencies (like flake8 and pytest)

but as @Akarys42 is the one planning to do this I think we can go with whatever they decide

are we going to just use the normal setuptools, or maybe a tool like poetry?

Update: after a discussion about possible ways of managing dependencies, we decided that Poetry will probably be used.

since we are using poetry I am going to link the docs for the poetry publish command: https://python-poetry.org/docs/cli/#publish


[FLINK-5772] [elasticsearch] Allow Elasticsearch 1.x tests to rerun on failure

It was reported that Elasticsearch 1.x tests can fail with this exception thrown from the embedded ES node used in IT tests:
ProcessClusterEventTimeoutException[failed to process cluster event (acquire index lock) within 1m].
After some googling on this, it seems like this is a potential deadlock with Elasticsearch 1.x when creating indices.
From the looks of recent Travis tests, it seems that this flakiness rarely happens, so I think retrying the tests if they fail only for Elasticsearch 1.x and not newer versions would be a simple solution.
If it happens to pop out for 2.x and 5.x also, we might need to find another solution.

+1 to merge

Merging to master ..


Bad indentation in Overview documentation code example

The indentation of the dtype parameter and closing parenthesis in the get_df with dtype example in docs/overview.rst are incorrect:
df = get_df(
    table="players",
    keys=keys(player_id=["player_two", "player_four"]),
        dtype={
            "bonus_points": "Int8",
            "last_play": "datetime64[ns, UTC]",
            # "play_time": "timedelta64[ns]"  # See note below.
        }
    )

Should read:
df = get_df(
    table="players",
    keys=keys(player_id=["player_two", "player_four"]),
    dtype={
        "bonus_points": "Int8",
        "last_play": "datetime64[ns, UTC]",
        # "play_time": "timedelta64[ns]"  # See note below.
    }
)

The same issue is present in the README as well.


Update deps

Coverage remained the same at 97.662% when pulling cdd9c6ab535e233723d129631a027305403dc2fd on update-deps into 63761380fad989f70cf917974537570fadbbc25b on master.


[Question] Will Bot Framework support Facebook messaging_types?

Bot Info

SDK Platform:.NET, but also Node.js
Active Channels: Facebook
Deployment Environment: Azure Bot Service

Issue Description
Our team was reviewing Facebook documentation and we found that Facebook has added a new required field called messaging_types to their messages. Our dev team wants to know what implications this has for the platform, if there is a difference between Bot Framework generic messages vs custom messages we generate into the channeldata of a message.
Facebook Doc: https://developers.facebook.com/docs/messenger-platform/send-messages#messaging_types

+1. Partially overlapping #2924, about adding support for Facebook Message Tags.
Also, this will be required in the near future.

Breaking Change Notice
Beginning May 7, 2018 the messaging_type property will be required and all messages sent without it will not be delivered.
(source: Messaging Platform Docs

We already support It. It defaults to ‘Response’ and can be changed via ‘messageing_type’ in channeldata.
I will send you a link with the updated documentation soon.

Is this default property appended on route from Bot Connector to Facebook, or is there a minimum version of the BotBuilder SDK we have to upgrade/use?

This is not related to BotBuilder but part of the default behaviour of Bot Connector with Facebook.

@FranciscoPonceGomez, I'm quite confused now. Is it possible to change the messaging type or will the Bot Connector always use the default Response type?
If it is possible, it would be great if the docs.microsoft.com could be updated. Since this is something that has been requested a few times before and offers more options for pro-active bots on Facebook. See also issue #2924

@FranciscoPonceGomez I have successfully set the messaging_type using the channel data as suggested above however I also need to set the associated tag.  At present I get this error from Facebook:
{
  "error": {
    "message": "(#100) Tag is required for MESSAGE_TAG messaging type.",
    "type": "OAuthException",
    "code": 100,
    "error_subcode": 2018199,
    "fbtrace_id": "GvmKwSrcqVb"
  }
}

To me this indicates I have successfully set the messaging_type but not the tag.  I have tried adding the tag in the two places I've found from other suggestions as below but neither work for me.
activity.Properties = new Newtonsoft.Json.Linq.JObject();
activity.Properties.Add("tag", "CONFIRMED_EVENT_REMINDER");

activity.ChannelData = JObject.FromObject(new
{
    notification_type = "REGULAR",
    messaging_type = "MESSAGE_TAG",
    tag = "CONFIRMED_EVENT_REMINDER"
});

Any help would be great as this seems so close to working but at the same time is really limiting my bot's capabilities.
Thanks

Hi everybody
How can I verify that the message is arriving OK to Facebook Messenger Platform. I've been trying with the Graph API, but I cannot get the full body of the message and not even the list of cards I'm sending to the user, as this other guy says: https://stackoverflow.com/questions/48180713/facebook-structured-message-template-in-conversation-api

@FranciscoPonceGomez , is it posible to get the documentation you mentioned in your previous reply on Feb 20th?
"We already support It. It defaults to ‘Response’ and can be changed via ‘messageing_type’ in channeldata.
I will send you a link with the updated documentation soon."

@FranciscoPonceGomez or any other with the information, can you please share the documentation?. May 7th is 20 days from now and we must have our bots modified, tested and implemented by then.

@iMicknl @stuprice @advl03 @donromeo  Apologies this never got Addressed, please see my answer in #4854


This commit has already been published to nil, do you really want to modify it?

Description
When amending a commit, this message is shown even if the commit hasn't been pushed to a remote yet:
This commit has already been published to nil, do you really want to modify it?

Neovim version
nvim --version
NVIM v0.9.1
Build type: Release
LuaJIT 2.1.0-beta3
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/__w/neovim/neovim/build/nvim.AppDir/usr/share/nvim"
Run :checkhealth for more info
Operating system and version
Debian sid
Steps to reproduce

Make a commit
Try to amend it before having pushed it

Expected behavior

No prompt shows, saving a keystroke

Actual behavior

Prompt shows uselessly

Minimal config
-

Good catch!

TY!


How to use highchart modules?

Hello ...
In JS, I have to enable networkgraph module in order to use networkgraph chart.
In this package, is there a way to enable module like that? I have to use networkgraph chart in flutter.
Thanks for your awesome package.
Cheers!

Hi @w99910 ,
I have been given the option to add Hight Module
Example
HighCharts(
        loader: const SizedBox(
          child: LinearProgressIndicator(),
          width: 200,
        ),
        size: const Size(400, 400),
        data: _chartData,
        scripts: const [
          "https://code.highcharts.com/highcharts.js",
         # Pass the cdn of module you need . Get Cdn URL from https://code.highcharts.com/
        ],
      );


[feat] User pixels placed

As part of the accounts tab, we would like to track the total number of pixels a user has placed. This data can be queried from postgres Pixels table by checking the count of pixels from a users address.
This issue is to create a backend route for getting the amount of pixels placed from postgres, which takes a user address as a query parameter. Then, use that route on the frontend to load the number of pixels placed.
References

Useful backend route example
Frontend fetch location/variable
Useful frontend fetch example
Postgres table

Hi @b-j-roberts I will love to work on this.

Awesome, assigning you now!


Added commonly used data structures to x2cpg

Following off of @max-leuthaeuser's structure on js2cpg where these are separated into a package, I'm pulling some of these commonly used data structures into x2cpg to avoid duplication on this end.
Note ExternalCommand is added since solidity2cpg will be calling an npm package too.
Should this PR also reformat other frontends to adopt these or shall each frontend's maintainer do it in their own?

This means we just have copies of these utilities in x2cpg now, right? Maybe best to remove them from jssrc2cpg then and have jssrc2cpg call these utilities in x2cpg. I guess we'd have to merge jssrc2cpg to master first for that though.

Alternatively, we could merge this into master and have @max-leuthaeuser rebase js2cpg.

I guess we'd have to merge jssrc2cpg to master first for that though.

Alternatively, we could merge this into master and have @max-leuthaeuser rebase js2cpg.

Yes, will do that.

Feel free to merge then.


Recognize strings

SWC returns source-maps as JSON. In order to make source-map-to-comment take them, they need parsing first.
This PR makes sourcemap-to-comment recognize strings directly, allowing to skip extra JSON parsing/stringifying step.

Can you document it and add a test?

Done


Flux DLL bugfix

Instrumentation library doesn't work, because of few terrible mistakes in hooking code. I've fixed some of them.

Thanks for the fixes. I made your changes on another branch, so I am closing this pr


build Release configuration and fix compiler versions

Sets the correct compilers are used by the build.
Builds the shared library as 'Release'. Previous build 'RelWithDebug' requires debug dlls which are not included in the VC redistributable installed in the conda environment.
closes #211

I think you may have to use CRLF line endings since it's a batch file.

odd... I edited and pushed from windows

PS C:\Users[USER]\GitHub\CCPi-Regularisation-Toolkit\recipe> git ls-files --eol
i/crlf  w/crlf  attr/                   bld.bat
i/lf    w/crlf  attr/                   build.sh
i/lf    w/crlf  attr/                   conda_build_config.yaml
i/lf    w/crlf  attr/                   meta.yaml

that's only after my latest commit :)


glib: Correctly mark future returned by ThreadPool::push_future() as …

…Send+Sync+'static

It could've also been Unpin but because of the async block that's not possible anymore. Probably not much of a problem in practice. (CC @jplatte )

That's unfortunate. I wonder whether there are any plans to make futures that don't borrow across .awaits Unpin (a cursory search returned nothing).

That's unfortunate. I wonder whether there are any plans to make futures that don't borrow across .awaits Unpin (a cursory search returned nothing).

Can you create an issue and link it here? I would've assumed that to be part of the plans :)

https://github.com/rust-lang/rust/issues/82187


undefined: registry.OpenKey when cross compiling on Linux for Windows

Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (go version)?
go version go1.10.1 linux/amd64
What operating system and processor architecture are you using (go env)?
Ubuntu 18.04.1 LTS
What did you do?
Corss-compile code for Windows
package main
import (
	"log"
	"golang.org/x/sys/windows/registry"
)
func getSystemDNS() {
	roots := `SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces`
	registryKey, err := registry.OpenKey(registry.LOCAL_MACHINE, roots, registry.ENUMERATE_SUB_KEYS|registry.QUERY_VALUE)
	if err != nil {
		log.Printf("Failed to read %s: %v\n", roots, err)
	}
	log.Printf("Failed to read %s: %v\n", roots, registryKey)
	defer registryKey.Close()
}

Command
GOOS=windows GOARCH=386 go install

What did you expect to see?
A clean compilation
What did you see instead?
agent/dns.go:16:22: undefined: registry.OpenKey
agent/dns.go:16:39: undefined: registry.LOCAL_MACHINE
agent/dns.go:16:70: undefined: registry.ENUMERATE_SUB_KEYS
agent/dns.go:16:98: undefined: registry.QUERY_VALUE

Your code and the error message are not in sync. I am assuming you have redacted some of the original code.
The current code that you have pasted compiles fine (as long as I add an empty main() function). Can you post a full self-contained code which reproduces the error ?

My bad. A bug in my shell script.


CNLOH determination fails

Another one.. really sorry:
Just seems to bug out at this point without generating anything... works fine without the --snv option
Spectre input: CNVCaller --coverage mosdepth/D23-51677.regions.bed.gz --sample-id D23-51677 --output-dir spectre2/ --reference /rds/homes/b/beggsa/beggsa-clinicalnanopore/genomes/grch38/genome.fa --blacklist grch38_blacklist_spectre.bed --min-cnv-len 1000 --snv clair/merge_output.vcf.gz
spectre::2024-03-22 10:01:46,588::INFO::spectre.spectre>  Spectre version: 0.2.0
spectre::2024-03-22 10:01:46,588::INFO::spectre.spectre>  Starting spectre
spectre::2024-03-22 10:01:46,588::INFO::spectre.spectre>  Evaluate if a new .mdr file needs to be created
spectre::2024-03-22 10:01:46,588::INFO::spectre.spectre>  Looking for default metadata.mdr in output directory
spectre::2024-03-22 10:01:46,588::INFO::spectre.spectre>  Using existing metadata file
spectre::2024-03-22 10:01:46,613::INFO::spectre.spectreCNV>  Spectre calculating for: mosdepth/D23-51677.regions.bed.gz
spectre::2024-03-22 10:01:46,613::INFO::spectre.spectreCNV>  Analysing CN neutral state from SNV data

@philippesanio
I've fixed this bug already in dev branch and couple of others bugs as well, current bug is in line is this one:
https://github.com/fritzsedlazeck/Spectre/blob/17b65b7ccf7d8481169649a538781cb4a611c807/spectre/analysis/snv_analysis.py#L74

Actually no, when I run it in debug mode it finishes pretty quickly and the log file is empty. Command is:
spectre CNVCaller --coverage mosdepth/D23_26167.regions.bed.gz --sample-id D23_26167 --output-dir spectre2/ --reference
~/beggsa-clinicalnanopore/genomes/grch38/genome.fa --blacklist ~/beggsa-clinicalnanopore/genomes/grch38/grch38_blacklist_spectre.bed --min-cnv-len 1000 --metadata ~/beggsa-clinicalnanopore/genomes/grch38/grch38spectremetadata.mdr --snv clair/merge_output.vcf.gz --dev

Reading the bugs above I wonder whether it might have something to do with AD/DP tags as I am using Clair3 which does not always output these in a standard way.

PS VCF is:
-rwx------ 1 beggsa nobody 62M Aug 17  2023 clair/merge_output.vcf.gz

Reading the bugs above I wonder whether it might have something to do with AD/DP tags as I am using Clair3 which does not always output these in a standard way.

It should not matter since we are using the DP or AF/VAF from the VCF.

PS VCF is:

From the file size it should compute fairly quickly.
I have pushed some changes (eb78bfe) which should address this bug #13 and the ones #10 #11 #12 to the main branch. However, they have not been packaged and are not available in the pip package yet.
Could you be so kind and test Spectre directly from source by cloning it and let me know if that has resolved the issues you encountered?
In order to run Spectre this way you will have to add a file in the same directory where the README.md file is located with the following content:
import sys
import re
from spectre.spectre import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())


Add filter used and duplicate PR Item

Coverage increased (+0.007%) to 78.585% when pulling d2618d1a2b077c8db8834e320e3afeed86d55a15 on kuswandanu:dev into ef136ded9423b61d423b8b3406e2ce0eaa3e9da8 on danliris:dev.