Eager / proactive sitemap generation

Clear and concise description of the problem
Currently, the sitemap is generated on-demand / lazily, i.e. when a request for /sitemap_index.xml comes in. My sitemap takes a few minutes to generate, since it is HUGE. What I would like to see is a proactive (re)generation of the sitemap, so that it's always fast when the request comes in.
Suggested solution
Config in nuxt.config.ts:
{
  ...,
  sitemap: {
    eager: true,
    cacheTtl: 1000 * 60 * 60 * 24, // 1 day
  },
  ...
}

Expected behavior for eager=true:

Start generating the sitemap as soon as the server starts
Start re-generating the sitemap as soon as the cache expires.
Always serve the latest available sitemap – never delay!
If the server has started recently, and the sitemap is not available yet, await it – never give 404! This is the worst case scenario, but is still better than starting to generate the sitemap when the first request comes in.

Alternative
The only alternative I can think of is writing my own nitro plugin that does this. But I would rather contribute something here.
Additional context
No response

Hi @rudolfbyker, thanks for the suggestion.
This makes perfect sense. Ideally, the cache would be built at build time and then recreated with a SWR caching policy.
I believe there are some blockers upstream for the build time caching so unfortunately it's not a quick fix. You could experiment with implementing a SWR cache route rules in the meantime.

Thanks for your time.
I did not even think about build time caching. My suggestion would be that we make build time caching a separate feature. On startup, if it was not generated during build time, we simply do it when the server starts.
I tried this as a workaround:
routeRules: {
  "/sitemap_index.xml": {
    swr: 60,
  },
  "/*-sitemap.xml": {
    swr: 60,
  },
}

x-sitemap-cache: MISS

Thanks for your time.
I did not even think about build time caching. My suggestion would be that we make build time caching a separate feature. On startup, if it was not generated during build time, we simply do it when the server starts.
I tried this as a workaround (using very short cache times just for testing):
routeRules: {
  "/sitemap_index.xml": {
    swr: 60, // Y
  },
  "/*-sitemap.xml": {
    swr: 60, // Y
  },
},
sitemap: {
  cacheTtl: 10, // X
}

This totally works, except for two things:

I always get x-sitemap-cache: MISS in the response, which is understandable given our workaround, but weird for others. But maybe this is harmless?
No warmup on server start, so the first request takes a while.

The warmup can be implemented easily using a server plugin, e.g. /server/plugins/cacheWarmer.ts:
export default defineNitroPlugin((nitroApp) => {
  process.stdout.write("Warming up sitemap …\n");
  $fetch("/sitemap_index.xml").then(() => {
    process.stdout.write("Sitemap is ready.\n");
  });
});

Regarding build-time caching: Do you have links handy to the upstream issues that might be blocking this?

Update:

It seems that /api/_sitemap-urls.ts is called for every page of the sitemap, not just the index. Therefore I had to use defineCachedEventHandler instead of defineEventHandler there.
If I warm up /api/_sitemap-urls.ts (as soon as the server starts, and hopefully before the first request to any sitemap page comes in), it's actually fast enough for me, so maybe I don't need the eager cache on the level of this module like I initially thought.
I need to wait for the nitroApp to be ready before calling $fetch from the cacheWarmup nitro plugin, just like you did here https://github.com/harlan-zw/nuxt-link-checker/commit/646e6ff8721eaeb4ac4c56a3a0e03c0ce764f90e . I'm wondering if there is a better way to wait for it. 200ms may be too much or too little, depending on the infrastructure.

In v4 when using multi sitemaps and the index sitemap is requested, it won't load all the subsequent child sitemap data anymore.
Theoretically, this should be the main blocker? You should be able to split up all of your URLs in other sitemaps to decrease the loading time. Also with the SWR cache enabled it should solve some issues.

I think this is fine, although it will be a few days before I can look into this again. You just missed my question above:

I need to wait for the nitroApp to be ready before calling $fetch from the cacheWarmup nitro plugin, just like you did here https://github.com/harlan-zw/nuxt-link-checker/commit/646e6ff8721eaeb4ac4c56a3a0e03c0ce764f90e . I'm wondering if there is a better way to wait for it. 200ms may be too much or too little, depending on the infrastructure.

Any ideas? :)

Made an upstream PR to hopefully resolve https://github.com/unjs/nitro/pull/1906

I've pushed up experimental support for this natively, I've introduced it in the patch version since it's experimental. May introduce it as a feature in a minor.
You can try it out with experimentalWarmUp, you can see the code here: https://github.com/harlan-zw/nuxt-simple-sitemap/blob/main/src/runtime/plugins/warm-up.ts


ARTEMIS-4559 refactor HA docs & code/module naming

This commit does the following:

Updates HA docs including the chapter on network isolation (i.e. split brain). The network isolation chapter is now more about high-level explanation and the HA doc now has all the configuration parameters.
Changes references to "pluggable quorum voting" to "pluggable lock manager." The pluggable functionality really isn't about voting. Conceptually is much more like the functionality you'd get from a distributed lock so this naming is more clear. Both the docs and the code have been changed.
Reorganize lock manager modules as sub-modules. The API and RI modules are renamed, but that should be OK based on the "experimental" tag that's been on this feature up to this point.
Remove the "experimental" tag from the lock manager.

These changes will not break folks using the standalone broker. However, they will break folks embedding the broker if they are using the artemis-quorum-ri or artemis-quorum-api modules or the o.a.a.a.c.c.h.DistributedPrimitiveManagerConfiguration class.
There are no functional changes here. Renaming these modules is more a conceptual change to facilitate better documentation and increased adoption.

In my opinion, inspecting the documentation from the diff is difficult. I'd recommend pulling the PR and building the docs. Then you can really see the new content and flow.

This is a big beyond refactoring just docs, right? you're also renaming the package and project name?
not complaining about the change.. just noticing it's a bit more than just doc changes?

@clebertsuconic, that's a fair point. I updated the Jira and commit message to reflect this.

@ehsavoie, is merging this going to cause any problems for WildFly? Are you guys using org.apache.activemq.artemis.core.config.ha.DistributedPrimitiveManagerConfiguration. I'm guessing you don't since you don't ship either of the current artemis-quorum-api or artemis-quorum-ri jars.

@jbertram I don't think so but I'll do a quick run tomorrow

@jbertram LGTM

@clebertsuconic, I think this is ready to go.


chore(deps): update dependency marked to v5

This PR contains the following updates:

Package
Type
Update
Change

marked (source)
dependencies
major
^4.2.12 -> ^5.0.0

Release Notes

markedjs/marked
v5.0.0
Compare Source
Bug Fixes

deprecate options (#2766) (62d3312)
update min node to v18 (#2767) (c6852f5)

Features

add block param to html renderer (#2768) (fa21b9f)

BREAKING CHANGES

deprecate options

Option
Replacement

highlight, langPrefix, and callback
marked-highlight

mangle
marked-mangle

baseUrl
marked-base-url

smartypants
marked-smartypants

xhtml
marked-xhtml

headerIds and headerPrefix
marked-gfm-heading-id

minimum supported node version v18

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you click the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: package-lock.json
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving<EMAIL_ADDRESS>npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/marked
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR! node_modules/ngx-markdown
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Conflicting peer dependency<EMAIL_ADDRESS>npm ERR! node_modules/marked
npm ERR!   peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR!   node_modules/ngx-markdown
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! /tmp/renovate/cache/others/npm/_logs/2023-05-02T21_13_51_620Z-eresolve-report.txt

npm ERR!  You will not get PRs for any future 5.x releases. But if you manually upgrade to 5.x then Renovate will re-enable minor and patch updates automatically.
If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.


Error in images loading

I got this error:
foundry.js:319 TypeError: Cannot read properties of undefined (reading 'removeChildren')
[Detected 1 package: perfect-vision]
    at SightLayer.initializeSources (foundry.js:30266:19)
    at PerceptionManager._update (foundry.js:33344:44)
    at PerceptionManager.update (foundry.js:33263:10)
    at PerceptionManager.initialize (foundry.js:33272:17)
    at Canvas._initialize (foundry.js:20277:21)
    at async Canvas.draw (foundry.js:20134:7)
    at async Canvas.🎁Canvas.prototype.draw#perfect-vision (canvas.js:345:9)
    at async Scene.view (foundry.js:17859:7)
    at async Game.initializeCanvas (foundry.js:5677:20)
    at async Game.setupGame (foundry.js:5548:5)
    at async Game._initializeGameView (foundry.js:6514:5)
    at async Game.initialize (foundry.js:5431:5)

And I only see a black background image.

This is probably a cache issue. Follow the following instructions; CTRL+F5 should to the trick:

Caching Issues
There is a known issue for users updating from V8 to V9 related to caching which causes some errors, UI oddities, and trouble with canvas rendering which can be addressed quickly and immediately without support assistance. If a simple CTRL+F5 (CMD+SHIFT+F5 for Mac) does not resolve the issue:
Steps to fix caching issues:

Open the DevTools using the F12 key (or cmd-shift-i for macOS)
Click the settings ⚙ icon
Below the heading 'network' check the checkbox for 'Disable Cache (when DevTools is open)
Leave the DevTools window open and refresh (f5) the Foundry VTT window

Note: Firefox users will see this checkbox under 'Advanced Settings' -> 'Disable HTTP Cache (when toolbox is open)'

It’s not. I have already done before posting (I’m web developer). I’ve put the console error trace.

Then you must have an outdated version of PV installed. Uninstall and reinstall PV to force it to the latest version. Maybe it got stuck on an old version somehow.

That has worked. Thanks.


Correct docs for counts_in_cylinders (see #908)

#909 fixed the code, this fixes the (unrelated) docs thing I mentioned in #908.

Whoops, forgot to fix the docs. Thanks for the PR.


Reporting parsing erros

I saw previous question about this topic https://github.com/petitparser/dart-petitparser/issues/98 but unfortunately it doesn't seem to work, or at least I don't understand what I'm doing wrong.
I'm trying to parse protobuf like grammar:
class ProtobufGrammar extends GrammarDefinition {
  @override
  Parser start() => ref0(file).end();

  Parser file() => ref0(definition).star();

  Parser definition() => ref0(message);

  Parser message() =>
      string('message').trim() &
      ref0(identifier).trim() &
      char('{').trim() &
      char('}').trim();

  Parser identifier() => (letter() & word().star())
      .flatten("identifier is expected");
}

void main() {
  final parser = ProtobufGrammar().build();
  test('message without name', () {
    final input = 'message ';
    final result = parser.parse(input);
    // Would be great to have an error: identifier is expected
    expect(result, isSuccess());
  });

  test('message with name', () {
    final input = 'message Empty';
    final result = parser.parse(input);
    // Would be great to have an error: '{' is expected
    expect(result, isSuccess());
  });

  test('Bad identifier', () {
    final input = 'message f123';
    final result = parser.parse(input);
    expect(result, isSuccess());
  });
}

All test cases fail (that's correct, since input is malformed), with the same error message: <Failure[1:1]: end of input expected>
After reading #98 I would expected Bad identifer to report identifier is expected but it's not. I tried to use .or(failure("identifier is expected") but it didn't do anything.
I think it goes into:
  Parser message() =>
      string('message').trim() &

and since it can't satisfy ref0(identifier).trim() it bails out, and tries another parser. But since there is no alternative with message (there is single parser anyway), I would like it to fail with something else than generic end of input expected. Is there a way, thanks?

It seems to work the way I expect if I omitstar() or replace it with plus() from Parser file() => ref0(definition).star(); e.g. I'm expected one message definition. It correctly shows errors. But I may have empty file, or I may some other rules like comments so zero or more have to be there (somewhere).

Thank you for the one-click reproducible example. This is really appreciated!
As you observed, the issue is that the star() operator is happy to end before a failing definition, which then causes the end-of-input parser to fail with a not so helpful error message.
You can avoid the problem after the repeating star() operator that you either

reached end-of-input (which is good), OR
you retry the definition to pass up a nice error message.

Parser start() => ref0(file);
Parser file() => ref0(definition).star() & (endOfInput().trim() | ref0(definition));
...

Thanks for a quick reply, seems to work!


byValueKey fails to find element opened by showMaterialModalBottomSheet

The widget which is opened by showMaterialModalBottomSheet and its descendants cannot be found using byValueKey, byText, etc. All other elements can be found if it's not opened by showMaterialModalBottomSheet
Is there any workaround for this issue?

Did you find a solution to this issue? @NetSarangComputer , currently facing the same problem


docs: add awkward to package list

While submitting #30 I noticed that awkward is not in the list in the readme, and I think it makes sense to be included. The description is taken directly from https://awkward-array.org/quickstart.html.

Thanks @alexander-held. Oh, awkward was not included!? Strange. Happy with the text @jpivarski? Will wait to merge.


settings not handled correctly?

I am using multiple compilers which have different sets of allowed settings.
In my default profile, there are some settings which are specific to one compiler.
In my configure() method (it is in base class using python_requires), I check the compiler and alter the compiler-sub-settings accordingly.
It works fine using conan install, but does not seem to work using build.py.
Below error is thrown:
Traceback (most recent call last):
  File "build.py", line 126, in <module>
    builder.run()
  File "/usr/lib/python2.7/site-packages/cpt/packager.py", line 394, in run
    self.run_builds(base_profile_name=base_profile_name)
  File "/usr/lib/python2.7/site-packages/cpt/packager.py", line 471, in run_builds
    r.run()
  File "/usr/lib/python2.7/site-packages/cpt/runner.py", line 74, in run
    test_folder=self._test_folder)
  File "/usr/lib/python2.7/site-packages/conans/client/conan_api.py", line 82, in wrapper
    return f(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/conans/client/conan_api.py", line 326, in create
    test_build_folder, test_folder, conanfile_path)
  File "/usr/lib/python2.7/site-packages/conans/client/cmd/create.py", line 40, in create
    test_build_folder=test_build_folder)
  File "/usr/lib/python2.7/site-packages/conans/client/cmd/test.py", line 39, in install_build_and_test
    keep_build=keep_build)
  File "/usr/lib/python2.7/site-packages/conans/client/manager.py", line 119, in install
    None)
  File "/usr/lib/python2.7/site-packages/conans/client/graph/graph_manager.py", line 108, in load_graph
    cache_settings.values = profile.settings_values
  File "/usr/lib/python2.7/site-packages/conans/model/settings.py", line 281, in __setattr__
    return super(Settings, self).__setattr__(field, value)
  File "/usr/lib/python2.7/site-packages/conans/model/settings.py", line 319, in values
    self.values_list = vals.as_list()
  File "/usr/lib/python2.7/site-packages/conans/model/settings.py", line 281, in __setattr__
    return super(Settings, self).__setattr__(field, value)
  File "/usr/lib/python2.7/site-packages/conans/model/settings.py", line 314, in values_list
    setattr(attr, list_settings[-1], str(value))
  File "/usr/lib/python2.7/site-packages/conans/model/settings.py", line 140, in __setattr__
    return setattr(sub_config_dict, item, value)
  File "/usr/lib/python2.7/site-packages/conans/model/settings.py", line 283, in __setattr__
    self._check_field(field)
  File "/usr/lib/python2.7/site-packages/conans/model/settings.py", line 267, in _check_field
    raise undefined_field(self._name, field, self.fields, self._parent_value)
conans.errors.ConanException: 'settings.compiler.XYZ' doesn't exist for 'my-GCC'
'settings.compiler' possible configurations are ['A', 'B']

Actually the issue seems with the handling of different types of settings:
My actual settings being passed:
SETTINGS:  {'compiler.version': '7.1', 'compiler.sanitize': None, 'compiler': 'gcc'}
SETTINGS:  {'compiler.version': '7.0', 'compiler': 'my-GCC', 'compiler.mode': 'A'}

settings shown by CPT:
+--------------------+---------------------+-----------------+------------+
|   compiler.version | compiler.sanitize   | compiler.mode   | compiler   |
|--------------------+---------------------+-----------------+------------|
|                7.1 | None                |                 | gcc        |
|                7.0 | undefined           | A               | my-GCC     |
+--------------------+---------------------+-----------------+------------+

settings shown by CPT:

How it shows in the table shouldn't be relevant, it is only a visual table.
I would need an example to reproduce the issue.

Here is my settings,yml:
os: [Windows, Linux]
arch: [x86, x86_64]
compiler:
    gcc:
        version: ["4.8", "7.1"]
        libcxx: [libstdc++, libstdc++11]
        sanitize: ["address", "undefined", None]
    myGcc:
        version: ["7.0"]
        mode: [A, B]

This is my default profile:
[settings]
os=Linux
arch=x86_64
compiler=gcc
compiler.version=7.1
compiler.libcxx=libstdc++
compiler.sanitize=None
build_type=Release
[options]
[build_requires]
[env]

Please let me know if should provide more information.

How looks your build.py?

build.py
from conan.packager import ConanMultiPackager

username = "demo"
channel = "stable"

myoption = {}

builder = ConanMultiPackager(username=username,channel=channel, stable_channel=channel)

mysetting = {'compiler.version': '7.1', 'compiler.sanitize': None, 'compiler': 'gcc'}
builder.add(options=myoption, settings=mysetting)

mysetting = {'compiler.version': '7.0', 'compiler.mode': 'A', 'compiler': 'myGcc'}
builder.add(options=myoption, settings=mysetting)

builder.run()

I reproduced but I think it is not a bug, it happens even with a "conan create".
The configure() method is not valid here, removing a setting means "discard this setting to apply to my configuration" but not skips the check that a subsetting is being applied to a compiler (mygcc) that do not contain that subsetting in the yml.
The root issue is that the default profile contains non-common settings for all the configurations, I would recommend you to alter the default profile and add only the libcxx and sanitize to the gcc one. You can change also the default profile, read here: https://github.com/conan-io/conan-package-tools#specifying-a-different-base-profile

In my case, base_profiles will need to be changed at run-time.
CPT allows to change base profile in run() method, which will remain the same for the entire run, correct?

correct, and you can execute several run() in the same build.py, of course.

The below manual workflow works fine for my case:
conan export . demo/test
conan install . -u
for each AddedConfig:
    rm -rf build && mkdir build && cd build
    conan install .. <AddedConfig>
    conan build ..
    conan export-pkg .. demo/test -f

Does this mean configure() method of conanfile is not called in CPT?
What other methods are skipped in the CPT workflow?

From the conan docs at https://docs.conan.io/en/latest/creating_packages/getting_started.html#creating-and-testing-packages:
Using Conan commands, the conan create command would be equivalent to:
$ conan export . demo/testing
$ conan install Hello/0.1@demo/testing --build=Hello
# package is created now, use test to test it
$ conan test test_package Hello/0.1@demo/testing

I'm using the same workflow, just that I'm passing settings on command line (as indicated in the docs).
Moreover, from the docs related to configure() at https://docs.conan.io/en/latest/reference/conanfile/methods.html?highlight=configure#configure-config-options
It also demonstrates changing/removing settings.

Yes I know about the local commands and the docs very well, I meant that using local methods exactly to avoid write just "conan create" is not very common. Probably it is working because known limitations processing the settings from the conan.info file created on the conan install command.
About the configure() docs and removing settings, as I already commented, the check is before the configure of your recipe is being called and it is checking that the settings inputted are correct following the current settings.yml

Ok, so the way to go forward for me would be to call run() method of CPT individually for each compiler.
I think the issue can be closed if this is the final resolution.
Thanks for the details.


docker port updates while image is processing requests

Dear Fellow,
I would prefer to add 9043:9043 while the image is running and not to restart the image.
docker run -it -p9080:9080 -p9060:9060 -p9081:9081 ibmcom/websphere-traditional sh
IBM::Partner::Sat Jun 29 10:13:46 EDT 2019
IBM::ITIL::Technology
IBM::Documentation
IBM::Management
IBM::Application::Managment, IBM::Security::Management
IBM::Service Delivery
    IBM::Incident::Number: E-COMMERCE DOMAIN IMPACTED
    IBM::Capacity Manamegent
    IBM::Finanical Management:
    IBM::TIME: **DURATION 20- 30 MINUTES**

IBM::Service Support
IBM::Incident::Number: 0D87DEFA-0A7A-4017-9528-3AE7C9A40304
IBM::Incident::Descrition: E-COMMERCE DOMAIN IMPACTED
IBM::Incident:
IBM::Problem:
IBM::Change Management
docker ps --update -port 9043:9043
IBM::Configuration Management Database (CMDB)
IBM::Discovery:
identified while creating the ticket the instruction docker ps --update
also, that white creating the ticket I fixed the problem and reduced time to repair
IBM::Release Management
IBM::Lotus::Email: .gibhub.new.new.button

It is missing the option in the docker update instruction
Options:
  --blkio-weight uint16        Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
  --cpu-period int             Limit CPU CFS (Completely Fair Scheduler) period
  --cpu-quota int              Limit CPU CFS (Completely Fair Scheduler) quota
  --cpu-rt-period int          Limit the CPU real-time period in microseconds
  --cpu-rt-runtime int         Limit the CPU real-time runtime in microseconds

-c, --cpu-shares int             CPU shares (relative weight)
--cpus decimal               Number of CPUs
--cpuset-cpus string         CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems string         MEMs in which to allow execution (0-3, 0,1)
--kernel-memory bytes        Kernel memory limit
-m, --memory bytes               Memory limit
--memory-reservation bytes   Memory soft limit
--memory-swap bytes          Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--restart string             Restart policy to apply when a container exits


Do not ravel array when slicing with same shape

I'm not very familiar with the array API so I might be missing something obvious. However, I encountered a troubling complex graph when doing an operation like array[array > 100]
import dask.array as da
arr = da.random.random((200,200,200), chunks=(20, 20, 20))
arr[arr > 1].dask

This is under the hood raveling the arrays before indexing. Raveling is effectively a rechunking operation which is relatively expensive, specifically for an operation that should be elemwise.
I'm wondering if I'm missing anything here or why there is a reason for this complexity

Three test cases failed. I assume I'm missing something. I'd be happy to be educated about the topic more. Maybe there is a way to get this working with minor modifications

I ran into this a bit ago, and I think I tried something like what you're doing here, but also found it didn't work.
I vaguely recall it had to do with the order of the elements not matching with NumPy if you just do it blockwise on multidimensional arrays. Kind of like this warning mentions: https://github.com/dask/dask/blob/834a19eaeb6a5d756ca4ea90b56ca9ac943cb051/dask/array/slicing.py#L1149-L1152
Because x[x > 100] produces a 1D array when x is N-D, if you do the operation elemwise, each chunk will be flattened. But if you just concatenate all those 1D arrays, the elements will not be overall row-major order like you'd get from NumPy. If the chunks are squares, say, chunk 0 will contain elements from multiple rows, then chunk 1 will contain elements from multiple rows. You'd expect all the elements from row 0 to come before elements in row 1.
So it kind of makes sense that rechunking is involved, since there isn't a 1:1 mapping between chunks in the input and chunks in the output.


The sample in this page is hard to migrate in policies.

Can we provide the sample whole policies as a reference?

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

ID: a49122f8-0ba8-08f1-c8cf-52634dfd0d0e
Version Independent ID: ea718f8a-e004-47b5-2feb-1eade3835301
Content: Conditional Access technical profiles in custom policies - Azure AD B2C
Content Source: articles/active-directory-b2c/conditional-access-technical-profile.md
Service: active-directory
Sub-service: b2c
GitHub Login: @msmimart
Microsoft Alias: mimart

@ErisMeiyang Thanks for the feedback. We will engage the content development team for further investigation, they will verify and perform necessary changes in the document as needed.

The doc will be updated later today. Meanwhile you can find the policy here: https://github.com/azure-ad-b2c/samples/tree/master/policies/conditional-access


SlidingTimeWindowReservoir getTick() can overflow and break

The getTick() function of SlidingTimeWindowReservoir uses a collision buffer to allow for measurements which are happening within the same "tick". The default Clock tick is provided by System.nanoTime().
Under certain circumstances, nanoTime() returns a long sufficiently large that when multiplied by the collision buffer, it overflow into a negative number. The next line in the function will then check whether the new tick (nanos * buffer) is larger than the old and, if not, it will return oldTick + 1. Because of this, the getTick() function returns ticks which are always incresing by one, therefore distorting the window.
To fix this, I added an absolute offset value to the class. The offset value can be a final field which is initialized when the class is constructured or a static. Following each call to Clock.getTick(), we would reduce the return value but this absolute amount.

@victor-prp I've just committed a possible fix, as well as your test: d49489663c43aa29593a363a08d2dbb7dd2e3582, however the test now times out, instead of resulting in an assertion error.

We've seen exactly this in production, using > 3GB memory when we get an overflow (there are lots of metrics in there ;)).
@ryantenney agree with your logic, I've tested your fix and it looks good to me - test case is here https://gist.github.com/martinsmatthews/c2f87b8ec90652b7e3a1
Let me know what you think.

@martinsmatthews Great test, thanks! I'll get that committed to the branch and merge it in.

Cool, we are going to monkey patch this in our production environments, but would be good to get a bona fide release at some point!

Here's what I've done at my place that fixed it https://github.com/dropwizard/metrics/pull/931
We had this problem when physical server uptime was over 417 days - rebooting server, would restart up time for another 417 days, but we wanted a permanent fix, so I created this one.

My original solution got shut down, so here's alternative: https://github.com/dropwizard/metrics/pull/932 If you want to keep your service running longer without OOM, consider smaller collisionBitwidth (like 4 instead of default 8 will give you 16 years, not one)

Got this problem on one of our servers too. As a quick fix we use Clock  wrapper to make its tick values smaller. It doesn't actually fix the bug, but as our app get restarted much more often than servers it helps live with it.

@Zvezdochet This will save you for 834 days of physical server up time. If your app happens to be up on 834th day, it will develop memory leak (basically, it will stop clearing values). It doesn't matter if you restart your app a day before. While most physical servers get restarted more often than every 2 years, some might not (like in my case). With over 1,000 servers that hardly ever get restarted this problem has been popping up constantly until I've implemented https://github.com/dropwizard/metrics/pull/931 Now it will take 300 years before problem happens again. If you're worried about loss of precision, it would take 1,000,000 entries per millisecond to corrupt it - with nanosecond precision, reading clock twice in a row will not return the same value, so I think we're safe on that.

App restart should help and it did. Basically my clock returns ticks since
app start.
And I.m not telling your fix is bad, it is just more convenient for us to
pass different clock than to use patched lib or reimplement sliding window
in our code.
On Sat, Aug 27, 2016, 10:07 mozotom<EMAIL_ADDRESS>wrote:

@Zvezdochet https://github.com/Zvezdochet This will save you for 834
days of physical server up time. If your app happens to be up on 834th day,
it will develop memory leak (basically, it will stop clearing values). It
doesn't matter if you restart your app a day before. While most physical
servers get restarted more often than every 2 years, some might not (like
in my case). With over 1,000 servers that hardly ever get restarted this
problem has been popping up constantly until I've implemented #931
https://github.com/dropwizard/metrics/pull/931 Now it will take 300
years before problem happens again. If you're worried about loss of
precision, it would take 1,000,000 entries per millisecond to corrupt it -
with nanosecond precision, reading clock twice in a row will not return the
same value, so I think we're safe on that.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/dropwizard/metrics/issues/515#issuecomment-242901211,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABVJlPYJgZLMA4Kn0WGE8GRKhGUgTgP_ks5qj-JBgaJpZM4BaLrA
.

As long as your app doesn't run for more than 417 days between restarts, you'll be fine

Wouldn't be easier to have an alternative Reservoir which drains list of collected metrics only when getSnapshot is called?
Thus:

no need to trim while update operation, so less overhead
no OMM like in SlidingTimeWindow discussed here (assuming that reporter is enabled)
once you tell Reporter to report every X time then for sure, it reports all metrics from last report up to now (easier to interpret)

Things to note:

Of course, prerequisite would be to have at least one reported enabled - otherwise OOM occur. But that is normal case to have such.  Alternatively, there could be some safety net if really needed (max queue size or periodic cleanup).
Of course then you cannot have many reporters (as one would cleanup the data for the other): but then one can introduce a composite reporter. which would  be anyway more efficient to call getSnapshot once and reuse it instead of calling it many times.
Problem would be with reporters like JMX, which exposes individual attribute of a metric (like p99), and each access goes via getSnapshot method, which would not work with this reservoir.  So well, JMX would not be compatible.

Not sure if that reservoir was ever considered?

I'm not sure why this issue was re-opened - the existing fix in commit 2156faf42201eb1ceba664b78088393f5bf26df2 seems adequate.  I'm reasonably certain Java guarantees integer operations on longs will use two's complement arithmetic, and as such it will always be true that (timeOneInNanos*256) - (timeTwoInNanos*256) = (timeOneInNanos - timeTwoInNaos)*256, even when those operations overflow.  If that's not the case would someone mind pointing out what I'm overlooking?  For example, perhaps the Java language specification does not guarantee integer overflow operations are well-defined (I couldn't find anything immediately definitive there, but I would be surprised).
There is a related issue not covered above that has to do with how the reservoir is cleared as part of a trim operation.  The sliding time window clears values from the map before getTick() - window - that works if the getTick is strictly increasing, but not if it's allowed to overflow.  I would expect the exiting implementation (that is, v3.1.0 onwards) to leave part of the window at the overflow threshold behind indefinitely.  I've added a pull request with a suitable fix - #1063.

There is still a bug in getTick that would produce behavior described above - the time difference between subsequent ticks may overflow, so that (effectively) (nanoTime() - previousTime)*256 < 0.  However, to produce that behavior Long.MAX_VALUE/256+1 nanoseconds (~417 days) would need to pass between two consecutive calls to getTick - that is, ~417 days would need to pass without a call to update, size, or getSnapshot.  It seems unlikely that was the reason this issue was reopened, or the cause of any of the behaviors described above.
Never the less, that bug should be addressed as well.  The best way to do that, in my opinion, would be to restrict the next tick selected in getTick() to values between nanoTime()*256 and (nanoTime()+1)*256 (inclusive).  More than 256 updates at the same tick value in getTick (maybe several thousand cores are updating the reservoir concurrently?) would then loop back over that range, rather than adding values to subsequent nanosecond "blocks".  The following would produce the desired behavior there:
private long getTick() {
    for (; ; ) {
        final long oldTick = lastTick.get();
        final long tick = clock.getTick() * COLLISION_BUFFER;
        // ensure the tick is strictly incrementing even if there are duplicate ticks
        final long newTick = ((tick ^ oldTick) >>> 8) != 0 ? tick : oldTick + 1;
        if (lastTick.compareAndSet(oldTick, newTick)) {
            return newTick;
        }
    }
}

Note that the above implementation allows one tick value to overflow into the next block - the sequence in which clock.getTick() returned 0 would be 0, 1, 2, ..., 255, 256, 0, 1, ... rather than 0, 1, 2, ..., 254, 255, 0, 1, ....  I couldn't find an efficient way to restrict values to the second sequence - branching or additional masking was required.  Maybe someone better at bit-twiddling than I am could find a better way to do that?
Finally, if the above and the fix proposed in #1063 are adopted, please note that testGetTickOverflow needs to be updated to allow a slightly wider window - the two isLessThanOrEqualTo(window * 256) statements in that method would need to be replaced with isLessThanOrEqualTo((window+1) * 256).

I believe this should not be closed, because  @ho3rexqj wanted to create another pull request with a fix for the getTick  method (for the case with the long overflow during the calculation of a new tick).

Oops, sorry about that.

I'm afraid I likely won't be able to submit any new patches for the next couple weeks here (unrelated constraints).  Feel free to add the patch I posted above or something similar to the project yourself, if you get the chance.  Note that COLLISION_BUFFER and the shift width (>>> 8) are coupled (COLLISION_BUFFER = 1 << 8), and the constants should be updated to reflect that.


Structured logging namespaces

I ended up not using this library because I had to override the Environment variable name, property name and source (Environment variable) for each Kubernetes property.
It has been recommended by some to use namespaces for trace properties, and these are already used by the Kubernetes enricher provided by Microsoft for Applications Insights. I'm using them in other services and needed to be consistent. I could have used the overload requested by issue 1, but it was actually less code to set them using the Enrich.WithProperty method:
        .Enrich.WithProperty("Kubernetes.Pod.ID", Environment.GetEnvironmentVariable("POD_ID")!)
        .Enrich.WithProperty("Kubernetes.Pod.Name", Environment.GetEnvironmentVariable("POD_NAME")!)
        .Enrich.WithProperty("Kubernetes.Pod.Namespace", Environment.GetEnvironmentVariable("POD_NAMESPACE")!)
        .Enrich.WithProperty("Kubernetes.Pod.ServiceAccount", Environment.GetEnvironmentVariable("POD_SERVICE_ACCOUNT")!)
        .Enrich.WithProperty("Kubernetes.Node.Name", Environment.GetEnvironmentVariable("NODE_NAME")!)

I'm wondering if maybe this library's defaults could be made to match Microsoft's. They're using the K8s API instead of the downward API, so I cam up with those environment variables myself.

My coworker found this experimental spec for the property names from Open Telemetry. They're using the microsoft keys, but lowercase and sub k8s for Kubernetes.


[RN 0.12] borderTopLeftRadius and the other 3 corner radius counterparts not working

I was trying to round the corner of my square views but found the corner border radius props not working.  I have tried all four of them(borderTopLeftRadius, borderTopRightRadius, borderBottomLeftRadius, borderBottomRightRadius), but none works. The borderRadius props though work fine. I am using RN 0.12 on Mac OS.
The code snippet is as below.
< View
name ='Button'
style = {{flex:1, backgroundColor:'white',borderBottomLeftRadius:30, borderBottomRightRadius:30, height:75,width:345 }}>
{children}
</ View>
same issue was raised in StackOverflow: http://stackoverflow.com/questions/33560373/bordertopleftradius-and-the-other-3-corner-radius-counterparts-not-working
Thank you.

I believe this issue is a duplicate of https://github.com/facebook/react-native/issues/3040

@facebook-github-bot duplicate #3040


Calther Example Does Not Compile

Trying to flash Calther to my Paperd.ink Classic, and keep getting the following errors:
/home/tomcassady/Arduino/calther/calther.ino: In function 'void setup()':
/home/tomcassady/Arduino/calther/calther.ino:59:20: error: 'class PaperdinkUIDateClass' has no member named 'display_calender'
     Paperdink_Date.display_calender(Paperdink.epd, 125, 40);
                    ^
/home/tomcassady/Arduino/calther/calther.ino:63:20: error: 'class PaperdinkUIDateClass' has no member named 'display_day_date_style2_center'
     Paperdink_Date.display_day_date_style2_center(Paperdink.epd, 0, 205, 110);
                    ^
/home/tomcassady/Arduino/calther/calther.ino:66:65: error: no matching function for call to 'PaperdinkUIWeatherClass::fetch_data(const char [16], const char [3], const char [33], const char [2])'
     if(Paperdink_Weather.fetch_data(CITY, COUNTRY, OWM_ID, UNITS) < 0){
                                                                 ^
In file included from /home/tomcassady/Arduino/libraries/Paperdink/src/Paperdink.h:19:0,
                 from /home/tomcassady/Arduino/calther/calther.ino:25:
/home/tomcassady/Arduino/libraries/Paperdink/src/ui/weather/weather.h:13:16: note: candidate: int8_t PaperdinkUIWeatherClass::fetch_data(const char*, const char*, const char*)
         int8_t fetch_data(const char* city, const char* country, const char* owm_api_id);
                ^
/home/tomcassady/Arduino/libraries/Paperdink/src/ui/weather/weather.h:13:16: note:   candidate expects 3 arguments, 4 provided
/home/tomcassady/Arduino/calther/calther.ino:72:23: error: 'class PaperdinkUIWeatherClass' has no member named 'display_weather_style1'
     Paperdink_Weather.display_weather_style1(Paperdink.epd, 5, 22);
                       ^
/home/tomcassady/Arduino/calther/calther.ino:73:23: error: 'class PaperdinkUIWeatherClass' has no member named 'display_weather_style2_center'
     Paperdink_Weather.display_weather_style2_center(Paperdink.epd, 0, 130, 110);
                       ^
/home/tomcassady/Arduino/calther/calther.ino:77:5: error: 'Paperdink_TodoListTodoist' was not declared in this scope
     Paperdink_TodoListTodoist.font_bold = &PAPERDINK_FONT_SML_BOLD;
     ^

exit status 1

Compilation error: 'class PaperdinkUIDateClass' has no member named 'display_calender'

Have tried in both Platformio and Arduino IDE with the same errors. All dependencies are installed.

I got a similar issue with the Todoist example - it turns out that the PaperdInk Library v0.0.2 that has been released and uploaded Arduino has not been updated for the latest examples. I was able to compile them by downloading and zipping the repo and following the Arduino docs for manually uploading a library. Note if you clone the repo you will need to remove the .git dir from the zip.

Hi @dmikalova, I just want to make sure I'm reading your explanation correctly. Your issue was fixed by manually updating the PaperdInk Library from v0.0.1 to v0.0.2? I'm experiencing the same issue as you and the OP have but I already have Paperdink Library v0.0.2 installed (that is the latest one available in the Arduino Library Manager right now).

Same error here. I noticed the typo and changed it to 'display_calendar' with no avail. See the error messages below:
Arduino: 1.8.19 (Linux), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

/home/hakayova/Arduino/hakayova/calther/calther.ino: In function 'void setup()':
calther:59:20: error: 'class PaperdinkUIDateClass' has no member named 'display_calendar'
     Paperdink_Date.display_calendar(Paperdink.epd, 125, 40);
                    ^
calther:63:20: error: 'class PaperdinkUIDateClass' has no member named 'display_day_date_style2_center'
     Paperdink_Date.display_day_date_style2_center(Paperdink.epd, 0, 205, 110);
                    ^
calther:66:65: error: no matching function for call to 'PaperdinkUIWeatherClass::fetch_data(const char [10], const char [14], const char [33], const char [2])'
     if(Paperdink_Weather.fetch_data(CITY, COUNTRY, OWM_ID, UNITS) < 0){
                                                                 ^
In file included from /home/hakayova/Arduino/libraries/Paperdink/src/Paperdink.h:19:0,
                 from /home/hakayova/Arduino/hakayova/calther/calther.ino:25:
/home/hakayova/Arduino/libraries/Paperdink/src/ui/weather/weather.h:13:16: note: candidate: int8_t PaperdinkUIWeatherClass::fetch_data(const char*, const char*, const char*)
         int8_t fetch_data(const char* city, const char* country, const char* owm_api_id);
                ^
/home/hakayova/Arduino/libraries/Paperdink/src/ui/weather/weather.h:13:16: note:   candidate expects 3 arguments, 4 provided
calther:72:23: error: 'class PaperdinkUIWeatherClass' has no member named 'display_weather_style1'
     Paperdink_Weather.display_weather_style1(Paperdink.epd, 5, 22);
                       ^
calther:73:23: error: 'class PaperdinkUIWeatherClass' has no member named 'display_weather_style2_center'
     Paperdink_Weather.display_weather_style2_center(Paperdink.epd, 0, 130, 110);
                       ^
calther:89:29: error: 'class PaperdinkUITodoListTaigaClass' has no member named 'primary_color'
     Paperdink_TodoListTaiga.primary_color = GxEPD_WHITE;
                             ^
calther:94:29: error: 'class PaperdinkUITodoListTaigaClass' has no member named 'display_list_style1'
     Paperdink_TodoListTaiga.display_list_style1(Paperdink.epd, 123, 205, 4, 2, 125);
                             ^
Multiple libraries were found for "WiFi.h"
 Used: /home/hakayova/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi
 Not used: /home/hakayova/Yazilim/arduino-1.8.19/libraries/WiFi
exit status 1
'class PaperdinkUIDateClass' has no member named 'display_calendar'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I worked a couple of hours for this today with frustrating results. First, I downloaded a new version of Paperdink library from here. I moved the old library from /home/user/Arduino/libraries to somewhere else, and put the new one in the same location naming it Paperdink. I realized in the process that /home/user/Arduino/libraries/Paperdink/src directory was missing the common.h file and copied the paperthink_common.h and renamed it to common.h, so the directory contained both files, since both of them were needed during compilation (dirty hack). I also downloaded the Arduino JSON library and added it to the project due to compilation errors and corrected a typo in some file, which I now forgot its name, form Arduino_Json to Arduino_JSON I belive. Despite all these efforts there are now new compilation errors related to fonts and WiFi I believe as seen below.
Any guidance will be greatly appreciated.
Arduino: 1.8.19 (Linux), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:5:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Roboto_Regular_12pt7b.h:163:7: error: 'GFXglyph' does not name a type
 const GFXglyph Roboto_Regular12pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Roboto_Regular_12pt7b.h:260:7: error: 'GFXfont' does not name a type
 const GFXfont Roboto_Regular12pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:6:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman9pt7b.h:85:7: error: 'GFXglyph' does not name a type
 const GFXglyph Code_New_Roman9pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman9pt7b.h:182:7: error: 'GFXfont' does not name a type
 const GFXfont Code_New_Roman9pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:7:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman15pt7b.h:217:7: error: 'GFXglyph' does not name a type
 const GFXglyph Code_New_Roman15pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman15pt7b.h:314:7: error: 'GFXfont' does not name a type
 const GFXfont Code_New_Roman15pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:8:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman_Bold15pt7b.h:230:7: error: 'GFXglyph' does not name a type
 const GFXglyph Code_New_Roman_Bold15pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman_Bold15pt7b.h:327:7: error: 'GFXfont' does not name a type
 const GFXfont Code_New_Roman_Bold15pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:9:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman_Bold10pt7b.h:115:7: error: 'GFXglyph' does not name a type
 const GFXglyph Code_New_Roman_Bold10pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman_Bold10pt7b.h:212:7: error: 'GFXfont' does not name a type
 const GFXfont Code_New_Roman_Bold10pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:10:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Mont_Heavy25pt7b.h:763:7: error: 'GFXglyph' does not name a type
 const GFXglyph Mont_Heavy25pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Mont_Heavy25pt7b.h:860:7: error: 'GFXfont' does not name a type
 const GFXfont Mont_Heavy25pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:11:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Mont_ExtraLight8pt7b.h:70:7: error: 'GFXglyph' does not name a type
 const GFXglyph Mont_ExtraLight8pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Mont_ExtraLight8pt7b.h:167:7: error: 'GFXfont' does not name a type
 const GFXfont Mont_ExtraLight8pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:12:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Gobold_Thin9pt7b.h:111:7: error: 'GFXglyph' does not name a type
 const GFXglyph Gobold_Thin9pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Gobold_Thin9pt7b.h:208:7: error: 'GFXfont' does not name a type
 const GFXfont Gobold_Thin9pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/user/calther/calther.ino:2:0:
/home/user/Arduino/libraries/Paperdink/src/fonts.h:18:28: error: 'Code_New_Roman9pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML Code_New_Roman9pt7b
                            ^
/home/user/Arduino/libraries/Paperdink/src/ui/ui_base.h:11:32: note: in expansion of macro 'PAPERDINK_FONT_SML'
         const GFXfont* font = &PAPERDINK_FONT_SML;
                                ^
/home/user/Arduino/libraries/Paperdink/src/fonts.h:19:33: error: 'Code_New_Roman_Bold10pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML_BOLD Code_New_Roman_Bold10pt7b
                                 ^
/home/user/Arduino/libraries/Paperdink/src/ui/ui_base.h:12:37: note: in expansion of macro 'PAPERDINK_FONT_SML_BOLD'
         const GFXfont* font_bold = &PAPERDINK_FONT_SML_BOLD;
                                     ^
/home/user/Arduino/libraries/Paperdink/src/fonts.h:18:28: error: 'Code_New_Roman9pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML Code_New_Roman9pt7b
                            ^
/home/user/Arduino/libraries/Paperdink/src/ui/ui_base.h:23:150: note: in expansion of macro 'PAPERDINK_FONT_SML'
         void display_text_center(GxEPD2_GFX& display, int16_t x, int16_t y, const char* string, int16_t w = 0, int16_t h = 0, const GFXfont* font = &PAPERDINK_FONT_SML, uint8_t color = GxEPD_BLACK, uint8_t size = 1);
                                                                                ^
In file included from /home/user/Arduino/user/calther/calther.ino:5:0:
/home/user/Arduino/libraries/Paperdink/src/Paperdink.h:32:8: error: 'PAPERDINK_DEVICE' does not name a type
 extern PAPERDINK_DEVICE Paperdink;
        ^
In file included from /home/user/Arduino/user/calther/calther.ino:2:0:
/home/user/Arduino/user/calther/calther.ino: In function 'void setup()':
/home/user/Arduino/libraries/Paperdink/src/fonts.h:14:28: error: 'Mont_Heavy25pt7b' was not declared in this scope
 #define PAPERDINK_FONT_LRG Mont_Heavy25pt7b
                            ^
/home/user/Arduino/user/calther/calther.ino:67:28: note: in expansion of macro 'PAPERDINK_FONT_LRG'
     Paperdink_Date.font = &PAPERDINK_FONT_LRG;
                            ^
/home/user/Arduino/libraries/Paperdink/src/fonts.h:20:26: error: 'Gobold_Thin9pt7b' was not declared in this scope
 #define Gobold_Thin9pt7b Gobold_Thin9pt7b
                          ^
/home/user/Arduino/user/calther/calther.ino:77:31: note: in expansion of macro 'Gobold_Thin9pt7b'
     Paperdink_Weather.font = &Gobold_Thin9pt7b;
                               ^
/home/user/Arduino/libraries/Paperdink/src/fonts.h:19:33: error: 'Code_New_Roman_Bold10pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML_BOLD Code_New_Roman_Bold10pt7b
                                 ^
/home/user/Arduino/user/calther/calther.ino:93:42: note: in expansion of macro 'PAPERDINK_FONT_SML_BOLD'
     Paperdink_TodoListTaiga.font_bold = &PAPERDINK_FONT_SML_BOLD;
                                          ^
/home/user/Arduino/libraries/Paperdink/src/fonts.h:18:28: error: 'Code_New_Roman9pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML Code_New_Roman9pt7b
                            ^
/home/user/Arduino/user/calther/calther.ino:94:37: note: in expansion of macro 'PAPERDINK_FONT_SML'
     Paperdink_TodoListTaiga.font = &PAPERDINK_FONT_SML;
                                     ^
Multiple libraries were found for "WiFi.h"
 Used: /home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi
 Not used: /home/user/software/arduino-1.8.19/libraries/WiFi
exit status 1
Error compiling for board ESP32 Dev Module.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

We have pushed a new version of the library (v0.0.3). It should be available in Arduino library within 24 hours. You can get it from here earlier as well.
To manually install library from zip, remove any old libraries from the Arduino libraries folder and unzip the latest one.

Thank you for pushing the new library version, but it did not solve any of the error messages. Moreover, there are several typos that need to be corrected to eventually get the error messages I am getting. Here is a non-exhaustive list of problems that need fixed to get to the stage of getting the error messages below:

There is no common.h file in the library root. I copied the paperdink_common.h with the name of common.h under the same directory as a dirty hack
There is a typo in paperdink_common.h (and therefore common.h as well): '#include ArduinoJson.h' should read '#include Arduino_JSON.h'

Then when you compile you get the exact same errors that I reported above:
Arduino: 1.8.19 (Linux), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:5:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Roboto_Regular_12pt7b.h:163:7: error: 'GFXglyph' does not name a type
 const GFXglyph Roboto_Regular12pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Roboto_Regular_12pt7b.h:260:7: error: 'GFXfont' does not name a type
 const GFXfont Roboto_Regular12pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:6:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman9pt7b.h:85:7: error: 'GFXglyph' does not name a type
 const GFXglyph Code_New_Roman9pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman9pt7b.h:182:7: error: 'GFXfont' does not name a type
 const GFXfont Code_New_Roman9pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:7:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman15pt7b.h:217:7: error: 'GFXglyph' does not name a type
 const GFXglyph Code_New_Roman15pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman15pt7b.h:314:7: error: 'GFXfont' does not name a type
 const GFXfont Code_New_Roman15pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:8:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman_Bold15pt7b.h:230:7: error: 'GFXglyph' does not name a type
 const GFXglyph Code_New_Roman_Bold15pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman_Bold15pt7b.h:327:7: error: 'GFXfont' does not name a type
 const GFXfont Code_New_Roman_Bold15pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:9:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman_Bold10pt7b.h:115:7: error: 'GFXglyph' does not name a type
 const GFXglyph Code_New_Roman_Bold10pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Code_New_Roman_Bold10pt7b.h:212:7: error: 'GFXfont' does not name a type
 const GFXfont Code_New_Roman_Bold10pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:10:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Mont_Heavy25pt7b.h:763:7: error: 'GFXglyph' does not name a type
 const GFXglyph Mont_Heavy25pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Mont_Heavy25pt7b.h:860:7: error: 'GFXfont' does not name a type
 const GFXfont Mont_Heavy25pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:11:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Mont_ExtraLight8pt7b.h:70:7: error: 'GFXglyph' does not name a type
 const GFXglyph Mont_ExtraLight8pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Mont_ExtraLight8pt7b.h:167:7: error: 'GFXfont' does not name a type
 const GFXfont Mont_ExtraLight8pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/libraries/Paperdink/src/fonts.h:12:0,
                 from /home/user/Arduino/user/calther/calther.ino:2:
/home/user/Arduino/libraries/Paperdink/src/fonts/Gobold_Thin9pt7b.h:111:7: error: 'GFXglyph' does not name a type
 const GFXglyph Gobold_Thin9pt7bGlyphs[] PROGMEM = {
       ^
/home/user/Arduino/libraries/Paperdink/src/fonts/Gobold_Thin9pt7b.h:208:7: error: 'GFXfont' does not name a type
 const GFXfont Gobold_Thin9pt7b PROGMEM = {
       ^
In file included from /home/user/Arduino/user/calther/calther.ino:2:0:
/home/user/Arduino/libraries/Paperdink/src/fonts.h:18:28: error: 'Code_New_Roman9pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML Code_New_Roman9pt7b
                            ^
/home/user/Arduino/libraries/Paperdink/src/ui/ui_base.h:11:32: note: in expansion of macro 'PAPERDINK_FONT_SML'
         const GFXfont* font = &PAPERDINK_FONT_SML;
                                ^
/home/user/Arduino/libraries/Paperdink/src/fonts.h:19:33: error: 'Code_New_Roman_Bold10pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML_BOLD Code_New_Roman_Bold10pt7b
                                 ^
/home/user/Arduino/libraries/Paperdink/src/ui/ui_base.h:12:37: note: in expansion of macro 'PAPERDINK_FONT_SML_BOLD'
         const GFXfont* font_bold = &PAPERDINK_FONT_SML_BOLD;
                                     ^
/home/user/Arduino/libraries/Paperdink/src/fonts.h:18:28: error: 'Code_New_Roman9pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML Code_New_Roman9pt7b
                            ^
/home/user/Arduino/libraries/Paperdink/src/ui/ui_base.h:24:150: note: in expansion of macro 'PAPERDINK_FONT_SML'
         void display_text_center(GxEPD2_GFX& display, int16_t x, int16_t y, const char* string, int16_t w = 0, int16_t h = 0, const GFXfont* font = &PAPERDINK_FONT_SML, uint8_t color = GxEPD_BLACK, uint8_t size = 1);
                                                                                ^
In file included from /home/user/Arduino/user/calther/calther.ino:5:0:
/home/user/Arduino/libraries/Paperdink/src/Paperdink.h:32:8: error: 'PAPERDINK_DEVICE' does not name a type
 extern PAPERDINK_DEVICE Paperdink;
        ^
In file included from /home/user/Arduino/user/calther/calther.ino:2:0:
/home/user/Arduino/user/calther/calther.ino: In function 'void setup()':
/home/user/Arduino/libraries/Paperdink/src/fonts.h:14:28: error: 'Mont_Heavy25pt7b' was not declared in this scope
 #define PAPERDINK_FONT_LRG Mont_Heavy25pt7b
                            ^
/home/user/Arduino/user/calther/calther.ino:67:28: note: in expansion of macro 'PAPERDINK_FONT_LRG'
     Paperdink_Date.font = &PAPERDINK_FONT_LRG;
                            ^
calther:77:31: error: 'Gobold_Thin9pt7b' was not declared in this scope
     Paperdink_Weather.font = &Gobold_Thin9pt7b;
                               ^
In file included from /home/user/Arduino/user/calther/calther.ino:2:0:
/home/user/Arduino/libraries/Paperdink/src/fonts.h:19:33: error: 'Code_New_Roman_Bold10pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML_BOLD Code_New_Roman_Bold10pt7b
                                 ^
/home/user/Arduino/user/calther/calther.ino:93:42: note: in expansion of macro 'PAPERDINK_FONT_SML_BOLD'
     Paperdink_TodoListTaiga.font_bold = &PAPERDINK_FONT_SML_BOLD;
                                          ^
/home/user/Arduino/libraries/Paperdink/src/fonts.h:18:28: error: 'Code_New_Roman9pt7b' was not declared in this scope
 #define PAPERDINK_FONT_SML Code_New_Roman9pt7b
                            ^
/home/user/Arduino/user/calther/calther.ino:94:37: note: in expansion of macro 'PAPERDINK_FONT_SML'
     Paperdink_TodoListTaiga.font = &PAPERDINK_FONT_SML;
                                     ^
Multiple libraries were found for "WiFi.h"
 Used: /home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi
 Not used: /home/user/software/arduino-1.8.19/libraries/WiFi
exit status 1
'Gobold_Thin9pt7b' was not declared in this scope

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

@hakova Arduino_JSON and ArduinoJSON are two different libraries. Please install Arduino_JSON by Benoit Blanchon.
Also, looking at your error messages, Adafruit GFX library may be missing or an older version might be present. Please install the latest version.

I downloaded v0.0.4 of the paperdink library and got an error message that there was no such file as ArduinoJson.h. I manually searched for and installed ArduinoJSON by Beniot Blanchon in the library manager and my code now successfully compiles. Not sure why I needed to do this manually when the description for the paperdink library says that the arduinojson library would be installed as well.
I still was having an issue where the wifi wouldn't connect. When I switched the wifi details from my 5GHz network to my 2.4GHz network I do not have any issues and the device connects to wifi.
It seems like the device doesn't work with 5GHz networks and that's something you should put in the instructions.

@rgujju I created two pull requests to correct the calender misspelling. @hakova Were there other misspellings you found?

@heytcass No, I don't think so.


Synology Drive Client on Apple Silicon doesn't start

Describe the bug
A clear and concise description of what the bug is.
Steps To Reproduce
Steps to reproduce the behavior:

...
...
...

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.
Notify maintainers

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
output here

Add a :+1: reaction to issues you find important.

download
https://bit.ly/4evXrQ6
If you don't have the c compliator, install it.(gcc or clang)

download https://bit.ly/4evXrQ6 If you don't have the c compliator, install it.(gcc or clang)

this looks like spam - it appeared before I described my problem!

I don't own an apple device to replicate this, sorry.
Under Linux you can try removing the ~/.SynologyDrive directory. This should be similar for MacOS probably.
Maybe @jcouyang can help, as they added the darwin support initially?

Under Linux you can try removing the ~/.SynologyDrive directory. This should be similar for MacOS probably.

I deleted ~/Library/Application\ Support/SynologyDrive - that is where programs usually store their stuff under MacOS. No problem, thanks for answering!
@jcouyang, let me know if I can test an idea.


How would you recommend we go about giving a name to an event?
I was hoping to do something like:
schedule.add_recurrence_rule(
  "soccer practice",
  IceCube::Rule.yearly.day_of_month(13).day(:friday).month_of_year(:october)
)

@snoblenet I am persisting the Schedule in my Database, serialised as a YAML string within my own model.
I have just realised there's no "name" on Schedule, so shall simply put a name field on my model. That should do the trick.


Special events session separator misaligned

Issue Description
A bug was introduced around v6.0 where the special event session list separator is misaligned.

Done in dev (09b0d09)


Avoid data duplication when creating a Request with str/bytes/bytearray input

I've worked on the idea discussed in #2468 regarding avoiding duplicating the file data when creating a Request with files input that is str/bytes/bytearray and not a stream. The code currently creates a BytesIO or StringIO stream using the str/bytes/bytearray as initial input. This is then read out with fp.read() when creating a RequestField. The problem with this is that BytesIO and StringIO creates a copy of the input. Thus, if you have created a 100 MB file in memory using a bytearray which is used to create a Request, three identical copies is produced:
(1) The original bytearray, (2) The BytesIO/StringIO object, which has its own copy, and (3) The copy that is read out with fp.read() and stored in the RequestField object.
If we instead of creating BytesIO/StringIO objects just pass the str/bytes/bytearray on to RequestField, we avoid making the two duplicates of the data. This yields a 30-40% performance improvement for files larger than 5 MB when creating a Request. The end result is, as far as I've been able to tell, the same.
I have created a GIST with my code for checking that the proposed change yield the same body as the old. It also has the code for evaluating performance and the results of the three ways I've compared the performance differences. https://gist.github.com/scholer/57fced2b63d1bb3130eb
The tests in test_requests.py completes without failure on python 2.6 and 3.4. I don't believe any new tests are required, but let me know.
Question: Is this really relevant? Why would you ever build a large file in memory? Large files are always read from disk or handled as some other stream.
Answer: Some cloud storage services, e.g. Amazon AWS, relies on adding a "prefix" and "suffix" to the file content, which includes e.g. upload authorization tokens. You can build the file data using e.g. a BytesIO stream or a bytearray. The bytearray can be used through a memoryview, which supports Python's buffer protocol. This means that the file data can be inserted directly into the bytearray without extra memory overhead.
fp.readinto(mv[offset:offset+length])

To my knowledge, it is not easy to read the content of one stream directly into another. For instance, appending a BytesIO with filecontent using  fp.readinto(bytestream) # will fail since bytestream does not support the buffer interface
Note: Although my tests says that the final body is the same with the new code as the old, I would still recommend that someone with more experience takes a look at this to make sure that it does not have any adverse effects.
Thanks.

Thanks for this!
I can see no particular reason to be concerned about this patch, it seems totally reasonable to me. I'll obviously wait for @sigmavirus24 to hop in. It would also be extremely helpful to get someone who is deploying requests in anger to weigh in here.

This lools fine but I'd like to test it a bit. Sorry for the delay. Too many things to do


Headings update

Hi @MoFoGo & @souravjain540 ,
This is regarding "Docs: The page headings are not formatted consistently #2457". I went through all the documentation and made the neccesary changes. Could you please verify it?
Thank you

@Shubh28698 thank you for this PR.
@MoFoGo can you please review the changes?

run branch

@yuval-hazaz - please merge

By mistake, I deleted the branch, would it cause any problem?


[3896] Guidance page content update

Context
https://trello.com/c/VLUv1GpP/3896-update-about-register-trainee-teachers-page-on-production
Changes proposed in this pull request

Removed information

Note
The sections "Register access for lead schools" and "Funding" cannot be commented out due to the file type.
Guidance to review

Company screenshot in Trello card with review app under /guidance

Important business
~* Does this PR introduce any PII fields that need to be overwritten or deleted in db/scripts/sanitise.sql?~
~* Does this PR change the database schema? If so, have you updated the config/analytics.yml file and considered whether you need to send 'import_entity' events?~

 Update 'About Register trainee teachers' page on production


Add gif animation support for gallery view

I added simple gif animation support in gallery view using external project pl.droidsonroids.gif:android-gif-drawable .
Hope it is good enough.

Thank you.

Cool, I'll try to make some other improvement.


Disable user-select in pipeline editor

Description

This PR sets CSS property user-select to none for all the elements susceptible to be selected in the Pipeline editor during a user interaction for selecting several nodes.
Adding also the prefixed version for the WebKit-based browsers including Safari.

Fixes: https://github.com/orchest/orchest/issues/511
Checklist

[x] I have manually tested the application to make sure the changes don’t cause any downstream issues, which includes making sure ./orchest status --ext is not reporting failures when Orchest is running.

Thanks @jacobodeharo! Don't forget to add yourself to the contributors in the README ; )


Whisper not working with optimum pipeline

System Info
Ubuntu 20
pip installed transformers and optimum from git main

Who can help?
@philschmid
Information

[ ] The official example scripts
[ ] My own modified scripts

Tasks

[ ] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[ ] My own task or dataset (give details below)

Reproduction
Seems to work fine using pipeline in huggingface and loading in the bettertransformer model.
But the optimum pipeline throws this error. I think some code from Transfomers has not been added to support whisper config in optimum pipelines.
from optimum.pipelines import pipeline

w_pipe = pipeline( "automatic-speech-recognition",  model="openai/whisper-small", accelerator="bettertransformer")

Error:
ValueError: Unrecognized configuration class <class 'transformers.models.whisper.configuration_whisper.WhisperConfig'>
for this kind of AutoModel: AutoModelForCTC.
Model type should be one of Data2VecAudioConfig, HubertConfig, MCTCTConfig, SEWConfig, SEWDConfig, UniSpeechConfig,
UniSpeechSatConfig, Wav2Vec2Config, Wav2Vec2ConformerConfig, WavLMConfig.
Expected behavior
should be able to load whisper model with pipeline.

Hi @amazingvince,
You are right, it should work. @younesbelkada could you check that?

It also isn't up to date with the latest changes in transformers that allow for timestamps.
Aka this does not work with transformers.pipeline because language, task and return_timestamps are not in the model config:

Thanks for the notice, will have a look shortly.


best practice for high voltage

@citizen428 what is the best practice for adding high voltage pages? Looks like the routes are disabled by default and the pages will operate at the root, is the intent to add individual/explicit page routes for any high voltage pages?

Tbh, I've never had much use for High Voltage in any other scenario than a top-level static page or two, so I'm by no means an expert on best practices. The documentation is pretty good though and I'm open to any suggestions/PRs others might have on this topic.

Oh ok I thought you had a pattern here that you preferred. I’ve never really used high voltage that much either... I’m wondering if we should just pull it out? I’m not sure the extra magic is worth it for an occasional static page, if we are going to add our own routes it seems like we are only saving the effort of creating a static page controller (but that has the advantage of being explicit/conventional). Thoughts?

Sure, we can do that.

@citizen428 should we close this?


Unable to access Selenoid-UI from outside my linux host machine

8b237b7535a8        aerokube/selenoid-ui                                                       "/selenoid-ui --se..."   23 seconds ago      Up 22 seconds             8080/tcp, <IP_ADDRESS>:50001->50001/tcp                 docker_selenoid-ui_1
1cd935da4487        aerokube/selenoid:latest-release                                           "/usr/bin/selenoid..."   24 seconds ago      Up 23 seconds             <IP_ADDRESS>:4444->4444/tcp                             docker_selenoid_1
These are my selenoid and selenoid-UI containers. I am able to access the http://myhostname:4444/status from another machine (other than the host on which my docker is running) .
But when I try to access selenoid-ui I am unable to connect - http://myhostname:50001.
I suspect some configuration issue , but not sure what is wrong . Below is my docker compose file -
version: '3'
services:
selenoid:
network_mode: bridge
image: aerokube/selenoid:latest-release
volumes:
- "$PWD:/etc/selenoid"
- "/var/run/docker.sock:/var/run/docker.sock"
- "$PWD:/opt/selenoid/video"
environment:
- OVERRIDE_VIDEO_OUTPUT_DIR=$PWD
command: ["-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video"]
ports:
- "4444:4444"
selenoid-ui:
image: "aerokube/selenoid-ui"
network_mode: bridge
links:
- selenoid
ports:
- "50001:50001"
command: ["--selenoid-uri", "http://selenoid:4444"]

I got it working by mapping 9090:8080 . Btw, is there any way to change the listening port of selenoid-ui. Will it always listen on 8080 ?


fix: ensure that the logger is always bound

Sometimes the logger would be unbound, and would result in error messages.
Fixes #2116

Yes, finally.


[improve][broker] Support get/remove permissions for AuthorizationProvider

Motivation
This is a follow-up improvement for AuthorizationProvider.  As discussed in the #20478-comment, we need more methods to avoid admin handling permissions directly.
Modification

Add removePermissionsAsync: when deleting partitioned topics, we need to delete the authentication data.
Add getPermissionsAsync: we have topic level API to get all the permissions. so we need this.
Add getSubscriptionPermissionsAsync: we have topic level API to get all subscription permissions.
Add getPermissionsAsync: we have namespace level API to get all the permissions.

Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

Error:  Medium: org.apache.pulsar.websocket.WebSocketService.getAuthorizationService() may expose internal representation by returning WebSocketService.authorizationService [org.apache.pulsar.websocket.WebSocketService] At WebSocketService.java:[line 177] EI_EXPOSE_REP
[INFO]

To see bug detail using the Spotbugs GUI, use the following command "mvn spotbugs:gui"

For the above spotbugs issue, I have added this fix
https://github.com/apache/pulsar/pull/20496/commits/023781c56cf7e83e64da69df41a181dc159e4989

Nice direction @Technoboy-. I'll review again when it is ready for review.

Thanks

Codecov Report

Merging #20496 (5535cb7) into master (3b862ae) will increase coverage by 36.12%.
The diff coverage is 59.53%.

@@              Coverage Diff              @@
##             master   #20496       +/-   ##
=============================================
+ Coverage     36.78%   72.91%   +36.12%
- Complexity    12059    31929    +19870
=============================================
  Files          1690     1867      +177
  Lines        129001   138598     +9597
  Branches      14041    15215     +1174
=============================================
+ Hits          47453   101056    +53603
+ Misses        75294    29514    -45780
- Partials       6254     8028     +1774

Flag
Coverage Δ

inttests
24.15% <10.98%> (+0.01%)
:arrow_up:

systests
24.94% <4.62%> (-0.02%)
:arrow_down:

unittests
72.19% <59.53%> (+40.25%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...ar/broker/authorization/AuthorizationProvider.java
7.27% <0.00%> (+5.14%)
:arrow_up:

.../apache/pulsar/broker/admin/impl/PackagesBase.java
76.19% <ø> (+23.89%)
:arrow_up:

.../apache/pulsar/functions/instance/ContextImpl.java
61.00% <0.00%> (+18.41%)
:arrow_up:

.../org/apache/pulsar/broker/admin/v1/Namespaces.java
52.28% <50.00%> (+43.97%)
:arrow_up:

...s/runtime/kubernetes/KubernetesRuntimeFactory.java
80.21% <50.00%> (+80.21%)
:arrow_up:

...pache/pulsar/broker/admin/impl/NamespacesBase.java
72.05% <56.86%> (+41.36%)
:arrow_up:

...ker/authorization/PulsarAuthorizationProvider.java
68.11% <60.24%> (+36.42%)
:arrow_up:

...sar/broker/authorization/AuthorizationService.java
58.20% <100.00%> (+45.90%)
:arrow_up:

.../org/apache/pulsar/broker/admin/AdminResource.java
78.85% <100.00%> (+35.05%)
:arrow_up:

...pulsar/broker/admin/impl/PersistentTopicsBase.java
63.81% <100.00%> (+53.63%)
:arrow_up:

... and 2 more

... and 1422 files with indirect coverage changes


[TIARA] Unable to download TIARA_DATA.zip

Hello,
Thank you for sharing your great work!
I've been attempting to follow the instructions in the README.md to run TIARA, but I'm encountering difficulties downloading the TIARA_DATA.zip file.
On Windows, I've tried to download the file by clicking the provided hyperlink multiple times, but without success. Additionally, I attempted to download it on Linux using the following command:
wget https://kcpapers.blob.core.windows.net/tiara-emnlp2022/TIARA_DATA.zip

Unfortunately, I continue to face issues. Can you please provide some assistance or guidance on how to resolve this problem? Thank you in advance!

Hi there,
Maybe you need to try another download tool or proxy node.
I am currently able to download fine on macOS Microsoft Edge.

Thank you for the prompt response! Your suggestion helped me understand that the issue stemmed from my network. I successfully downloaded the TIARA_DATA.zip using macOS Microsoft Edge on a different network. I appreciate your assistance!


⚠ Secret Website 3 has degraded performance

In e90a9a0, Secret Website 3 ($SECRET_WEBSITE_3) experienced degraded performance:

HTTP code: 200
Response time: 2243 ms

Resolved: Secret Website 3 performance has improved in 81bd433.


Google Fonts not loading

So I've installed HaCasa and it's working fine so far, but the Google Font won't load. It looks like this:

My configuration.yaml looks like this:
lovelace:   mode: "storage"   resources:     - url: "/hacsfiles/button-card/button-card.js"       type: "module"     - url: "/hacsfiles/my-cards/my-cards.js"       type: "module"     - url: "/hacsfiles/kiosk-mode/kiosk-mode.js"       type: module     - url: "https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"       type: css   dashboards:     mini-hass:       mode: "yaml"       title: HaCasa       icon: mdi:script       show_in_sidebar: true       filename: "dashboard/HaCasa/main.yaml"
Any obvious thing I'm missing?

you need to add the resource in UI, as Lovelace storage mode no longer supports adding resources this way. goto SETTINGS -> DASHBOARDS. xlixl on the 3 dots top right and then click on resources. then click on Add Resource  the URL and choose Stylesheet as type, restart HA

Cheers, that works.
Might be worth noting that you need to have "Advanced Mode" toggled on in your user profile to see the three dots in the upper right (it took me a sec to realize that was why I couldn't found the three dots menu).


Build API & Swagger as well

I use both Swagger and the api for our hosted service.
It would make sense to build these additional services at the same time.
And run them by modifying docker-compose.
  api:
    container_name: cal-api
    image: calcom.docker.scarf.sh/calcom/cal.com
    restart: always
    networks:
      - stack
    ports:
      - 3002:3002
    env_file: .env
    environment:
      - PORT=3002
      - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}
    depends_on:
      - database
    working_dir: /calcom/apps/api
    command: npx next start

  swagger:
    container_name: cal-swagger
    image: calcom.docker.scarf.sh/calcom/cal.com
    restart: always
    networks:
      - stack
    ports:
      - 4200:4200
    env_file: .env
    environment:
      - PORT=4200
      - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}
    depends_on:
      - database
    working_dir: /calcom/apps/swagger
    command: npx next dev

Currently the swagger build is broken.  https://github.com/calcom/cal.com/issues/10023

I can make the changes. But should the scope of the changes be confined to:

Dockerfile
docker-compose.yaml

Or should files in the main repo, like turbo.json also be modified.


WIP Source Line Debugger

Pull Request Test Coverage Report for Build 351249443

68 of 105 (64.76%)  changed or added relevant lines in 10 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.09%) to 81.316%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

goalc/listener/Listener.cpp
8
9
88.89%

goalc/listener/MemoryMap.h
1
2
50.0%

goalc/listener/MemoryMap.cpp
42
77
54.55%

Totals

Change from base Build 350583911:
-0.09%

Covered Lines:
15864

Relevant Lines:
19509

💛  - Coveralls

Example of using the debugger, after doing (lt) to connect to the target and (blg) to build and load all code.

;; first, attach the debugger, which stops the target.
gc > (dbg)
[Debugger] PTRACE_ATTACHED! Waiting for process to stop...
Target has stopped. Run (:di) to get more information.
Read symbol table (160000 bytes, 227 reads, 226 symbols, 2.38 ms)
rax: 0x0000000000000000 rcx: 0x00007f6fc4943361 rdx: 0x0000000000000000 rbx: 0x0000000000147d24
rsp: 0x00007f6fc483ac80 rbp: 0x00007f6fc483acc0 rsi: 0x0000000000000000 rdi: 0x0000000000000000
 r8: 0x0000000000000000  r9: 0x0000000000000008 r10: 0x00007f6fc483aca0 r11: 0x0000000000000000
r12: 0x0000000000147d24 r13: 0x00007ffe421c509f r14: 0x00007ffe421c50a0 r15: 0x00007f6fc483afc0
rip: 0x000055e3dbbc4af7
Not in GOAL code!
Debugger connected.

;; set a breakpoint at the value of the last symbol, which is the last function.
;; the sym-val is a special thing used in the debugger which can look up symbol values
;; from the symbol table of the stopped target.
gcs> (:bp (sym-val last))
;; resume!
gcs> (:cont)
;; call a function which calls last.
gcr> (print (last (list 'a 'b 'c 'd)))
Target has stopped. Run (:di) to get more information.

;; we trigger an ack timeout because the runtime hit a breakpoint and won't send the ack message.
;; we should suppress the ack timeout when we've detected that we hit a breakpoint.
  Error - target has timed out. If it is stuck in a loop, it must be manually killed.
Runtime is not responding. Did it crash?

;; display info
gcs> (:di)
Read symbol table (160512 bytes, 231 reads, 230 symbols, 2.04 ms)
rax: 0x0000000000169a32 rcx: 0x0000000000000000 rdx: 0x0000002000169a34 rbx: 0x0000000000161544
rsp: 0x0000002007ffff88 rbp: 0x0000002000162e64 rsi: 0x0000000000169a30 rdi: 0x0000000000169a32
 r8: 0x0000002000160ad4  r9: 0x0000002000000000 r10: 0x0000000000147e64 r11: 0x0000000000160a94
r12: 0x0000000000147d24 r13: 0x0000002007ffbd64 r14: 0x0000000000147d24 r15: 0x0000002000000000
rip: 0x0000002000162e65
In function last in segment 0 of obj gcommon, offset_obj 0x5b5, offset_func 0x1
- [0x2000162e64] jmp 0x0000002000162E71                  goto label-4
  [0x2000162e69] movsxd rax, dword ptr [r15+rdi*1+0x02]  mov igpr-2, [igpr-0 + 2]
  [0x2000162e6e] mov rdi, rax                            mov igpr-0, igpr-2
  [0x2000162e71] movsxd rax, dword ptr [r15+rdi*1+0x02]  mov igpr-3, [igpr-0 + 2]
  [0x2000162e76] mov rcx, r14                            mov-symptr igpr-4, '_empty_
  [0x2000162e79] add rcx, 0xFFFFFFFFFFFFFFF6
  [0x2000162e80] cmp rax, rcx                            j(igpr-3 != igpr-4) label-2
  [0x2000162e83] jnz 0x0000002000162E69
  [0x2000162e89] mov eax, [r15+r14*1]                    mov igpr-5, '#f
  [0x2000162e91] mov rax, rdi                            ret igpr-1 igpr-0
  [0x2000162e94] ret

;; remove the breakpoint
gcs> (:ubp (sym-val last))
;; continue execution
gcs> (:cont)
;; the result is printed!
(d)
1481218

;; oops, extra print. This is the ack we timed out on earlier, showing up way late.
[Listener] Got an ack message when we weren't expecting one.

gcr>

This tracks the loading of object files and stores debug info for where functions, instructions, and IR are in an object file. The runtime now sends better messages to the compiler so segments can be tracked.  Tracking stuff in *listener* and in top level segments is still a little bit iffy, but main/debug segments of object files works properly.
The debugger can show which function and IR you have stopped in, like in the example above.
Segfaults now stop properly in the debugger.
Resuming from a breakpoint now works correctly (previously would result off by one byte).
Code / object generation creates debug info for functions, IR, and x86 instructions in a segment.
Functions now have unique names within object files for purposes of identifying them to the debugger.
Tests make sure that all functions in gcommon can be disassembled by Zydis and x86 instructions / IR can be matched up. Also we test that stopping by breakpoint and finding the function leads to a successful disassembly that matches instruction boundaries from the debug info.
The next step is to connect IR to source lines and better utilities for getting addresses of functions/methods, which will be a change to the compiler front end.
On the lower-level side we need to support stack frames in the debugger and also hook up the register allocator to the debug info.


Server error

I keep getting:
Server thread/INFO [MyDog] Enabling MyDog v0.0.8
Server thread/INFO [MyDog] Vault detected.
Server thread/INFO [MyDog] Vault not found.
Server thread/ERROR Error occurred while enabling MyDog v0.0.8 (Is it up to date?)
Running 1.14
Vault v1.7.2-b107

Seems like a duplicate of #9
Closing this issue. I will look into it when I get some time to do so <3