can't use my own web server

hi man thanks for this great tool , can i use my own web server for the payload ! like apache for exemple ! or just host the payload on pastbin and fetch it from there

I'm able to change it using nano just fine.
for my I just changed the port to be something else, like 9999
at that point I just forward port 9999 to the IP of the machine running the server.py inside my router and boom, any computer connected to the internet can connect to the server.py
you can test it by opening up a browser on any computer (or phone) that's not on your local network and just type out your IP address:9999 and you'll see your server.py respond to a "GET" attempt of some sort
my example below has it set to port 6666 but using my phone's browser I was able to get 4 responses when I attempted to go to myip:6666

I’m confused, what’s the issue here?

On 26 Aug 2018, at 16:58, Damian<EMAIL_ADDRESS>wrote:
I'm able to change it using nano just fine.
for my I just changed the port to be something else, like 9999
at that point I just forward port 9999 to the IP of the machine running the server.py inside my router and boom, any computer connected to the internet can connect to the server.py
you can test it by opening up a browser on any computer (or phone) that's not on your local network and just type out your IP address:9999 and you'll see your server.py respond to a "GET" attempt of some sort
my example below has it set to port 6666 but using my phone's browser I was able to get 4 responses when I attempted to go to myip:6666
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

ok thanks


[Bug]:  Footer of Home Page is Different from Other Pages

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
I’ve noticed that the footer on the home page looks different from the footers on all the other pages. This inconsistency can affect the overall design and user experience of the website.
Add Screenshots
Footer in all other pages:

Footer on home page

What browsers are you seeing the problem on?
Chrome
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC contributor
[X] I want to work on this issue
[X] I'm willing to provide further clarification or assistance if needed.

assigned already


Organs, Limbs and more Mobcode

Changes:

SpeciesComponent in now MobComponent
MobWindow now renders multiple TextureRect

Adds:

[x] Organs
Class that handles states in mob code, can receive damage, and get some statuses(like bleeding, which is not implemented though)
[x] Limbs
Class that handles limbs - things that gets damaged first in targeted combat. They hold organs and can receive damage, and handle some states as well. They also update health doll.
[x] Mocked Human
example of mob - has limbs, organs, blood.
[x] Damage
Added OnDamage function that will get called each time entity receives damage.
[x] Blood concept
[x] Working brain organ
If damaged, brain would randomly cause human to speak random phrases.
[x] Doll rendering
[x] YAML
[x] documentation and polishing

Out of scope of this PR (will be implemented in next PRs):

Other working organs
Targeted attacks
Statuses
Other mobs
Mob sprite rendering

Relevant issue: #261

@space-wizards/developers
Ready for review

under construction


URL handling not working with lita templating functionality

Hello,
I'm trying out the lita templating functionality using the slack adapter but can't seem to get the URL handling to work.
I'm using the following code in my .erb file:
*GitHub Org Pull Requests:*
<% @github_open_issues.each do |repo_name, issues| %>
<% issues.each do |issue| %>
• <%= repo_name %>: <<%= issue.html_url %>|pull request #<%= issue.number %>> - <%= issue.title %> - by <<%= issue.user.html_url %>|<%= issue.user.login %>>
<% end %>
<% end %>

The output now is:
• puppet-alternatives: <https://github.com/cegeka/puppet-alternatives/pull/1|pull request #1> - fix: insync function comparing current and should items - by <https://github.com/vladnazarenko|vladnazarenko>

But I would like to see the following:
• puppet-alternatives: pull request #1 - fix: insync function comparing current and should items - by vladnazarenko
Any suggestions on what I'm doing wrong ?
I think I'm using the correct syntax for links in Slack but any help would be appreciated..

lita-slack 1.5 was just released with new logic to remove the special formatting the Slack applies to incoming messages. Try it again with 1.5 and see if it works how you'd expect it to!

This seems like it's still a problem in 1.5. @dieterdemeyer did you ever find a solution for this?

@pseudomuto   I tried the code example listed and it works ok..
do you have some examples that I can look at?

For sure. I was trying get github deployment information and render a few links in there. Here's the snippet that wasn't working for me (just renders the supplied text inside < > rather than linking:
*Latest deploys for <%= @repo.full_name %>*
<% @deploys.each do |deploy| %>
> <%= deploy.at %> - *<%= deploy.user %>* <<%= deploy.url %>|deployed> <%= @repo.repo_name %>/<%= @repo.full_name %> (<%= "<#{@repo.url_for_sha(deploy.sha)}|#{@repo.shorten_sha(deploy.sha)}>" %>) to *<%= deploy.environment %>*
<% end %>

This is an issue with the Slack RTM message handling. See slackhq/slack-api-docs#32.
The workaround is to use the API chat.postMessage endpoint for complex messages.
This lita-slack fork (not mine, but probably one I'll grab to address this issue for the moment) implements that by assuming that non-strings sent to send_messages are complex messages, and pointing them to the API: https://github.com/jaisonerick/lita-slack/commit/fc4138c5d0e3f0ac6d93c56d584326342b5387c4
That gives you support for attachments, but doesn't make a happy path for inline formatting. For that you would need to do something funkier, like a regex for format-looking bits in the message string.

@pseudomuto I hadn't gotten around to testing this yet due to other stuff..
I'll see if I can test this again in the near future.

@dieterdemeyer cool...thanks man! In the mean time, I'll monkey patch with the @ewr's diff from #49 and see if that resolves it.

+1 Any eta on a fix?

Update: the PR to follow is now #76.


Save Digital Ink as SVG?

Is it possible to save the digital ink as an svg file?
thanks

Thanks for using this plugin!!!
This plugin will help you to recognize text from a given Ink, which is a collection of Stroke, which includes all the StrokePoint.
Once you capture the Ink, you need to pass it to the DigitalInkRecognizer, which will return the RecognitionCandidate. In the example app we demonstrate how you can capture the Ink using a GestureDetector on a CustomPaint widget.
Technically you could save the Ink as an svg file because Ink is basically a collection of points. However, that is outside the scope of this plugin.
Here you have some resources you can use to achieve your goal:

https://pub.dev/packages/flutter_svg
https://www.youtube.com/watch?v=DSJ5vONP3XM
https://medium.com/flutter-community/export-your-widget-to-image-with-flutter-dc7ecfa6bafb
https://mukhtharcm.com/create-image-from-widget-flutter/
https://www.codegrepper.com/code-examples/dart/flutter+save+canvas+as+svg
https://www.codegrepper.com/code-examples/dart/flutter+export+canvas+as+svg

aweseome! thanks for the thorough answer. i'll poke around. some drawing packages have brush thickness and fancy brushes, perhaps ill try to implement that at some point


Get deleted records

Is there a way to get deleted records? I tried to use the tag "ALL ROWS" in the query, but it didn't work...

Closed due to inactivity. Feel free to reopen it if needed.


🐛 firebase-admin messaging module returns "no user record" error

Environment

Operating System version: macOS Catalina v10.15.5
Firebase SDK version: 8.12.1
Firebase Product: auth, firestore, messaging
Node.js version: v12.13.0
NPM version: 6.14.4

Replication Steps
I'm currently using firebase-admin in NodeJS. auth and firestore works perfectly, however when using the messaging (FCM) module it returns Error: There is no user record corresponding to the provided identifier.
In addition, this is how I setup my firebase-admin server

Add SDK

$ npm install firebase-admin --save

import * as admin from 'firebase-admin';

I have set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the file path of the JSON file that contains your service account key

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

Initialize SDK

admin.initializeApp({
  credential: admin.credential.applicationDefault(),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});

With this setup, auth and firestore are working fine. Am I missing any configuration to use the messaging (Cloud Messaging)?
Relevant Code:
admin.messaging().sendToDevice(['token1', 'token2'], {
  data: {
    owner: 'Firebase',
    user: 'John Appleseed',
  },
});

Apparently, I tried using the messaging module in a plain NodeJS application and it works fine. Seems like the NestJS framework has an issue.


Fix: Add Return Statement to Handle Invalid Input in configure Command

Summary
This pull request addresses a critical issue in the configure command where invalid user input was not handled properly, potentially causing the program to behave unexpectedly or crash.
Problem
In the original implementation, if the user provided invalid input that could not be converted to an integer, the error was logged using fmt.Println, but the program execution continued. This caused the ManageCloudProvider function to be called with an invalid userChoice value, leading to undefined behavior.
Solution
A return statement was added immediately after logging the error when the input conversion fails. This ensures that the program does not proceed with invalid input and avoids unintended execution of the ManageCloudProvider function.
Changes Made

Added a return statement in the error-handling block of the Run function to terminate execution when invalid input is detected.

Code Example
Before:
userChoice, err := strconv.Atoi(input)
if err != nil {
    fmt.Println("Error converting input to integer")
}
ManageCloudProvider(userChoice - 1)

After:
userChoice, err := strconv.Atoi(input)
if err != nil {
    fmt.Println("Error converting input to integer")
    return
}
ManageCloudProvider(userChoice - 1)

Impact

Prevents the program from continuing execution with invalid input.
Improves robustness and user experience by properly handling errors.

Please review the changes and let me know if further modifications are needed.

Good one. Just need to update the CLI version now in version.go and in the homebrew workflow (for the test).


Integrate Course Scheduler

Describe Problem
The integration of Bradley's course scheduling tool (Winzard) into the site would be a valuable and useful tool for our student body.
Suggest Solution
Port the existing codebase into a new tab on the site if possible.
Additional Details

should be under Resources rather than a tab of its own

@alialm05 @CalderJohnson was this implemented?


Design for the cocktail detail site

Current design:

Possible changes

Change color of tag text
Change color of tag trash can
Change github icon color
Add header for cocktail instructions
Gin has to be moved down
Center tag list?

I think the ingredient parameters have to be explained or used in a sentence.
For example:

Ingredients
for 1 portion of 300 ml

Like this?

looks good.
i would also make the ingredient table have the left column right aligned and the right column left alinged and switch name and amount

Basically like this?

I've added a todo list into the original comment.

Shouldn't the full cocktail description be below the ingredients and instructions?

The instructions part is now auto generated.
The short description is a link. Do we want to add some sort of Continue here at the end of the short description?


fix by defining new method

this should fix the image crash.   @twerth please corroborate that it does.

it wasn't easy, but Mark and I got a screenshare going, lol!

Code Copyright 2015, Mark Rickert. Typed by proxy through Gant.

Why the heck is travis not catching these new pull requests?

I'm going to have to take credit for gant_uiview_styler.rb naming conventions.   That's the real gold.

travis was never enabled on RP - and I dont think I have rights to do that
On Mon, Mar 2, 2015 at 4:27 PM, Mark Rickert<EMAIL_ADDRESS>wrote:

Why the heck is travis not catching these new pull requests?
—
Reply to this email directly or view it on GitHub
https://github.com/infinitered/redpotion/pull/52#issuecomment-76828936.

--
[image: MeYou Health][image: FB]
http://www.facebook.com/profile.php?id=1303234885#!/meyouhealth[image: T]
http://twitter.com/#!/meyouhealth[image: RSS]
http://www.meyouhealth.com/blog/[image: YT]
http://www.youtube.com/user/meyouhealthvideos[image: F]
http://www.flickr.com/photos/meyouhealth
David LarrabeeLead Rails Engineer
MeYou Health - the social well-being company27-43 Wormwood Street, 6th Floor
Boston, MA 02110
Phone:<PHONE_NUMBER>www.meyouhealth.com
<EMAIL_ADDRESS>MeYou Health is a Healthways, Inc. company

this is where we all blame Todd :hammer:

@markrickert I added the travis config, but i think the switch in travis isnt switched on (dont think travis has ever run on RP)


Improve Role Assignment and Access Validation Process

Currently, our role assignment and access validation processes could benefit from improvements to ensure more consistent, secure, and scalable authorization across the application. This issue is to identify and address any areas where role-based authorization may be lacking or could be optimized.

Done


Add typespecs for Ecto types

This allows users to define complete typespecs for their Version modules, without dialyzer (correctly) complaining about
:0:unknown_type
Unknown type: ExAudit.Type.Action.t/0.

:0:unknown_type
Unknown type: ExAudit.Type.Patch.t/0.

:0:unknown_type
Unknown type: ExAudit.Type.Schema.t/0.

Thank you for the corrections @narrowtux, they've been pushed up!


adds toggle for light and dark mode

Light:

Dark:

Hmm I feel like we might need to change a lot of the other colors with dark mode, this feels kinda painful to look at it (not that the normal UI is that pretty to begin with...)

Hmm I didn't want to spend too much time tweaking colors, so I just went with the first templates I could find lol
Alternatively, we can use some of the themes from https://bootswatch.com/ if you guys prefer those?

Hmm I didn't want to spend too much time tweaking colors, so I just went with the first templates I could find lol
Alternatively, we can use some of the themes from https://bootswatch.com/ if you guys prefer those?

Yeah, I guess we can try a couple of those and see if any of them look better?

I played around with the dark scenes from that... I think all of them would also require a lot of manual overrides. For now, I think we should just go with this, since it at least adds the toggle and makes it easier to do the overrides via the .bootstrap-dark class


imageSmoothingEnabled's value is reset to "true" on resize

When setting imageSmoothingEnabled = false, the image is pixelized as expected, but when resizing the window the value is reset to 'true'.
In Chrome, on some intial window sized the value is set to true even without resize, regardless of the user's choice.
In IE11 it seems to work correctly for all initial sizes, but suffer from the same issue on resize.

OK, some more info:
I get why it happens on resize - resize resets this canvas'es property, and at the moment setImageSmoothingEnabled() is called only once, in initialization.
Regarding the sizes, I found that it happens (in Chrome) on some size where in:
/**
* Clears the Drawer so it's ready to draw another frame.
*/
clear: function()
viewportSize gets a non-integer value in x or y.
This triggers a fake resize (to the same size) because (this.canvas.width != viewportSize.x || this.canvas.height != viewportSize.y ) evaluates to 'true' (canvas.height/width are always integers), and the imageSmoothingEnabled is being reset to 'true'.
In IE as far as I can see, the size returned is always integer, so the issue only occurs on manual resize.
The solution (IMHO) should be to set imageSmoothingEnabled to the user defined (or default) value on every canvas resize.

Sounds good, and I guess maybe we should set the viewport size to integer values? Bravo on tracking this down! Please make a pull request to patch it if you can :)


chore: make Account tests use environment variables

Description of changes:
region and table are not the same in every environment. This uses the environment variables instead of hard-coded values.

@aws-tyler Just to be safe did you deploy and run the integration test ?

@aws-tyler Just to be safe did you deploy and run the integration test ?

Only on my personal account, which I believe is what has been causing most of the problems because the two accounts aren't set up the same. Is it ok to use the integration test env to test against from my local machine? I was under the impression I should only test on my account to prevent any issues due to parallel testing on a single account.

since all the PRs are blocked right now, please got ahead and use the integration test env


How to use a pretrained model in the config file

As the title.

Just add model.pretrained in the config file. For example, if you would like to use the pretrained model in the swin-tiny mask-rcnn config, add model.pretrained in Line 8:
_base_ = [
    '../_base_/models/mask_rcnn_swin_fpn.py',
    '../_base_/datasets/coco_instance.py',
    '../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]

model = dict(
    pretrained='PATH/TO/PTRAIN_MODEL',
    backbone=dict(
        embed_dim=96,
        depths=[2, 2, 6, 2],
        num_heads=[3, 6, 12, 24],
        window_size=7,
        ape=False,
        drop_path_rate=0.1,
        patch_norm=True,
        use_checkpoint=False
    ),

...

Just add model.pretrained in the config file. For example, if you would like to use the pretrained model in the swin-tiny mask-rcnn config, add model.pretrained in Line 8:
_base_ = [
    '../_base_/models/mask_rcnn_swin_fpn.py',
    '../_base_/datasets/coco_instance.py',
    '../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]

model = dict(
    pretrained='PATH/TO/PRETRAIN_MODEL',
    backbone=dict(
        embed_dim=96,
        depths=[2, 2, 6, 2],
        num_heads=[3, 6, 12, 24],
        window_size=7,
        ape=False,
        drop_path_rate=0.1,
        patch_norm=True,
        use_checkpoint=False
    ),

...

I have a qustion about pretrained model too. Maybe you can help me?
when I use pretrained model swin_base_patch4_window7_224.pth in cascade_mask_rcnn_swin_base_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_3x_coco.The warning info like this:
the model and loaded state dict do not match exactly
I afrid the pretrained model don't have useful in my training?Do you have same questions like this? Or it's a normal warnning?
Waitting your reply,thanks a lot!


moa1-7dsr

Which session/publication is this one?
SPAC15E1.07c | SPAC15E1.07c:allele-5 | moa1-7dsr | A63G,A96G,C99T,A183G,C186T,T222G,A225G,T285C,A288G,T294G,A297G,A324G,C327T | |A96|C99||C186|T222||T285|A288|T294|A297|A324|
I can't find it on the gene page, so maybe it isn't used in annotation, in which case I will just delete it.

It's here: https://curation.pombase.org/pombe/curs/f93022f938a65fbf/genotype_manage/ro

fixed


Only allow (op/type)defs to be added by resource

@cqc-alec  re-requesting as I've made some major edits
took to opportunity to refactor TypeDef and OpDef out, you can glance over those commits


set core.autocrlf=false in local config of patches repo

to avoid apply problems in windows with global core.autocrlf=true

well, i have to change the way the config option is set, cause the patches are downloaded before (with crlf's) with clone

well, i think this version is the good one: i've tested it succesfully:

eta-pkg unregister array-<IP_ADDRESS>
delete epm/patches
epm update
epm install array-<IP_ADDRESS>


nicer error page for missing start parameters

Did someone already try to make a nicer error message for the "signal only works in main thread" error?
If its possible id like it to just remind to add "--nothreading --noreload" before activating this djdt panel. I offer myself for implementing this, but as i have just a bare knowledge about this threading stuff, i better ask before running into dead ends. :)

awesome project tho .. just head about flamegraphs a few minutes ago and had to test it out! :D

It's hard to add this kind of error since there's no easy way to know what arguments the server was run with. If you find a way let me know!

Okay the start parameter might be hard. What about catching the above error?

there's no easy way to know what arguments the server was run with

@blopker Isn't is inside sys.argv in many cases?


Remove imager beta release

This is a very old test image and shouldn't be in this repo.
Since it's bit rotted remove it to avoid confusion.
The image should probably be published via a different repo.

Seems ok


dbeaver 22.1.1 - issue with fix “Representation of arrays with NULL elements was fixed”

Hi,
There was made some kind of fix in 22.1.1:
PostgreSQL:

Representation of arrays with NULL elements was fixed

In practice, the array representation looks like this:
dbeaver 22.1.0
{,,,,X,,,Y,,,Z,}
dbeaver 22.1.1
{NULL,NULL,NULL,NULL,X,NULL,NULL,Y,NULL,NULL,Z,NULL}
Well, the new representation with the string “NULL” for the value NULL instead of the empty string “” in arrays is surely not wrong, but it is really hard to read. If you work with arrays as results it is a bit annoying to look at a wall of text like this {NULL,NULL,NULL,NULL,X,NULL,NULL,Y,NULL,NULL,Z,NULL}, instead at {,,,,X,,,Y,,,Z,}.
My question is, could you please make the representation of NULL values in arrays customizable by the user? It would be great if the user could be choose between an empty string “” and the string “NULL” for the NULL value. That would make results much easier to read.
For that reason I have unfortunately stay with 22.1.1.
Thanks for your help in this matter.
Kind regards
Brian

Hello @btanner2,
DBeaver provides a PSQL-compliant output of arrays and structures in the grid. We don't want to change that.
Starting with 22.1.2, you can expand elements of an array:

Please let me know if it solves your issue.

Hi,
Just for clarification, I do not want you to change the “PSQL-compliant output of arrays and structures in the grid”. This issue is just about how to present the NULL value inside of the output. I think pgadmin has some option like "replace null values with" for output, I have not use pgadmin for a long time since I am a dbeaver fan : )
It mean a new option, where the user could choose, if NULL-value should be represented by the empty-string-value in the output, would solve this issue completely. This option would bring back the NULL-value representation inside of arrays from dbeaver version 22.1.0. If you have any other ideas how to get rid of NULL-values in the output without manipulating the arrays their selves, I would be very happy to hear about.
Is something like that possible for dbeaver?
Thanks for investigating.
Kind regards
Brian

Thanks for the clarification. We'll see what we can do.


new topic - connect chaos faults to monitored service

Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the maintainers.
What Type of PR is This?

[ ] Issue
[ ] Feature
[ ] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

Issue(s)

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ ] Tested Locally
[ ] Optional Screen Shoot.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Hi @shankarh7924 , please review and let me know.
Preview link: https://6475ea0cf0b900111cb97c12--harness-developer.netlify.app/docs/service-reliability-management/monitored-service/change-source/chaos-change-source

Incorporated review comments.


[Removal]: Tiny Brunette Antelope

Hotspot Name
tiny-brunette-antelope
Hotspot b58 Address
1123drdwULT8esDUzoqNvx2ivUHKCuiDaZC2M2akWArGTyzpzN5U
Discord Handle
No response
Hotspot Manufacturer
PantherX
Removal Reason
I set up the hotspot in the real location to provide the real coverage
Modifications
No
Extra forwarders
No
Extra antennas
No
Additional Information
Dear Helium Team:
I am a beginner to the helium network, and i am also work in a IOT company, when i first time heard of helium, i really think its a genius idea that running a network by people. So i brought some helium hotspots on the second-hand market on 12 Feb. But after running few days, i noticed they are not generating any reward, and not making any connection between other hotspots (witness others and send beacons). Then i searched some materials and joined the discord community last Friday. I realized there is a mechanism of deny list, and they are both in the list. However, i put them in the real location to provide the real coverage. Please check my set up and help me remove from the deny list. Thank you

.

see comments under #1418

We have taken into account this removal request in the next iteration of the denylist. It may take some time before it's processed. This is an automated comment due to the volume of addition and removal requests. A future tool is in the works to provide more insight into the analysis approach made by the Helium team and community members that maintain this list.


Logout Redirects to localhost

When logging out of the live awesum.io site, I am redirected to localhost:8080 rather than back to the main page or a confirmation page.
Saw this behavior in Chrome 79.0.3945.88, Windows 10 1909.

Thanks for finding and reporting that @Windos!  Be sure to check the README later where you'll be added as a contributor.
@allcontributors please add @Windos for bugs.

@Windos if you'd like to tackle this and submit a PR just let me know and I'll assign it to you.

This looks to be resolved in the latest release.  I tested in Chrome 79.0.3945.88


Improve and fix API Cluster validations/defaults

Description of changes:
Separated cluster defaults from validations. Now validations don't have
side effects and don't modify the Cluster object.
Simplified the api package interface to have one method for parsing, one
for parsing + defaults and one for parsing, defaults and validation. The
all build on top of each other so that should prevent us from "missing"
parts of the logic in some flows in the future.
Added doc comments to api package public methods to get a Cluster
object.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/lgtm


bug report: timescaledb-tune values are overwritten

Hi,
we are running the timescaledb-single chart (v0.6.2) with pg12.3-ts1.7.2-latest image on Kubernetes.
We realized that all tuned values from /var/run/postgresql/timescaledb.conf are included in postgresql.conf. As I read in the patroni docs, patroni renames the postgresql.conf to postgresql.base.conf.
When we look at the current postgresql.conf of a running pod we see that all tuned values are overwritten as the postgresql.base.conf file is included at the top of the file.
We have no clue where the values that override the tuned values come from. We did not specify them in the patroni.bootstrap.dcs.postgresql.parameters.
timescaledb.conf
shared_preload_libraries = 'timescaledb'
shared_buffers = 1125MB
effective_cache_size = 3375MB
maintenance_work_mem = 576000kB
work_mem = 7680kB
wal_buffers = 16MB
min_wal_size = 3GB
max_wal_size = 6GB
default_statistics_target = 500
random_page_cost = 1.1
checkpoint_completion_target = 0.9
max_connections = 75
max_locks_per_transaction = 64
autovacuum_max_workers = 10
autovacuum_naptime = 10
effective_io_concurrency = 200
timescaledb.last_tuned = '2020-08-13T11:45:53Z'
timescaledb.last_tuned_version = '0.9.0'
max_wal_size=6128MB
min_wal_size=3064MB

postgres.conf
# Do not edit this file manually!
# It will be overwritten by Patroni!
include 'postgresql.base.conf'

archive_command = '/etc/timescaledb/scripts/pgbackrest_archive.sh %p'
archive_mode = 'on'
archive_timeout = '1800s'
autovacuum_analyze_scale_factor = '0.02'
autovacuum_max_workers = '10'
autovacuum_naptime = '10'
autovacuum_vacuum_cost_limit = '500'
autovacuum_vacuum_scale_factor = '0.05'
checkpoint_completion_target = '0.9'
checkpoint_timeout = '310s'
cluster_name = 'default-server'
default_statistics_target = '500'
effective_cache_size = '3GB'
effective_io_concurrency = '200'
hot_standby = 'on'
listen_addresses = '<IP_ADDRESS>'
log_autovacuum_min_duration = '1min'
log_checkpoints = 'on'
log_connections = 'on'
log_disconnections = 'on'
log_line_prefix = '%t [%p]: [%c-%l] %u@%d,app=%a [%e] '
log_lock_waits = 'on'
log_min_duration_statement = '1s'
log_statement = 'ddl'
maintenance_work_mem = '512MB'
max_connections = '100'
max_locks_per_transaction = '64'
max_prepared_transactions = '150'
max_replication_slots = '10'
max_wal_senders = '10'
max_wal_size = '6GB'
max_worker_processes = '8'
min_wal_size = '3GB'
port = '5432'
random_page_cost = '1.1'
shared_buffers = '1GB'
shared_preload_libraries = 'timescaledb,pg_stat_statements'
ssl = 'on'
ssl_cert_file = '/etc/certificate/tls.crt'
ssl_key_file = '/etc/certificate/tls.key'
synchronous_commit = 'remote_apply'
tcp_keepalives_idle = '900'
tcp_keepalives_interval = '100'
temp_file_limit = '2GB'
timescaledb.passfile = '../.pgpass'
track_commit_timestamp = 'off'
unix_socket_directories = '/var/run/postgresql'
unix_socket_permissions = '0750'
wal_buffers = '16MB'
wal_keep_segments = '8'
wal_level = 'replica'
wal_log_hints = 'on'
work_mem = '10485kB'
hba_file = '/var/lib/postgresql/data/pg_hba.conf'
ident_file = '/var/lib/postgresql/data/pg_ident.conf'

# recovery.conf
recovery_target = ''
recovery_target_lsn = ''
recovery_target_name = ''
recovery_target_time = ''
recovery_target_timeline = 'latest'
recovery_target_xid = ''
restore_command = '/etc/timescaledb/scripts/pgbackrest_archive_get.sh %f "%p"'

patroni.yaml
bootstrap:
  dcs:
    loop_wait: 10
    master_start_timeout: 0
    maximum_lag_on_failover: 33554432
    postgresql:
      parameters:
        archive_command: /etc/timescaledb/scripts/pgbackrest_archive.sh %p
        archive_mode: "on"
        archive_timeout: 1800s
        autovacuum_analyze_scale_factor: 0.02
        autovacuum_max_workers: 10
        autovacuum_naptime: 5s
        autovacuum_vacuum_cost_limit: 500
        autovacuum_vacuum_scale_factor: 0.05
        checkpoint_timeout: 310s
        hot_standby: "on"
        log_autovacuum_min_duration: 1min
        log_checkpoints: "on"
        log_connections: "on"
        log_disconnections: "on"
        log_line_prefix: '%t [%p]: [%c-%l] %u@%d,app=%a [%e] '
        log_lock_waits: "on"
        log_min_duration_statement: 1s
        log_statement: ddl
        max_connections: 100
        max_prepared_transactions: 150
        shared_preload_libraries: timescaledb,pg_stat_statements
        ssl: "on"
        ssl_cert_file: /etc/certificate/tls.crt
        ssl_key_file: /etc/certificate/tls.key
        synchronous_commit: remote_apply
        tcp_keepalives_idle: 900
        tcp_keepalives_interval: 100
        temp_file_limit: 2GB
        timescaledb.passfile: ../.pgpass
        unix_socket_directories: /var/run/postgresql
        unix_socket_permissions: "0750"
        wal_level: hot_standby
        wal_log_hints: "on"
      use_pg_rewind: true
      use_slots: false
    retry_timeout: 10
    synchronous_mode: true
    ttl: 30
  method: restore_or_initdb
  post_init: /etc/timescaledb/scripts/post_init.sh
  restore_or_initdb:
    command: |
      /etc/timescaledb/scripts/restore_or_initdb.sh --encoding=UTF8 --locale=C.UTF-8
    keep_existing_recovery_conf: true
kubernetes:
  ports:
  - name: postgresql
    port: 5432
    targetPort: 5432
  role_label: role
  scope_label: cluster-name
  use_endpoints: true
log:
  level: WARNING
postgresql:
  authentication:
    replication:
      username: standby
    superuser:
      username: postgres
  basebackup:
  - waldir: /var/lib/postgresql/wal/pg_wal
  callbacks:
    on_reload: /etc/timescaledb/scripts/patroni_callback.sh
    on_restart: /etc/timescaledb/scripts/patroni_callback.sh
    on_role_change: /etc/timescaledb/scripts/patroni_callback.sh
    on_start: /etc/timescaledb/scripts/patroni_callback.sh
    on_stop: /etc/timescaledb/scripts/patroni_callback.sh
  create_replica_methods:
  - pgbackrest
  - basebackup
  listen: <IP_ADDRESS>:5432
  pg_hba:
  - hostnossl all,replication all                all                reject
  - local     all             all                                   peer
  - hostssl   all             all                <IP_ADDRESS>/32       md5
  - hostssl   all             all                ::1/128            md5
  - hostssl   replication     standby            all                md5
  - hostssl   all             all                all                md5
  pgbackrest:
    command: /etc/timescaledb/scripts/pgbackrest_restore.sh
    keep_data: true
    no_master: 1
    no_params: true
  recovery_conf:
    restore_command: /etc/timescaledb/scripts/pgbackrest_archive_get.sh %f "%p"
  use_unix_socket: true
restapi:

Even when we specify values, for example, max_connections explicitly in patroni.bootstrap.dcs.postgresql.parameters the patroni.yaml reflect these values but they still get overwritten by some value set in postgresql.conf.
We restarted the pod and the whole helm release but this had no effect on the postgresql config.
Any Idea what we are missing here?

You might be running into something that is not taken care of (yet) in these Helm charts:

Some of the PostgreSQL parameters must hold the same values on the master and the replicas. For those, values set either in the local patroni configuration files or via the environment variables take no effect. To alter or set their values one must change the shared configuration in the DCS. Below is the actual list of such parameters together with the default values:

https://patroni.readthedocs.io/en/latest/dynamic_configuration.html
This includes max_connections.
For Patroni to change these values a certain sequence of events need to take place, the value needs to be changed in the DCS (which in these Helm Charts is the -config Kubernetes endpoint).
If you do a helm upgrade --install RELEASE -f myvalues.yaml, there's a Job scheduled that will trigger the DCS change.

Did you change the value in the ConfigMap manually?
Did you do a helm upgrade after changing the values?
What does patronictl list show you inside one of the pods?

One more thing:

We did not specify them in the patroni.bootstrap.dcs.postgresql.parameters.

But the default values.yaml does have a list of defaults. If you do not specify any values, the defaults from values.yaml are being used.
Could you share your values.yaml, and the Chart version you're using?

Thanks for your fast response @feikesteenbergen

Did you change the value in the ConfigMap manually? -> no
Did you do a helm upgrade after changing the values? -> yes
What does patronictl list show you inside one of the pods?

Since this is a dev cluster we run only one pod. Here is the output of patronictl list
postgres@default-server-0:~$ patronictl -c /etc/timescaledb/patroni.yaml list
+ Cluster: default-server<PHONE_NUMBER>958351409) ----+----+-----------+-----------------+
|      Member      |     Host    |  Role  |  State  | TL | Lag in MB | Pending restart |
+------------------+-------------+--------+---------+----+-----------+-----------------+
| default-server-0 | <IP_ADDRESS> | Leader | running | 37 |           |        *        |

The pending restart flag made me think. I run patronictl -c /etc/timescaledb/patroni.yaml restart default-server and voilá the config finally gets applied like I specified it in the chart below.
Now I started experimenting, and observed the following:
If you remove some values from the patroni.bootstrap.dcs.postgresql.parameters you set before. These values are not reset and will still be used and they will overwrite the ones the tstune initContainer set in timescaledb.conf. I confess max_connections was a bad example, this will always be overwritten by the chart default value, but this also happens to other values which have no default like shared_buffers.
If you change a value from patroni.bootstrap.dcs.postgresql.parameters. patronictl list shows the pending restart flag, and you have to perform the patroniclt restart manually, but shouldn't that be done by the patroni-job which is running after the helm-upgrade?
values.yaml
apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: default-server
  namespace: wpb-database
  annotations:
    fluxcd.io/ignore: 'false'
    test/ns: 'true'
spec:
  releaseName: default-server
  helmVersion: v3
  chart:
    repository: https://raw.githubusercontent.com/timescale/timescaledb-kubernetes/master/charts/repo/
    name: timescaledb-single
    version: 0.6.2
  values:
    replicaCount: 1
    nameOverride: default-server

    image:
      repository: timescaledev/timescaledb-ha
      tag: pg12.3-ts1.7.2-latest
      pullPolicy: IfNotPresent

    secretNames:
      credentials: database-credentials
      certificate: database-certificate
      pgbackrest: pgbackrest-credentials

    backup:
      enabled: true
      pgBackRest:
        # https://pgbackrest.org/configuration.html
        repo1-s3-bucket: timescaledb-backups
        repo1-s3-endpoint: minio.wpb-system
        repo1-s3-host: minio.wpb-system
        repo1-s3-port: 9000
        repo1-s3-verify-tls: 'n'

      # For High Throughput clusters, the archiver will likely not be able to keep up if running synchronously.
      # Therefore, we'll need to enable asynchronous archiving.
      #
      # Not using asynchronous archiving may cause failures far in the future, for example, on a
      # cluster with a WAL Volume of 500GB, and an archiver lagging 200MB/minute, the primary pod will only
      # fail after 2500 minutes, or almost 2 days.
      pgBackRest:archive-push:
        process-max: 4
        archive-async: "y"

      pgBackRest:archive-get:
        process-max: 4
        archive-async: "y"
        archive-get-queue-max: 2GB

    patroni:
      bootstrap:
        dcs:
          # For High Throughput clusters it is likely that the bottleneck will be the recovery
          # of the WAL on the replica's. If the high throughput is continuous, this means
          # the replica's will never catch up.
          # Enabling synchronous_mode will ensure that there is at least 1 synchronous replica,
          # which will ensure that the throughput will be limited to whatever the replica process
          # of the synchronous replica can process.
          #
          # https://patroni.readthedocs.io/en/latest/replication_modes.html#synchronous-mode
          synchronous_mode: true
          master_start_timeout: 0
          postgresql:
            # Using replication slots in high throughput situations has a significant danger:
            # The master may need to retain more WAL than the size of the WAL Volume allows,
            # if a replica is catching up.
            #
            # With backup enabled: while the replica is catching up it will be fetching archives
            # from s3, until s3 is exhausted, after which the replica will switch to streaming
            # from the master. While the replica is not yet streaming (this may take hours),
            # the replication slot reserved for it is stale and will cause WAL to be retained by
            # the master.
            # If we have a backup, we don't need replication slots, as s3 will have the WAL, therefore,
            # if the backup is enabled, we can safely disable the use of replication slots.
            use_slots: false
            parameters:
              # For good performance we want to have a long interval between checkpoints,
              # however for continuous high throughput, the replica's will have very limited
              # capacity to catch up after a crash/restart.
              #
              # For example, if the recovery process of the replica requires on average
              # 90% of the CPU, it could recover 1.11 seconds of WAL per second.
              # If after a crash it is delayed by 5 minutes, it will only catch up in:
              #
              #   300/(1.11 - 1) = 2727 seconds (roughly 45 minutes)
              #
              # We therefore want to pick a middle ground between recoverability of instances
              # and performance, and for now come up with 5 minutes.
              checkpoint_timeout: 310s
              temp_file_limit: 2GB
              # remote_apply will throttle the replica's, see also the comment at patroni.bootstrap.synchronous_mode
              synchronous_commit: remote_apply

              # timescaledb-tune recommendations
              shared_buffers: 1125MB
              effective_cache_size: 3375MB
              maintenance_work_mem: 576000kB
              work_mem: 7680kB
              wal_buffers: 16MB
              min_wal_size: 3GB
              max_wal_size: 6GB
              default_statistics_target: 500
              random_page_cost: 1.1
              checkpoint_completion_target: 0.9
              max_connections: 75
              max_locks_per_transaction: 64
              autovacuum_max_workers: 10
              autovacuum_naptime: 10
              effective_io_concurrency: 200

    loadBalancer:
      enabled: false

    persistentVolumes:
      data:
        size: 20Gi
        storageClass: "-"
      wal:
        size: 10Gi
        storageClass: "-"

    timescaledbTune:
      args:
        wal-disk-size: 10GB

    resources:
      requests:
        cpu: 1000m
        memory: 4500Mi

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: agentpool
              operator: In
              values:
              - timescaledb
      podAntiAffinity:
        preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 100
          podAffinityTerm:
            topologyKey: "kubernetes.io/hostname"
            labelSelector:
              matchLabels:
                app: default-server
                release: default-server
                cluster-name: default-server
        - weight: 50
          podAffinityTerm:
            topologyKey: failure-domain.beta.kubernetes.io/zone
            labelSelector:
              matchLabels:
                app: default-server
                release: default-server
                cluster-name: default-server

but shouldn't that be done by the patroni-job which is running after the helm-upgrade?

It depends. In this Helm Chart we choose no as an answer.
The patroni-job that is running does the following:

patch the Patroni Configuration (so that every member of the cluster has the updated configuration)
reload the PostgreSQL servers for those configuration items that can be reloaded online (for example work_mem)

And that's it.
As soon as we would restart pods during the upgrade process, we would be enforcing a downtime on you during the helm upgrade command, which would defeat a lot of the purpose of these Helm Charts.
So, if you're going to change an option that requires a instance restart, you will have to do a rolling restart of all the pods,
see the Kubernetes Reference

Thanks for the explanation, now this makes sense to me.
But I still wonder why the values from tstune never take effect, even the ones that don't require a restart and are not overwritten by the chart defaults, like work_mem or shared_buffers. I suppose it has something to do with the fact that I set them explicitly before and they are not reset properly, so the values from timescaledb.config are always overwritten with the old explicitly specified values. Does that make sense?

In your example you do set work_mem:
apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
spec:
  values:
    patroni:
      bootstrap:
        dcs:
          postgresql:
            parameters:
              work_mem: 7680kB

I can't find shared_buffers though.
To troubleshoot, you could do:
$ kubectl exec -ti pod/<your pod> -c timescaledb -- bash
$ grep shared_buffers $PGDATA/*.conf /var/run/postgresql/timescaledb.conf
For example, this is the output that I get, (my shared_buffers are actually set to 7904MB, so I cannot reproduce your issue yet):
/var/lib/postgresql/data/postgresql.base.conf:shared_buffers = 128MB			# min 128kB
/var/lib/postgresql/data/postgresql.base.conf:#wal_buffers = -1			# min 32kB, -1 sets based on shared_buffers
/var/run/postgresql/timescaledb.conf:shared_buffers = 7904MB

$ tr ' ' '\n' < $PGDATA/postmaster.opts
"-D"
"/var/lib/postgresql/data"
"--config-file=/var/lib/postgresql/data/postgresql.conf"
"--listen_addresses=<IP_ADDRESS>"
"--port=5432"
"--cluster_name=wal02"
"--wal_level=replica"
"--hot_standby=on"
"--max_connections=100"
"--max_wal_senders=10"
"--max_prepared_transactions=150"
"--max_locks_per_transaction=64"
"--track_commit_timestamp=off"
"--max_replication_slots=10"
"--max_worker_processes=8"
"--wal_log_hints=on"

Sorry for the confusion, when I said:

But I still wonder why the values from tstune never take effect, even the ones that don't require a restart and are not overwritten by the chart defaults, like work_mem or shared_buffers. I suppose it has something to do with the fact that I set them explicitly before and they are not reset properly, so the values from timescaledb.config are always overwritten with the old explicitly specified values. Does that make sense?

I meant I removed all the values, so my patroni config looked like this:
patroni:
      bootstrap:
        dcs:
          synchronous_mode: true
          master_start_timeout: 0
          postgresql:
            use_slots: false
            parameters:
              checkpoint_timeout: 310s
              temp_file_limit: 2GB
              synchronous_commit: remote_apply

Imo all the tuned values should then come from timescaledb.conf.
But as you can see the values of timescaledb.conf are getting overwritten by the ones from postgresql.conf even though I did not set them in the values anymore.
postgres@default-server-0:~$ grep shared_buffers $PGDATA/*.conf /var/run/postgresql/timescaledb.conf
postgres@default-server-0:~$ grep shared_buffers $PGDATA/*.conf /var/run/postgresql/timescaledb.conf
/var/lib/postgresql/data/postgresql.base.conf:shared_buffers = 128MB                    # min 128kB
/var/lib/postgresql/data/postgresql.base.conf:#wal_buffers = -1                 # min 32kB, -1 sets based on shared_buffers
/var/lib/postgresql/data/postgresql.conf:shared_buffers = '1125MB'
/var/run/postgresql/timescaledb.conf:shared_buffers = 1GB

postgres@default-server-0:~$ tr ' ' '\n' < $PGDATA/postmaster.opts
/usr/lib/postgresql/12/bin/postgres
"-D"
"/var/lib/postgresql/data"
"--config-file=/var/lib/postgresql/data/postgresql.conf"
"--listen_addresses=<IP_ADDRESS>"
"--port=5432"
"--cluster_name=default-server"
"--wal_level=replica"
"--hot_standby=on"
"--max_connections=75"
"--max_wal_senders=10"
"--max_prepared_transactions=150"
"--max_locks_per_transaction=64"
"--track_commit_timestamp=off"
"--max_replication_slots=10"
"--max_worker_processes=8"
"--wal_log_hints=on"
`
``

This causes timescaledb-tune to have no effect if the values have been set before, because these values are not reset somewhere and will always overwrite those of timesaledb.conf.

Hmm, that seems wrong,could you provide:
kubectl get ep/$RELEASENAME-config -o jsonpath="{.metadata.annotations.config}"

My guess is that you have to explicitly clear shared_buffers in the patroni configuration:

If you want to remove (reset) some setting just patch it with null:

https://patroni.readthedocs.io/en/latest/rest_api.html

Thanks @feikesteenbergen !
We already worked around this issue and just set all parameters from timescaledb-tune explicitly in dcs.postgresql.parameters followed by a patronictl restart.
But I set the cluster back in the state I described in the previous post to retrieve the desired endpoint config annotation.
Output of kubectl get ep/$RELEASENAME-config -o jsonpath="{.metadata.annotations.config}"
{
  "loop_wait": 10,
  "master_start_timeout": 0,
  "maximum_lag_on_failover": 33554432,
  "postgresql": {
    "parameters": {
      "archive_command": "/etc/timescaledb/scripts/pgbackrest_archive.sh %p",
      "archive_mode": "on",
      "archive_timeout": "1800s",
      "autovacuum_analyze_scale_factor": 0.02,
      "autovacuum_max_workers": 10,
      "autovacuum_naptime": "5s",
      "autovacuum_vacuum_cost_limit": 500,
      "autovacuum_vacuum_scale_factor": 0.05,
      "checkpoint_timeout": "310s",
      "hot_standby": "on",
      "log_autovacuum_min_duration": "1min",
      "log_checkpoints": "on",
      "log_connections": "on",
      "log_disconnections": "on",
      "log_line_prefix": "%t [%p]: [%c-%l] %u@%d,app=%a [%e] ",
      "log_lock_waits": "on",
      "log_min_duration_statement": "1s",
      "log_statement": "ddl",
      "max_connections": 100,
      "max_prepared_transactions": 150,
      "shared_preload_libraries": "timescaledb,pg_stat_statements",
      "ssl": "on",
      "ssl_cert_file": "/etc/certificate/tls.crt",
      "ssl_key_file": "/etc/certificate/tls.key",
      "synchronous_commit": "remote_apply",
      "tcp_keepalives_idle": 900,
      "tcp_keepalives_interval": 100,
      "temp_file_limit": "2GB",
      "timescaledb.passfile": "../.pgpass",
      "unix_socket_directories": "/var/run/postgresql",
      "unix_socket_permissions": "0750",
      "wal_level": "hot_standby",
      "wal_log_hints": "on",
      "checkpoint_completion_target": 0.9,
      "default_statistics_target": 500,
      "effective_cache_size": "3375MB",
      "effective_io_concurrency": 200,
      "maintenance_work_mem": "576000kB",
      "max_locks_per_transaction": 64,
      "max_wal_size": "6GB",
      "min_wal_size": "3GB",
      "random_page_cost": 1.1,
      "shared_buffers": "1125MB",
      "wal_buffers": "16MB",
      "work_mem": "7680kB"
    },
    "use_pg_rewind": true,
    "use_slots": false
  },
  "retry_timeout": 10,
  "synchronous_mode": true,
  "ttl": 30
}%

As you can see your guess was right, there are still the old values I removed from the dcs.postgresql.parameters.

In the configuration file, e.g., postgresql.conf, if you have:
wal_level = 'replica'
track_commit_timestamp = 'off'
The default value of “wal_level” is “replica”.
Then, having setting “ track_commit_timestamp = 'off' “ will not influence any system behavior. To enable configuration “track_commit_timestamp” the “wal_level” must be changed other than the default “'replica'”.
Moreover, if the “wal_level” parameter and the “track_commit_timestamp” parameter are seperated in a large postgresql.conf (e.g., a lot of other parameters are in between), this will bring confusion to users.
Looking at the code snippet in PostgreSQL (see below), you can find that
usage of “track_commit_timestamp” is "disabled".
if (wal_level != ControlFile-> wal_level...)
Xlrec.track_commit_timestamp = track_commit_timestamp;


Tpu experiments

Code is in working state (both --use_tpu=True/False work).
Invocation I used while testing on TPU-enabled VM:
export STORAGE_BUCKET=gs://....
export DATA_DIR=$STORAGE_BUCKET/data/golden_chunks
export TPU_NAME=....
export BOARD_SIZE=19
python3 dual_net.py train $STORAGE_BUCKET/models/initial_run $DATA_DIR/200.tfrecord.zz $DATA_DIR/201.tfrecord.zz --steps=1000 --use_tpu=True --tpu_name=$TPU_NAME
TBD: throughput for different numbers of parallel files read. (We currently just have 1 golden chunk file per gen which may or may not limit throughput.)
TBD: implement random rotations as tf ops. (@sethtroisi your original rotation impl would have been better here... my bad on having you use py_func...)
TBD: whether this impl is bug free

/retest


TypeError: Cannot read properties of undefined (reading 'ROADMAP')

Steps to reproduce

Download the latest version of flutter
The rest of the code follows this tutorial: https://developers.google.com/maps/flutter-package/config
Do flutter create google_maps_in_flutter --platforms=android,ios,web
Add the google maps package to your flutter project flutter pub add google_maps_flutter
Add the following code inside the index.html  tag:

<script>
  (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
    key: "YOUR_API_KEY",
    v: "weekly",
    // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.).
    // Add other bootstrap parameters as needed, using camel case.
  });
</script>

Note that it is not important if you don't have a valid api-key. The error is not related to google maps API-key being valid or not. So you can leave the API-key field unchanged.
6. Replace the code in main.dart with:
      import 'package:flutter/material.dart';
      import 'package:google_maps_flutter/google_maps_flutter.dart';

      void main() => runApp(const MyApp());

      class MyApp extends StatefulWidget {
        const MyApp({super.key});

        @override
        State<MyApp> createState() => _MyAppState();
      }

      class _MyAppState extends State<MyApp> {
        late GoogleMapController mapController;

        final LatLng _center = const LatLng(-33.86, 151.20);

        void _onMapCreated(GoogleMapController controller) {
          mapController = controller;
        }

        @override
        Widget build(BuildContext context) {
          return MaterialApp(
            home: Scaffold(
              appBar: AppBar(
                title: const Text('Maps Sample App'),
                backgroundColor: Colors.green[700],
              ),
              body: GoogleMap(
                onMapCreated: _onMapCreated,
                initialCameraPosition: CameraPosition(
                  target: _center,
                  zoom: 11.0,
                ),
              ),
            ),
          );
        }
      }

Run the flutter project in debug mode and notice the error

Expected results
The result should show a google maps embedded into the website(given that the API key is valid). If the API key is not valid, the result should still show a website, however with no embedded google maps.
Actual results
TypeError: Cannot read properties of undefined (reading 'ROADMAP')

Code sample
Code sample
[Paste your code here]

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
[√] Flutter (Channel stable, 3.24.3, on Microsoft Windows [Version 10.0.22631.4169], locale en-US)
    • Flutter version 3.24.3 on channel stable at C:\Flutter\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 2663184aa7 (4 weeks ago), 2024-09-11 16:27:48 -0500
    • Engine revision 36335019a8
    • Dart version 3.5.3
    • DevTools version 2.37.3

[√] Windows Version (Installed version of Windows is version 10 or higher)

[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\Users\qqWha\AppData\Local\Android\sdk
    X cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/to/windows-android-setup for more details.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[X] Visual Studio - develop Windows apps
    X Visual Studio not installed; this is necessary to develop Windows apps.
      Download at https://visualstudio.microsoft.com/downloads/.
      Please install the "Desktop development with C++" workload, including all of its default components

[√] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[√] IntelliJ IDEA Ultimate Edition (version 2021.2)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA 2021.2.1
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart

[√] VS Code (version 1.94.0)
    • VS Code at C:\Users\qqWha\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.98.0

[√] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.22631.4169]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 129.0.6668.90
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 129.0.2792.79

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

! Doctor found issues in 2 categories.

Reproducible using the sample and steps provided above.
Launching lib/main.dart on Chrome in debug mode...
This app is linked to the debug service: ws://<IP_ADDRESS>:59969/xS_GfQKUI8c=/ws
Debug service listening on ws://<IP_ADDRESS>:59969/xS_GfQKUI8c=/ws
Connecting to VM Service at ws://<IP_ADDRESS>:59969/xS_GfQKUI8c=/ws
Connected to the VM Service.
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following JSNoSuchMethodError was thrown building GoogleMap(dirty, dependencies:
[Directionality], state: _GoogleMapState#1d62e):
TypeError: Cannot read properties of undefined (reading 'ROADMAP')

The relevant error-causing widget was:
  GoogleMap GoogleMap:file:///Users/deanli/projects/ori/lib/main.dart:30:15

When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_shared/lib/js_util_patch.dart 81:41            getProperty
js_util_patch.dart:81
packages/google_maps_flutter_web/src/convert.dart 119:30                 _gmapTypeIDForPluginType
convert.dart:119
packages/google_maps_flutter_web/src/convert.dart 61:25                  _configurationAndStyleToGmapsOptions
convert.dart:61
packages/google_maps_flutter_web/src/google_maps_controller.dart 205:32  init
google_maps_controller.dart:205
packages/google_maps_flutter_web/src/google_maps_flutter_web.dart 338:8  <fn>
google_maps_flutter_web.dart:338
packages/google_maps_flutter_web/src/google_maps_flutter_web.dart 338:8  buildViewWithConfiguration
google_maps_flutter_web.dart:338
packages/google_maps_flutter/src/google_map.dart 346:47                  build
google_map.dart:346

flutter doctor -v
[✓] Flutter (Channel stable, 3.24.3, on macOS 15.0 24A335 darwin-arm64, locale en-US)
    • Flutter version 3.24.3 on channel stable at /Users/deanli/dev/stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 2663184aa7 (4 weeks ago), 2024-09-11 16:27:48 -0500
    • Engine revision 36335019a8
    • Dart version 3.5.3
    • DevTools version 2.37.3

[!] Flutter (Channel master, 3.26.0-1.0.pre.374, on macOS 15.0 24A335 darwin-arm64, locale en-US)
    • Flutter version 3.26.0-1.0.pre.374 on channel master at /Users/deanli/dev/master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 8d19012346 (8 hours ago), 2024-10-06 21:37:34 -0400
    • Engine revision a190ab54ce
    • Dart version 3.6.0 (build 3.6.0-326.0.dev)
    • DevTools version 2.40.0

Any updates on this? I'm experiencing the same issues as well

Any updates on this? I'm experiencing the same issues as well

I managed to solve it by using updated google maps api for flutter. I got the updated API from this link: https://codelabs.developers.google.com/codelabs/google-maps-in-flutter#3
This worked fine and no errors when running on web.

I encountered this error, after understanding it, the reason was that I used the same API_KEY for the Android app (with the Restrict key set).
I fixed it by creating a new API_KEY for the web app and following the instructions linked here
https://pub.dev/packages/google_maps_flutter_web


chore: Adding LogintoAppTestUser command back

Description
LogintoAppTestUser command got removed as part of cleanup on CE. This command is being used in two specs in EE leading to failure. Bringing it back.
Fixes #Issue Number
or
Fixes Issue URL

[!WARNING]
If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.

Automation
/ok-to-test tags=""
:mag: Cypress test results

[!CAUTION]
If you modify the content in this section, you are likely to disrupt the CI result for your PR.

Communication
Should the DevRel and Marketing teams inform users about this change?

[ ] Yes
[ ] No

/ci-test-limit

Closing this PR in lieu of proper fix PR to be raised by Nandan.


Function marked as IO-only was called from a thread that disallows IO

I built electron against a debug build of chromium, and running electron with no arguments yields the following assertion failure:
#0 0x7fc100175dee base::debug::StackTrace::StackTrace()
#1 0x7fc1001d642f logging::LogMessage::~LogMessage()
#2 0x7fc10032638f base::ThreadRestrictions::AssertIOAllowed()
#3 0x7fc1001b8761 base::PathExists()
#4 0x7fc0f7d4dbf8 ui::ResourceBundle::GetLocaleFilePath()
#5 0x7fc0f7d4da59 ui::ResourceBundle::LocaleDataPakExists()
#6 0x7fc0f7d22a5e <unknown>
#7 0x7fc0f7d222bc l10n_util::CheckAndResolveLocale()
#8 0x7fc0f7d22db2 <unknown>
#9 0x7fc0f7d22f0b l10n_util::GetApplicationLocale()
#10 0x7fc0f7d22f71 l10n_util::GetApplicationLocale()
#11 0x000000fc6f1d brightray::URLRequestContextGetter::GetURLRequestContext()
#12 0x7fc0f1492b1c content::ChromeAppCacheService::InitializeOnIOThread()
#13 0x7fc0f201aabb <unknown>
#14 0x7fc0f201a926 <unknown>
#15 0x7fc0f201a88b <unknown>
#16 0x7fc0f201a32c <unknown>
#17 0x7fc10015ce1e <unknown>
#18 0x7fc10017b57e base::debug::TaskAnnotator::RunTask()
#19 0x7fc1001f35dc base::MessageLoop::RunTask()
#20 0x7fc1001f3878 base::MessageLoop::DeferOrRunPendingTask()
#21 0x7fc1001f3ad2 base::MessageLoop::DoWork()
#22 0x7fc10013fbae base::MessagePumpLibevent::Run()
#23 0x7fc1001f2fcf base::MessageLoop::RunHandler()
#24 0x7fc100283024 base::RunLoop::Run()
#25 0x7fc10031c445 base::Thread::Run()
#26 0x7fc0f155f526 content::BrowserThreadImpl::IOThreadRun()
#27 0x7fc0f155f8ce content::BrowserThreadImpl::Run()
#28 0x7fc10031c78d base::Thread::ThreadMain()
#29 0x7fc1003077ea <unknown>
#30 0x7fc0f070d70a start_thread
#31 0x7fc0ea49782d clone

Yes, this is the "IO" thread, but it's not supposed to do any actual I/O. See BrowserProcessSubThread::Init.
Chrome/Chromium gets the locale from disk only once during startup, and doesn't call l10n_util::GetApplicationLocale after that point.

As a more general comment, I think it would be useful if the debug build of electron included a version of libchromiumcontent and brightray built in debug mode. There are a number of useful checks, including many related to thread-safety, that I would expect developers working on electron to want to have enabled.

Hi @geoff-addepar, I definitely like your idea about having debug builds available for libcc and brightray. I think the component builds are build with debugging information, but I'd want to confirm that.
Regarding your posted issue, did you build chromium using libchromiumcontent or another way? The libcc build process patches chromium.

I built a debug version of libchromiumcontent, and used that to build a debug version of electron/brightray. Note that "with debugging information" (i.e. symbols) is different from what I want: I want builds where DCHECK is implemented, NDEBUG is not defined, and things like CHROME_IPC_LOGGING work. The additional checks available in this type of build help find bugs earlier in the development cycle.
Building this required a few changes to libcc:
diff --git a/chromiumcontent/chromiumcontent.gyp b/chromiumcontent/chromiumcontent.gyp
index 9a311fe..024cc31 100644
--- a/chromiumcontent/chromiumcontent.gyp
+++ b/chromiumcontent/chromiumcontent.gyp
@@ -37,6 +37,7 @@
         '<(DEPTH)/content/content.gyp:content',
         '<(DEPTH)/content/content.gyp:content_app_both',
         '<(DEPTH)/content/content_shell_and_tests.gyp:content_shell_pak',
+        '<(DEPTH)/media/media.gyp:media',
         '<(DEPTH)/net/net.gyp:net_with_v8',
         '<(DEPTH)/ppapi/ppapi_internal.gyp:ppapi_host',
         '<(DEPTH)/ppapi/ppapi_internal.gyp:ppapi_proxy',
@@ -46,6 +47,7 @@
         '<(DEPTH)/third_party/widevine/cdm/widevine_cdm.gyp:widevinecdmadapter',
         '<(DEPTH)/third_party/widevine/cdm/widevine_cdm.gyp:widevine_cdm_version_h',
         '<(DEPTH)/ui/events/events.gyp:dom_keycode_converter',
+        '<(DEPTH)/url/url.gyp:url_lib'
       ],
       'sources': [
         'empty.cc',
diff --git a/script/create-dist b/script/create-dist
index 6a5a86d..ec481ba 100755
--- a/script/create-dist
+++ b/script/create-dist
@@ -395,7 +395,8 @@ def copy_binaries(target_arch, component, output_dir):
     # be used for Release build.
     if component == 'shared_library':
       for library in glob.glob(os.path.join(target_dir, match)):
-        run_strip(target_arch, library)
+        #run_strip(target_arch, library)
+        pass

 def copy_generated_sources(target_arch, component, output_dir):
diff --git a/script/lib/config.py b/script/lib/config.py
index 67631d1..f034288 100644
--- a/script/lib/config.py
+++ b/script/lib/config.py
@@ -23,7 +23,7 @@ def get_output_dir(target_arch, component):

 def get_configuration(target_arch):
-  config = 'Release'
+  config = 'Debug'
   if target_arch == 'x64' and sys.platform in ['win32', 'cygwin']:
     config += '_x64'
   return config

Then I followed the instructions in the last comment of https://github.com/electron/electron/issues/2023 to make my electron build pick up my modified binaries. Two things to note:

I had to run git submodule foreach --recursive git clean -fdx in my electron directory before bootstrapping so that the bootstrap script would actually download the new files
I built libcc using script/build -t x64 -c shared_library before running create-dist

On the electron side, I also had to make a few changes just to get it to build:
diff --git a/atom/common/native_mate_converters/callback.h b/atom/common/native_mate_converters/callback.h
index decc36e..8d15361 100644
--- a/atom/common/native_mate_converters/callback.h
+++ b/atom/common/native_mate_converters/callback.h
@@ -53,7 +53,7 @@ struct V8FunctionInvoker<v8::Local<v8::Value>(ArgTypes...)> {
     v8::Local<v8::Function> holder = function.NewHandle(isolate);
     v8::Local<v8::Context> context = holder->CreationContext();
     v8::Context::Scope context_scope(context);
-    std::vector<v8::Local<v8::Value>> args = { ConvertToV8(isolate, raw)... };
+    std::vector<v8::Local<v8::Value>> args = std::vector<v8::Local<v8::Value>>{ ConvertToV8(isolate, raw)... };
     v8::Local<v8::Value> ret(holder->Call(holder, args.size(), &args.front()));
     return handle_scope.Escape(ret);
   }
@@ -73,7 +73,7 @@ struct V8FunctionInvoker<void(ArgTypes...)> {
     v8::Local<v8::Function> holder = function.NewHandle(isolate);
     v8::Local<v8::Context> context = holder->CreationContext();
     v8::Context::Scope context_scope(context);
-    std::vector<v8::Local<v8::Value>> args = { ConvertToV8(isolate, raw)... };
+    std::vector<v8::Local<v8::Value>> args = std::vector<v8::Local<v8::Value>>{ ConvertToV8(isolate, raw)... };
     holder->Call(holder, args.size(), &args.front());
   }
 };
@@ -93,7 +93,7 @@ struct V8FunctionInvoker<ReturnType(ArgTypes...)> {
     v8::Local<v8::Function> holder = function.NewHandle(isolate);
     v8::Local<v8::Context> context = holder->CreationContext();
     v8::Context::Scope context_scope(context);
-    std::vector<v8::Local<v8::Value>> args = { ConvertToV8(isolate, raw)... };
+    std::vector<v8::Local<v8::Value>> args = std::vector<v8::Local<v8::Value>>{ ConvertToV8(isolate, raw)... };
     v8::Local<v8::Value> result;
     auto maybe_result =
         holder->Call(context, holder, args.size(), &args.front());

And in vendor/brightray:
diff --git a/brightray.gypi b/brightray.gypi
index 064ae1a..48466d8 100644
--- a/brightray.gypi
+++ b/brightray.gypi
@@ -94,8 +94,6 @@
         'defines': [
           # Used by content_browser_client.h:
           'ENABLE_WEBRTC',
-          # We are using Release version libchromiumcontent:
-          'NDEBUG',
           # Needed by gin:
           'V8_USE_EXTERNAL_STARTUP_DATA',
           # From skia_for_chromium_defines.gypi:
@@ -197,6 +195,7 @@
           'SKIA_DLL',
           'USING_V8_SHARED',
           'WEBKIT_DLL',
+          '_GLIBCXX_DEBUG',
         ],
         'msvs_settings': {
           'VCCLCompilerTool': {
@@ -209,6 +208,9 @@
       },  # Debug_Base
       'Release_Base': {
         'abstract': 1,
+        'defines': [
+          'NDEBUG',
+        ],
         'msvs_settings': {
           'VCCLCompilerTool': {
             'RuntimeLibrary': '0',  # /MT (nondebug static)

Once you've done all that, you can start up out/D/electron and watch it fail.
Note that this bug is not the only problem that shows up when running a debug build. If you get past that issue, here are the next three you will hit:

atom::NativeWindowViews::NativeWindowViews() calls ui::SetAtomArrayProperty() with an empty list, and that causes DCHECK(!value.empty()); to fail
atom::AtomNetworkDelegate extends NonThreadSafe. It is constructed on the "electron" thread and used on the IO thread. That causes Check failed: CalledOnValidThread().
Check failed: handle_scope_implementer->GetMicrotasksScopeDepth() || !handle_scope_implementer->DebugMicrotasksScopeDepthIsZero(). in atom::NodeBindings::LoadEnvironment


Typos fix

Typos fix.

Tomcat can't change these files. Please report this up stream at:
https://github.com/eclipse-ee4j/jakartaee-schemas


Add section on how to run tests locally

:tada: This PR is included in version 0.7.10 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


add plotly based iplot_histogram

Summary
This replaces the current iplot_histogram function with a plotly based one, so that an internet connection is no longer required.  It also adds an as_widget option that renders the figure as an ipywidget so that it may be embedded in a notebook, or rendered in the documentation.
Details and comments
These figures can be saved, however given that the figures are JS, saving requires an additional add-on that can be installed only via conda or manually:
conda config --append channels plotly
conda install plotly-orca

The reason for this is because it is binary executable, much like GraphViz we use in the DAG drawer.

Moving to different repo

@nonhermitian I was looking forward to this to remove the dependency on that weird black box js app. If this is being hosted somewhere else can we remove the iplot stuff from terra?

I am slowly adding things to a package called kaleidoscope. You can pip install it to get that function but the rest are not added yet due to bandwidth.


Package hadoop and java with the HDFS framework

Frameworks in the continuous/testing branch no longer have access to the
host's java and hadoop.  It must be packaged with the framework.

Great, thanks @gabrielhartmann! Some comments above

Ok two final comments to address, @gabrielhartmann  but this is looking great! Any objections @kensipe ? If not, we can upgrade the version of HDFS and then release this.

Looks like you accidentally duplicated the values in config.json, but other than that, I think we are good

@elingg @gabrielhartmann in the future, when a new version of a package is being released there should be a new package revision in the repo rather than changing the existing revision.

  I misunderstood the order of operations on releasing a
new package.
On Thu, Jul 23, 2015 at 1:43 PM BenWhitehead<EMAIL_ADDRESS>wrote:

@elingg https://github.com/elingg @gabrielhartmann
https://github.com/gabrielhartmann in the future, when a new version of
a package is being released there should be a new package revision in the
repo rather than changing the existing revision.
—
Reply to this email directly or view it on GitHub
https://github.com/mesosphere/universe/pull/183#issuecomment-124234840.

Yes, makes sense, he was new to the process, which is not 100% documented. We were supposed to merge only after updating the versions and index file.


No way to disconnect a line at a point that just happens to have another line joining it

No way to disconnect a line at a point that just happens to have another line joining it.

On cannot break the NW-SE into two at that point. Because clicking on it selects the SW-NE line.

I'm not sure what you mean.. From the screenshot it looks like they already are disconnected, and you'd just need to drag the node away from the line.

OK first do something like 'disconnect' then move the point away from the line, to be able to disconnect the line into two portions. OK I think I figured it out.


EffectiveViewport event not raised in XamlIsland scenario

This bug is to track the underlying framework issue causing #2095. #2095 will be used to make a targeted workaround for NavigationView to unblock the scenario.  Please see the linked bug for repro steps.

I'm not sure which team worked on effective viewports, but it wasn't the reach team.  I think it was probably Controls or Framework - so guessing and re-assigning this to Controls.

any movement on this?

@ranjeshj ah, since #3642 was linked to this . . . is there a workaround? Terminal's not afraid to work around random Xaml Islands issues :smile:

Any progress on that? It's over a year now...
Hierarchical NavigationView being broken combined with weird rendering of background in Flyouts, just that makes using XamlIslands in anything serious impossible.
Funny how MS advertises whole WinUI 2.x and 3.x stack as "production-ready" when both are just ridden with simple bugs 😄

it appears that the PR above has fixed it. can you check. if not fixed, feel free to re-open this.


MINOR: Ensure consumers are closed in DynamicBrokerReconfigurationTest

In ConsumerBuilder.build, if awaitInitialPositions raises an exception, the consumer will not be closed properly. We should add the consumer instance to the consumers collection immediately after construction.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

I'm going to go ahead and merge this to trunk and 2.1 since the fix is obvious and it is causing a lot of build instability.


Issues running CC with fips stemcells

This issue is start capturing issues running cloud controllers on FIPS stemcells
This is first initial deploy with fips stemcells. CC is running but failing with many ssl issues
==> /var/vcap/sys/log/cloud_controller_ng/nginx-error.log <==
2023/12/06 20:30:31 [crit] 8#0: *720 SSL_do_handshake() failed (SSL: error:1C800073:Provider routines::invalid data error:0A0C0103:SSL routines::internal error) while SSL handshaking, client: <IP_ADDRESS>, server: <IP_ADDRESS>:9023

==> /var/vcap/sys/log/cloud_controller_clock/cloud_controller_clock.log <==
{"timestamp":"2023-12-06T20:30:32.287650741Z","message":"Attempting to connect to the diego backend. Total 56.0 seconds remaining. Next retry after 4.0 seconds.","log_level":"info","source":"cc.diego.client","data":{},"thread_id":41080,"fiber_id":41100,"process_id":6,"file":"/var/vcap/data/packages/cloud_controller_ng/7eb61d5e6de32458776ce7f34179635a378bde36/cloud_controller_ng/lib/diego/client.rb","lineno":178,"method":"rescue in with_request_error_handling"}

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:33.458648 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894633458 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=1212ac37-e245-49b1-960f-305ddebdae6d cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
localhost - [06/Dec/2023:20:30:33 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "curl/7.81.0" <IP_ADDRESS> vcap_request_id:1212ac37-e245-49b1-960f-305ddebdae6d response_time:0.002

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:34.964793 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894634964 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=79f87281-0fc1-4b78-9df3-e806b335c323 cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
<IP_ADDRESS> - [06/Dec/2023:20:30:34 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "ccng_monit_http_healthcheck" <IP_ADDRESS> vcap_request_id:79f87281-0fc1-4b78-9df3-e806b335c323 response_time:0.030

==> /var/vcap/sys/log/cloud_controller_ng/nginx-error.log <==
2023/12/06 20:30:34 [error] 7#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514
2023/12/06 20:30:34 [error] 7#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514

==> /var/vcap/sys/log/cloud_controller_clock/cloud_controller_clock.log <==
{"timestamp":"2023-12-06T20:30:36.328953808Z","message":"Attempting to connect to the diego backend. Total 51.96 seconds remaining. Next retry after 5 seconds.","log_level":"info","source":"cc.diego.client","data":{},"thread_id":41080,"fiber_id":41100,"process_id":6,"file":"/var/vcap/data/packages/cloud_controller_ng/7eb61d5e6de32458776ce7f34179635a378bde36/cloud_controller_ng/lib/diego/client.rb","lineno":178,"method":"rescue in with_request_error_handling"}

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
cloud-controller-ng.service.cf.internal - [06/Dec/2023:20:30:38 +0000] "GET /internal/v4/asg_latest_update HTTP/1.1" 500 195 "-" "Go-http-client/1.1" <IP_ADDRESS> vcap_request_id:- response_time:0.179

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:39.583713 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894639583 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=6492e2d1-b89d-4cbe-801d-23d0502c56ed cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
localhost - [06/Dec/2023:20:30:39 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "curl/7.81.0" <IP_ADDRESS> vcap_request_id:6492e2d1-b89d-4cbe-801d-23d0502c56ed response_time:0.012

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:39.627160 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894639627 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=8770af92-eb1a-454b-9bc3-ea411374ba1c cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
localhost - [06/Dec/2023:20:30:39 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "curl/7.81.0" <IP_ADDRESS> vcap_request_id:8770af92-eb1a-454b-9bc3-ea411374ba1c response_time:0.002

==> /var/vcap/sys/log/cloud_controller_ng/nginx-error.log <==
2023/12/06 20:30:39 [error] 7#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514

==> /var/vcap/sys/log/cloud_controller_clock/cloud_controller_clock.log <==
{"timestamp":"2023-12-06T20:30:41.375549342Z","message":"Attempting to connect to the diego backend. Total 46.91 seconds remaining. Next retry after 5 seconds.","log_level":"info","source":"cc.diego.client","data":{},"thread_id":41080,"fiber_id":41100,"process_id":6,"file":"/var/vcap/data/packages/cloud_controller_ng/7eb61d5e6de32458776ce7f34179635a378bde36/cloud_controller_ng/lib/diego/client.rb","lineno":178,"method":"rescue in with_request_error_handling"}

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:45.342829 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894645342 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=434088d2-7f4d-41a8-9a62-89c8451567d5 cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
localhost - [06/Dec/2023:20:30:45 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "curl/7.81.0" <IP_ADDRESS> vcap_request_id:434088d2-7f4d-41a8-9a62-89c8451567d5 response_time:0.010

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:45.444074 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894645443 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=fdcaca6e-0f89-40e7-8759-26c6c739ab8f cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
<IP_ADDRESS> - [06/Dec/2023:20:30:45 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "ccng_monit_http_healthcheck" <IP_ADDRESS> vcap_request_id:fdcaca6e-0f89-40e7-8759-26c6c739ab8f response_time:0.005

==> /var/vcap/sys/log/cloud_controller_ng/nginx-error.log <==
2023/12/06 20:30:45 [error] 7#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514
2023/12/06 20:30:45 [error] 7#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514

==> /var/vcap/sys/log/cloud_controller_clock/cloud_controller_clock.log <==
{"timestamp":"2023-12-06T20:30:46.424682914Z","message":"Attempting to connect to the diego backend. Total 41.86 seconds remaining. Next retry after 5 seconds.","log_level":"info","source":"cc.diego.client","data":{},"thread_id":41080,"fiber_id":41100,"process_id":6,"file":"/var/vcap/data/packages/cloud_controller_ng/7eb61d5e6de32458776ce7f34179635a378bde36/cloud_controller_ng/lib/diego/client.rb","lineno":178,"method":"rescue in with_request_error_handling"}

==> /var/vcap/sys/log/cloud_controller_ng/nginx-error.log <==
2023/12/06 20:30:46 [crit] 7#0: *735 SSL_do_handshake() failed (SSL: error:1C800073:Provider routines::invalid data error:0A0C0103:SSL routines::internal error) while SSL handshaking, client: <IP_ADDRESS>, server: <IP_ADDRESS>:9023

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:51.085097 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894651084 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=465d413c-a937-40d4-a0b7-ab14e886c5ca cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
localhost - [06/Dec/2023:20:30:51 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "curl/7.81.0" <IP_ADDRESS> vcap_request_id:465d413c-a937-40d4-a0b7-ab14e886c5ca response_time:0.003

==> /var/vcap/sys/log/cloud_controller_clock/cloud_controller_clock.log <==
{"timestamp":"2023-12-06T20:30:51.467903841Z","message":"Attempting to connect to the diego backend. Total 36.82 seconds remaining. Next retry after 5 seconds.","log_level":"info","source":"cc.diego.client","data":{},"thread_id":41080,"fiber_id":41100,"process_id":6,"file":"/var/vcap/data/packages/cloud_controller_ng/7eb61d5e6de32458776ce7f34179635a378bde36/cloud_controller_ng/lib/diego/client.rb","lineno":178,"method":"rescue in with_request_error_handling"}

==> /var/vcap/sys/log/cloud_controller_ng/nginx-error.log <==
2023/12/06 20:30:54 [crit] 7#0: *738 SSL_do_handshake() failed (SSL: error:1C800073:Provider routines::invalid data error:0A0C0103:SSL routines::internal error) while SSL handshaking, client: <IP_ADDRESS>, server: <IP_ADDRESS>:9023
2023/12/06 20:30:54 [error] 7#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:55.785827 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894655785 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=39ccebd3-df8b-4b72-8da2-d08a6aa92e38 cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
<IP_ADDRESS> - [06/Dec/2023:20:30:55 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "ccng_monit_http_healthcheck" <IP_ADDRESS> vcap_request_id:39ccebd3-df8b-4b72-8da2-d08a6aa92e38 response_time:0.003

==> /var/vcap/sys/log/cloud_controller_ng/nginx-error.log <==
2023/12/06 20:30:55 [error] 7#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514

==> /var/vcap/sys/log/cloud_controller_clock/cloud_controller_clock.log <==
{"timestamp":"2023-12-06T20:30:56.542226852Z","message":"Attempting to connect to the diego backend. Total 31.74 seconds remaining. Next retry after 5 seconds.","log_level":"info","source":"cc.diego.client","data":{},"thread_id":41080,"fiber_id":41100,"process_id":6,"file":"/var/vcap/data/packages/cloud_controller_ng/7eb61d5e6de32458776ce7f34179635a378bde36/cloud_controller_ng/lib/diego/client.rb","lineno":178,"method":"rescue in with_request_error_handling"}

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:56.722848 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894656722 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=bd29df1e-996d-49a6-bcd8-68a26b408002 cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
localhost - [06/Dec/2023:20:30:56 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "curl/7.81.0" <IP_ADDRESS> vcap_request_id:bd29df1e-996d-49a6-bcd8-68a26b408002 response_time:0.002

==> /var/vcap/sys/log/cloud_controller_clock/cloud_controller_clock.log <==
{"timestamp":"2023-12-06T20:30:58.006287700Z","message":"Skipping enqueue for diego_sync. Job last started at 2023-12-06 20:30:28 UTC, last completed at: 2023-12-06 20:30:09 UTC, interval: 30, timeout: 600","log_level":"info","source":"cc.clock","data":{},"thread_id":41360,"fiber_id":41380,"process_id":6,"file":"/var/vcap/data/packages/cloud_controller_ng/7eb61d5e6de32458776ce7f34179635a378bde36/cloud_controller_ng/lib/cloud_controller/clock/distributed_executor.rb","lineno":24,"method":"block in execute_job"}

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:30:59.295757 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894659295 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=e1fef543-59e4-4945-8750-2315dcf7a7e5 cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
localhost - [06/Dec/2023:20:30:59 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "curl/7.81.0" <IP_ADDRESS> vcap_request_id:e1fef543-59e4-4945-8750-2315dcf7a7e5 response_time:0.002

==> /var/vcap/sys/log/cloud_controller_ng/nginx-error.log <==
2023/12/06 20:30:59 [error] 8#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514
2023/12/06 20:30:59 [error] 8#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514

==> /var/vcap/sys/log/cloud_controller_clock/cloud_controller_clock.log <==
{"timestamp":"2023-12-06T20:31:01.581814354Z","message":"Attempting to connect to the diego backend. Total 26.7 seconds remaining. Next retry after 5 seconds.","log_level":"info","source":"cc.diego.client","data":{},"thread_id":41080,"fiber_id":41100,"process_id":6,"file":"/var/vcap/data/packages/cloud_controller_ng/7eb61d5e6de32458776ce7f34179635a378bde36/cloud_controller_ng/lib/diego/client.rb","lineno":178,"method":"rescue in with_request_error_handling"}

==> /var/vcap/sys/log/cloud_controller_ng/nginx-error.log <==
2023/12/06 20:31:01 [crit] 7#0: *745 SSL_do_handshake() failed (SSL: error:1C800073:Provider routines::invalid data error:0A0C0103:SSL routines::internal error) while SSL handshaking, client: <IP_ADDRESS>, server: <IP_ADDRESS>:9023
2023/12/06 20:31:01 [error] 7#0: send() failed (111: Connection refused) while logging to syslog, server: <IP_ADDRESS>:514

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:31:02.275975 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894662275 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=df05fa8f-659e-40ad-b302-6b2c19ae34cc cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

==> /var/vcap/sys/log/cloud_controller_ng/nginx-access.log <==
localhost - [06/Dec/2023:20:31:02 +0000] "GET /healthz HTTP/1.1" 200 219 "-" "curl/7.81.0" <IP_ADDRESS> vcap_request_id:df05fa8f-659e-40ad-b302-6b2c19ae34cc response_time:0.002

==> /var/vcap/sys/log/cloud_controller_ng/security_events.log <==
I, [2023-12-06T20:31:06.086568 #6]  INFO -- : CEF:0|cloud_foundry|cloud_controller_ng|2.216.0|GET /healthz|GET /healthz|0|rt=1701894666086 suser= suid= request=/healthz requestMethod=GET src=<IP_ADDRESS> dst=<IP_ADDRESS> cs1Label=userAuthenticationMechanism cs1=no-auth cs2Label=vcapRequestId cs2=46abb0ba-03ee-45c4-b4c7-33df81a06592 cs3Label=result cs3=success cs4Label=httpStatusCode cs4=200 cs5Label=xForwardedFor cs5=<IP_ADDRESS>

hello @lnguyen, we've merged fips related PRs to CAPI, have you been able to retry it since?  there is a caveat, they are not available on a released version of CAPI so you'll have to build it from source.

Hi @lnguyen,
cf-deployment v37.3.0 works on a FIPS stemcell: https://github.com/cloudfoundry/cf-deployment/releases/tag/v37.3.0
You still have to use the fips-compliance.yml ops file, however. We will change the default setting in one of the upcoming major releases.
Best Regards,
Jochen.

closing based on it working on in cf-d


FormKitVariants in Nuxt 3 with tailwind not working

Reproduction
https://github.com/Archetipo95/FormKit-Tailwind-Nuxt
Describe the bug
I encountered an issue with using FormKitVariants in Nuxt 3 with Tailwind CSS. The expected behavior is not occurring, and I suspect it might be related to the integration of FormKitVariants with Nuxt 3 and Tailwind CSS.
Environment
MacOs latest
Macbook pro M1
Latest chrome

I have also a stackblitz example linked to the repo: https://stackblitz.com/github/Archetipo95/FormKit-Tailwind-Nuxt?file=package.json

Thanks for the reproduction. I played around with it and you need to use disabled="true" not just naked disabled to get the outer attribute set on FormKit. Works when you make that change.
https://stackblitz.com/edit/github-ahat4n?file=app.vue

Yeah, this is actually a bug — thanks for the check. We'll get it working with naked disabled but for now set it to disabled="true" and you should be set.


Feat: hardware details header

Adds the header for hardware details page, containing the Breadcrumb and the table with all trees containing that hardware. Rows should be selectable once the filtering takes place.
How to test: go to a hardware details page such as http://localhost:5173/hardware/libretech,all-h3-cc-h5
Closes #497 and #498

Please hide the checkbox, you can hide with a comment for now


Parsing big integers - tracking issue

This is a tracking issue for parsing big integers properly within the pubsub query and the indexer code.
Currently we have a few places where we either handle big ints by parsing them as floats, or we do not handle them at all.
This issue spans accrross different CometBFT versions.

[ ] #726  - relates to v0.37.x and earlier versions
[ ] #769  - relates to main and v0.38.x
[ ] #767 - relevant for all CometBFT versions (including main).
For main and v0.37.x, it depends on resolving the previously listed issues first.

Should we mark this as a bug?

Yes, all the sub-issues are bugs, forgot to mark this one.


Add a generic Role model

Environment

Python version: 3.77
Nautobot version: 1.1.4

Proposed Functionality
Add a generic Role model, similar to Status to avoid creating multiple models that are describing pretty much the same things.
Currently in Core, we are leveraging roles in multiple places :

Dynamic based on database model : ipam:Role, dcim:DeviceRole, dcim: RackRole
Static : ipam ? IPAddressRoleChoices

I wouldn't be surprised if we are using roles in more places

Use Case

Improve the user experience by allowing users to manage roles in a single place.
Reduce the effort to add role to more models, as part of core or as part of a plugin
Allow static role to become dynamic.

Database Changes
Yes
At a minimum we need to add a new role model, most likely as part of Extras that will be very similar to Status.
At some point, it would be good to migrate all existing roles to this new model but it would most likely be a breaking change
External Dependencies
No

Yeah we talked about this back pre-1.0 for things like "profiles" e.g. "interface profiles" but just using roles generically. I'm a fan.

This would probably be difficult to implement in a non-breaking / backwards compatible way. Need to consider impact to the REST API, plugins potentially consuming these data models, etc.
Setting that aside, it would be worth looking at whether we even need separate data models for "status" and "role" or whether these are just two different groupings/uses of the same generic model type behind the scenes? (In theory even "tag" could be subsumed into this as well...)
Currently we're leaning towards targeting this as a 2.x feature - not to rule out implementing it before then if these sorts of concerns can be addressed in a backwards-compatible way.

Understood, retrofitting the existing models wouldn't be backward compatible
It might be possible to introduce the new Role model first, to allow plugins to leverage it and retrofit the existing models later as part of a major release.

This is probably something that could be implemented across the boards, including supplanting Location Type. @bryanculver

I can also see use in this as a feature for plugin developers, if all I need is an extendable list of possible types otherwise I would have to define a custom model with lots of extra overhead, if we had this and it was extendable to plugin models that could save me as a plugin developer some time. One example from a currently open-sourced plugin would be nautobot_bgp_models.models.PeeringRole, this is a very simple model without custom logic that just provides an extendable role field.

Implemented for 2.0 by #2822.


Add a unit test to check CFI range generation when start and end node do...

...n't have the same level
Related to https://github.com/readium/readium-cfi-js/issues/28

FYI: I've just tested your new unit test entry, and Karma (Chrome 40.0.2214 on Windows 8.1) now indeed fails when the grunt command is invoked (my main development machine is OSX, but as you can see I am double-checking the build processes under my secondary Windows box)

I fixed it locally (code not on GitHub) by replacing:
https://github.com/readium/readium-cfi-js/blob/develop/src/models/cfi_generator.js#L406
if (topLevelElement === 'html') {
    return "!" + elementStep;
} else {
    return elementStep;
}

with:
if (topLevelElement === 'html') {
    return "!" + elementStep;
} else {
    if ($currNode.is(topLevelElement)) {
        return "";
    } else {
        return elementStep;
    }
}

...but I'm not 100% sure this is correct. Can anyone review?

I'm not sure we'll ever see the case where the topLevelElement (which is the common ancestor of the elements of a range) is 'html' since we typically have a 'body' element wrapping content.   That would assume we have two elements in different 'body' tags which is illegal as far as I know.
I believe you need to handle the $currNode.is(topLevelElement) case and set to "" no matter what, whether topLevelElement is html or not (which it shouldn't be), otherwise you could duplicate the common element step as is the current defect.
So I would add a conditional clause prior to the html check to be sure:
// --- new clause ---
if ($currNode.is(topLevelElement)) {
elementStep = "";
}
// --- end new clause ---
...
if (topLevelElement === 'html') {
return "!" + elementStep;
} else {
return elementStep;
}

Thanks @dannyvenier
Could you please review @dmitrym0 's Pull Request?
https://github.com/readium/readium-cfi-js/pull/32
Many thanks!