Media responses: can the user-interrupted playback be resumed?

Or: Media responses: Handling callback BEFORE playback completion?
The issue is related to the closed issue: https://github.com/actions-on-google/actions-on-google-nodejs/issues/243
The UX scenario:
I experienced an issue, when trying to develop an action on google application (using Action SDK)
to replicate google assistant UX when a user listen a Spotify playlist...
Specifically I would let the user interrupt the audio streaming asking something about what listening in a specific moment. That's appears not possible so far.
I would like to play some audio file (media response), say a MP3 song long something like three minutes (00:03:00). Afterward, at the middle of the playing song, say at 00:01:45, I would let user ask for example:

Ok Google, What's the name of the song?

or

Ok Google, Who play the Rhodes piano?

The actions would manage a Q/A, with these possible steps:

PAUSE the playback (implicit)
catch the user intent,
reply user with the answer
RESUME the playback (TBD).

My test result fails:
When the media response plays, the action is able to interrupt the audio and it's able manage the question, but the playback IS NOT RESUMED. That's weird (for my ears)!
It's debatable, but I think that's a BUG, or at least let's call a Change Request: I would let developer the choice to resume or not the underlying streaming after a user interruption.

BTW, The fact interrupted audio streaming is resumed after a user Q/A, is in compliance with what happens on Google Assistant/Google Home with live streaming or an long running playlist streaming. By example, if a Google Home user say

Ehi Google, play BBC Radio 4
blablabla brexit ... blablabla brexit ... blablabla brexit ...

// interrupting the BBC streaming with a question:
Ehi Google, what's the weather?
Right now in Genoa, it's sunny blablabla ...

// end the answer, RESUME the BBC streaming
blablabla brexit ... blablabla brexit ... blablabla brexit ...

// until the user explicitly ask to close
Ehi Google, stop

So, INTO THE THIRD PARTY APPS (ACTIONS) I would like the same UX for the final user. The listener of an audio file (song/news/book, whatever) would be able to interrupt the audio streaming, ask a question and afterward the audio streaming would (optionally) be RESUMED.

BTW A request detail: I would like the audio would be RESUMED exactly at the point of user interrupt, e.g. if user interrupt a streaming at time 00:01:45, I would like the audio would be resumed exactly from 00:01:45.

So my request, from the developer perspective, is related on that possibility to OPT-IN the audio playback resume. My proposal is to modify behavior of actions.intent.MEDIA_STATUS to catch the interrupt STATUS with a callback. See the following PSEUDO code:
//
// MEDIA_STATUS intent
//
app.intent('actions.intent.MEDIA_STATUS', (conv) => {

  const mediaStatus = conv.arguments.get('MEDIA_STATUS')

  // invented
  if (mediaStatus && mediaStatus.status === 'AFTER_INTERRUPTION') {
      // resume the playback after the Q/A session end
       conv.resume(mediaresponse)
 }

  else if (mediaStatus && mediaStatus.status === 'FINISHED') {
    response = 'Hope you enjoyed the tune!'
  }

Nice to have: the callback BEFORE playback completion would report the elapsed time from the start time of audio streaming (e.g.  00:01:45), to allow developer to understand the exact point of user interrupt. That's important to answer user on the precise context (e.g. in case audio was an audio book, or a news, etc.).

A last note: The request for me is crucial to develop a new generation of conversational UX, where user can interact with a "static" content streaming (music, book, news, any audio file or streaming) interacting and conversating with that "content"... (using metadata, etc,etc. ;-) ).

Please let me know if there is something obscure in my rant or I missing something about an already possible configuration.
If you like my request, please vote +1
Thanks for your patience.
giorgio

I edited the original text to better explain my proposal, adding pseudocode.

I can reproduce this behavior with resuming not working. Additionally, as one cannot get the playback offset or set it, it would be difficult to resume it yourself. I will file a bug internally.

Thanks Nick!
The minimal request could be:

set as default behavior:  when the playback is interrupted (== stopped) by any user request, the playback is resumed after the action reply to the answer, with app.ask(reply); or better when developer state explicitly something like app.resume(mediaResponse). In this solution the offset remains "hidden".

A maybe better solution:

Let developer get/set the offset.

When the stopped event is detected' actions.intent.MEDIA_STATUS could return the offset.
Afterward developer will optionally resume with app.resume(mediaResponse, offset).
BTW, developer could optionally resume the track from a different offset value.

That's important to "interact" on audio content if it would be associated with some timestamping & metadata info;
00:00:00 Guitar intro
00:00:23 Guitar, Rhodes, Drums & Bass
00:01:02 Rhodes solo
00:02:00 blablabla


Item Type Name Update

Hi,
I downloaded and installed the project and got an error when I tried to use the solution. However I picked up that the Names/Prefix of the Solution's Item Types i.e. "YMA" have been renames in the code but not on the Item Types. The Method to delete the relationship must also be edited to change the name of the Item Type accordingly.

Hi Tshepo,
I've updated the prefixes so they all match. Try pulling the latest changes and see if that resolves the error.

Hi Eli,
Thank you. It's working as expected.

Awesome! I'll close out the issue. Thanks for your feedback, Tshepo.


SW-4617 Added useQueryFilter hook that syncs between a consumer's filters and the query string in the address bar

SW-4617 Added useQueryFilter hook that syncs between a consumer's filters and the query string in the address bar

Current dependencies on/for this PR:

main

PR #1965   👈

PR #1966

PR #1967

This stack of pull requests is managed by Graphite.

Merge activity

Jan 3, 3:04 PM: @nickgraz started a stack merge that includes this pull request via Graphite.


Error loading class Warnings?

Launched on fabric 1.20.4 server
Got some time to figure out that it was Ksyxis exactly, and after laucnhing with ksyxis only, i get output which is in pinned log file, which makes it a bit harder to read logs, tho server starts normally :(
server.log

Are you sure? Mod on server?

unfortunately, this is an unavoidable consequence of the mod being multi-loader

ok, this was easier to fix than i thought. (my initial idea was to suppress logs by injecting into root log4j logger, this uses some mixin internals but shouldn't hard fail anyway)


Test 3rd party comment scraper

Also move single comment parser method in wrapper class as a @classmethod

Tested on a video with 4 comments (time measured from button click to UI response):
3rd party API : ~12 seconds
Official API : ~11 seconds
Tested on a video with 4 comments (time measured from button click to UI response):
3rd party API : ~12 seconds
Official API : ~11 seconds

Looks okey at the moment :)


Place this tag where you want the button to render. -->
wttr.in

pyphoon

wego

what about curl -Acurl ?

@chubin yeah that works if I pass the agent name... got confused because in the examples it just had curl with out the agent option.

got workaround

Actually, you don't need this option normally, but you have probably some special configuration of curl (in ~/.curlrc). Could you please check your user-agent? Just start curl with -v and you will see what user-agent you have.


Fix Spree::Stock::PackageDecorator;  Don't assign boolean value to vendor

Hi there,
Today, when I reflected the #130  change in our code (Spree::Stock::PackageDecorator),  it didn't work.
NoMethodError
undefined method `shipping_methods' for true:TrueClass

On this line.
It's probably unintended behavior to assign boolean to vendor.

This is the patch. https://github.com/spree-contrib/spree_multi_vendor/commit/05428ae180bd14c453b6c3750adc53fe08addf24
I would be happy if you could see it.
Thank you!

Oh, I seems that https://github.com/spree-contrib/spree_multi_vendor/pull/133 solved same issue.
I will close this PR. Thank you, @damianlegawiec


Merge buffer_number bubble

Created by @kuznetsss in Pull Request #81.

@kuznetsss, btw, I changed the name of the component from buffers_number to buffer_number because it sounded better in my head. If you want I can revert the name change.

@datwaft, don't you think buffer_number may be misunderstood as current buffer number. Maybe total_buffers_number then?

Also, @kuznetsss, is it normal for the number of opened buffers to say 2 if I have only opened 1 buffer?

Maybe that behaviour should be adjusted.

@datwaft, don't you think buffer_number may be misunderstood as current buffer number. Maybe total_buffers_number then?

Yes, that would be better.

Also, @kuznetsss, is it normal for the number of opened buffers to say 2 if I have only opened 1 buffer?
Could you describe how did you get it? And I will check.

Also, @kuznetsss, is it normal for the number of opened buffers to say 2 if I have only opened 1 buffer?

Could you describe how did you get it? And I will check.

I just opened nvim and it showed me 2 buffers, after that I used the :buffers command to check how many buffers I had open and it showed me only 1.

I just opened nvim and it showed me 2 buffers, after that I used the :buffers command to check how many buffers I had open and it showed me only 1.

Thanks, I will debug it. Sorry for bugs. Just it worked fine when I try.

Thanks, I will debug it. Sorry for bugs. Just it worked fine when I try.

Don't worry.
Maybe it could be my version of NVIM, seems kinda strange.

I just tried with nvim -u NONE and it only shows me 1 buffer open, seems strange. Maybe some plugin I use opens a ghost buffer or something.

Ummm... it seems the command you use to get the buffers is not the same that is used for :buffers, for example, with coc-explorer buffer, with only opening it once it already counts as a open buffer, even if the buffer is closed and doesn't appear anymore in :buffers.

Maybe we could use this:
len(getbufinfo({'buflisted':1}))

From: https://superuser.com/questions/345520/vim-number-of-total-buffers
It seems to work properly.

Maybe we could use this:
len(getbufinfo({'buflisted':1}))

From: https://superuser.com/questions/345520/vim-number-of-total-buffers
It seems to work properly.

Yeah, you're right. So in the total_buffer_number.lua should be this return:
return function(inactive)
       if inactive then return nil end
       return {
          {
             data = settings.symbol:format(#vim.fn['getbufinfo']({buflisted = 1})),
             color = settings.color,
             style = settings.style,
          }
      }
end

Its working now. Will now merge.


How possible FLAGS are determined

Hi Anand,
I have a general question. Could you please let us know how possible FLAGS are determined?
--Possible FLAGS among top ten genes:
Thanks,
Praveen

Hello Praveen,
FLAGS are derived from the below publication.
Shyr C, Tarailo-Graovac M, Gottlieb M, Lee JJ, van Karnebeek C, Wasserman WW.
FLAGS, frequently mutated genes in public exomes. BMC Med Genomics 2014; 7: 64.

Hope this helps.

Thank you very much


Remove #pragma once in cpp code

#pragma once is not supposed to be used in .cpp code.

@brakmic-aleksandar Hi there. Here's a PR about a fix we found during our integration of rosidl_typesupport_protobuf. Can I assume you are still the maintainer of this repo?

@t0ny-peng Yeah, I'm still the maintainer, thank you for your contribution!


conversion: add horizon europe template export

Description

Feature
What does this PR do?

Add Horizon Europe template and export functionality
Breaking changes

Code review focus

Dependencies

Checks

[x] Tested with Oracle/PostgreSQL
[x] Export updated
[ ] Documentation added
[ ] Tests added
[ ] E2e tests created
[ ] Successfully ran e2e tests before merge

closes #47

Currently unclear what should go into the text in the deliverable abstract at the respective placeholders (marked green)

[M4]
[section name]

Need some clarification on this from data steward at TU Wien.

Thank you for the review, the quick fix and identifying these issues. I will have a look at them this week and add a test case as well.
Also this should probably be the contributor itself instead of the contact: https://github.com/tuwien-csd/damap-backend/pull/118/commits/b05e27ea73f5455fa5bd740b22eec392532ba0b2#diff-5656cd6f95389b86b7d75018850a2becd96cb3aa24c0b071dbcb3b9bce0c9162L285

yes, good catch with the contact/contributor bug :)

* the green placeholders might also be superfluous, maybe check in with RDM department on how they prefer it.

Note sure about the content that should go in here. Please see the comment here: https://github.com/tuwien-csd/damap-backend/pull/118#issuecomment-1803623857


Fix for batch image in Add-PnPListItem in Markdown page and web page

Type

[X] Bug Fix
[ ] New Feature
[ ] Sample

Related Issues?
Mention in #2164
What is in this Pull Request ?
Added HTML hyperlink and image pointing to full paths i.e.
![Supports Batching](https://raw.githubusercontent.com/pnp/powershell/gh-pages/images/batching/Batching.png)

Seems Docfx is converting the image paths and making them either work in the web page or the markdown file but not both - hopefully the option above will show the batching image correctly in
https://github.com/pnp/powershell/blob/dev/documentation/Add-PnPListItem.md
and
https://pnp.github.io/powershell/cmdlets/Add-PnPListItem.html
Fingers crossed this approach works and can be rolled out to:

Set-PnPListItem
Remove-PnPListItem
Publish-PnPSyntexModel
Unpublish-PnPSyntexModel
Request-PnPSyntexClassifyAndExtract

Let's try and see! Thanks @LeonArmston . It has been a great struggle all along to get it to be shown correctly.


Explorer.exe freezing when sending a notification

Windows 10 Version
Windows 10 Build - 14393.1198
Error Code
>>> toaster.show_toast("Hello World!", "Python!")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\lib\site-packages\win10toast\__init__.py", line 123, in show_toast
    UnregisterClass(self.wc.lpszClassName, None)
pywintypes.error: (1412, 'UnregisterClass', 'Class still has open windows.')

Description
After toaster.show_toast was run, the Windows 10 taskbar freezes. Task Manager was required to restart Explorer.exe.

I've restarted Windows, and it's started working now...


Add template file for .gcloud_env?

To help with this error, can we include a template file showing the syntax for someone to add their own API keys?
Error: src/environments/environment.development.ts:8:58 - error TS2307: Cannot find module './gcloud_env' or its corresponding type declarations.

8 import { oauthClientId, sheetsApiKey, driveApiKey } from './gcloud_env';

And, voila, it is there in /src/environments/gcloud_env.template.ts 🙄


Two time pickers on one page

Is this possible, I don't want to attempt to implement this and then realize it isn't feasible.

Could you implement those two pickers? Is it possible?


Events Pokemon RNG

Events pokemon need to be tested. Pokemon with fixed stats of without fixed stats.
A good place to RNG them is the first Pokemon Center you encounter during the storyline

Does that PC have the least number of NPCs?

Mhmhmh honestly i didn't made really a big research xD I'm doing it now, i'll finish in a bit and i will tell you if there are any PC with less NPCs

If also pokemon are considered as NPCs, this is the only PC with 8 NPCs. The other are 9+

Oh, that's challenging, I have to find the timing of Pokemon determination, in my memory there is no renaming screen.

The rng is really similar to Type:Null. Sometimes i got -1 sometimes -5

-1 or -5 In show results after delay mode?

Yes, i'm making more tests

I can't make the frame follow the Timeline....did you figured out something?

Well I left the game running for 4 mins. It follows timeline perfectly. And I RNG another shiny Type:null in one try.

Be sure to FIX the starting Frame Range at the safe frame w/o createtimeline

Wait, I'm also in trouble...

Machamp was solved, just use Time delay = 4, NPC =6. All locked except IVs. Working on munchlax

Great! Also there is Sapporo Vulpix (nothing fixed) and Pokémon with 3 stats at 31, but still nothing has been released

When you stand behind the delivery man, npc=4. but still problematic

Yes i tryed to stand behing, but sometimes the number of the npc seems to change....

I guess there are two types of events Pokemon, one is in your trainer ID, you have the chance to change its name, there is a long delay.  Another is fixed ID, which will be determined almost right away(4F) and it's much easier

A rough result Time Delay for munchlax is 70. Only Check the Ablity Locked But it's really weird

Did you hit some framse?

Machamp is easy to hit, if it's not following the timeline just change the npc to advancement - 1, since the delay is only 4 "Select" Pressing. I guess most of events Pokemon will be this type.

Ok, but do i need to arrive to one of the frame right? I tryed munchlax, but i got -6. Delay 70 NPCs 6

I figured out. update soon

Really? :O Great! ANyway machamp has got a fixed 31, do i need to put Atk 31 ~ 31?

Do you see the setting box in the second tab? Check the checkbox after Atk, and set 31 in the box between.
I just update my model, Time Delay = 62 , NPC= 4 or 6 both work. Check Your ID and Ability Locked for munchlax
I'm going to bed now. Hope it's correct

Fantastic! I'll make some tests, see you later and good night! And thanks a lot!

Just tried to RNG Machamp, Sapporo Vulpix and Munchlax. I didn't have any problems! It worked perfectly! :D
I needed to select Ability Locked for all of them to make the reseach show correct natures (most of the events has got Ability locked). The frame followed the Timeline perfectly, with NPCs 6.
I also tried Lunar Shiny Magikarp, but there is a litte "bug" which tell you that PSV and PID are different from PSV and PID of the pokemon you get. Anyway all the other stats are correct. I'm opening an issue for the Always Shiny option.

I'm closing this


React Router v7 and Lingui

Hey hey.
I managed to get a React Router 7 app working in my fork, but lingui integration is being fussy.
I'm trying to manage i18n in a repo package, but that main issue seems to be getting React Router v7 + Vite + lingui macro to all be friends.
What do you want me to do? "PR" or "not right now"?

@mmmoli
You can create new PR, I will review and merge it.
Thank you very much.

Hi @mmmoli
I improved React Router v7 and Lingui by referencing your code.
Thank you so much!


Error occurred when executing KSampler:  0  File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\execution.py", line 152,

Error occurred when executing KSampler:
0
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\nodes.py", line 1373, in sample
return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\nodes.py", line 1343, in common_ksampler
samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Impact-Pack\modules\impact\sample_error_enhancer.py", line 9, in informative_sample
return original_sample(*args, **kwargs) # This code helps interpret error messages that occur within exceptions but does not have any impact on other operations.
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 520, in motion_sample
latents = orig_comfy_sample(model, noise, *args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Advanced-ControlNet\adv_control\control_reference.py", line 47, in refcn_sample
return orig_comfy_sample(model, *args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Advanced-ControlNet\adv_control\utils.py", line 111, in uncond_multiplier_check_cn_sample
return orig_comfy_sample(model, *args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\sample.py", line 43, in sample
samples = sampler.sample(noise, positive, negative, cfg=cfg, latent_image=latent_image, start_step=start_step, last_step=last_step, force_full_denoise=force_full_denoise, denoise_mask=noise_mask, sigmas=sigmas, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 829, in sample
return sample(self.model, noise, positive, negative, cfg, self.device, sampler, sigmas, self.model_options, latent_image=latent_image, denoise_mask=denoise_mask, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 729, in sample
return cfg_guider.sample(noise, latent_image, sampler, sigmas, denoise_mask, callback, disable_pbar, seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 716, in sample
output = self.inner_sample(noise, latent_image, device, sampler, sigmas, denoise_mask, callback, disable_pbar, seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 695, in inner_sample
samples = sampler.sample(self, sigmas, extra_args, callback, noise, latent_image, denoise_mask, disable_pbar)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 600, in sample
samples = self.sampler_function(model_k, noise, sigmas, extra_args=extra_args, callback=k_callback, disable=disable_pbar, **self.extra_options)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\python\lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\k_diffusion\sampling.py", line 779, in sample_lcm
denoised = model(x, sigmas[i] * s_in, **extra_args)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 299, in call
out = self.inner_model(x, sigma, model_options=model_options, seed=seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 682, in call
return self.predict_noise(*args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 685, in predict_noise
return sampling_function(self.inner_model, x, timestep, self.conds.get("negative", None), self.conds.get("positive", None), self.cfg, model_options=model_options, seed=seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 625, in evolved_sampling_function
cond_pred, uncond_pred = calc_cond_uncond_batch_wrapper(model, [cond, uncond_], x, timestep, model_options)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 904, in calc_cond_uncond_batch_wrapper
return comfy.samplers.calc_cond_batch(model, conds, x_in, timestep, model_options)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 202, in calc_cond_batch
c['control'] = control.get_control(input_x, timestep_, c, len(cond_or_uncond))
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Advanced-ControlNet\adv_control\utils.py", line 706, in get_control_inject
return self.get_control_advanced(x_noisy, t, cond, batched_number)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Advanced-ControlNet\adv_control\control.py", line 34, in get_control_advanced
return self.sliding_get_control(x_noisy, t, cond, batched_number)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Advanced-ControlNet\adv_control\control.py", line 84, in sliding_get_control
return self.control_merge(None, control, control_prev, output_dtype)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Advanced-ControlNet\adv_control\utils.py", line 824, in control_merge_inject
x = control_output[i]

Your Advanced-ControlNet is outdated.
https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet/issues/124#issuecomment-2205478442

您的 Advanced-ControlNet 已过时。
Kosinkadink/ComfyUI-Advanced-ControlNet#124（评论）

Thank you very much for your help. After updating ComfyUI-Advanced-ControlNet with your help, the following error message appears when running again. What is the problem?
Error occurred when executing KSampler (Efficient):
'NoneType' object has no attribute 'size'
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 732, in sample
samples, images, gifs, preview = process_latent_image(model, seed, steps, cfg, sampler_name, scheduler,
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 550, in process_latent_image
samples = KSampler().sample(model, seed, steps, cfg, sampler_name, scheduler, positive, negative,
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\nodes.py", line 1373, in sample
return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\nodes.py", line 1343, in common_ksampler
samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Impact-Pack\modules\impact\sample_error_enhancer.py", line 9, in informative_sample
return original_sample(*args, **kwargs) # This code helps interpret error messages that occur within exceptions but does not have any impact on other operations.
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 520, in motion_sample
latents = orig_comfy_sample(model, noise, *args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Advanced-ControlNet\adv_control\sampling.py", line 92, in acn_sample
return orig_comfy_sample(model, *args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-Advanced-ControlNet\adv_control\utils.py", line 112, in uncond_multiplier_check_cn_sample
return orig_comfy_sample(model, *args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\sample.py", line 43, in sample
samples = sampler.sample(noise, positive, negative, cfg=cfg, latent_image=latent_image, start_step=start_step, last_step=last_step, force_full_denoise=force_full_denoise, denoise_mask=noise_mask, sigmas=sigmas, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 829, in sample
return sample(self.model, noise, positive, negative, cfg, self.device, sampler, sigmas, self.model_options, latent_image=latent_image, denoise_mask=denoise_mask, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 729, in sample
return cfg_guider.sample(noise, latent_image, sampler, sigmas, denoise_mask, callback, disable_pbar, seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 716, in sample
output = self.inner_sample(noise, latent_image, device, sampler, sigmas, denoise_mask, callback, disable_pbar, seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 695, in inner_sample
samples = sampler.sample(self, sigmas, extra_args, callback, noise, latent_image, denoise_mask, disable_pbar)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 600, in sample
samples = self.sampler_function(model_k, noise, sigmas, extra_args=extra_args, callback=k_callback, disable=disable_pbar, **self.extra_options)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\python\lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\k_diffusion\sampling.py", line 779, in sample_lcm
denoised = model(x, sigmas[i] * s_in, **extra_args)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 299, in call
out = self.inner_model(x, sigma, model_options=model_options, seed=seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 682, in call
return self.predict_noise(*args, **kwargs)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 685, in predict_noise
return sampling_function(self.inner_model, x, timestep, self.conds.get("negative", None), self.conds.get("positive", None), self.cfg, model_options=model_options, seed=seed)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 627, in evolved_sampling_function
cond_pred, uncond_pred = sliding_calc_conds_batch(model, [cond, uncond_], x, timestep, model_options)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 820, in sliding_calc_conds_batch
sub_conds_out = calc_cond_uncond_batch_wrapper(model, sub_conds, sub_x, sub_timestep, model_options)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 904, in calc_cond_uncond_batch_wrapper
return comfy.samplers.calc_cond_batch(model, conds, x_in, timestep, model_options)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\comfy\samplers.py", line 228, in calc_cond_batch
output = model.apply_model(input_x, timestep_, **c).chunk(batch_chunks)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 221, in apply_model_ade_wrapper
motion_model.prepare_img_features(x=x, cond_or_uncond=cond_or_uncond, ad_params=ad_params, latent_format=self.latent_format)
File "G:\ComfyUI\ComfyUI-aki\ComfyUI-aki-v1.3\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\model_injection.py", line 877, in prepare_img_features
if sub_idxs is not None and self.orig_img_latents.size(0) >= full_length:


Handle DOWN in terminate_worker/3

Hi,
We just started running into this issue in production:

2023-01-19T20:31:56.032465131Z 20:31:55.994 [error] Error during ChromicPDF.Browser.SessionPool.terminate_worker/3 callback:
2023-01-19T20:31:56.032514431Z ** (FunctionClauseError) no function clause matching in ChromicPDF.Browser.SessionPool.terminate_worker/3
2023-01-19T20:31:56.032520231Z     (chromic_pdf 1.6.0) lib/chromic_pdf/pdf/browser/session_pool.ex:191: ChromicPDF.Browser.SessionPool.terminate_worker(:DOWN, %{session: %{session_id: "B4192E860C6DB1C83D3A4404A257EFD0", target_id: "B3EDCFD2C0E3D3349617B0A1F59AEC0F"}, uses: 14}, %{browser: #PID<0.2847.0>, init_timeout: 5000, max_session_uses: 1000, spawn_protocol: %ChromicPDF.Protocol{steps: [call: &ChromicPDF.SpawnSession.create_browser_context/2, await: &ChromicPDF.SpawnSession.browser_context_created/2, call: &ChromicPDF.SpawnSession.create_target/2, await: &ChromicPDF.SpawnSession.target_created/2, call: &ChromicPDF.SpawnSession.attach/2, await: &ChromicPDF.SpawnSession.attached/2, call: &ChromicPDF.SpawnSession.set_user_agent/2, call: &ChromicPDF.SpawnSession.offline_mode/2, call: &ChromicPDF.SpawnSession.enable_page/2, await: &ChromicPDF.SpawnSession.page_enabled/2, call: &ChromicPDF.ResetTarget.reset_history/2, await: &ChromicPDF.ResetTarget.history_reset/2, call: &ChromicPDF.ResetTarget.blank/2, await: &ChromicPDF.ResetTarget.blanked/2, await: &ChromicPDF.ResetTarget.fsl_after_blank/2, output: &ChromicPDF.SpawnSession.output/1], state: %{protocol: ChromicPDF.SpawnSession, chrome_args: "--disable-dev-shm-usage", discard_stderr: false, ignore_certificate_errors: false, no_sandbox: true, offline: true, on_demand: false}}, timeout: 5000})
2023-01-19T20:31:56.032529731Z     (nimble_pool 0.2.6) lib/nimble_pool.ex:932: NimblePool.do_apply_worker_callback/4
2023-01-19T20:31:56.032532831Z     (nimble_pool 0.2.6) lib/nimble_pool.ex:867: NimblePool.maybe_terminate_worker/3
2023-01-19T20:31:56.032536031Z     (nimble_pool 0.2.6) lib/nimble_pool.ex:769: NimblePool.remove_worker/3
2023-01-19T20:31:56.032539231Z     (nimble_pool 0.2.6) lib/nimble_pool.ex:651: NimblePool.cancel_request_ref/3
2023-01-19T20:31:56.032542331Z     (stdlib 4.0.1) gen_server.erl:1120: :gen_server.try_dispatch/4
2023-01-19T20:31:56.032545331Z     (stdlib 4.0.1) gen_server.erl:1197: :gen_server.handle_msg/6
2023-01-19T20:31:56.032549331Z     (stdlib 4.0.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3

I'm not sure if it's related but we recently upgraded to ChromicPDF 1.6.0. I'm not sure how to diagnose from here. If it's any help, this is when trying to generate about 15 PDFs at the same time. This error is not happening locally for the same set of data, only on our production server.

Hi @markquezada
yes, I recently changed the terminate_worker/3 to be more restrictive on the expected termination reasons.
You already found the NimblePool docs. I interpreted the "the client link breaks" part as "the process that checked out the 'worker'" has died. Which is not the chrome process (rather, our Browser GenServer), but the process that called print_to_pdf, in other words your client. See here for where the NimblePool's pool process begins monitoring the client process and here for where it handles the DOWN message.
In the recent patch I categorized the DOWN reason as "should not happen" - as I had never seen it happen outside some weird test scenarios - and thus changed terminate_worker/3 to not handle it. Mostly because I didn't want to silently allow this and turn a blind eye on potential problems it may point to.
However, thinking a bit about it now: One scenario I could imagine is that, during shutdown, the VM terminates your client process before the pool process is terminated, so it first receives the DOWN for the link to the dead client process, before it receives the shutdown from its supervisor. It's merely a guess though. I'm by no means an expert on Erlang linked processes and supervision trees or the like.
Regardless, I don't really think this points to a deeper underlying issue anymore, and the fix is trivial, so I'll just change it again.

@markquezada If you can provide more information on how often this happens and in which situations, that would be appreciated :bow:

@maltoe Appreciate the quick response, as always!
For us, this appears to only happen when generating multiple PDF files in a single web request. The same set of PDFs generated one-by-one seem to work fine.
For context: We are normally generating PDFs with only 1 or 2 pages. But we have an option to generate a "bulk" PDF where we generate on the order of 10-100 of these single PDFs and then concatenate them together, all during a single web request. That's the request that is now failing.
I've been able to narrow it down to this error even on just 5 of these 1-page PDFs whereas before we were able to generate 100-200 of them in a single request without issue. If there's any more info I can provide, please let me know!

Hmm, that sounds like the unhandled DOWN message is only the consequence of an error in your client request. Could it be that someone times out the web requests and kills their handler process or so? Keep in mind the DOWN error is raised in the pool process after the process that called print_to_pdf has died. Or rather, the link to it has been disconnected, but AFAIK that's usually the same thing.
But you're saying the request worked before the update to 1.6.0 and now it fails most of the time, yes? So something must have changed in between... Need to think about it, recap what we've changed. Can you check which version you were running before? Also, is it possible for you to downgrade for now?

@maltoe yes, I can try downgrading.
But what's odd is that the same code running locally on my macbook does not fail. This appears to only happen on our cloud-based servers. And only after the recent upgrade.
I will check to see what configuration differences there are between the two and report back.

config.exs:
config :my_app, ChromicPDF,
  on_demand: false,
  offline: true,
  no_sandbox: true,
  chrome_args: "--disable-dev-shm-usage"

dev.exs:
config :my_app, ChromicPDF, on_demand: true

runtime.exs:
config :my_app, ChromicPDF, discard_stderr: env!("CHROMIC_PDF_DISCARD_STDERR", :boolean, true)

I tried setting on_demand: false in dev to see if I could reproduce that error. So far it continues to work on large requests. I just tried 2 with over 180+ PDFs and it worked fine locally.

Just a wild guess, but could it be that you hit some resource limits in your cloud based servers, which causes the whole erlang process/node/whatever to shutdown and restart? As I said just a wild guess, since you mentioned you do not see this problem locally, where you might have more free resources (or at least no hard limit on them) and that you are only seeing this if you print multiple pages at once (which probably consumes more resources that just single prints).

If we weren't able to generate these files before I'd say that's a valid theory. But this problem only started happening after we upgraded to 1.6. (As far as we know.)
It's a decently sized VM with 1.75GB of Memory and nothing else on it. I also don't see any other logs indicating a problem with the erlang VM 🤔
I'll do some more digging.

@markquezada :+1: Thanks for investigating. We can also merge and release the patch to handle the DOWN in terminate_worker, though I wonder if we're only hiding an underlying issue then. Let us know if you want it in.

Agree that it may be hiding an underlying issue. Definitely don't want that. (Also don't want it to affect others if it's merged into the lib.) Let me do some testing with that branch as well and I'll report back before you merge it in. Thanks again for the responsiveness!

Quick update here: I tried using the updated branch that handles :DOWN messages but now I simply get:
2023-01-30T23:25:13.601232266Z ** (exit) exited in: Task.Supervised.stream(5000)
2023-01-30T23:25:13.601235266Z     ** (EXIT) time out

And ultimately it still fails so it appears to be some other underlying issue. I'm still investigating and will report back but it appears likely that this issue is not stemming from the change in ChromicPDF. (It's probably safe to close that PR, unmerged.)

Ok, got to the bottom of this. Looks like this was an issue I introduced by trying to parallelize PDF rendering for a bulk PDF archive I was creating. It just happened to coincide with upgrading to 1.6 but that was a red herring.
For reference, the code in question:
  def render(transcripts, filename) do
    transcripts
    |> Task.async_stream(&render_transcript/1, max_concurrency: 25) # <- the culprit
    |> Enum.map(fn {:ok, filepath} -> filepath end)
    |> concatenate_and_cleanup(filename)
  end

... where render_transcript/1 is executing ChromicPDF.print_to_pdf.
The default :timeout for Task.async_stream is 5000. My guess is that the ChromicPDF job was taking more than 5s in some cases due to waiting on the pool, etc., and that timeout was getting hit, killing the processes and triggering the :DOWN message to ChromicPDF.Browser.SessionPool.terminate_worker/3.
After increasing the timeout on the async call, I got this error which seems to corroborate the theory:
Elixir.ChromicPDF.Browser.ExecutionError Caught EXIT signal from NimblePool.checkout!/4

      ** (EXIT) time out

This means that your operation was unable to acquire a worker from the pool
within 5000ms, as all workers are currently occupied.

Two scenarios where this may happen:

1) You suffer from this error at boot time or in your CI. For instance,
   you're running PDF printing tests in CI and occasionally the first of these test
   fails. This may be caused by Chrome being delayed by initialization tasks when
   it is first launched.

   See ChromicPDF.warm_up/1 for a possible mitigation.

2) You're experiencing this error randomly under load. This would indicate that
   the number of concurrent print jobs exceeds the total number of workers in
   the pool, so that all workers are occupied.

   To fix this, you need to increase your resources, e.g. by increasing the number
   of workers with the `session_pool: [size: ...]` option.

   However, please be aware that while ChromicPDF (by virtue of the underlying
   NimblePool worker pool) does perform simple queueing of worker checkouts,
   it is not suitable as a proper job queue. If you expect to peaks in your load
   leading to a high level of concurrent use of your PDF printing component,
   a job queue like Oban will provide a better experience.

Please also consult the worker pool section in the documentation.

    lib/chromic_pdf/pdf/browser/session_pool.ex:70 ChromicPDF.Browser.SessionPool.run_protocol/3
    lib/chromic_pdf/api.ex:67 anonymous fn/3 in ChromicPDF.API.chrome_export/4
    lib/chromic_pdf/api/telemetry.ex:10 anonymous fn/2 in ChromicPDF.Telemetry.with_telemetry/3
    /app/deps/telemetry/src/telemetry.erl:321 :telemetry.span/3
    lib/novo/transcript_pdf_renderer.ex:26 Novo.TranscriptPDFRenderer.render_to_file/2
    lib/novo/bulk_transcript_pdf_renderer.ex:37 Novo.BulkTranscriptPDFRenderer.render_transcript/1
    lib/task/supervised.ex:89 Task.Supervised.invoke_mfa/2
    lib/task/supervised.ex:34 Task.Supervised.reply/4

When I increased the session pool to 10, I got this error:
Elixir.ChromicPDF.Browser.ExecutionError Timeout in Channel.run_protocol/3!

The underlying GenServer.call/3 exited with a timeout. This happens when the browser was
not able to complete the current operation (= PDF print job) within the configured
5000 milliseconds.

So for some reason it is taking quite a while for some of these 1-page PDFs to render and that's cascading into failures as I try to process more.
Unfortunately I can't find a combination that seems to work consistently on our servers. I have now replaced the Task.async_stream usage with a simple Enum.map. It is slower but appears to have stopped the crashing.
If I'm generating the PDFs serially anyway, I suppose I can switch to the new native multi-page generation option in ChromicPDF via ghostscript but the reason I used async_stream in the first place was that generating a 150+ 1-page PDFs serially takes quite a while. Even a little concurrency speeds it up dramatically. That said, although the parallelized version works well on a desktop machine, our cloud servers are crashing with even a modest max_concurrency of 5. (That's down from 25 I had set originally.)
I thought about doing the work to wrap a pool around our bulk PDF generator to ensure we don't overload ChromicPDF but again, I couldn't find a combination that worked with async_stream's max_concurrency setting so I wasn't sure it was worth trying. I tried setting max_concurrency lower than the session pool but still experienced crashes. I don't understand why/how that could be since in theory, there should always be more than enough available in that case.
Thoughts? Is there a way to parallelize the rendering of a bunch of PDFs in a single request? Am I missing something obvious?
Side note: I likely didn't run into this in development at first because I had on_demand: true set in dev. When I mirrored our production setup locally, I could trigger the same errors, albeit with much higher resource limits.

Any thoughts on what might be causing the execution error or how I might proceed with debugging?

Just recapping to my sure I understood: You reverted to Enum.map to sequentially produce 70 1-page PDFs and some of them still times out? And there is no other job accessing ChromicPDF at the same time? How's the system load? Could it be that Chrome sometimes has to wait for resource allocation or so? I could totally imagine random delays when you're printing concurrently, e.g. due to the connection multiplexing and spikes in protocol load, but sequentially it should in theory run smoothly, no?

Just ran a little experiment on my machine in a project of ours where we also generate 1-page documents (not a lot of text, but some layout and styling), and the PDF generation was extremely consistent around 250ms with very small deviation. So as far as I can tell something else has to be going on in your server.

benchmark code used

    def benchpdf do
    samples =
      for i <- 1..1000 do
        {uSecs, _} = :timer.tc(__MODULE__, :genpdf, [])
        ms = trunc(uSecs / 1000.0)
        IO.puts("#{ms}ms")
        ms
      end
sum = Enum.sum(samples)

IO.puts("Min: #{Enum.min(samples)}ms")
IO.puts("Max: #{Enum.max(samples)}ms")
IO.puts("Avg: #{sum / length(samples)}ms")

end

As a solution to your problem - in case you can't figure out what's causing the timeouts - would it be an option to go fully async with a job queue (like Oban)? This would of course make synchronization in your request a lot harder, but at least then you get retries and your system should become a lot more stable overall? Just a thought.

Moving forward with the issue of the DOWN message:

My guess is that the ChromicPDF job was taking more than 5s in some cases due to waiting on the pool, etc., and that timeout was getting hit, killing the processes and triggering the :DOWN message to ChromicPDF.Browser.SessionPool.terminate_worker/3.

That makes a lot of sense. I'd like to verify this on my machine before moving on with the PR on the terminate_worker/3 callback.

reproduced

  code

Mix.install([{:chromic_pdf, path: "."}])
ChromicPDF.start_link()
no link to this process because it is killed when Task.async_stream/3 explodes
Process.spawn(fn ->
long_content = String.duplicate("foobar ", 1_000_000)
[{:ok, _}] =
Task.async_stream([{:html, long_content}], fn source -> ChromicPDF.print_to_pdf(source) end)
|> Enum.to_list()
end, [])
:timer.sleep(10_000)
IO.puts("DONE")

Just recapping to my sure I understood: You reverted to Enum.map to sequentially produce 70 1-page PDFs and some of them still times out?

That is correct. I wanted to eliminate the possibility of it being related to the processes, etc. And it does seem to work more consistently but it still fails with a larger number of individual PDFs. I just tried a set of 47 files and it worked. Tried 93 and it failed with:
2023-02-01T09:21:25.391376730Z 09:21:25.390 [error] Error during ChromicPDF.Browser.SessionPool.terminate_worker/3 callback:

2023-02-01T09:21:25.391434431Z ** (FunctionClauseError) no function clause matching in ChromicPDF.Browser.SessionPool.terminate_worker/3

2023-02-01T09:21:25.398552325Z     (chromic_pdf 1.6.0) lib/chromic_pdf/pdf/browser/session_pool.ex:191: ChromicPDF.Browser.SessionPool.terminate_worker(:DOWN, %{session: %{session_id: "5BAE11665BB7151D3E769D54C8DB45D9", target_id: "2C695FBCD9424A32EFB159176AAF8D58"}, uses: 61}, %{browser: #PID<0.2893.0>, init_timeout: 5000, max_session_uses: 1000, spawn_protocol: %ChromicPDF.Protocol{steps: [call: &ChromicPDF.SpawnSession.create_browser_context/2, await: &ChromicPDF.SpawnSession.browser_context_created/2, call: &ChromicPDF.SpawnSession.create_target/2, await: &ChromicPDF.SpawnSession.target_created/2, call: &ChromicPDF.SpawnSession.attach/2, await: &ChromicPDF.SpawnSession.attached/2, call: &ChromicPDF.SpawnSession.set_user_agent/2, call: &ChromicPDF.SpawnSession.offline_mode/2, call: &ChromicPDF.SpawnSession.enable_page/2, await: &ChromicPDF.SpawnSession.page_enabled/2, call: &ChromicPDF.ResetTarget.reset_history/2, await: &ChromicPDF.ResetTarget.history_reset/2, call: &ChromicPDF.ResetTarget.blank/2, await: &ChromicPDF.ResetTarget.blanked/2, await: &ChromicPDF.ResetTarget.fsl_after_blank/2, output: &ChromicPDF.SpawnSession.output/1], state: %{__protocol__: ChromicPDF.SpawnSession, chrome_args: "--disable-dev-shm-usage", discard_stderr: false, ignore_certificate_errors: false, no_sandbox: true, offline: true, on_demand: false}}, timeout: 5000})

2023-02-01T09:21:25.398572425Z     (nimble_pool 0.2.6) lib/nimble_pool.ex:932: NimblePool.do_apply_worker_callback/4

2023-02-01T09:21:25.398576425Z     (nimble_pool 0.2.6) lib/nimble_pool.ex:867: NimblePool.maybe_terminate_worker/3

2023-02-01T09:21:25.398587625Z     (nimble_pool 0.2.6) lib/nimble_pool.ex:769: NimblePool.remove_worker/3

2023-02-01T09:21:25.398591225Z     (nimble_pool 0.2.6) lib/nimble_pool.ex:651: NimblePool.cancel_request_ref/3

2023-02-01T09:21:25.398594625Z     (stdlib 4.0.1) gen_server.erl:1120: :gen_server.try_dispatch/4

2023-02-01T09:21:25.398598325Z     (stdlib 4.0.1) gen_server.erl:1197: :gen_server.handle_msg/6

2023-02-01T09:21:25.398605625Z     (stdlib 4.0.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3

And there is no other job accessing ChromicPDF at the same time?

Correct. This is a staging server that only a few people have access to. Currently, I'm the only one online.

How's the system load? Could it be that Chrome sometimes has to wait for resource allocation or so?

It's docker image deployed to an App Service in Azure. Theoretically shouldn't be anything else running but it could be something with shared resources if it's a VM on a larger box. I'll have to figure out if I can ssh in somehow and monitor. I will report back.

I could totally imagine random delays when you're printing concurrently, e.g. due to the connection multiplexing and spikes in protocol load, but sequentially it should in theory run smoothly, no?

Exactly. That's what I thought. I figured moving to Enum.map would just make it process serially and work.

So as far as I can tell something else has to be going on in your server.

I'll try monitoring the server itself next, to see if something else is happening. It does happen on a larger dedicated instance as well so my gut says it's something I'm doing or chrome/chromic is doing.

As a solution to your problem - in case you can't figure out what's causing the timeouts - would it be an option to go fully async with a job queue (like Oban)? This would of course make synchronization in your request a lot harder, but at least then you get retries and your system should become a lot more stable overall? Just a thought.

Definitely possible but I'd hope to not have to resort to bringing in such a huge dependency to generate a single PDF. 🤔

I just tried a set of 47 files and it worked. Tried 93 and it failed with

Wait, but that is the same terminate_worker callback error that you get with Task.async_stream, which means the outer process has died somehow? Is this an HTTP request? Could it have been killed by its HTTP handler? Or a load balancer?
If possible, could you try that on an iex shell in the container?

Definitely possible but I'd hope to not have to resort to bringing in such a huge dependency to generate a single PDF.

Fair point. Maybe try...rescue with a retry mechanism would be enough.

Wait, but that is the same terminate_worker callback error that you get with Task.async_stream, which means the outer process has died somehow? Is this an HTTP request? Could it have been killed by its HTTP handler? Or a load balancer?

Just realized that was strange since before I was getting an ExecutionError. All I can think is that we're hitting a timeout in either the web server or on Azure.
I did a quick test:
2023-02-01T10:36:41.558039846Z 10:36:41.556 request_id=Fz-s_-qN6GiyfEEAABsx [info] GET /transcripts/bulk-download
2023-02-01T10:37:41.571587993Z 10:37:41.570 [error] Error during ChromicPDF.Browser.SessionPool.terminate_worker/3 callback:

Note the timestamps: it fails after 60 seconds exactly. Obviously not a coincidence.
Doing some digging... Looks like the default timeout for cowboy 2 is 60 seconds 😩
Ok, so that would explain that error. It's getting terminated by cowboy. Ugh. Sorry for the wild goose chase.
Now I'm not sure if what I was seeing was due to the timeout all along or partly due to the concurrency issue. (Or both?) The ExecutionError seems like it could be a different issue.
I'm going to update the idle_timeout and re-test with the original code and go from there. I will report back tomorrow.

Ok, so that would explain that error. It's getting terminated by cowboy. Ugh. Sorry for the wild goose chase.

No worries, glad we could figure at least that one out :)

Unless you think its reasonable to be able to generate 150ish PDFs in sub 10s or so. Doesn't appear to be

Depends, but likely no. The document I've tried earlier was really simple in design and printing took around 250ms on average, you're more in the 30s - 60s range :/ Sorry.

Following up here for posterity: This issue ended up being a myriad of small things coalescing into various failures on our staging server. Here are some notes for anyone who might run into a similar issue:

Our VM instance was too small and had only one core. This was causing individual PDF generation to take between 1-5s each. If a single PDF took longer than 5s, Task. async_stream would kill the process since it's default timeout is 5s. I've bumped up our instance size to ensure at least two cores in our staging environments.
Even if the PDFs did generate without error, Cowboy's timeout limit was 60s so the process would get killed if the PDFs took longer than that to generate.
Task.async_stream works great to parallelize PDF generation (if tuned correctly)
I was using too many processes to process the PDFs. I ended setting Task. async_stream's max_concurrency to use the same number of sessions that Chromic uses. Something like this:

  defp concurrency() do
    get_in(Application.get_env(:my_app, ChromicPDF), [:session_pool, :size]) ||
      max(div(System.schedulers_online(), 2), 1)
  end

Additionally, I was originally not seeing these errors locally in development because I had set on_demand: true instead of mirroring our production setup.
So far, after the above changes, we've been able to generate a large number of PDFs in a single request without issue.
Thanks again @maltoe for the willingness to help me figure this out along the way. 🙏


17 logs2rocketchat

Adds support for RocketChat

I merged these changes to #286, so please commit further changes there :)


Auto comment on New Issue Creation

It automatically adds comments to the description of a newly created issue, providing helpful information, context, or reminders. This ensures that all issues include essential details or instructions, improving the quality of reports.
It ensures that comments on issues follow a consistent format or structure. This helps teams maintain a standardized approach to handling issues, reducing confusion and misunderstandings.
Saves Time: Users don’t need to manually add repetitive information or instructions. The automatic comment can include standard guidelines, troubleshooting steps, or links to documentation.

explain in detail how its gonna implement?


DOcumentations

can someone tell us why the docs are remove??

Hey @dayojohn19,
Doc has not been removed believe me!
We've just made it better for the community and it's accessible here.
Maybe the link hasn't been updated. We'll check that.

@dayojohn19 please use the latest tag to get documentation https://github.com/tradingview/lightweight-charts/tree/v3.7.0/docs. We're in preparing state now to deploy our docs as a website, so as soon it is ready we'll update links.


getRandomBN error when using OpenMP, if using RDSEED

I use OpenMP for parallel encrypting multiple plaintexts. However, after running for some time, the program crashes with
"getRandomBN:  generate random big number error." This error is very weird since:

It happens with OpenMP and does not happen when OpenMP is disabled.
The error mysteriously disappears when I add some std::cout codes in the function ippGenRandomBN for debugging. I don't know why the error could be related to std::cout.
The error happens somewhat randomly, and before the error occurs, all computation is correct.

Finally, I was able to locate the error in the ippsTRNGenRDSEED function of the ipp-crypto lib. After I change the utils.hpp to force RNGenType kRNGenType = RNGenType::PSEUDO, the error seems to be resolved.

Hi @zfscgy
Thanks for the info. At present, I can't reproduce this problem. If I reproduce this problem, I will fix it.
Can you try to use RNGenType::RDRAND? See if similar problems occur.

Hi @zfscgy
This issue is fixed with PR #59  Please have a try.

Hi @zfscgy This issue is fixed with PR #59 Please have a try with the latest development branch.

Thank you very much! I have tried RDRAND and the error also disappeared. I have read PR #59 and it seems that when RDSEED fails it turns to RDRAND.

Hi @zfscgy Thanks for the info. At present, I can't reproduce this problem. If I reproduce this problem, I will fix it. Can you try to use RNGenType::RDRAND? See if similar problems occur.

Here is a simplest example:
#include <omp.h>
#include <ipcl/ipcl.hpp>

int main()
{
	ipcl::KeyPair keyPair = ipcl::generateKeypair(2048);
	std::vector<BigNumber> bignums;
	for (size_t i = 0; i < 100; i++)
	{
		bignums.push_back(BigNumber(uint32_t(i)));
	}

	for (size_t t = 0; t < 100; t++)
	{
		std::cout << "Start to encrypt 100 BigNumbers ==== time " << t << std::endl;
#pragma omp parallel for
		for (size_t i = 0; i < 100; i++)
		{
			keyPair.pub_key.encrypt(ipcl::PlainText(bignums[i]));
		}
		std::cout << "Encrypted 100 BigNumbers" << std::endl;
	}

}

And the utils.h is changed as follows:
// static const RNGenType kRNGenType = use_rdseed   ? RNGenType::RDSEED
//                                     : use_rdrand ? RNGenType::RDRAND
//                                                  : RNGenType::PSEUDO;

// #else  // compile time detection of cpu feature
// #ifdef IPCL_RNG_INSTR_RDSEED
// static const RNGenType kRNGenType = RNGenType::RDSEED;
// #elif defined(IPCL_RNG_INSTR_RDRAND)
// static const RNGenType kRNGenType = RNGenType::RDRAND;
// #else
// static const RNGenType kRNGenType = RNGenType::PSEUDO;
// #endif
#endif  // IPCL_RUNTIME_DETECT_CPU_FEATURES
static const RNGenType kRNGenType = RNGenType::RDSEED; // Change different random algorithms

Using RDSEED, the runtime error occurs at the first loop or second loop:

Start to encrypt 100 BigNumbers ==== time 0
terminate called after throwing an instance of 'std::runtime_error'
what():
File: /home/zf/projects/third-party/pailliercryptolib/ipcl/utils/common.cpp
Line: 71
Error: getRandomBN:  generate random big number error.-2
terminate called recursively


Is there any documentation to setup it correctly for version greater then 60.

Same problem here, i tried everything, and nothing works...
"react": "16.9.0",
"react-native": "0.61.2",

I'm also have some issue just like @pipoblak

@pipoblak @sarifconrati
here is my workaround on these version of packages:
"react-native-notifications": "^2.0.6",
"react": "16.9.0",
"react-native": "0.61.2",

I follow this link for adding Manual linking:
hint:  for  Header Search Paths setting I've add "${PODS_CONFIGURATION_BUILD_DIR}/react-native-notifications" separately on Debug and Release (don't forget the double quotation arount the path)
also before running go to ios folder and run pod install again

I am using version 2.0.6 with react-native 0.61.2. It works fine on android, but got error during manually link on iOS. Could not build the app on xcode.
Any suggestion for this issue would be really appreciated!

Also cant get this to work on "react-native": "0.61.2"

I was able to make it work with the version 2.1.5 and RN 0.61.2
Android
add to the react-native.config.js to ignore it on the auto-linking:
module.exports = {
  dependencies: {
    'react-native-notifications': {
      platforms: {
        android: null
      },
    },
 },
}

add to the settings.gradle:
include ':reactnativenotifications'
project(':reactnativenotifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/android/app')

build.gradle:
buildscript {
    ...
    dependencies {
        ...
        classpath 'com.google.gms:google-services:4.3.0' // <-- add this
    }
}

app/build.gradle:
android {
  defaultConfig {
     ...
     //add this
     missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60"
   }
}
dependencies {
    ...
    // add both
    implementation project(':reactnativenotifications');
    implementation 'com.google.firebase:firebase-core:16.0.7';
}
apply plugin: 'com.google.gms.google-services' // add this at the end of the file

MainApplication.java:
 private final ReactNativeHost mReactNativeHost =

      @Override
      protected List<ReactPackage> getPackages() {
        @SuppressWarnings("UnnecessaryLocalVariable")
        List<ReactPackage> packages = new PackageList(this).getPackages();

        //add the package here (note the this.getApplication())
        packages.add(new RNNotificationsPackage(this.getApplication()));
        return packages;
      }

Ios
cd ios
pod install

And follow the steps here :https://github.com/wix/react-native-notifications/blob/2.1.5/docs/installation.md
to edit the AppDelegate.m

hi @msantang78 i did what you said for Android and here is what I have
error: cannot find symbol
          packages.add(new RNNotificationsPackage(this.getApplication()));

How can I import the package ?

I was able to make it work with the version 2.1.5 and RN 0.61.2
Android
add to the react-native.config.js to ignore it on the auto-linking:
module.exports = {
  dependencies: {
    'react-native-notifications': {
      platforms: {
        android: null
      },
    },
 },
}

add to the settings.gradle:
include ':reactnativenotifications'
project(':reactnativenotifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/android/app')

build.gradle:
buildscript {
    ...
    dependencies {
        ...
        classpath 'com.google.gms:google-services:4.3.0' // <-- add this
    }
}

app/build.gradle:
android {
  defaultConfig {
     ...
     //add this
     missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60"
   }
}
dependencies {
    ...
    // add both
    implementation project(':reactnativenotifications');
    implementation 'com.google.firebase:firebase-core:16.0.7';
}
apply plugin: 'com.google.gms.google-services' // add this at the end of the file

MainApplication.java:
 private final ReactNativeHost mReactNativeHost =

      @Override
      protected List<ReactPackage> getPackages() {
        @SuppressWarnings("UnnecessaryLocalVariable")
        List<ReactPackage> packages = new PackageList(this).getPackages();

        //add the package here (note the this.getApplication())
        packages.add(new RNNotificationsPackage(this.getApplication()));
        return packages;
      }

Ios
cd ios
pod install

And follow the steps here :https://github.com/wix/react-native-notifications/blob/2.1.5/docs/installation.md
to edit the AppDelegate.m

Thank you for this. It is very useful. In addition, to what you said,

in (MainApplication.java) I have:
import com.wix.reactnativenotifications.RNNotificationsPackage;
in (build.gradle), I applied the following change. I hope this will NOT break anything. This is my 1st RN project! This was necessary to avoid the error reported in #372

- minSdkVersion = 16
+ minSdkVersion = 19

I was able to make it work with the version 2.1.5 and RN 0.61.2
Android
add to the react-native.config.js to ignore it on the auto-linking:
module.exports = {
  dependencies: {
    'react-native-notifications': {
      platforms: {
        android: null
      },
    },
 },
}

add to the settings.gradle:
include ':reactnativenotifications'
project(':reactnativenotifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/android/app')

build.gradle:
buildscript {
    ...
    dependencies {
        ...
        classpath 'com.google.gms:google-services:4.3.0' // <-- add this
    }
}

app/build.gradle:
android {
  defaultConfig {
     ...
     //add this
     missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60"
   }
}
dependencies {
    ...
    // add both
    implementation project(':reactnativenotifications');
    implementation 'com.google.firebase:firebase-core:16.0.7';
}
apply plugin: 'com.google.gms.google-services' // add this at the end of the file

MainApplication.java:
 private final ReactNativeHost mReactNativeHost =

      @Override
      protected List<ReactPackage> getPackages() {
        @SuppressWarnings("UnnecessaryLocalVariable")
        List<ReactPackage> packages = new PackageList(this).getPackages();

        //add the package here (note the this.getApplication())
        packages.add(new RNNotificationsPackage(this.getApplication()));
        return packages;
      }

Ios
cd ios
pod install

And follow the steps here :https://github.com/wix/react-native-notifications/blob/2.1.5/docs/installation.md
to edit the AppDelegate.m

Hi, of what you said here in the new version (RN0.61.5) was successful in getting build. But the application is crashing while opening. And I didn't make any changes to the application's first js files.

I think have seen something like this. I am not sure about the best resolution though. I suggest trying to comment the following commands if you are using any of them. I suspect one of them is the culprit.
NotificationsAndroid.setRegistrationTokenUpdateListener(onPushRegistered); NotificationsAndroid.setNotificationOpenedListener(onNotificationOpened);
NotificationsAndroid.setNotificationReceivedListener(onNotificationReceived);
Thanks and Regards,
Bilal Abdeen ---------------
On Saturday, 14 December 2019, 04:53:37 am AEDT, Muhammet INAN<EMAIL_ADDRESS>wrote:
I was able to make it work with the version 2.1.5 and RN 0.61.2
Android
add to the react-native.config.js to ignore it on the auto-linking:
module.exports = {
dependencies: {
'react-native-notifications': {
platforms: {
android: null
},
},
},
}
add to the settings.gradle:
include ':reactnativenotifications'
project(':reactnativenotifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/android/app')
build.gradle:
buildscript {
...
dependencies {
...
classpath 'com.google.gms:google-services:4.3.0' // <-- add this
}
}
app/build.gradle:
android {
defaultConfig {
...
//add this
missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60"
}
}
dependencies {
...
// add both
implementation project(':reactnativenotifications');
implementation 'com.google.firebase:firebase-core:16.0.7';
}
apply plugin: 'com.google.gms.google-services' // add this at the end of the file
MainApplication.java:
private final ReactNativeHost mReactNativeHost =
  @Override
  protected List<ReactPackage> getPackages() {
    @SuppressWarnings("UnnecessaryLocalVariable")
    List<ReactPackage> packages = new PackageList(this).getPackages();

    //add the package here (note the this.getApplication())
    packages.add(new RNNotificationsPackage(this.getApplication()));
    return packages;
  }

Ios
cd ios
pod install
And follow the steps here :https://github.com/wix/react-native-notifications/blob/2.1.5/docs/installation.md
to edit the AppDelegate.m
Hi, of what you said here in the new version (RN0.61.5) was successful in getting build. But the application is crashing while opening. And I didn't make any changes to the application's first js files.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

where can i find react-native.config.js file? @Bilal-Abdeen @msantang78

@reactdevrocks You can create this file at the root of your project (in the same folder where package.json file is.)

not working the above solution @Bilal-Abdeen
module.exports = {
dependencies: {
'react-native-notifications': {
platforms: {
android: null
},
},
},
}
and giving error
Cannot get property 'packageName' on null object

I am sorry, mate. I have no idea what causes this error. ---------------
On Saturday, 14 December 2019, 11:25:51 pm AEDT, reactdevrocks<EMAIL_ADDRESS>wrote:
not working the above solution @Bilal-Abdeen
module.exports = {
dependencies: {
'react-native-notifications': {
platforms: {
android: null
},
},
},
}
and giving error
Cannot get property 'packageName' on null object
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Even after the changes above it still doesn't recognise the argument for me :(
constructor RNNotificationsPackage in class RNNotificationsPackage cannot be applied to given types;       new RNNotificationsPackage(),       ^   required: Application   found: no arguments   reason: actual and formal argument lists differ in length

Really hate those bots that close an unresolved issue... what the point ??

I'm unable to makeít work. I have
"react": "16.9.0",
"react-native": "0.61.5",
"react-native-notifications": "^3.1.1" (downgraded from 3.1.2)
And i receive:
MainApplication.java:17: error: package com.wix.reactnativenotifications does not exist.
and obvious:
MainApplication.java:34: error: cannot
find symbol
packages.add(new RNNotificationsPackage(MainApplication.this));
^
symbol: class RNNotificationsPackage
I try even manual linking. I read everithing i could found.
Some help please.

Please, double-check that you have followed the latest installation instructions, specifically the following step.
https://github.com/wix/react-native-notifications/blob/master/docs/installation-android.md#step-4-add-firebase-core-package-and-apply-google-services-plugin-in-projectappbuildgradle

That step is needed only if:
Note: This section is only necessary in case you wish to be able to receive push notifications in your React-Native app.
But i want only to give notifications from application.
I dont know, and is not in my scope, to use Google FCM Service.

implementation project(':reactnativenotifications');

Hey, creating the config file in my root folder doesn't seem to be disabling auto-linking for android. Am I missing a setup process or something?

I was able to make it work with the version 2.1.5 and RN 0.61.2
Android
add to the react-native.config.js to ignore it on the auto-linking:
module.exports = {
  dependencies: {
    'react-native-notifications': {
      platforms: {
        android: null
      },
    },
 },
}

add to the settings.gradle:
include ':reactnativenotifications'
project(':reactnativenotifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/android/app')

build.gradle:
buildscript {
    ...
    dependencies {
        ...
        classpath 'com.google.gms:google-services:4.3.0' // <-- add this
    }
}

app/build.gradle:
android {
  defaultConfig {
     ...
     //add this
     missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60"
   }
}
dependencies {
    ...
    // add both
    implementation project(':reactnativenotifications');
    implementation 'com.google.firebase:firebase-core:16.0.7';
}
apply plugin: 'com.google.gms.google-services' // add this at the end of the file

MainApplication.java:
 private final ReactNativeHost mReactNativeHost =

      @Override
      protected List<ReactPackage> getPackages() {
        @SuppressWarnings("UnnecessaryLocalVariable")
        List<ReactPackage> packages = new PackageList(this).getPackages();

        //add the package here (note the this.getApplication())
        packages.add(new RNNotificationsPackage(this.getApplication()));
        return packages;
      }

Ios
cd ios
pod install

And follow the steps here :https://github.com/wix/react-native-notifications/blob/2.1.5/docs/installation.md
to edit the AppDelegate.m

Hey, creating the config file in my root folder doesn't seem to be disabling auto-linking for android. Am I missing a setup process or something?

Even after the changes above it still doesn't recognise the argument for me :(
constructor RNNotificationsPackage in class RNNotificationsPackage cannot be applied to given types; new RNNotificationsPackage(), ^ required: Application found: no arguments reason: actual and formal argument lists differ in length

Same, please help!


i get an error on npm start

I was video #47 when this happened, but it happened on a fresh start of a git clone as well.  This was working fine yesterday and then today on npm start-
ustins-MacBook-Pro-2:ReduxSimpleStarter justinchristensen66$ npm start

<EMAIL_ADDRESS>start /Users/justinchristensen66/sandbox/React/foo/udemy/ReduxSimpleStarter
node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js

events.js:160
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE <IP_ADDRESS>:8080
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at Server._listen2 (net.js:1258:14)
at listen (net.js:1294:10)
at net.js:1404:9
at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:62:16)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:10)
npm ERR! Darwin 16.5.0
npm ERR! argv "/Users/justinchristensen66/.nvm/v6.10.3/bin/node" "/Users/justinchristensen66/.nvm/v6.10.3/bin/npm" "start"
npm ERR! node v6.10.3
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>start: node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script 'node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the redux-simple-starter package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs redux-simple-starter
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls redux-simple-starter
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /Users/justinchristensen66/sandbox/React/foo/udemy/ReduxSimpleStarter/npm-debug.log
I wonder what I did, because like I said it was working yesterday, and I tried starting from a clean slate new git clone and got the same error.  Any help would be much appreciated!

sorry I already had something running on port 8080!?!? Thats why it failed/1  My bad !


synchronize schema spec

What
APM agent json schema automatic sync
Why
Changeset

https://github.com/elastic/apm-server/commit/2a1c5d50f Add logs support to events intake API (https://github.com/elastic/apm-server/pull/9068)

:green_heart: Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Start Time: 2022-09-09T09:44:21.513+0000

Duration: 56 min 3 sec

Test stats :test_tube:

Test
Results

Failed
0

Passed
3141

Skipped
36

Total
3177

:green_heart: Flaky test report
Tests succeeded.
:robot: GitHub comments
To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.

run benchmark tests : Run the benchmark tests.

run jdk compatibility tests : Run the JDK Compatibility tests.

run integration tests : Run the Agent Integration tests.

run end-to-end tests : Run the APM-ITs.

run windows tests : Build & tests on windows.

run elasticsearch-ci/docs : Re-trigger the docs validation. (use unformatted text in the comment!)


Headings and Lists

Basic headings and list formats.

Great work @hiroko
Thanks for contributing :+1:
Hoping for more collaboration :smile:


fix: new package version

I forgot to update the package version in the previous PR.

Hello @yangobeil! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file setup.py:

Line 14:90: W291 trailing whitespace
Line 16:87: W291 trailing whitespace


Improve typings for Ref

What problem does this feature solve?
When converting Options API code to Composition API, one often needs to convert the data to some kind of ref. However, the process is currently quite error-prone. Because a Ref object allows arbitrary indexing and returns an "any" value.
// Option API
{
  data: {
   return {
       dataList: []
   }
 }
 methods: {
    doSomething() {
        for (let i = 0; i < this.dataList.length;   i) {
            console.log(this.dataList[i])
        }
    }
 }
}

// Composition API
setup() {
    const dataList = ref<string[]>([])

    function doSomething() {
        // Following code can be compiled by Typescript, because dataList.length evals to "any" type.
        for (let i = 0; i < dataList.length;   i) {    // Oops, should use dataList.value.length
            console.log(dataList[i])                   // Oops, should use dataList.value[i]
        }
    }

    return { dataList, doSomething }
}

What does the proposed API look like?
I'm not sure how to disable the index signature at all in TypesScript, but returning null or undefined or maybe a symbol for any undeclared property should raise an error in TS.
export declare interface Ref<T = any> {
    value: T;
    /**
     * Type differentiator only.
     * We need this to be in public d.ts but don't want it to show up in IDE
     * autocomplete, so we use a private Symbol instead.
     */
    [RefSymbol]: true;
    /* Excluded from this release type: _shallow */

    // When accessing any property except value should now get a null value,
    // which will not fit in most context and TS will report errors.
    [index: string]: null
    [index: number]: null
}

What really happened?

What really happened?

I see, perhaps it's because I have noImplicitAny set to false in tsconfig.json


Content too long and cause horizontal scroll on mobile

Discovered at 20210120 release check.
Ex:
https://dev.cofacts.org/article/37rwpsmfuqeiz

I'd like to pick this up. Will try to finish this today.

Seems fixed, kudos to @playpool513 !


Migrate logging to gcp

I think you should hold off here until I figure out a plan w/ that.

Any progress @kevmoo?

Baby steps, but I'll likely have to wait until after January events.
I'd mark this as a draft and leave it for a bit...
On Thu, Dec 15, 2022 at 4:42 PM Brett Morgan @.***>
wrote:

I think you should hold off here until I figure out a plan w/ that.
Any progress @kevmoo https://github.com/kevmoo?
—
Reply to this email directly, view it on GitHub
https://github.com/dart-lang/dart-services/pull/963#issuecomment-1353999606,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAEFCWHICBK6EZVG2H2JGTWNO3IXANCNFSM6AAAAAAR3IWAQY
.
You are receiving this because you were mentioned.Message ID:
@.***>


WIP: [MM-20164] Update Redux hash for member role changing

Summary

Updates the redux hash to match latest redux hash for member role redux changes
Ticket Link

https://mattermost.atlassian.net/browse/MM-20164

@hahmadia
Error trying doing the automated Cherry picking. Please do this manually
+++ Updating remotes...
Fetching upstream
Fetching origin
+++ Updating remotes done...
+++ Creating local branch automated-cherry-pick-of-#3650-upstream-release-1.26-1575316165
Branch 'automated-cherry-pick-of-#3650-upstream-release-1.26-1575316165' set up to track remote branch 'release-1.26' from 'upstream'.
+++ Downloading patch to /tmp/3650.patch (in case you need to do this again)

+++ About to attempt cherry pick of PR. To reattempt:
  $ git am -3 /tmp/3650.patch

Applying: Stub hash
Using index info to reconstruct a base tree...
M	package.json
Falling back to patching base and 3-way merge...
Auto-merging package.json
CONFLICT (content): Merge conflict in package.json
Patch failed at 0001 Stub hash
Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

+++ Conflicts detected:

UU package.json

+++ Aborting in-progress git am.

+++ Returning you to the master branch and cleaning up.


Fix layers adding

Problem
When you try to play animation(using second scene for example) on layer greater than one you will receive error.
Solution
Add layer until layer count does not be equal layer index.

thanks for the fix!


Generating wrong css for :after :before pseudo selectors

 val reactTreeView = style(
       &.before.after(
        content := "g"
       )
    )

producing
.ReactTreeView_DefaultStyle-0001::after::before {
  content: g;
}

adding :: instead of :

I am also seeing this.

yeah its working fine in new browsers ,but poor IE8 doesn't support it :p

So according to the CSS3 spec we're doing the right thing. I think this is fine. IE8 will be forgotten long enough :grinning:
If this becomes a big deal, reopen and we can discuss what to do. Else I'm happy to leave this as is.

@japgolly, maybe there should be a way to add custom pseudo selectors instead of sealing the class since it's not used for exhaustivity checks (or is it)? Granted I know in this case you can just use strings to get what you need, but I have a similar problem where I need a custom media query selector and I cannot figure out how to do without forking (mentioned in gitter, but I might open an issue shortly).

@cretz Oh! Pseudo selectors are sealed out of habit. I originally started with empty case classes then specifically so users could create their own, I moved their attributes into the class itself. Guess I forgot to unseal it :) I'll do that now.

No wait, I'm talking rubbish, you can create your own using Pseudo.Custom() and compose using &. Can you give that a try?

@cretz Moving to #50 as we've moved off the original issue topic.


Support node >= 10

On node 10, when running npm install which calls gulp copy-src-dist, it throws:
> rimraf ./dist && gulp copy-src-dist && grunt build && tsc --project app && tsc --project src

gulp[2780]: src\node_contextify.cc:628: Assertion `args[1]->IsString()' failed.
 1: 00007FF74979DC55
 2: 00007FF7497775C6
 3: 00007FF749777691
 4: 00007FF74974AC9A
 5: 00007FF749B5DD22
 6: 00007FF749B5EF38
 7: 00007FF749B5E26D
 8: 00007FF749B5E18B
 9: 000003A70575C6C1

The error should have been fixed by upgrading to gulp 4: https://github.com/quadre-code/quadre/pull/147

https://github.com/quadre-code/quadre/pull/138 updated electron to version 5.0.0 and node 12.


More Advanced ThreeJS Materials

ThreeJS supports MeshPhysicalMaterial, which could enhance the appearance of models displayed in three-cad-viewer.

Here's an example configuration with a semi-metallic, semi-reflective material. This can be reproduced at this link:
https://threejs.org/docs/scenes/material-browser.html#MeshPhysicalMaterial

Fixed in 1.8.2

closing


Slash commands

Fixes #28
Tasks for @bonustrack :

[ ] Add new env DISCORD_CLIENT_ID with<PHONE_NUMBER>80762122 (This is same as here)

On Proposal start event

Commands:

/ping

/snapshot

/snapshot-help

Multiple buttons in a single row:

There is a limit of 25 buttons

You can have a maximum of five ActionRows per message, and five buttons within an ActionRow.
https://discordjs.guide/interactions/buttons.html#building-and-sending-buttons

Things  to change

[ ] show only choices buttons when there are 5 or less choices in proposal
[ ] Rename/add commands:

/add
/remove
/help
/ping


HDDS-11002. Speed up TestPipelineClose

What changes were proposed in this pull request?
Speed up TestPipelineClose by reusing the same cluster for all test cases.
https://issues.apache.org/jira/browse/HDDS-11002
How was this patch tested?
Before:
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 78.613 s - in org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose
[INFO] org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose.testPipelineCloseWithPipelineAction  Time elapsed: 26.663 s
[INFO] org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose.testPipelineCloseWithOpenContainer  Time elapsed: 17.085 s
[INFO] org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose.testPipelineCloseWithClosedContainer  Time elapsed: 16.943 s
[INFO] org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose.testPipelineCloseWithLogFailure  Time elapsed: 17.901 s

After:
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 41.547 s - in org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose
[INFO] org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose.testPipelineCloseWithPipelineAction  Time elapsed: 5.53 s
[INFO] org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose.testPipelineCloseWithOpenContainer  Time elapsed: 0.003 s
[INFO] org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose.testPipelineCloseWithClosedContainer  Time elapsed: 6.646 s
[INFO] org.apache.hadoop.hdds.scm.pipeline.TestPipelineClose.testPipelineCloseWithLogFailure  Time elapsed: 8.711 s

CI:
https://github.com/adoroszlai/ozone/actions/runs/9471526718

Thanks @smengcl for the review.


Feat: Added PassengerForm inputs

Summary: Added simple DateInput component. Which is basically just composite of PickerButton and DatePicker.
Added passenger related inputs to PassengerForm screen.
Closes: #121

I think that the right place for the DateInput should be /packages/components/ because from my point of the view the universal-component should be atomic.
And when I checked this component in the storybook, I suppose that this component composition is more Margarita specific than generic.
I don't know It is for discussion.
cc @RobinCsl What is your opinion?

@FilipMessa I do not have a strong opinion, but let's say that it could live in universal-components if it was both a controlled and non-controlled (I think it's called optionally controlled) component, but in the present state it should probably be in margarita-components since it's handling its own logic.
The line is blurry here.

I also don't have a strong opinion about, as you said the line is blurry, my point was just about that this component can be easily created as the composition from an existing component.
But as I said before, I 👽 am not sure about the best approach so @JoseDuSV You must decide 😉

I also don't have a strong opinion about, as you said the line is blurry, my point was just about that this component can be easily created as the composition from an existing component.
But as I said before, I 👽 am not sure about the best approach so @JoseDuSV You must decide 😉

It's quite between both. But you are right that as it is just composite, it makes more sense to keep it just inside margarita components.
Moved 🚀


Create zs1piaseczno.txt

https://www.zs1piaseczno.pl/

Pull request merged. Please notice that free educational license for JetBrains tools is for high and higher schools students, i.e. those who are over 13 of age. Thank you!

@MilyGosc Pull request merged. Please notice that free educational license for JetBrains tools is for high and higher schools students, i.e. those who are over 13 of age. Thank you!


Reject indefinite length byte/string if chunks are indefinite length

Enforce this in data validation.
RFC 7049 2.2.2
   For indefinite-length byte strings, every data item (chunk) between
   the indefinite-length indicator and the "break" MUST be a definite-
   length byte string item; if the parser sees any item type other than
   a byte string before it sees the "break", it is an error.

The "byte/string" is confusing to me so it may also confuse others.
I think title should be "Reject indefinite length byte string if chunks are indefinite length" to use same terminology as RFC 7049.
The body of the issue can mention this also affects "indefinite length text string".


Please add the official documentation to the Wiki about using DXVK HUD.

Please add the official documentation to the Wiki about using DXVK HUD. I was able to find out how to use it only after I looked at the code for the patch that adds the DXVK HUD functionality. In my opinion this is not the easiest way to get documentation.
DXVK_HUD=fps
or
DXVK_HUD='fps device_info dxvk_info'

Just make a PR to readme :)

Just make a PR to readme :)

Thank you

@Kerrung well, I mean I'm sorry that you had to look into source code, but you can always help others by improving wiki/readme

@Kerrung well, I mean I'm sorry that you had to look into source code, but you can always help others by improving wiki/readme

I do not have permission to edit the wiki.

@Kerrung yeah, it's disabled in this repo, but you can still make a PR to Readme (and you don't really need to close this issue, maybe maintainer decides to  edit the wiki)

I found that it already exists in the readme, but as previously it was not there, I did not know that it was already added.
DXVK_HUD=1

The DXVK_HUD entry has been there ever since the HUD was added, and that was... 10 weeks ago I think?

@doitsujin @Kerrung talks about arguments like fps, device_info

But there are no such arguments. What exactly are you talking about?

@doitsujin ah, author of this issue was probably thinking that https://github.com/doitsujin/dxvk/pull/105 was merged


WASM WASI Core extension will move to a release version

We decided to provide a release version of the WASM WASI Core extension and the wasm-wasi API npm module to ease the installation of extensions that depend on it.
To allow further improvements to the API the npm module wasm-wasi will provide different routes to import different API versions. The API provided by the default import import { Wasm } from '@vscode/wasm-wasi' is deprecated together with all other types from that route. The npm module exports new routes to be able to serve different API versions. The current route for the API (which is the same as before) is import { Wasm } from '@vscode/wasm-wasi/v1'. There might be new routes in the future to cover a v2 version of the API or a proposed route to test proposed API.
The v1 import works with the current pre-release version of the WASM WASI Core extension (e.g. 0.13.3) and will work with the upcoming release version of the WASM WASI Core extension (e.g. 1.0.0)
I ask that your extension starts using the new<EMAIL_ADDRESS>version of the npm module to be prepared for the release of the WASM WASI Core extension.

If you encounter any problems please open issues here: https://github.com/microsoft/vscode-wasm/issues

Thanks a lot, awesome! Updating to<EMAIL_ADDRESS>and changing the imports to '@vscode/wasm-wasi/v1' worked flawlessly for me.

Closing as fixed.


Add curl to image for use native HEALTHCHECK

Would love this as well. Some form of built-in healthcheck would be nice.

Yes, it would be good to have any form of healthcheck.

in the meantime you guys could do this (dockerfile_inline works in newer docker-compose versions):
version: '2.4'
services:
  whoami:
    container_name: whoami
    build:
      context: .
      dockerfile_inline: |
        FROM traefik/whoami
        COPY --from=ghcr.io/tarampampam/curl:8.4.0 /bin/curl /curl
        HEALTHCHECK --interval=5s --timeout=2s --retries=2 --start-period=2s CMD ["/curl", "--fail", "http://<IP_ADDRESS>:80/health"]
    restart: always
    mem_limit: 16m
    memswap_limit: 16m

I think it would be easier to just add a flag to the CLI which does a request to the /health endpoint and returns with success or failure.


Finalise work done for Seldon Core Operator during Obeservability Workshop

Finalise work done for Seldon Core Operator during Obeservability Workshop
Work items are tracked in https://warthogs.atlassian.net/browse/KF-775
Branch: https://github.com/canonical/seldon-core-operator/tree/kf-775-gh52-feat-alert-rules
Prometheus deployment https://github.com/canonical/prometheus-k8s-operator
Design
Failure alerts are implemented through integration with Prometheus Charm from Canonical Observability Stack. Prometheus creates scrape jobs based on configured alert rules defined by Seldon Core Operator Charm. Then it scrapes targets, retrieves defined metrics, and performs required calculations.
Testing

Setup MicroK8S cluster and Juju controller:

microk8s enable dns storage metallb:"<IP_ADDRESS>-<IP_ADDRESS>,<IP_ADDRESS>-<IP_ADDRESS>"
juju bootstrap microk8s uk8s
juju add-model test

Deploy Prometheus and Seldon Core Operator and relate them.

juju deploy prometheus-k8s --trust
juju deploy ./seldon-core_ubuntu-20.04-amd64.charm seldon-controller-manager --trust --resource oci-image="docker.io/seldonio/seldon-core-operator:1.14.0"
juju relate prometheus-k8s seldon-controller-manager

Navigate to Prometheus dashboard https://<Prometheus-unit-IP>:9090, select Status->Targets
There should be Promethus scrape job that targets Seldon metrics endpoint (http://<Seldon-Controller-Manager-IP>:8080/metrics) entry with no errors:

Deploy sample Seldon deployment in the same model to observe if any failure alert is reported by navigating to Alerts

microk8s.kubectl -n test apply -f examples/serve-simple-v1.yaml

To simulate failure delete deployment that was created by Seldon and observe alerts:

microk8s.kubectl -n test delete deploy/seldon-model-example-0-classifier

NOTE: That alerts window is 10 minutes. Scraping is done once per minute. Make sure at lease 2 minutes have passed for proper rate calculation.

Closing this issue.


Fix a bug that prevents ALSA from initializing

In some configurations, ALSA needs to be able to write to /dev/null in order to work. Without it, I get this error message:
raspberrypi librespot[9307]: ALSA lib pcm_null.c:387:(snd_pcm_null_open) Cannot open /dev/null: Operation not permitted
raspberrypi librespot[9307]: [2022-03-23T02:45:05Z ERROR librespot_playback::player] Audio Sink Error Connection Refused:  Device default May be Invalid, Busy, or Already in Use, ALSA function 'snd_pcm_open' failed with error 'EPERM: Operation not permitted'
raspberrypi systemd[1]: raspotify.service: Main process exited, code=exited, status=1/FAILURE
raspberrypi systemd[1]: raspotify.service: Failed with result 'exit-code'.

Thanks!!!


expose flags in get_replica_result as internal API

Now it helps with custom transcoder for result:

Thanks for the changes @avsej!  I like the smuggling transcoder 😄