Add dummy parameter to url in reprojected DEM example to avoid shared cache

Fixes #10984
This provides an immediate fix for the issue seen in recent versions of Chrome.
It seems two sources using the same URL but different options (e..g. smoothing, cross origin) might be sharing the same internal cache (although that affect should have been seen in all browsers) so a follow up investigation might be desirable to see if internal cache can be duplicated if necessary without the performance overhead of overriding browser cache.

I have already tried defining the sources using ol/source/TileImage where the key option is supported (I'm not sure why ol/source/XYZ doesn't support the key option when it also supports tileUrlFunction, or why key is only used in conjunction with tileUrlFunction) and it did not fix the problem.

@mike-000 I don't think this can be handled on the application level. Overriding the getKey() method and adding a representation of the context options in ol/reproj/Tile should do the trick.

Using ol/source/TileImage distinct keys were being passed set in ReprojTile, but I have now added stringified context options to those values.  I have even added some extra ./ in the tile url in one of the url functions so the string is different but represents the same url, but all with no effect https://codesandbox.io/s/disable-image-smoothing-m20n3
The only change that did work was one url with ?key=key&map=1 and the other with ?map=1&key=key

Very suspicious. Also the fact that you're saying this only happens in the latest version of Chrome (which one btw? v81?).

Currently on 81.0.4044.129 on Win10, there has been one update since I first noticed this., Also on  80.0.4044.117 on Android but it doesn't happen on an outdated phone where updates haven't been available since version 71.  I also developed this on Chrome between December and March and would have noticed if it was happening then.

Regardless of whether this is a different issue or not, including the context options in the cache key of the tiles does make sense.

I agree, the potential for a problem existed.  The Chrome issue looks to be browser cache related as a change to the url of the enabled source requires several refreshes to fix the problem, but a change to the disabled source url fixes it immediately.

Ok I see now. There is no reprojection involved in that example. Anyway, better to override getKey() in ol/source/TileImage instead of appending to the key you retrieve using getKey(). Otherwise this will always be error prone.

I'd also vote against the workaround to append a query param to the url. No obscure workarounds please. Better to isolate the problem and find out why it only happens in Chrome 81. Experiments like disabling hardware acceleration and checking if the problem persists or the such.

Yes, I just turned off hardware acceleration on Win10 and I have not been able to reproduce the problem.


Ycmd periodically fails, multiple Ycmd servers running for a single Atom project/folder

Editing for a while, occasionally I will receive an Ycmd error like connection refused. Things continue though. When I look at all the Ycmd processes running, the number of them just keeps increasing...
$ ps ax | grep ycmd
67419   ??  Ss     0:01.98 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python /Users/jroback/Library/bin/ycmd/ycmd --port=53778 --options_file=/var/folders/1x/m5w5ghsj7cjgt13m2ss03rl40000gn/T/AtomYcmOptions-1463573610032 --idle_suicide_seconds=600
67622   ??  Ss     0:00.16 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python /Users/jroback/Library/bin/ycmd/ycmd --port=54538 --options_file=/var/folders/1x/m5w5ghsj7cjgt13m2ss03rl40000gn/T/AtomYcmOptions-1463574214989 --idle_suicide_seconds=600
67624   ??  Ss     0:00.18 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python /Users/jroback/Library/bin/ycmd/ycmd --port=54542 --options_file=/var/folders/1x/m5w5ghsj7cjgt13m2ss03rl40000gn/T/AtomYcmOptions-1463574215929 --idle_suicide_seconds=600
67625   ??  Ss     0:00.19 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python /Users/jroback/Library/bin/ycmd/ycmd --port=54551 --options_file=/var/folders/1x/m5w5ghsj7cjgt13m2ss03rl40000gn/T/AtomYcmOptions-1463574218559 --idle_suicide_seconds=600
67864 s001  S+     0:00.00 grep --color=auto ycmd

For small projects this is trivial but for large projects, Ycmd memory usage gets high and with the suicide timeout being 10 minutes, its not really viable if one keeps using the editor continuously..

I just updated the package with a fix. Please see if it works for you.

closer, but in handler.reset on Mac at least, the process parameter is a promise object, not a bufferedprocess object...
reset = ->
  realReset = (process) ->
    alert ycmdProcess
    process?.kill?()
    ycmdProcess = null
    port = null
    hmacSecret = null
  Promise.resolve ycmdProcess
    .then realReset, realReset

so the call the kill?() is never executed and the ycmd process remains... this doesn't seem to happen to me on Linux... Atom, 1.7.3 on both...

If I do this on Mac OSX
reset = ->
  realReset = (process) ->
    alert process
    process?.kill?()
    ycmdProcess = null
    port = null
    hmacSecret = null
  Promise.resolve ycmdProcess
    .then realReset, realReset

Just add an 'alert process' into reset, it Alert's [Object object] and ycmd process always is killed on Atom exit. If I remove the alert, the ycmd process always, 100%, remains... weird

ok, actually happens to me on linux as well. It seems if I re-open and it restores a previously open C++ file on startup, the ycmd process remains. If I close all tabs, then restart atom. I see no ycmd process. If I open the C++, ycmd comes online. Quiting Atom at this point kills the ycmd process.
If I now reopen Atom again, it will restore that window with the C++ file open on startup, ycmd server will start. Then I exit Atom and ycmd remains...
Something to do with how the process is initialized if Atom was a C++ file loaded on startup?

the problem is with handler.prepare() and handler.reset()
prepare() is called as part of the chain to handler.request(), but handler.reset() is also called in the event observer
observeConfig = ->
  atom.config.observe 'you-complete-me', (value) ->
    handler.reset()

When Atom is restoring C++ files on startup, there is a race and prepare() is called first. While waiting for the setTimeout to trigger, the observeConfig event is fired, calling reset(). This obviously causes issue.
As a test, I just commented out the handler.reset() in the observeConfig event and both platforms start and stop ycmd correctly, 100% of the time. Of course, what is lost is the ability to reset the server if the config changes...

Doing this seems to be working...
diff -Naur atom-youcompleteme/lib/handler.coffee /home/jroback/.atom/packages/you-complete-me/lib/handler.coffee
--- atom-youcompleteme/lib/handler.coffee	2016-05-18 15:15:50.540490063 -0600
+++ /home/jroback/.atom/packages/you-complete-me/lib/handler.coffee	2016-05-18 15:15:11.413401716 -0600
@@ -83,16 +83,14 @@
     .then startServer

 prepare = ->
-  ycmdProcess ?= launch -> ycmdProcess = null
+  if not ycmdProcess?
+    launch(-> reset).then (process) -> ycmdProcess ?= process

 reset = ->
-  realReset = (process) ->
-    process?.kill?()
-    ycmdProcess = null
-    port = null
-    hmacSecret = null
-  Promise.resolve ycmdProcess
-    .then realReset, realReset
+  ycmdProcess?.kill()
+  ycmdProcess = null
+  port = null
+  hmacSecret = null

 request = (method, endpoint, parameters = null) -> prepare().then ->
   generateHmac = (data, encoding) ->

ok if its not obvious, that doesn't work either. the real problem is the async'ness of the setTimeout in startServer. seems like you either want a singleton like pattern with the handler, or some indication that start is pending, queue promises to fulfill once the startServer promise is fulfilled from setTimeout...
even setTimeout() should probably loop using the /healthy endpoint of ycmd.

Here is the solution I came up with. Flag to indicate there is a pending launch. If pending, put all requests (deferred promises) into an array that will resolved as part of the final fulfillment of the launch.
This situation happens when Atom is launched and is restoring a window with multiple C++ files open. It will attempt to "launch" as many ycmd processes as it can within the window of "setTimeout"
diff --git a/lib/handler.coffee b/lib/handler.coffee
index 1b7f5bc..2ccff27 100644
--- a/lib/handler.coffee
+++ b/lib/handler.coffee
@@ -11,6 +11,8 @@ url = require 'url'
 utility = require './utility'

 ycmdProcess = null
+ycmdProcessPending = false
+ycmdProcessPendingPromises = []
 port = null
 hmacSecret = null

@@ -57,7 +59,7 @@ launch = (exit) ->
         reject error

   startServer = (optionsFile) -> new Promise (fulfill, reject) ->
-    process = new BufferedProcess
+    ycmdProcess = new BufferedProcess
       command: atom.config.get 'you-complete-me.pythonExecutable'
       args: [
         path.resolve atom.config.get('you-complete-me.ycmdPath'), 'ycmd'
@@ -76,23 +78,36 @@ launch = (exit) ->
           when 5 then reject new Error 'YCM core library compiled for Python 3 but loaded in Python 2. Set the Python Executable config to a Python 3 interpreter path.'
           when 6 then reject new Error 'YCM core library compiled for Python 2 but loaded in Python 3. Set the Python Executable config to a Python 2 interpreter path.'
           when 7 then reject new Error 'YCM core library too old; PLEASE RECOMPILE by running the install.py script. See the documentation for more details.'
-    setTimeout (-> fulfill process), 1000
+
+    setTimeout (->
+      ycmdProcessPending = false
+      pendingPromise.resolve() for pendingPromise in ycmdProcessPendingPromises
+      ycmdProcessPendingPromises = []
+      fulfill()), 1000

   Promise.all [findUnusedPort, generateRandomSecret, readDefaultOptions]
     .then processData
     .then startServer

 prepare = ->
-  ycmdProcess ?= launch -> ycmdProcess = null
+  if ycmdProcess is null and not ycmdProcessPending
+    ycmdProcessPending = true
+    launch reset
+  else if ycmdProcessPending
+    pendingPromise = Promise.defer()
+    ycmdProcessPendingPromises.push pendingPromise
+    pendingPromise.promise
+  else
+    Promise.resolve()

 reset = ->
-  realReset = (process) ->
-    process?.kill?()
-    ycmdProcess = null
-    port = null
-    hmacSecret = null
-  Promise.resolve ycmdProcess
-    .then realReset, realReset
+  ycmdProcessPending = false
+  pendingPromise.reject new Error 'YCM reset.' for pendingPromise in ycmdProcessPendingPromises
+  ycmdProcessPendingPromises = []
+  ycmdProcess?.kill()
+  ycmdProcess = null
+  port = null
+  hmacSecret = null

 request = (method, endpoint, parameters = null) -> prepare().then ->
   generateHmac = (data, encoding) ->

what problem are you trying to fix?
currently the promise from launch() is reused and all pending requests should be handled correctly.

https://github.com/atom/atom/issues/7252
https://github.com/atom/atom/issues/8294
Found two interesting issues.

if i open atom and it restores multiple C++ files, multiple ycmdProcess attempt to launch, best case as it is without my changes, are multiple ycmd exist where only the last launch one is used. also exiting Atom, ycmd doesn't exit without my changes.

with my last patch, I've used Atom all day today at work with multiple C++ projects, one really large one, and not a single problem. ycmd correctly stops and starts without any ECONNREFUSED errors, etc, on startup. But if you have a large C++ project and open Atom with say 3-10 tabs open, Atom YouCompleteMe currently blows up pretty hard on both OSX and Linux.

atom/atom#7252 is not interesting here, because there are no child processes. The python process launched is the only process involved. The problems come from the Atom YouCompleteMe code, when launch is called multiple times at startup, the ycmdProcess variable gets in a corrupt state, so when handler.reset() is called in deactivate(), its pointing to a Promise  (sometimes), instead of a BufferedProcess, so the call to process?.kill?() does nothing because kill() isn't a valid Promise method.. nor should it be.. and the ycmd process is not terminated on deactivate.

and these are all race conditions that are increased because launch uses setTimeout.. which should be obvious why, since we launch attempts can happen in the 1 second setTimeout is waiting for.

My changes will add a "pending" state, and queue up all prepare() calls while waiting for launch to finish, then resolve all promises when setTimeout in launch fires. From that point on, ycmdProcess != null and ycmdProcessPending == false, so prepare() just falls through with Promise.resolve()

And as an example on a large project, multiple ycmds hanging around is not good..
$ ps ax | grep ycmd
24129 ?        Ssl    0:12 /usr/bin/python /home/jroback/Downloads/ycmd/ycmd --port=45008 --options_file=/tmp/AtomYcmOptions-1463688989385 --idle_suicide_seconds=600
$ cat /proc/24129/status | grep '^VmRSS'
VmRSS:	  341060 kB

That one instance of ycmd uses 341MiB of resident memory. If you get 3,4,5 of them because Atom restored a bunch of files, you have to wait 10 minutes for suicide to get 1+ GiB of memory back...

Also,
prepare = ->
  ycmdProcess ?= launch -> ycmdProcess = null

If multiple prepare()'s are called while the first launch is in setTimeout(), they all don't use the same launch promise. ie. its not reused. I am unsure of your statement there really.
Since ycmdProcess is not set until setTimeout() invokes fulfill, they all launch ycmd processes separately.

you can see it compiles to
prepare = function() {
  return ycmdProcess != null ? ycmdProcess : ycmdProcess = launch(function() {
    return ycmdProcess = null;
  });
};

ok
prepare = function() {
  return ycmdProcess != null ? ycmdProcess : ycmdProcess = launch(function() {
    return ycmdProcess = null;
  });
};

I still think that is wrong. as the when multiple prepare()s are, ycmdProcess will be null and call launch() multiple times. its 100% reproducible for me. All I have to do is re-open a project with multiple CPP files open and it will launch multiple YCMD processes...

startServer is actually called only once here. I have no idea what's going wrong.

I would agree. Sorry about that. I think I may have been looking at the git repo in another directory, while running the older version in Atom, thinking I was running the latest version. This seems to work now, even with larger C++ files and projects.


GH-4833: Copy triple structures to avoid infinite loops

The current implementation of the algorithm for the hierachical JSON-LD output changes references of the triples stored in Lists and keeps adding these references to the output. This can leed to infinite loops when traversing the result. Making copies of the contained lists avoids this.
GitHub issue resolved: #4833

PR Author Checklist (see the contributor guidelines for more details):

[x] my pull request is self-contained
[x] I've added tests for the changes I made
[x] I've applied code formatting (you can use mvn process-resources to format from the command line)
[x] I've squashed my commits where necessary
[x] every commit message starts with the issue number (GH-xxxx) followed by a meaningful description of the change

If no one objects, I will merge this the end of this week (24/11/2023)


wai-aria: Update results

LGTM. Question - are there concerns about the remaining tests in the less-than-2 collection?

As you'll see in the CfC I am about to put out, I suspect those three are actual passes in the case of Firefox for IA2, and that Jon's ATTA might have a bug in it.


[BUGFIX] Fix White Box bug in UI

From Slack

Coverage remained the same at 78.663% when pulling dea77048cbe8211a92817cccbb48157438352818 on jeffreygohkw:master into 6fc46a33333752d4ade279318b5a4aa138bb00b4 on CS2103AUG2017-W09-B2:master.


Question on registering a function to receive form data and files

Hello There I have a question regarding registering a function that receives form data and files.
Looking at the example code, how must be a function registered in order to be able to receive form data and also files?
I cannot change the structure of the app, and the upload documentation won't give me any hint on how to do this given the app structure.
I tried several tests but failed...
(The example code has been reduced to the important stucture of the web app in order to give context to the question)
The example Jaxon controller
	require_once ($_SERVER['DOCUMENT_ROOT']. '/vendor/autoload.php');
	require_once ($_SERVER['DOCUMENT_ROOT']. '/myIncludedFiles.php');

	use Jaxon\Jaxon;
	use Jaxon\Response\Response;
	$jaxon = jaxon();

	$jaxon->setOption('js.lib.uri', '/src');
	$jaxon->setOption('js.app.minify', true);

	$jaxon->register(Jaxon\Jaxon::USER_FUNCTION, 'myFunction');
	## How would it be in order to register a function that receives form data and files?

	$jaxon->processRequest();

	function myFunction( $formData ){
		$jxnr = new Jaxon\Response\Response();
		$jxnr->setReturnValue($formData );
		$jxnr->script(" console.log('debugging in browser console...') ");
		return $jxnr;
	}

	$smarty->assign('jxn_js', $jaxon->getJs());
	$smarty->assign('jxn_getScript', $jaxon->getScript() );
	$smarty->assign('jxn_getCss', $jaxon->getCss());

The example html
<form id="myForm" name="myForm">
	<input id="someText" name="someText" type="text">
	<input type="file" id="upload_example" name="example_file" />
</form>

<script>
	jaxon_myFunction(jaxon.getFormValues('myForm'));
</script>

Hi,
Try this
$jaxon->register(Jaxon::USER_FUNCTION, 'myFunction', ['upload' => "'upload_example'"]);

That's how options are passed to functions when they are registrered.

I had some progress now thanks to your advice, now I am saving the image but lost all other form data.
I get PHP Notice:  Undefined index because there is no form data.
I debugged the content and nothing is being received as agrs in the function.
$jaxon->setOption('upload.default.dir',$_SERVER['DOCUMENT_ROOT'].'/upl/temp');
$jaxon->register(Jaxon\Jaxon::USER_FUNCTION, 'myFunction', ['upload' => "'upload_example'"]);

I decided to go arroud this and created a simple ajax function that creates a formData var and adds the image to it, then it POSTs it to myUploaderController.php and waits for the response, if ok, then it calls
jaxon_myFunction(jaxon.getFormValues('myForm'));
Here is my workarroud:
html calling ajax function:
<button type="button"  onclick="processImage();">Save all this data</button>
Jaxon controller:
$jaxon->register(Jaxon\Jaxon::USER_FUNCTION, 'prepareForm');
$jaxon->register(Jaxon\Jaxon::USER_FUNCTION, 'myFunction');
$jaxon->processRequest();

function prepareForm(){
	$jxnr = new Jaxon\Response\Response();

	// setup form html with smarty in my case

	$jxnr->setFunction('processImage', '', "
		var fileInput = document.getElementById('upload_example');
		var file = fileInput.files[0];
		var formData = new FormData();
		formData.append('file', file);

		//##DEBUG:
		//for (var [key, value] of formData.entries()) {
		//	console.log('log: ' + key, value);
		//}

		//2097152 = 2MB

		if(formData.get('file')['size'] > 2097152 ){
			console.log('too big')
		}else{
			$.ajax({
				url: 'util/myUploaderController.php',
				type: 'POST',
				data:  formData,
				contentType: false,
				cache: false,
				processData: false,
				dataType: 'json'
			}).done(function (response) {
				if(response.hasError){
					//ok, call jaxon
					jaxon_myFunction(jaxon.getFormValues('myForm'));
				}else{
					//ERROR, popMsg
					console.log('ERROR: '+response.msg)
				}
				//console.log('bo: '+response.bo);
				//console.log('msg: '+response.msg);
			});
		}

		return false;
	");

	return $jxnr;
}

function myFunction( $formData ){
	$jxnr = new Jaxon\Response\Response();
	$jxnr->setReturnValue($formData );
	$jxnr->script(" console.log('debugging in browser console...') ");

	//validate form data and do whatever I need to do with it

	return $jxnr;
}

My uploader controller demo:
<?php

// deal with image here

$response = array(
	'hasError' => true,
	'msg' => 'demo msg',
	'data' => null
);

echo json_encode($response);
?>

Hi,
Does your browser support FormData?
When the browser does not support FormData, Jaxon will send 2 requests to your application. The first request uploads the files, and thus contains no data other than the files. The second request will then contain your form data.
Replace $jaxon->canProcessRequest(); with the following to handle this case
if($jaxon->canProcessRequest())
{
    // Process the request.
    $jaxon->processRequest();
}
else if($jaxon->hasUploadedFiles())
{
    // Process upload.
    $jaxon->saveUploadedFiles();
}

Hello, thanks for your reply!
I tried
if($jaxon->canProcessRequest()){
	// Process the request.
	$jaxon->processRequest();
}else if($jaxon->hasUploadedFiles()){
	// Process upload.
	$jaxon->processRequest();
	$jaxon->saveUploadedFiles();
}

and also
if($jaxon->canProcessRequest()){
	// Process the request.
	$jaxon->processRequest();
}else if($jaxon->hasUploadedFiles()){
	// Process upload.
	$jaxon->processRequest();
	$jaxon->saveUploadedFiles();
}

I get the image in my configured directory, but still myFunction wont get the args.

Run the request in debug mode and see what's the value returned by the jaxon.getFormValues('myForm') call.
Also try to put the file input field in a separated form.
<form id="myForm" name="myForm">
	<input id="someText" name="someText" type="text">
</form>

<form>
	<input type="file" id="upload_example" name="example_file" />
</form>

Hi,
I have made a change to properly decode parameters when they are "multipart/formdata" encoded.
Check out the 2.2.6 release.
There've also been some changes in the js library: Raw values of input fields of type file are no more included form data, and "multipart/formdata" encoding is used if the user actually selects files to upload.
They are in the 2.0.6 release.

Wow thanks!
I'll check it out!


fix(nuxt): if href in nuxt-link starts with hash, render a tag directly

🔗 Linked issue
resolves #30074
📚 Description
When a NuxtLink component's href starts with # or ?, the rendered  tag's href includes the current route's path prepended to it. This issue only occurs when the component is located within the pages folder.
To address this issue, I followed the suggestion from the comments section of the open issue. I have implemented a solution specifically for cases where the href starts with '#'. In such cases, the component will render an  tag directly instead of using RouterLink.
Currently, this PR focuses on fixing the issue with #. I am open to feedback and to extend the solution to handle cases where the href starts with '?', provided there's guidance on the best approach for tackling that problem.
Additional note
This is my first PR here, so while I’ve done my best to follow the contribution guidelines, I welcome any suggestions for improvement.

Summary by CodeRabbit
Summary by CodeRabbit

New Features

Enhanced handling of hash links without hash mode in the NuxtLink component.
Improved link rendering logic to accommodate specific link types.

Bug Fixes

Corrected trailing slash behavior based on user settings.

Tests

Added test cases for identifying external links, including those starting with a hash (#).

Documentation

Updated comments and documentation for clarity on new functionalities.

@danielroe  I've added test cases for that and made the changes you suggested. Just let me know if they need any changes, and I'll update them

(no need to merge in the latest main branch unless there are conflicts)

@danielroe I've made several changes to resolve the issues that were causing tests to fail.

I wonder if this would cause any unexpected gotcha's with transitions between links. But as all links where just the hash changes should only move to certain anchors on the same page, this seems fine to me.
For query parameters, proper handling might be needed (but happy to be proven wrong otherwise).

thank you very much @vmrjnvc ❤


[VLM][Doc] Add stop_token_ids to InternVL example

FILL IN THE PR DESCRIPTION HERE
FIX #7349 (link existing issues this PR will resolve)
BEFORE SUBMITTING, PLEASE READ THE CHECKLIST BELOW AND FILL IN THE DESCRIPTION ABOVE

 PR Checklist (Click to Expand)
Thank you for your contribution to vLLM! Before submitting the pull request, please ensure the PR meets the following criteria. This helps vLLM maintain the code quality and improve the efficiency of the review process.
PR Title and Classification
Only specific types of PRs will be reviewed. The PR title is prefixed appropriately to indicate the type of change. Please use one of the following:

[Bugfix] for bug fixes.
[CI/Build] for build or continuous integration improvements.
[Doc] for documentation fixes and improvements.
[Model] for adding a new model or improving an existing model. Model name should appear in the title.
[Frontend] For changes on the vLLM frontend (e.g., OpenAI API server, LLM class, etc.)
[Kernel] for changes affecting CUDA kernels or other compute kernels.
[Core] for changes in the core vLLM logic (e.g., LLMEngine, AsyncLLMEngine, Scheduler, etc.)
[Hardware][Vendor] for hardware-specific changes. Vendor name should appear in the prefix (e.g., [Hardware][AMD]).
[Misc] for PRs that do not fit the above categories. Please use this sparingly.

Note: If the PR spans more than one category, please include all relevant prefixes.
Code Quality
The PR need to meet the following code quality standards:

We adhere to Google Python style guide and Google C++ style guide.
Pass all linter checks. Please use format.sh to format your code.
The code need to be well-documented to ensure future contributors can easily understand the code.
Include sufficient tests to ensure the project to stay correct and robust. This includes both unit tests and integration tests.
Please add documentation to docs/source/ if the PR modifies the user-facing behaviors of vLLM. It helps vLLM user understand and utilize the new features or changes.

Notes for Large Changes
Please keep the changes as concise as possible. For major architectural changes (>500 LOC excluding kernel/data/config/test), we would expect a GitHub issue (RFC) discussing the technical design and justification. Otherwise, we will tag it with rfc-required and might not go through the PR.
What to Expect for the Reviews
The goal of the vLLM team is to be a transparent reviewing machine. We would like to make the review process transparent and efficient and make sure no contributor feel confused or frustrated. However, the vLLM team is small, so we need to prioritize some PRs over others. Here is what you can expect from the review process:

 After the PR is submitted, the PR will be assigned to a reviewer. Every reviewer will pick up the PRs based on their expertise and availability.
 After the PR is assigned, the reviewer will provide status update every 2-3 days. If the PR is not reviewed within 7 days, please feel free to ping the reviewer or the vLLM team.
 After the review, the reviewer will put an  action-required label on the PR if there are changes required. The contributor should address the comments and ping the reviewer to re-review the PR.
 Please respond to all comments within a reasonable time frame. If a comment isn't clear or you disagree with a suggestion, feel free to ask for clarification or discuss the suggestion.

Thank You
 Finally, thank you for taking the time to read these guidelines and for your interest in contributing to vLLM. Your contributions make vLLM a great tool for everyone!

/ready

cc @DarkLight1337

Does the same code work regardless of the model variant?

Yes, the stop_tokens are collected from the model card instructions. I tested up to 8B model and the generation can stop normally.
I also added some comments to point to the stop words instructions to the model card.


Ranged Copy API

Support for the following functions:

pimCopyDeviceToHostRanged function
pimCopyHostToDeviceRanged function

Steps:

Functional support
Performance model

Supported idxBegin and idxEnd in pimCopy* APIs


dart analyze/flutter_lints: Allow negated checking with early return for BuildContext.mounted

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Use case
I would like to be able to check whether a BuildContext is mounted in an async function and to return early if the context is not mounted.
Here's an example of the code I want to write:
void _onShowButtonPressed(BuildContext context) async {
  // Simulates an asynchronous operation, like a network call.
  await Future.value();

  // Lint annotates the following line with `use_build_context_synchronously`.
  if (!context.mounted) return;
  showDialog(
    context: context,
    builder: (context) => const SimpleDialog(),
  );
}

I can do this, but dart analyze reports a finding:
% dart analyze
Analyzing mounteddemo...               2.1s

   info • lib/main.dart:32:10 • Don't use 'BuildContext's across async gaps. Try rewriting the code to not reference the
          'BuildContext'. • use_build_context_synchronously

1 issue found.

See the test case project: https://github.com/wesleym/mounteddemo.
Proposal
Today, writing this code does not result in any dart analyze findings:
// Simulates another asynchronous operation.
await Future.value();

// No lint error is added on the following line.
if (context.mounted) {
  showDialog(
    context: context,
    builder: (context) => const SimpleDialog(),
  );
}

It would be nice if an early return of the form if (!context.mounted) return would allow use of the context without checking mounted again until the next awaited operation.
Alternatively, it would be nice if the line if (!context.mounted) return was not itself causing an analysis finding. It makes no sense to wrap that line in a check for whether the context is mounted.

% flutter doctor -v
[✓] Flutter (Channel stable, 3.10.6, on macOS 13.4.1 22F770820d darwin-arm64, locale en-CA)
    • Flutter version 3.10.6 on channel stable at /Users/wesley/usr/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f468f3366c (4 weeks ago), 2023-07-12 15:19:05 -0700
    • Engine revision cdbeda788a
    • Dart version 3.0.6
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/wesley/Library/Android/sdk
    • Platform android-33, build-tools 33.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E300c
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] VS Code (version 1.81.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.70.0

[✓] Connected device (4 available)
    • Pixel 4a (mobile)        • adb-08041JEC201688-sXAWJ8._adb-tls-connect._tcp. • android-arm64  • Android 13 (API 33)
    • Wesley’s iPhone (mobile) • 00008030-000D78993C63802E                        • ios            • iOS 16.5.1 20F75
    • macOS (desktop)          • macos                                            • darwin-arm64   • macOS 13.4.1 22F770820d
      darwin-arm64
    • Chrome (web)             • chrome                                           • web-javascript • Google Chrome 115.0.5790.114

[✓] Network resources
    • All expected network resources are available.

• No issues found!

PS C:\Users\Elite\StudioProjects\occasions_app> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.10.2, on Microsoft Windows [Version 10.0.17134.1], locale en-US)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
[√] Chrome - develop for the web
[!] Visual Studio - develop for Windows (Visual Studio Community 2022 17.1.0)
X Visual Studio is missing necessary components. Please re-run the Visual Studio installer for the "Desktop development with C++" workload, and include these components:
MSVC v142 - VS 2019 C++ x64/x86 build tools
- If there are multiple build tool versions available, install the latest
C++ CMake tools for Windows
Windows 10 SDK
[√] Android Studio (version 2022.2)
[√] VS Code (version 1.81.0)
[☠] Connected device (the doctor check crashed)
X Due to an error, the doctor check did not complete. If the error message below is not helpful, please let us know about this issue at https://github.com/flutter/flutter/issues.
X Exception: Unable to run "adb", check your Android SDK installation and ANDROID_SDK_ROOT environment variable: C:\Users\Elite\AppData\Local\Android\Sdk\platform-tools\adb.exe
[√] Network resources
! Doctor found issues in 2 categories.

Closing the issue as it's Dart linter's issue. Please see https://github.com/dart-lang/linter/issues/4007 which has been fixed recently.


Add missing object type to 3.0 examples

As discussed in #1923 I'm adding the object type to the 3.0 example specs where it's missing.

Many thanks!


Don't capture fluentd metrics

What this PR does / why we need it:
Remove monitoring fluentd metrics
Which issue this PR fixes:
fixes #246
Special notes for reviewer:
I have not tested upgrading. Although i dont see what whould could go wrong.
Tests
❯ ./bin/ck8s ops kubectl sc  get servicemonitor -n fluentd
No resources found in fluentd namespace.

❯ ./bin/ck8s ops kubectl wc -n fluentd get servicemonitors
No resources found in fluentd namespace.

❯ ./bin/ck8s ops kubectl wc -n kube-system get servicemonitors
No resources found in kube-system namespace.

Prometheus-sc

wc-reader

Checklist:

[ ] Added relevant notes to WIP-CHANGELOG.md
[ ] Proper commit message prefix on all commits
[ ] Updated the public facing documentation
Is this changeset backwards compatible for existing clusters? Applying:

[ ] is completely transparent, will not impact the workload in any way.
[ ] requires running a migration script.
[ ] will create noticeable cluster degradation.
E.g. logs or metrics are not being collected or Kubernetes API server
will not be responding while upgrading.
[ ] requires draining and/or replacing nodes.
[ ] will change any APIs.
E.g. removes or changes any CK8S config options or Kubernetes APIs.
[ ] will break the cluster.
I.e. full cluster migration is required.

LGTM

I've now also removed prometheus metrics from the workload cluster.


renamed leaderboards to be more specific

in the interest of time due to our deadline, and because these changes are minor, I think it is ok to merge now


i can't connect to the slack channel

I am using weechat and i think this is the right command - /join -server anvil #general
from some reason it's not doing anything. I wonder if it's just me or maybe my client (weechat) is the problem?

Haven't heard of anyone using wechat before. I just installed it recently, can try connecting and see what's the issue. Do we have to enable something in the Slack itself?


Use bot project schema to drive ui experience

addressed via https://github.com/microsoft/BotFramework-Composer/pull/2118


Docker images not being run

Description
I have Docker installed along with an image of unibeautify/autopep8.  When beautifying Python, I get an error stating autopep8 is not installed.  From the looks of it, it's trying to go through the cmd line instead of running the docker image.  There is an error before it says it could not find autopep8 that looks relevant.
10/12/2017 11:56:53 AM - ./Docker Executable [error]:  TypeError: Cannot read property 'slice' of null
    at Executable.parse [as versionParse] (executable.coffee [sm]:280)
    at executable.coffee [sm]:51
    at tryCatcher (/Users/stevenzeck/Desktop/Development/atom-beautify/node_modules/bluebird/js/release/util.js:16)
    at Promise._settlePromiseFromHandler (/Users/stevenzeck/Desktop/Development/atom-beautify/node_modules/bluebird/js/release/promise.js:512)
    at Promise._settlePromise (/Users/stevenzeck/Desktop/Development/atom-beautify/node_modules/bluebird/js/release/promise.js:569)
    at Promise._settlePromiseCtx (/Users/stevenzeck/Desktop/Development/atom-beautify/node_modules/bluebird/js/release/promise.js:606)
    at Async._drainQueue (/Users/stevenzeck/Desktop/Development/atom-beautify/node_modules/bluebird/js/release/async.js:138)
    at Async._drainQueues (/Users/stevenzeck/Desktop/Development/atom-beautify/node_modules/bluebird/js/release/async.js:143)
    at Async.drainQueues (/Users/stevenzeck/Desktop/Development/atom-beautify/node_modules/bluebird/js/release/async.js:17)
    at process._tickCallback (internal/process/next_tick.js:103)

Input Before Beautification
This is what the code looked like before:
<INSERT CODE HERE>

Expected Output
The beautified code should have looked like this:
Actual Output
The beautified code actually looked like this:
<INSERT CODE HERE>

Steps to Reproduce

Install Docker along with the unibeautify/autopep8 image, restart Atom
Add Python code to Atom editor
Run command Atom Beautify: Beautify Editor
Errors

Debug
Here is a link to the debug.md Gist:
Checklist
I have:

[X] Tried uninstalling and reinstalling Atom Beautify to ensure it installed properly
[X] Reloaded (or restarted) Atom to ensure it is not a caching issue
[X] Searched through existing Atom Beautify Issues at https://github.com/Glavin001/atom-beautify/issues
so I know this is not a duplicate issue
[ ] Filled out the Input, Expected, and Actual sections above or have edited/removed them in a way that fully describes the issue.
[ ] Generated debugging information by executing Atom Beautify: Help Debug Editor command in Atom and added link for debug.md Gist to this issue

Docker had a couple of recent releases, and docker --version outputs Docker version 17.09.0-ce, build afdb6d4 right now.  https://github.com/Glavin001/atom-beautify/blob/master/src/beautifiers/executable.coffee#L382 doesn't look to recognize the .0 ending to the version.

Merged in #1889

Published to v0.30.6


Bug: Continue where you left off is missed up when resuming from the background

Description
Continue where you left off isn't working correctly when resuming from the background.
Steps To Reproduce

enable continue where you left off
enable option to keep running in the background
open multiple tabs
close window
resume session
see that the app redirects to the home page

Requirements
Restore correct tabs
Files Version
v3.2.4
Windows Version
Windows 11
Log File
NA

I suspect this is because closing the window clears the existing AppInstances. This in turn triggers AppInstances_CollectionChanged and causes the list empty list of tabs to be saved.


Embeded ZooKeeper: Redirect ZooKeeper Log from Console To One File

Now zookeeper log is printed in console, we should redirect it to one file like zookeeper.log

Done in Shifu develop-0.2.5 branch, this issue should be changed to Shifu


Please add option to support automatic reconnect when using wireguard with dynamic IP/DNS

Helly everybody,
at the moment, wireguard does not support automatic reconnect when a peer is configured with a fqdn which points to a dynamic ip.
So, the problem is, that with every IP-change, one must restart the wg-connection manually. Minimum once per month when updating to a new opnsense-version because of reboot and new WAN-IP. If you are cursed with a unstable connection, bad power grid or your provider performs ip-address changes regularly, you will go crazy.
I know, that there are some workarounds (scripts) out there, but it would be nice to see this as a native feature in opnsense, even if its not a native feature of wg itself. Could you please add a watchdog which will restart a wg-connection if a ip change is detected automaticaly?
To prevent periodic DNS-requests, i think it would make sense to periodically check the availability of the tunnels remote-gateway and if this is not available for a speicific period of time, a DNS-request should be performed.
Thanks.

Thanks for reply. Yes, you are right, this could be a possible solution.
IMHO a professional site2site VPN-solution should be able to restore tunnels by itself, without the need of workarounds. It would be nice if this could be implemented in the wireguard-plugin itself.

Thanks for reply. Yes, you are right, this could be a possible solution and i will try this.
IMHO a professional site2site VPN-solution should be able to restore tunnels by itself, without the need of workarounds. It would be nice if this could be implemented in the wireguard-plugin itself.

No, it should be supported by the VPN application itself, like it is within OpenVPN or IPsec. Only cause everyone hypes WireGuard doesn't mean it's better than the others. It's only faster on low-cost cpu's

I dont hype wireguard. Anyway, i just use it for some kind of reasons.
I aggree that such a feature should be handley by the VPN application itself. However its not implemented in the application yet.
I dont want to force my request, but i am sure my request is not some kind of special usecase. There are some toppics in the opnsense forum about this topic so i think a lot of people strugle with this behaviour.
I think it would make sense to think about a extention of os-wireguard with a small scripted watchdog.

This can be done by a cronjob once this is release: https://github.com/opnsense/plugins/pull/2956
Monit can also be used to execute the script in /usr/local/opnsense/scripts/OPNsense/Wireguard/resolve-dns.bash.

This can be done by a cronjob once this is release: https://github.com/opnsense/plugins/pull/2956
Monit can also be used to execute the script in /usr/local/opnsense/scripts/OPNsense/Wireguard/resolve-dns.bash.

@budimanjojo can you explain how?


JSON not being parsed even when set to 'true'

Hi,
I'm having issues getting the JSON to display in my console even when it is set to true.  I know I'm getting a response from the API I'm using, but it only displays as '[object Object]'.
const rp = require('request-promise'),
   leagues = {
      uri: 'https://soccer.sportmonks.com/api/v2.0/leagues?{SUPER_SECRET_API_KEY}',
      json: true
    };
return rp(leagues)
  .then(leagues => {
    console.log(`leagues: ${leagues}`);
    return leagues;
  })
  .catch(error => {
    console.log(`leagues error: ${error}`);
  });

Am I missing something?  Or is the package not firing on all cylinders?  I'm using v4.2.1
Thanks!

Never mind.  A youngster not coding correctly here.  I got it fixed.  I can't console.log these in a template string.

Alright, no problem. Happy coding! :)


[NFC] Use a tree structure in list_cpu_features

This is in preparation to include cache hierarchy in the dumped data.

Thx a lot for the comments @digit-google I really appreciate it.
I'll address them as a separate PR, I'll make sure to add you as reviewer next time :)


First ever transition doesn't smoothly resize the menu

Any progress on that? Really looking forward to it!


Use $XDG_CONFIG_HOME instead of $HOME directory for configuration file

Hello,
I like your pager software! Very cool.
I'm replacing less with ov. I need to configure ov for similar keybindings to less, so I added the configuration file .ov.yaml. I noticed that the program expects it to be in $HOME directory.
I understand this is a common place for unix software to place files, but it is cleaner if software follows the XDG Base Directory Specification. The default path for configuration files is then indicated by $XDG_CONFIG_HOME, the default value is $HOME/.config/.
This way, users have control over where software configuration files are located, and the dotfiles won't clutter the home directory.
Will you consider switching the default path for the configuration file?
If you wish, I can open a PR for this.
best regards

Thanks you.
I used viper as is. you might be right.
If ov can be used even if $XDG_CONFIG_HOME takes precedence over $HOME, I would like to do so.

I opened a PR for this.

I think that's a good idea, the file name is cleaner. I will update the PR with your suggestion.

Great, thank you!


Naming conventions with unwrap

Is there a precedence for naming methods with unwrap in the title?  for example, from_vb_unwrap() seems ad-hoc when compared to the naming conventions used elsewhere in this library.  Wouldn't it be more conventional to use unchecked here instead of unwrap?

I agree that the name _unwrap feels weird and ad-hoc. This method exists for const reasons -- though maybe we don't need it anymore now that we can panic in const contexts? So maybe we can just drop it.
unchecked is definitely not the right suffix for a method that checks its input and panics.

unchecked is definitely not the right suffix for a method that checks its input and panics.

Good point.  Also directly bellow it there is already an _checked function.

This method exists for const reasons -- though maybe we don't need it anymore now that we can panic in const contexts? So maybe we can just drop it.

Yeah I think it's superfluous really.  If this is dropped,  pub const fn from_vb_unchecked can still be used in const context.

True, we can use unchecked in a const context -- but we should also just make from_vb const.

but we should also just make from_vb const.

I don't really have an opinion here since I'm not making use of it while in const context, although sure, that could be updated at the same time.  I image there's probably lots of other functions that could be const context that are not..


Slow establishing connection to one site but not others

If I try the code below on my Nexus 4, it takes over 60 seconds (about 63 usually) to establish the connection.  If I change the url from http://media.w3.org/2010/05/sintel/trailer.mp4 to http://www.w3.org then it works in just 300 milliseconds. Is it maybe trying one route first and timing out and then trying another? any way to make it work faster?
OkHttpClient client = new OkHttpClient();

                    Request request = new Request.Builder()
                            .url("http://media.w3.org/2010/05/sintel/trailer.mp4")
                            .build();

                Response response = null;
                try {
                    long start = System.currentTimeMillis();
                    response = client.newCall(request).execute();
                    long len  = response.body().contentLength();
                    Log.w(TAG,"Took " + (System.currentTimeMillis()-start));
                } catch (IOException e) {
                    e.printStackTrace();
                }

Thanks.

I couldn't reproduce this on my home network. Possibly a problem with a timeout. Shrinking your timeouts might help. Also, Happy Eyeballs is a thing that we might do someday.
https://github.com/square/okhttp/issues/506
No action to take here.

Could it have something to do with IPv6? when I get the Inet addresses I get the following for media.w3.org
media.w3.org/2001:470:8b2d:804:52:0:47:0
media.w3.org/<IP_ADDRESS>

but when I do it for www.w3.org I only get this:
 www.w3.org/<IP_ADDRESS>

This is what I used to print those:
 try {
                    InetAddress[] addresses =  InetAddress.getAllByName("www.w3.org");
                    for(InetAddress address : addresses){
                        Log.w(TAG,address.toString());
                    }
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                }


Room corners detection

Hello,
Is it possible to use the result of this work to detect the corners of the room?

Hi @ebrahimkhalilabbasi,
The task of detecting corners is not part of the task solved in this repository. But you can further use the output of this network in any way you want.

@bjekic thanks for your quick answer. Is it possible, for example, to get the length and width of the walls?

Hi @ebrahimkhalilabbasi,
Your tasks seem to be outside of the scope of this repository. I'm sorry but I cannot be of more help.


koord-scheduler: enhanced frameworkext to support Reservation

Ⅰ. Describe what this PR does
In order to support the subsequent enhanced Reservation (#1059), the mechanism in frameworkext needs to be further enhanced and optimized.

Add new plugin interfaces:

ReservationPreFilterExtension is used to support the return of fine-grained resources held by Reservation, such as CPU Cores, GPU Devices, etc.
ReservationFilterPlugin is an interface for Filter Reservation plugins.These plugins will be called during the Reserve phase to determine whether the Reservation can participate in the Reserve`
ReservationNominator nominates a most suitable Reservation in the Reserve stage and Pod will bind this Reservation.
ReservationScorePlugin is an interface that must be implemented by "ScoreReservation" plugins to rank reservations that passed the reserve phase.
ReservationPreBindPlugin performs special binding logic specifically for Reservation in the PreBind phase.

Add method AfterPreFilter in PreFilterTransformer to support triggering the correction of the State data of each plugin after the PreFilter.
Add method RunReservationPreFilterExtensionRemoveReservation, RunReservationPreFilterExtensionAddPodInReservation, RunReservationFilterPlugins and RunReservationScorePlugins for the convenience of calling these new plugin interfaces.
Add built-in scheduling cycle state named recommendReservationKey to  save the result of ReservationRecommender.

Ⅱ. Does this pull request fix one issue?
fix #1076

Ⅲ. Describe how to verify it
Ⅳ. Special notes for reviews
V. Checklist

[x] I have written necessary docs and comments
[x] I have added necessary unit tests and integration tests
[x] All checks passed in make test

/hold

/hold cancel
TBR, PTAL @hormes @FillZpp @saintube @ZiMengSheng

/lgtm
much clearer than before


to hosted production

[ ] all urls should be lowercase only, and words should be separated by hyphens.
meshUtilities/deserializers/deserializeAddress/ -> mesh-utilities/deserializers/deserialize-address/
meshUtilities/resolvers/resolveRepId -> mesh-utilities/resolvers/resolve-rep-id
jsontoTx -> json-to-tx

[ ] for web demo, we dont check if user is staked or delegated. meaning anyone can click buttons on our websites. we can do checks on the APIs in future. currently, just making it simple. so, remove (or hide) all the additional Run API buttons.

[ ] remove /users, can start from root?
/users/meshUtilities/resolvers -> /mesh-utilities/resolvers
/users/jsontoTx -> /tx/json-to-tx

[ ] setup backend/express to run on https://console.cloud.google.com/run

[ ] point api.meshjs.dev to cloud run instance

Can refer to https://github.com/MeshJS/mesh-saas/tree/main/backend/yaci/scripts for same deployment script for another service

Related issue #7 for delpoyment


100-step-rewards

Title: Implement Logarithmic Reward Thresholds and Customizable Icons for Step Tracking Event
Body:
Description
We need to enhance our step tracking event app by allowing event organizers to set up reward thresholds in a logarithmic manner. This will involve creating functionality for defining step thresholds and associating each threshold with a specific reward icon, which can be uploaded by the organizer. This feature will motivate participants by clearly defining the goals and visually representing the rewards.
Requirements

Admin Interface for Reward Configuration:

Implement a user interface in the admin panel that allows event organizers to define and edit reward thresholds and associated icons.

Logarithmic Thresholds:

Support for setting up at least three reward thresholds. Example starting thresholds might be set as follows:

Reward 1 Threshold: 3,000 steps
Reward 2 Threshold: 7,000 steps
Reward 3 Threshold: 13,000 steps

These thresholds should follow a logarithmic scale by default but allow the organizer to edit them as needed.

Uploadable Icons:

Allow organizers to upload an icon for each reward threshold.
Ensure compatibility with common image formats (e.g., JPG, PNG).

User Interface Considerations:

Provide immediate visual feedback for uploaded icons and successful data entry.

Backend Implementation:

Adjust the database schema to accommodate storing the new threshold and icon data.
Implement backend logic to handle creation, retrieval, updating, and deletion of the reward threshold data.

User Story
As an event organizer, I want to be able to set specific step thresholds for rewards in a logarithmic scale and upload icons representing each reward, so that participants have clear, visually engaging goals to strive towards during the competition.
Acceptance Criteria

[ ] The admin can access a reward configuration page from the dashboard.
[ ] Organizers can set and edit thresholds and upload corresponding icons through a simple form.
[ ] Thresholds and icons update in real-time on the participant interface once saved.
[ ] Proper validations are in place to prevent the submission of incorrect data formats.
[ ] All data is stored securely and is retrievable for editing.

done


No information available for how to log events to Performance Profiler Event Viewer

[Enter feedback here]
The Events Viewer in the Performance Profiler can apparently show custom events. However, I have been unable to figure out how to write an ETW event that actually shows up in the Event Viewer. There's no explanation at all in the documentation about how to do this, either. A little documentation or sample code would be much appreciated

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

ID: bff9974b-abfc-940c-5468-fdda504db11c
Version Independent ID: 6fe73128-5eae-5931-6530-336e46e8eed8
Content: Events Viewer - Visual Studio (Windows)
Content Source: docs/profiling/events-viewer.md
Product: visual-studio-windows
GitHub Login: @Mikejo5000
Microsoft Alias: mikejo

@1simonfish -- thank you for your feedback and request.  Please consider these resources:

Ask a question or find an answer on the Microsoft Q&A page for Visual Studio.
Check the Visual Studio MSDN Forum.
Stack Overflow
Reddit

@Mikejo5000 -- please look into this issue.

@1simonfish I'm asking about this. It sounds like you've instrumented your code with the custom ETW events, but they don't show up in the Events Viewer, is that right?

Correct. I used the following code (based on a SDK sample) to log events:
	TRACELOGGING_DEFINE_PROVIDER( // defines g_hProvider
		g_hEtwProvider, // Name of the provider handle
		"MyCompany.MyApp", // Human-readable name for the provider
		//60acb110-eacc-57a3-4662-f068ec494dde
		(0x60acb110, 0xeacc, 0x57a3, 0x46, 0x62, 0xf0, 0x68, 0xec, 0x49, 0x4d, 0xde));

// At app startup
auto res = TraceLoggingRegister(g_hEtwProvider);
if (!SUCCEEDED(res)) OutputDebugString(L"Couldn't initialize ETW");

// At app shutdown
TraceLoggingUnregister(g_hEtwProvider);

// To log event
TraceLoggingWrite(
	g_hEtwProvider,
	"MyEvent",
	TraceLoggingLevel(WINEVENT_LEVEL_LOG_ALWAYS),
	TraceLoggingBool(true, "Start")
);

@1simonfish The basic steps to get custom events to show up are: (1) Build the custom event code, (2) In the Performance Profiler (Alt + F2), enable the Events Viewer and then select the Settings icon (gear icon) next to it. In the dialog box, enable the first row under Additional Providers, and (3a) for native custom event code, set the GUID based on your custom event code, and leave the provide name blank. (3b) For C# custom event code, use the same provider name you use when declaring your event code. This name gets converted into a GUID behind the scenes.
I will post an update to the article.

@karpinsn @hharshada Here is the PR for the custom events. Let me know if anything needs to change, and I will update it (updates might be in a follow up PR, since I will try to get this merged today). Thanks!

Doc update will be live by EOD PST.


Bump @types/node to v16

Updated @types/node to v16 and tested the respective examples.

thanks @scottn12!


ci: split into jobs

Coverage remained the same at 87.576% when pulling bbbb7c4b257728b9f825f14d5b5cbd347d984f50 on travs-parallel into 65b8549ebb52c8568e0bdaa9b28a37ae7842988f on v7.


Support nested nextPageParam values

Is your feature request related to a problem? Please describe.
My API returns the nextPageParam as meta.next. Passing --nextPageParam meta.next results in broken typescript generation as local variables don't support dots.
getNextPageParam: response => (response as { meta.next: number }).meta.next

Describe the solution you'd like
Support dots in the nextPageParam name and traverse the response accordingly.
Describe alternatives you've considered
I'll have to manually define the infinite query in the meantime, utilizing the generated API client.

It should have been resolved in v1.6.1.


Error during Installation

Hey there,
I used autochrome for a couple of months on Kali Linux. After the last systemupdate and rebuilding autochrome for the new Chromium Version I get the following Error message:
└─$ ruby autochrome.rb -c
[???] Detected Linux (x86_64)
[---] Determining latest Chromium version for Linux_x64
[---] Got latest version: Linux_x64 1035024
[---] Downloading Chromium from https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/1035024/chrome-linux.zip
[???] Saved  160036982 of 160036982 bytes (100%)
[---] Installed Chromium
/home/user/autochrome/lib/auto_chrome/prefs.rb:87:in `initialize': EVP_PKEY_new_mac_key: malloc failure (OpenSSL::HMACError)
	from /home/user/autochrome/lib/auto_chrome/prefs.rb:87:in `new'
	from /home/user/autochrome/lib/auto_chrome/prefs.rb:87:in `sign'
	from /home/user/autochrome/lib/auto_chrome/prefs.rb:69:in `[]='
	from /home/user/autochrome/lib/auto_chrome/profile.rb:79:in `block in init_prefs'
	from /home/user/autochrome/lib/auto_chrome/profile.rb:79:in `each'
	from /home/user/autochrome/lib/auto_chrome/profile.rb:79:in `init_prefs'
	from /home/user/autochrome/lib/auto_chrome/profile.rb:27:in `initialize'
	from /home/user/autochrome/lib/auto_chrome/profile_builder.rb:27:in `new'
	from /home/user/autochrome/lib/auto_chrome/profile_builder.rb:27:in `block in generate'
	from /home/user/autochrome/lib/auto_chrome/profile_builder.rb:26:in `map'
	from /home/user/autochrome/lib/auto_chrome/profile_builder.rb:26:in `generate'
	from /home/user/autochrome/lib/auto_chrome.rb:61:in `go'
	from autochrome.rb:91:in `<main>'

While on a fresh Debian Installation it works like a charm, it still throws that Error on a fresh Kali Linux Install.
Is there a possible Workaround?
Thanks in Advance!

The installed openssl Version:
Package: openssl
Version: 3.0.4-2

Seems openssl Version 1.1.1n-0  works, while openssl Version: 3.0.4-2 isnt anymore

I just made a pull request that fixed this issue for me.


Fix unicode line wrap problem (issue #409)

This seems to fix the unicode line wrap issue mentioned in #409
Nota bene, This fixed the problem for me on Fedora 21 and Ubuntu 15.04
Needs to be tested on other systems

Thanks, I'm merging this now.
@deanmalmgren, can you verify whether this fixes your issue (#409)?

Thanks for taking a stab at this @fa7ad. This doesn't appear to fix #409 for me. I'm not sure if it matters, but I'm using the bakke theme which sets a global PROMPT_COMMAND instead of PROMPT. I tried to put the PS1 enclosed in a \[ and \] but that didn't fix the wrapping for me unfortunately.
@fa7ad why does the \[ and \] fix the unicode issue? Should I more strategically enclose the unicode characters in those slash-brackets?

This is straight from stackoverflow

Bash uses the \[ and \] escapes in the prompt to determine the line length and where to wrap.

I don't know how exactly it happens but the brackets seem to separate out PS1 stuff from the rest of STDIN and STDOUT

I'm using powerline-plain theme btw

I just tried using the latest pull of bash-it 60ce75715152fbd3b71a6b1ce93388240507f257 and used powerline-plain and I'm still seeing the same issue, unfortunately. I'm pretty sure that #409 is related to older versions of bash; what version of bash are you using?

I'm using bash  4.3.30

I'm curious, what do you type to trigger the problem, maybe I can try that and see how that goes.
Because afaik, powerline-plain does have some unicode characters in its PS1.

I typed the same lorem ipsum dolar sit amet the quick brown fox blah blah and this is what I got. As you can see, it doesn't properly wrap to the next line:

If I keep typing the quick brown fox jumped over the lazy dog.  until it wraps to a second line, I get something like this:

As you can see, it totally overwrites PS1 and, once it wraps lines the first time, it kicks back into normal line breaking mode.

So, it wouldn't be too dumb to assume this is still related to PS1 i think.
can you paste your PS1 variable data somehow?
Mine is:
\[\e[37;1m\]\[\] \u \[\e[0m\]\[\e[0m\]\[\] \w \[\e[0m\]\[\]\[\e[0m\]

This is from my ~/.bash_it directory, which has a git repo in it. I ran echo $PS1 | pbcopy using powerline-plain and pasted the result here:
\[\e[37;1m\]\[\] \u \[\e[0m\]\[[38;5;166;48;5;238m\] ‚éá master {1} U:1 \[\e[39m\]\[\e[0;31m\]x \[\e[0m\]\[\e[0m\]\[\] \w \[\e[0m\]\[\]\[\e[0m\]

If I run it from within a directory that is not a git repo, I see the same thing that you posted:
\[\e[37;1m\]\[\] \u \[\e[0m\]\[\e[0m\]\[\] \w \[\e[0m\]\[\]\[\e[0m\]

Just tried this as well, and it's working fine over here:

This is on Mac OS X 10.10.3, running GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14), and the latest version of Bash-it (powerline-plain theme).
Here's the $PS1
\[\e[37;1m\]\[\] \u \[\e[0m\]\[[38;5;166;48;5;238m\] ⎇ master U:3 \[\e[0m\]\[\e[0m\]\[\] \w \[\e[0m\]\[\]\[\e[0m\]

Mmm, can be a font problem? What font are you using in your terminal and what terminal app (native Mac terminal or iTerm)?

Good point. I'm using the native Terminal app with the Source Code Pro for Powerline font, and it's working fine for me.
@deanmalmgren What are you using?

Interesting. This is a great lead. Thanks everyone for all your help!
I'm using Terminal.app with Monaco 10pt font. I just tried Source Code Pro from Google Fonts and that doesn't fix the problem for me.
I'm also using the solarized dark theme that I downloaded from somewhere but I can't seem to find that location any more. In Profiles > Advanced I "declare terminal as" xterm-256color and also have set "Text encoding" to Unicode (UTF-8). Could that have anything to do with it?

I'm pretty sure that this is a unicode issue because if I omit all of the unicode from my PS1, the problem goes away.

Can you paste the value of the $LANG environment variable?
echo $LANG

For me, it shows de_DE.UTF-8...

Also, can you try one of these fonts? They contain the extra characters for Powerline: https://github.com/powerline/fonts/tree/master/SourceCodePro

I just installed the [regular weight]((https://github.com/powerline/fonts/blob/master/SourceCodePro/Sauce Code Powerline Regular.otf) font and I'm seeing the same behavior when I use powerline-plain theme.

@nwinkler thanks for linking those fonts btw. powerline looks so much better with those :+1:

Sure, you're welcome!

@deanmalmgren What about the $LANG variable - what do you have there?

I got en_US.UTF-8

IDK if any of this helps but, here are some of my terminal settings.
I'm using Solarized Dark colors

@fa7ad in my Gnome Terminal configuration, "Compatibility" tab, "Ambiguous-width-characters" option, the value I have is "narrow".

@edubxb
This is just my thoughts/experience with the option. may not be correct at all.
Wide option helps when I type some Unicode Asian languages, some of these script languages modify a character as you type instead of adding new characters. narrow tries to do this overlap properly but causes weird characters. wide just doesnt even try to overlap so they end up as separate characters.
IDK, languages in this region are really complicated :stuck_out_tongue_winking_eye:

@fa7ad :+1:

sorry...I thought I posted my $LANG. Its en_US.UTF-8
Thanks for posting your settings @fa7ad. That helped a lot! It turns out, setting TERM=xterm fixed the problem for me, which I will summarize with a screenshot:

The question now is what we ought to do about this. Should we have bash-it display a nice error message if people have $TERM=xterm-256color? Is there something else we can do if people do have xterm-256color set?

Interesting - I have TERM set to xterm-256color, and it works fine for me...


split MP:0009446 abnormal platelet dense granule physiology

Consider splitting abnormal platelet dense granule physiology - add terms for
abnormal/increased/decreased/absent dense granule secretion
See J:231551 and existing annotations

Looking at existing annotations, it is evident that we do need new terms for abnormal/increased/decreased/absent dense granule secretion.
abnormal platelet dense granule secretion
DEF: any anomaly in the regulated release of any of the contents of platelet dense granules, such as cations (Ca2+, Mg2+, K+), polyphosphates, nucleotides (ADP, ATP, GTP) or bioactive amines (serotonin and histamine) during the platelet activation response
SOURCE: https://doi.org/10.1016/B978-0-323-35762-3.00125-6
Question: How does dense granule secretion relate to platelet degranulation GO:0002576 (synonym: platelet exocytosis)? Platelet granule exocytosis is a classic example of regulated secretion.

seems like platelet degranulation is a broader term as it may apply to any type of platelet granule (GO has dense and alpha granules listed in cellular component branch). I think exocytosis is the correct GO process but we would need to connect process to specific GO cellular component, use pattern abnormalCellularComponentProcess.yaml
"'has_part' some ('process quality' and ('inheres_in' some (%s and ('has_participant' some %s))) and ('has_modifier' some 'abnormal'))"

seems like platelet degranulation is a broader term as it may apply to any type of platelet granule (GO has dense and alpha granules listed in cellular component branch). I think exocytosis is the correct GO process but we would need to connect process to specific GO cellular component, use pattern abnormalCellularComponentProcess.yaml
"'has_part' some ('process quality' and ('inheres_in' some (%s and ('has_participant' some %s))) and ('has_modifier' some 'abnormal'))"

Removed reference to 'during the platelet activation response' from the definition since release outside of that response would also be abnormal

Removed reference to 'during the platelet activation response' from the definition since release outside of that response would also be abnormal

added terms need to work on eqs

added terms need to work on eqs

added absent

added absent


How do I Make the example work

Do I run React-Native init? Does the example code go in the index.android.js? or in a component? Please help

I believe you run it the same way you would a react native application. You open the application in xcode or android studio that the react-cli built.
https://facebook.github.io/react-native/docs/getting-started.html#content


r20171009

Coverage decreased (-0.06%) to 85.535% when pulling 95450025c9aebeb22a93a1def13697774b918c44 on r20171009 into eceb5b86cf7ce1937e1f1c7643d06c6d2f4d303d on master.


Support CHANGELOG.md file

I think it would be incredible if a CHANGELOG.md file was automatically picked up and had it's own tab on the package page like the README does. It's quite common to see these files around! Happy to help with a PR if there is interest

Or if the changelog doesn't exist fallback to github release notes, or commit history ... I think this would fit in well with the whole concept of JSR minimising tooling required for publishing (as tooling is often used to build the changelog in the first place).

I think having support for displaying a changelog in the UI would be great. My thinking:

Only support CHANGELOG.md - start by parsing this file, assuming it is in the https://keepachangelog.com/ format.
Render the changelog entries for each version into the versions on the Versions tab of each packages' page. That way we don't have to add another tab.
In the future, it'd be really cool to be able to show "symbol diffs" between versions by comparing the generated docs. For example, if a new function is introduced in a release, we could surface this through the changelog.

If a user does not write a CHANGELOG.md manually, at least the symbol diffs can provide an overview of API changes (but not internals changes, like bug fixes).

I'm migrating to a Deno workspace and creating separate CHANGELOG.md files for each of my packages. Now I think it would be even more useful to display the changelog in the JSR UI.
I am using keepachangelog too, but the only thing I have to change is not linking them to git tag ranges anymore since I use different versions for different packages in the repo. So the git tag to release flow doesn't work anymore.


Memory on remote node increases

Hallo,
I've setup successfully a cluster (ray 0.8.5) with two machines and I calculate on it different models in parallel. I do this for different settings of my model in python several hundred times in a for-loop and initialize and shutdown each time ray to clear the memory. This procedure worked on the local machine perfectly but on the remote node the memory is constantly increasing each time I initialize ray new. How can I clear the memory remotly for the remote node?
I'm working on two computers with Ubuntu 18.04LTS
Many thanks for your help!

@robertnishihara I would expect, that shutdown() behaves the same like on the local machine, but seems to be not the case. Why? Is this a bug?
So what works on the local machine but not on a cluster:
ray.init()
...
ray.shutdown()

How are you starting Ray? If you do ray.init() it only starts it on one machine. Are you running ray start ... on the different machines to start a Ray cluster?

Adding @stephanie-wang and @ericl.

Migrating this to https://github.com/ray-project/ray/issues/8822.


GPU GridLyer Part 6: GPUGridLayer fixes and docs.

For #2084

Background

Docs:

Update doc page for GPUGridLayer
Add doc page for NewGridLayer
Add sections in above docs describing differences with GridLayer and list all fallback cases.
Add demos for GPUGridLayer and NewGridLayer

GPUGridLayer

Fix color calculation when not extruded.
Fix color and elevation domain processing.

Change List

GPU GridLyer Part 6: GPUGridLayer fixes and docs.

Coverage decreased (-42.05%) to 19.911% when pulling fa30650357529aa32d41f47d0695bd6af045582c on GPUGridLayer6_docs into c9a1422726f2037009b6bf80f83e9fe7c06f040f on ColorElevationProps.


You are no working, or you never are working with rush mode? (gamemode)

Im have this dude, or this is the same gamemode to lastmn stanting?

Why are you doing this? @AlexByte918

@AlexByte918 Yes it is still being worked on, @Tyler3D started working on it when the original issue was made, I also helped with it a bit, but development has been slowed due to both of us being busy with other things.


Belarusian localization update

A help page is created;
spelling of one word is fixed to a more common variant.

Thank you for the PR! Please take a look at the help page:
curl be.wttr.in/:help

Does it look well to you?

Looks good to me.


iOS: Offline images aren't displaying

They work in story previews, so I know they are there, but they are broken in stories and look like broken images. Only happening when in airplane mode.

I don't think this is a critical issue, as it's how it's always been.
When drawing the story, it just displays the story content HTML, which includes img tags to the original site.
The preview in the Feed Detail does show a scaled (300x300) thumbnail from the image cache, which is why it works offline.
We could add logic to substitute the single thumbnail image into the story HTML, but it wouldn't have all of the images, and the scale may be a problem (would have to parse the image sizing to avoid that).
Alternatively, we could process the content HTML to strip out images when offline. Or substitute a placeholder image (which the broken image is kinda already doing).
Do you want me to try one of those approaches?

I don't understand, this used to work. The broken image is probably addressing the wrong offline stored image. Even if this has been the case, this is a critical issue and should be fixed in I believe the dejal branch so we can ship a fix out.  But if it's turned on, we should be showing them!

Okay, I've figured out the issue. NewsBlur used to use activeCachedImages to substitute file URLs of cached images in the HTML, but that was removed by you on 2014-09-26 (before my time): "Adding NSURLCache layer for caching of offline images. No more rewriting of image URLs."
So the issue seems to be related to the change from UIWebView to WKWebView back in 2020. Since WKWebView uses an external iOS-controlled process to render pages, it isn't using the NBURLCache.
I'll see if I can make it either use the cache, or have a delegate handle it. If not, we could restore the old URL substitution code, perhaps only when offline.

I spent some time trying to figure out if it is possible to use a custom cache or callback with WKWebView, but it doesn't seem like it is. Not too surprising, since it's in a separate process. So I restored the old image URL substitution approach, only used when offline, with some fixes to make it work. That seems a perfectly fine solution.


Feature Request: Hyper.sh integration (or similar)

It would be amazing if there could be some form of integration with a pure container service like hyper.sh! If there is alternative that would work too!
Basically, just some option that would allow pushing a local container to a production environment.

Hi!
I'm not really clear on if they have their own dev environment you can use or not. However I probably don't want to integrate any specific (paid) platforms.
If you know how to use it, and can write up an example, I can play with that and add it to the Customizing Vessel docs.


Save Report to Database

Can we save report layout to database instead of RDL file.

As far as I know, this is not support in our viewers and designer.
But, if you want integrate engine with your application, you can do it. Because engine can get rdl in text format, or small rewrite for it. See how we get report from file https://github.com/majorsilence/My-FyiReporting/blob/master/RdlGtkViewer/RdlGtkViewer/RdlGtkViewer.cs#L446
You can get text of rdl from DB inside you application and send rdl to RdlEngine without save to disk.


422 validation failed

Started getting this error when creating an issue through the workflow. This worked a couple of weeks ago, so I'm wondering what has changed and how to resolve this. I have not changed anything in the repo setup.
Respond "approved", "approve", "lgtm", "yes" to continue workflow or "denied", "deny", "no" to cancel.
error creating issue: POST https://api.github.com/repos/org/repo/issues: 422 Validation Failed [{Resource:Issue Field:assignees Code:invalid Message:}]

I am closing this issue, as I found a solution based on a similar issue that was published here.

What was the solution?


Toggle case of selected text with a keyboard shortcut

Description of the new feature / enhancement
In any standard text field, pressing a key combination (such as tapping shift 3 times in rapid succession) will cycle any selected text through this sequence: all caps -> all lower case -> title case -> small caps -> (repeat with all caps).
The user can configure which of these options will be used. Small caps should probably be disabled by default.
The user can also change the key sequence.
Scenario when this would be used?
While many text editors provide this function already, it would be nice if it was globally available with all text inputs, as as many as possible.
Supporting information
No response

/dup #907


Streaming stop after few hours

I have try to getting value from firebase node, and firebase stream works fine for few hours after that it didn't work. there  is no error message appear on serial monitor.
#if defined(ESP32)
#include <WiFi.h>
#include <FirebaseESP32.h>
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#include <FirebaseESP8266.h>
#endif
#include <addons/TokenHelper.h>
#include <addons/RTDBHelper.h>
#define WIFI_SSID "ssid"
#define WIFI_PASSWORD "password"
// For the following credentials, see examples/Authentications/SignInAsUser/EmailPassword/EmailPassword.ino
/* 2. Define the API Key */
#define API_KEY "AIzaSyDDOhEKK0lFOSpn6SY9RjGUlFHtfddfNoU"
/* 3. Define the RTDB URL */
#define DATABASE_URL "databaseUrl.firebaseio.com" //.firebaseio.com or ..firebasedatabase.app
/* 4. Define the user Email and password that alreadey registerd or added in your project */
#define USER_EMAIL "emailID"
#define USER_PASSWORD "1234567890"
// Define Firebase Data objects
FirebaseData stream;
// for authentication and configuration
FirebaseAuth auth;
FirebaseConfig config;
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println();
pinMode(2,OUTPUT);
digitalWrite(2,1);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);
config.database_url = DATABASE_URL;
// User login details
auth.user.email = USER_EMAIL;
auth.user.password = USER_PASSWORD;
config.api_key = API_KEY;
config.token_status_callback = tokenStatusCallback; // see addons/TokenHelper.h
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
if (!Firebase.beginStream(stream, "/test/stream/data"))
Serial.printf("sream begin error, %s\n\n", stream.errorReason().c_str());
}
void loop()
{
if (!Firebase.ready()){
Serial.println("firebase not ready !");
return;
}
if (!Firebase.readStream(stream))
Serial.printf("sream read error, %s\n\n", stream.errorReason().c_str());
if (stream.streamTimeout())
{
Serial.println("stream timed out, resuming...\n");
if (!stream.httpConnected())
  Serial.printf("error code: %d, reason: %s\n\n", stream.httpCode(), stream.errorReason().c_str());

}
if (stream.streamAvailable())
{
Serial.printf("sream path, %s\nevent path, %s\ndata type, %s\nevent type, %s\n\n",
stream.streamPath().c_str(),
stream.dataPath().c_str(),
stream.dataType().c_str(),
stream.eventType().c_str());
printResult(stream); // see addons/RTDBHelper.h
String data = stream.to();
if(data== "on") digitalWrite(2,0);
if(data== "off") digitalWrite(2,1);
Serial.println();
}
}

There is no bug like this in this library which has been test 24/7 for years.
When id token or access token was expired (in 59 minutes), the token will be refreshing, and you will see this debug message
Token info: type = id token, status = on refreshing
Token info: type = id token, status = ready

If the network connection is the issue, you will see the error about the connection.

I've check the wifi connection and internet also. I have also try with different wifi router and mobile hospot, but this issue is still coming. No error message or debug message  appears in serial monitor but void loop is still running.

I've check the wifi connection and internet also. I have also try with different wifi router and mobile hospot, but this issue is still coming. No error message or debug message  appears in serial monitor but void loop is still running.

From your code, at least you should see "firebase not ready !" .
There is no issue for such simple code or all examples code.
You should set the debug option in Arduino IDE to see what's happen in WiFi and SSL client operation and debug it yourself.

If you see the stream event type "auth_revoked" from the last stream data, this means the id token or access token was expired and the token refreshing process is not complete before token expiry time.
The token refreshing process will start 1 minute before your token expiry time. This may cause the problem in some situation depending how Firebase.ready was polling run.
To prevent this, you can set the time to start token refreshing process sooner by setting this in setup() like this.
https://github.com/mobizt/Firebase-ESP8266/blob/f20f0b68ee62922a709f74716598965b7c59a3f3/examples/Authentications/SignInWithIDToken/SignInWithIDToken.ino#L109-L110

I will update the library to refresh token sooner before expiring to prevent this auth_revoked issue.

As you say I have set preRefreshSecond to 15 minutes, but still issue is not resolve. Serial monitor show the "event type, auth_revoked"  message. This message is triggered after 59 minutes of token on Request. After that stream is not working.
this is from serial monitor.
08:33:45.340 ->
08:33:45.340 -> Connected with IP: <IP_ADDRESS>
08:33:45.340 ->
08:33:45.340 -> Firebase Client v4.0.5
08:33:45.340 ->
08:33:45.340 -> Token info: type = id token, status = on request
08:33:45.340 -> [hostByName] request IP for: www.googleapis.com
08:33:45.434 -> [hostByName] Host: www.googleapis.com IP: <IP_ADDRESS>
08:33:47.121 -> Token info: type = id token, status = ready
08:33:47.121 -> [hostByName] request IP for: rtdbDatabase.firebaseio.com
08:33:47.168 -> [hostByName] Host: rtdbDatabase.firebaseio.com IP: <IP_ADDRESS>
08:33:49.371 -> sream path, /test/stream/data
08:33:49.371 -> event path, /
08:33:49.371 -> data type, string
08:33:49.371 -> event type, put
08:33:49.371 ->
08:33:49.371 -> on
08:33:49.371 ->
08:34:07.316 -> sream path, /test/stream/data
08:34:07.316 -> event path, /
08:34:07.316 -> data type, string
08:34:07.316 -> event type, put
08:34:07.316 ->
08:34:07.316 -> off
08:34:07.316 ->
08:40:44.361 -> wifi evt: 7
08:47:54.356 -> wifi evt: 7
08:47:54.356 -> wifi evt: 7
08:47:54.403 -> wifi evt: 7
08:47:54.403 -> wifi evt: 7
08:53:26.743 -> wifi evt: 7
08:53:26.743 -> wifi evt: 7
08:53:31.807 -> wifi evt: 7
08:53:31.807 -> wifi evt: 7
08:53:31.854 -> wifi evt: 7
09:18:40.483 -> Token info: type = id token, status = on refreshing
09:18:40.483 -> [hostByName] request IP for: securetoken.googleapis.com
09:18:40.531 -> [hostByName] Host: securetoken.googleapis.com IP: <IP_ADDRESS>
09:18:42.278 -> Token info: type = id token, status = ready
09:19:29.978 -> sream path, /test/stream/data
09:19:29.978 -> event path, /
09:19:29.978 -> data type, string
09:19:29.978 -> event type, put
09:19:29.978 ->
09:19:29.978 -> on
09:19:29.978 ->
09:19:36.519 -> sream path, /test/stream/data
09:19:36.519 -> event path, /
09:19:36.519 -> data type, string
09:19:36.519 -> event type, put
09:19:36.519 ->
09:19:36.519 -> off
09:19:36.519 ->
09:33:39.297 -> sream path, /test/stream/data
09:33:39.297 -> event path, /
09:33:39.297 -> data type,
09:33:39.297 -> event type, auth_revoked
09:33:39.342 ->
09:33:39.342 ->
09:33:39.342 ->

The library was update to v4.1.0, 3 days ago; did you try it?


Input fields validation

Initial Implementation of input validation related to #253
Here is the behavior of input validation for range inputs:

When a user opened a range input widget and focused one of inputs:

Validation started, it would keep calling normalized api whenever there is an input change
Border color would change corresponding to the json return of api call, reqno is used to handle the async return of ajax calls.
When user finished up typing and the input value is valid with green border, either focused out of ALL range inputs or hit enter key while staying in a range input would start the search. Before starting the search:

A final call of normalized api would be run:

If any input is not valid, that input field would have red background, and no search would be performed
Else search would be performed, and all border change back to original gray color

When a red background input existed:

If a valid value is inputted, the red background would be gone
or if it got focused in, the red background would be gone and only left with red border

Notes

Not quite sure if current border / background colors looks ok for everyone, those can be updated easily by changing the variable at the top of search.js
Event handlers for input.RANGE are added (input focusin, keypress) and re-written (change focusout).

Actually you can get into a weird state where typing into a field keeps sending the same normalize request to the back end over and over - without the new value the user has typed. Not entirely sure how to reproduce it but it happens a lot.

Also, there's a big thing missing we had talked about. When you leave focus and it does the final normalize call, it needs to actually update the value in the input widget so the user sees it change.

I noticing a couple of problems with the normalize API now that I can easily type values in it. I'll fix it and these are here for my reference:

You can type a large number like "1e1234" and it will return "inf" as a valid value
You can type "inf" or "nan" and it will actually parse it as a valid number

For future testing, I suggest you turn on API logging in OPUS. Then pull up each type of field:

Numerical range
Date/Time range
Spacecraft Clock Count (Cassini, Voyager, Galileo)
Cassini Orbit Number

Try typing in invalid and valid values, backspacing, changing from valid to invalid, etc. Numbers are OK to have "_", ",", and space in them.
Watch the API calls and see what the return values say. If the return value doesn't match what you're typing, there's a problem. I'm frequently seeing it get into a state where I can type whatever I like, and it just sends some old value over and over.

Search/views.py: There doesn’t need to be () around the if. Reqno is asssigned to twice. Do you really want the default for reqno to be ‘’? Wouldn’t None be better? It’s a number so having a default of a string seems bad.

You and Debby should discuss whether to use ‘ or “ for strings in JS code. I think it’s currently using “. Yes I know that’s not the same as the Django...
I think you’re getting rid of it, but I don’t see the point of temp_hash. I think only the real hash matters, and it shouldn’t be updated until there’s a valid field contents and focus has moved or enter pressed.
I haven’t tried it but make sure pasting triggers validation.

Modifications

Normalized API is called whenever range input is changing, user focus out (hit enter), or close a widget.
No search would be performed if any of range inputs has invalid value.
Whenever user left focus or hit enter on any range input, if there is an invalid value, the input would have red background and the search tab would be disable. User couldn't add any more widgets until they fixed the current inputs.
Normalized values would be displayed in range inputs if they were valid.
js formats:

css related items are put in main.css and turned on/off by using addClass/removeClass
camel case & 4 sapce tab are used for newly added code
for loop is replaced with $.each
'keypress' is removed
global variables are moved into related namespace
$.ajax is replaced with $.getJSON, except the one in opus.js for chaining two ajax calls

Notes

When user is in focus of a range input with an invalid value, and click a new tab in search to leave focus, the new widget might/might not open up before search tab is disabled, but no search would be performed. Please refer to the step 14 in the below test scenario. Do we want to add a normalized api call to check all data before opening a new widget?
When pasting url with invalid values, the green label of result count would not show up (because result count api call would return 404 or 500 with invalid values). But after fixing values in all inputs, search would be performed and everything would be back to normal.

Test Scenario

With all range inputs, open multiple widgets and close some of them. Mix with valid and in-valid values

Open up "Observation Duration":

Type "1 2" in min (normalized api return json is correct when input is changing)

Hit enter, return 8477

Same return as of: "api/meta/result_count.json?observationduration1=1+2"

Type "5,100" in max (normalized api return json is correct when input is changing)

Hit enter, return 7895

Same return as of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100"

Open up "Observation Time":
* Type "2017-02-4" in max (normalized api return json is correct when input is changing)

Change focus to min, return 6971

Same as return of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100&timesec2=2017-02-4"

* Type "1999-01-01" in min
  * Hit enter/leave focus, return 6540
    * Same as return of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100&timesec2=2017-02-4&timesec1=1999-01-01"

On "Observation Time":
* Change min to something invalid like "1999x"

Hit enter, min would have red background, and search tab would be disabled, and no search would be performed.
Close "Observation Time", return 7895 (search is performed and search tab is enabled)

Same as return of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100"

Repeat step 2
Open up "Mission":
* Click "Cassini", return 6483

Same as return of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100&timesec2=2017-02-4&timesec1=1999-01-01&mission=Cassini"

Click "Cassini Mission Constraints" and open up "Saturn Orbit Number (By Range)":
* Type "3" in min

leave focus, return 2506

Same as return of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100&timesec2=2017-02-4&timesec1=1999-01-01&mission=Cassini&CASSINIrevnoint1=3"

* Type "0_4" in max
  * leave focus, return 2118
    * Same as return of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100&timesec2=2017-02-4&timesec1=1999-01-01&mission=Cassini&CASSINIrevnoint1=3&CASSINIrevnoint2=0_4"

Open up "Spacecraft Clock Count":
* Type "1485958000" in min

leave focus, return 2112

Same as return of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100&timesec2=2017-02-4&timesec1=1999-01-01&mission=Cassini&CASSINIrevnoint1=3&CASSINIrevnoint2=0_4&CASSINIspacecraftclockcount1=1485958000"

* Type "1489511000" in max
  * leave focus, return 2092
    * Same as return of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100&timesec2=2017-02-4&timesec1=1999-01-01&mission=Cassini&CASSINIrevnoint1=3&CASSINIrevnoint2=0_4&CASSINIspacecraftclockcount1=1485958000&CASSINIspacecraftclockcount2=1489511000"

On "Spacecraft Clock Count":
* Change min to something invalid like "1485958000.000xx"

Hit "x" to close "Saturn Orbit Number (By Range)", min would have red background, and search tab would be disabled, and no search would be performed.
Change min to "1485958000", return 2108 (search is performed and search tab is enabled)

Same as return of: "api/meta/result_count.json?observationduration1=1+2&observationduration2=5,100&timesec2=2017-02-4&timesec1=1999-01-01&mission=Cassini&CASSINIspacecraftclockcount1=1485958000&CASSINIspacecraftclockcount2=1489511000"

Repeat step 6
Close all widgets, only "Planet" and "Intended Target Name" are left open
Open up "Mission":
* Click "Voyager", return 1698

Same as return of: "api/meta/result_count.json?mission=Voyager"

Click "Voyager Mission Constraints" and open up "Spacecraft Clock Count":
* Type "10000" in min

Click "Earth Received Time", return 906

Same as return of: "api/meta/result_count.json?mission=Voyager&VOYAGERspacecraftclockcount1=10000"

Close "Earth Received Time"
On "Spacecraft Clock Count":
* Type "10000x" in min

Click "Earth Received Time", min of "Spacecraft Clock Count" would have red background, and search tab would be disabled, and no search would be performed.
"Earth Received Time" might or might not pop out due to ajax async return before search tab is disabled, but no search would be performed

* Change min of "Spacecraft Clock Count" to 9000 and hit enter, return 1668
  * Same as return of: "api/meta/result_count.json?mission=Voyager&&VOYAGERspacecraftclockcount1=9000"

Pasting URL:

Open a tab, pasting the URL with correct value:

http://localhost:8000/#/observationduration1=12&observationduration2=5100&timesec1=1999-01-01T00:00:00.000&timesec2=2017-02-04T00:00:00.000&mission=Cassini&CASSINIrevnoint1=003&CASSINIrevnoint2=004&CASSINIspacecraftclockcount1=1485958000&CASSINIspacecraftclockcount2=1489511000&view=search&browse=gallery&colls_browse=gallery&page=1&gallery_data_viewer=true&limit=100&order=time1&cols=opusid,instrument,planet,target,time1,observationduration&widgets=CASSINIspacecraftclockcount1,CASSINIrevnoint1,timesec1,mission,observationduration1,planet,target&widgets2=&detail=

All widgets with normalized value is shown

Open a tab, pasting the URL with some invalid value:
* http://localhost:8000/#/observationduration1=1x2&observationduration2=5q100&timesec1=1999x-01T00:00:00.000&timesec2=2017-0s-04T00:00:00.000&mission=Cassini&CASSINIrevnoint1=0x03&CASSINIrevnoint2=004&CASSINIspacecraftclockcount1=1485,,958000&CASSINIspacecraftclockcount2=1489511000&view=search&browse=gallery&colls_browse=gallery&page=1&gallery_data_viewer=true&limit=100&order=time1&cols=opusid,instrument,planet,target,time1,observationduration&widgets=CASSINIspacecraftclockcount1,CASSINIrevnoint1,timesec1,mission,observationduration1,planet,target&widgets2=&detail=

search tab would be disabled and no search would be performed until user corrected all invalid inputs or closed widgets with invalid inputs

Unless there is a specific reason you are using $.ajax for your json requests, please standardize to $.getJSON.  I was unable to find a reason to not use $.getJSON but would be interested to hear if you have one.

The names of the text colors in CSS may be better named as "Warning", "Error", etc.  There are examples in bootstrap 4 to look at. IMO naming CSS objects "red", "green", etc, can cause you trouble downstream when you decide that your warnings really need to be "orange" ... then you might have to go rename all instances of the use of that CSS...

in "updateHash' - please return the hash value regardless of the flag, such the the flag option just adjusts the window.location if need be.

line 118 in searchBehaviors - slug should not be global, i think...?  if so, please add comment.

line 141 in searchBehaviors - please add comments, as i have no clue what is going on or why.  I'm sure renaming the CSS classes will help lots w/this bit of code.

For search tab grey out, it was trying to avoid user kept adding new tabs before they correct the current input. The grey out would come at the same time as we parse the final normalized api return data, which is before we updated the hash and performed search. It would always happened before search. I was referring to the note on the issue: ("Under no circumstances should an actual search be performed or the hash updated when there is an invalid value in one of the search boxes. In fact we probably want to disable the "Search" tab entirely in this case."). I can remove this one if we don't want the grey out.
For api_normallze_input double assignment: are you talking about the following case? this is the only place I saw double assignment. When user leave focus by clicking "x" to close another widget. Final normalized API call is attached to range input change and widget close click event. Sometimes the return normalized data from on change event would include the slug from the closing widget if the ajax return is slower than the one from widget close click event, but this would not affect the final search because updateHash is called for both events to update url, and it's based on opus.selections. opus.selections would be up-to-date whenever the 2nd updateHash is called.
For using $.ajax, it's just me more used to seeing a return of $.ajax call. $getJSON is a shorthand one, will use it to replace all ajax in new code.
Will change the result count display when inputs are not valid
Will rename CSS class name and make the border thicker for input changes
Will modify line 141 & 118 in search.js
Will modify updateHash so that it would always return hash and update the url based on flag

I think the CSS classes should be called something like "search_input_valid", "search_input_invalid", "search_input_invalid_no_focus".

I'm ambivalent about the grey out. I could see a good argument for it, so let's leave it for now.
For the double assignment I'm just talking about the code that says "reqno = reqno = ..."
Right now, you send the complete current hash to normalize as the user is typing, right? This causes a fair amount of extra work for the back end. Would it be easy to send only the part of the hash relevant to the current search slug?
As long as we're changing the Result Count look, we might as well make it look nice. How about putting a big red X instead of the number or something like that?

Changes required from yesterday are added. As discussed, I'll move on to string hint. Will come back to this one later if more optimization or fixes needed.
Here are current updates:

CSS class is renamed based on recommendation and border is thicker for input changes now. There is also a grey background when current input is not valid while input is still changing.
browse result count display would be a red "X" and green hints would be all "?" when user left focus or hit enter and there is an invalid values in range inputs
short hash is used for normalized api call
updateHash would always return hash, and updating actual url would be based on flag
double assignment in normalized api is removed.
line 141 & 118 is modify, comment is added and CSS class is renamed.

We had discussed having the Result Count number be a "?" instead of "X" to be consistent with the hints but that may have gotten lost in the discussion.
I think having a red X on a green background pretty much guarantees that someone red/green color blind can't see it. Let's just make the question mark in the result count the normal color that the number would be.
As soon as you start typing in an input field, the border gets thicker, which is great, but unfortunately since the "empty input widget" border is thinner, the new thicker border makes the whole input widget move and resize slightly. It would be better if the original empty border was the same thickness, or perhaps it just had a little extra padding, so the widget didn't change size when you start typing.
As you are typing, the normalize API gets all of the slugs currently open to normalize, not just the slug the user is currently typing in.