project name not support more than 2 components,  V2 registry API does not enforce this

docker version
Client:
Version:      17.06.0-ce
API version:  1.30
Go version:   go1.8.3
Git commit:   02c1d87
Built:        Fri Jun 23 21:20:36 2017
OS/Arch:      linux/amd64
Server:
Version:      17.06.0-ce
API version:  1.30 (minimum version 1.12)
Go version:   go1.8.3
Git commit:   02c1d87
Built:        Fri Jun 23 21:21:56 2017
OS/Arch:      linux/amd64
Experimental: false
#Problem recurrence
1, created  "aaaa" project by harbor-ui
2, use docker push xxxx.com/aaaa/bb/2048:0.1  is ok
3, start replicate to another node，then go panic
check code found error occur in  Checker -> createProject -> validateProjectReq
func validateProjectReq(req projectReq) error {
	pn := req.ProjectName
	if isIllegalLength(req.ProjectName, projectNameMinLen, projectNameMaxLen) {
		return fmt.Errorf("Project name is illegal in length. (greater than 2 or less than 30)")
	}
	validProjectName := regexp.MustCompile(`^` + restrictedNameChars + `$`)
	legal := validProjectName.MatchString(pn)
	if !legal {
		return fmt.Errorf("project name is not in lower case or contains illegal characters")
	}
	return nil
}

also found get project name use func
func getProjectName(repository string) string {
	repository = strings.TrimSpace(repository)
	repository = strings.TrimRight(repository, "/")
	return repository[:strings.LastIndex(repository, "/")]
}

Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [replication.go:73]: data: {PolicyID:35 Repo: Operation:transfer TagList:[]}
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [replication.go:92]: repo list: [aaaa/bbb/2048]
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [replication.go:124]: Creating job for repo: aaaa/bbb/2048, policy: 35
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [replication.go:129]: Send job to scheduler, job id: 1589
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017/09/06 03:53:11 #033[1;34m[router.go:829][D] | POST       | /api/jobs/replication                    | 9.402363ms       | match      | /api/jobs/replication                    | #033[0m
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [workerpool.go:137]: Trying to dispatch job: 1589
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [workerpool.go:62]: worker: 1, will handle job: 1589
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [statemachine.go:61]: Job id: 1589, transiting from State: pending, to State: running
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [statemachine.go:74]: Job id: 1589, no handler found for state:pending, skip
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [statemachine.go:88]: Job id: 1589, transition succeeded, current state: running
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [statemachine.go:97]: Job id: 1589, next state from handler: _continue
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [statemachine.go:109]: Job id: 1589, Continue to state: initialize
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [statemachine.go:61]: Job id: 1589, transiting from State: running, to State: initialize
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [transport.go:50]: 200 | GET http://registry:5000/v2/aaaa/bbb/2048/tags/list
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [statemachine.go:88]: Job id: 1589, transition succeeded, current state: initialize
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [statemachine.go:118]: Job id: 1589, next state from handler: check
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: 2017-09-06T03:53:11Z [DEBUG] [statemachine.go:61]: Job id: 1589, transiting from State: initialize, to State: check
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: panic: runtime error: invalid memory address or nil pointer dereference
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x60 pc=0x8ed5a7]
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]:
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: goroutine 52 [running]:
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: github.com/vmware/harbor/src/jobservice/replication.(*Checker).enter(0xc42000e0a0, 0xd76c313890a4feb8, 0xc4202dda70, 0x415387, 0xc4202dda90)
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: #011/root/go/src/github.com/vmware/harbor/src/jobservice/replication/transfer.go:195 +0x187
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: github.com/vmware/harbor/src/jobservice/replication.(*Checker).Enter(0xc42000e0a0, 0xc42015c6f0, 0xabc250, 0x5, 0xc42036a9b8)
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: #011/root/go/src/github.com/vmware/harbor/src/jobservice/replication/transfer.go:179 +0x32
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: github.com/vmware/harbor/src/jobservice/job.(*SM).EnterState(0xc4202f9c00, 0xabc250, 0x5, 0x2, 0x2, 0x0, 0x0)
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: #011/root/go/src/github.com/vmware/harbor/src/jobservice/job/statemachine.go:80 +0x2e5
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: github.com/vmware/harbor/src/jobservice/job.(*SM).Start(0xc4202f9c00, 0xabed66, 0x7)
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: #011/root/go/src/github.com/vmware/harbor/src/jobservice/job/statemachine.go:117 +0x20a
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: github.com/vmware/harbor/src/jobservice/job.(*Worker).handleRepJob(0xc420327980, 0x635)
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: #011/root/go/src/github.com/vmware/harbor/src/jobservice/job/workerpool.go:96 +0x3ff
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: github.com/vmware/harbor/src/jobservice/job.(*Worker).Start.func1(0xc420327980)
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: #011/root/go/src/github.com/vmware/harbor/src/jobservice/job/workerpool.go:63 +0x1e2
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: created by github.com/vmware/harbor/src/jobservice/job.(*Worker).Start
Sep  6 11:53:11 <IP_ADDRESS> jobservice[2054]: #011/root/go/src/github.com/vmware/harbor/src/jobservice/job/workerpool.go:71 +0x3f

https://docs.docker.com/registry/spec/api/#overview
Classically, repository names have always been two path components where each path component is
less than 30 characters. The V2 registry API does not enforce this. The rules for a repository name are as follows:

1. A repository name is broken up into path components. A component of a repository name must
be at least one lowercase, alpha-numeric characters, optionally separated by periods,
dashes or underscores. More strictly, it must match the regular
 expression [a-z0-9]+(?:[._-][a-z0-9]+)*.

2. If a repository name has two or more path components,
they must be separated by a forward slash (“/”).The total length of a repository name,
 including slashes, must be less than 256 characters.

3. These name requirements only apply to the registry API and should accept a superset of what is
 supported by other docker ecosystem components.

This is a known issue and has been fixed in version 1.2, please upgrade to the latest version.


[Task]: Restructuring groupButtons property value

Is there an existing issue for this?

[X] I have searched the existing issues

SubTasks
Internal discussion - https://theappsmith.slack.com/archives/C02K0SZQ7V3/p1663054058685329?thread_ts=1662990518.868189&cid=C02K0SZQ7V3
Use-case for binding in groupButtons
{{ButtonGroupWidget.groupButtons.groupButton1.isVisible}}

[ ] Restructure groupButtons data to not have hash keys
[ ] new custom button label shouldn’t ideally be named Group Button 1 as property name groupButton1 is already taken
[ ] Enable autocomplete for groupButtons

Another user reported this issue.


[Addition]:really a gamer

Hotspot b58 Addresses
112HFXs3qQdiawpAY21AXqe8VttVr5mr4JyyvRsQaH5BSjX1d68S
112Axp9tBiWhUf7Ts3XZFu4ZgT4BDrdfjwUY4z4rYGKAua6DJKMC
112U3Fve7X9RqZjb72YsqP1ES3Bz1YXmAHV7w8MZh2yAWhnioByk
11zJe3pdSnebrpvLKdyASG3WNGG8zNfu3hPdR5RwGNxSG2jLchU
112TVd4vFuP8NKZtsFvAquAdzx6P8E7KaQmnwXVF4Nq5KmjxUgoT
11238cQMCPg7bmMFHx6Ch4UkVvZTMn8abnsyvyVeJYmbsaP2nJmF
11kUCBSH7Xen2ZJdjnzz7odNhm7ptrDPHoW5cpmbYGjnstm3DsG
11BahZBm1ao9VzWyRyZ9N5BQ13NBh2TvqSTMYzqkWQy7khL3b8b
1126WYw3su7Gur69ZVxYtVTEJuxQ5yqLoHFcyk2uSicFVuo5hP1N
11RNrwjwQuH2f36n8S5moVXBFnecjzzQAL9iTMJkxK7wtsabjPX
Discord Handle
No response
Reason(s)
impossible witness, impossible distance.
one hotspot per wallet, good job.
please pay attention to it.

We have taken into account this addition request in the next iteration of the denylist. Some or all of the Hotspots listed may be added to the denylist. 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.


Constantine development

Dear PA,
I have mistakenly pushed my main branch, and I have tried to fix it by cherry-picking previous commit and make my ConstantineDevelopment branch ahead of main branch. I think other than modify the .git directory and change the git objects directly, I do not have other methods to make it original. I deeply realized my fault, and I treat it as an important experience for my future development.
Other than this mistake, my code works well for Google's requirement.
Thanks for review!

Dear PA,
I have finished the library part. I chose the datastore library to save the message from the visitors to my site. In fact, it is the first time I have used the No-SQL database, and I felt really excited.
I still realized a problem is with the logistic of my web app because it allows all users to delete and view all messages. I will try to add the authorization part to my site next time to allow only a group of users (or only me) to view and delete messages.
Thanks for the review!


ReferenceError: Can't find variable: WeakMap

Hi @jrussumbrella, thanks for posting an issue.
Can you tell me more about how I can reproduce the error? Thanks!

Hello sir @adriancarriger, I opened my projects on safari for windows and I got this error, everything works well on chrome, mozilla and ie 11 but not on safari for windows.

Maybe there's a problem in browser compatibility

You might try throwing this polyfill in and see if it fixes your issue: https://github.com/polygonplanet/weakmap-polyfill/blob/master/weakmap-polyfill.min.js

Thanks sir @adriancarriger this fixed my issue, however im still getting an error. Frosted glass is not working in ie 11

This Stack Overflow answer seems similar to your new issue. It looks like another polyfill might help. Good luck! 🍀

Seems like the feature of frosted glass is not working in ie 11. It works well in chrome, hopefully it will works well in other browsers. :(


Max bucket limit in aggregation

A max bucket limit was introduced here: https://github.com/quickwit-oss/tantivy/issues/1331.
It does not take into account a lot of final buckets when merging intermediate buckets.

Superseeded by https://github.com/quickwit-oss/tantivy/issues/1822


Functions in SceneConfig do not have the right context value (this)

Version

Phaser Version: 3.18

Operating system: N/A

Browser:
N/A

Description
When creating a Game instance, the scene option allows to define functions like create, init, preload and update. All of these have access to the scene through this but this isn't set in typings forcing the user to add the parameter manually:
new Phaser.Game({
  scene: {
    preload(this: Phaser.Scene) {}
  }
})

Example Test Code
new Phaser.Game({
  scene: {
    preload() {
      this.load.setBaseURL('') // property preload does not exist on type Function | Phaser.Scene | Phaser.Scene[] | Phaser.Types.Scenes.SettingsConfig | Phaser.Types.Scenes.SettingsConfig[] | Phaser.Types.Scenes.CreateSceneFromObjectConfig | Phaser.Types.Scenes.CreateSceneFromObjectConfig[] | Function[]
    }
  }
})

Additional Information
I tried adding @this to the JsDocs but it is omitted (https://github.com/photonstorm/phaser/pull/4668#issuecomment-513569021)
/**
 * Can be defined on your own Scenes.
 * This method is called by the Scene Manager when the scene starts, before `preload()` and `create()`.
 *
 * @callback Phaser.Types.Scenes.SceneInitCallback
 * @since 3.0.0
 *
+ * @this {Phaser.Scene}
 * @param {object} data - Any data passed via `ScenePlugin.add()` or `ScenePlugin.start()`. Same as Scene.settings.data.
 */

Thank you for submitting this issue. We have fixed this and the fix has been pushed to the master branch. It will be part of the next release. If you get time to build and test it for yourself we would appreciate that.


Docker container with koel behind nginx reverse proxy in non-root

Description
I freshly installed Koel using the recommended Docker image and configured it to work under the Nginx reverse proxy in subfolder /koel. The page loads, but the most of the content is missing, and the links to the content are broken (https://example.com/img/icon.png instead of https://example.com/koel/img/icon.png). I tried to provide .env to container with both APP_URL and FORCE_HTTPS, but no luck - page still blank. It feels that variables are not passed properly for some reason.
If I revert my current Nginx config to use / - everything works fine.
Nginx confix
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

upstream koel {
    server <IP_ADDRESS>:5050;
    keepalive 64;
}

server {
    server_name example.com www.example.com;
    index index.html index.htm index.php;
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    client_max_body_size 100M;
    client_body_timeout 30s;
    server_tokens off;

    location /koel {
        proxy_http_version 1.1;
        proxy_pass http://koel;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Script-Name /koel;

        gzip            on;
        gzip_types      text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json;
        gzip_comp_level 9;

        location ~ /koel/media/ {
            internal;
            # A 'X-Media-Root' should be set to media_path settings from upstream
            alias       $upstream_http_x_media_root;
            #access_log /var/log/nginx/koel.access.log;
            #error_log  /var/log/nginx/koel.error.log;
        }
        location ~ \.php$ {
            #try_files $uri $uri/ /index.php?$args;

            fastcgi_param     PATH_INFO $fastcgi_path_info;
            fastcgi_param     PATH_TRANSLATED $document_root$fastcgi_path_info;
            fastcgi_param     SCRIPT_FILENAME $document_root$fastcgi_script_name;
            # PHP7
            fastcgi_pass              unix:/var/run/php/php7.0-fpm.sock;
            # PHP5
            #fastcgi_pass             unix:/var/run/php5-fpm.sock;
            fastcgi_index             index.php;
            fastcgi_split_path_info   ^(.+\.php)(/.+)$;
            fastcgi_intercept_errors  on;
            include                   fastcgi_params;
        }
    }
}

Docker-compose.yml
version: '3'

services:
  koel:
    image: hyzual/koel
    depends_on:
      - database
    ports:
      - "${PORT}:80"
    environment:
      - DB_CONNECTION=pgsql
      - DB_HOST=database
      - DB_USERNAME=koel
      - DB_PASSWORD=password
      - DB_DATABASE=koel
    volumes:
      - "${MOUNT_MUSIC}:/music"
      - "${MOUNT_COVERS}:/var/www/html/public/img/covers"
      - "${MOUNT_INDEX}:/var/www/html/storage/search-indexes"
      - "${MOUNT_ENV}:/var/www/html/.env"
  database:
    image: postgres:13
    volumes:
      - "${MOUNT_SQL}:/var/lib/postgresql/data"
    environment:
      - POSTGRES_DB=koel
      - POSTGRES_USER=koel
      - POSTGRES_PASSWORD=password

koel.env
APP_URL=https://example.com/koel
FORCE_HTTPS=true
APP_KEY=key

Docker-compose.env
# Port to expose HTTP service
# Set to <IP_ADDRESS>:port if you wish to reverse-proxy the docker's port,
# otherwise the port specified here will be publicly accessible
PORT=<IP_ADDRESS>:5050

# Directory to store koel img covers
MOUNT_COVERS=/var/local/koel/covers

# Directory to store koel music
MOUNT_MUSIC=/var/local/koel/music

# Directory to store koel search index
MOUNT_INDEX=/var/local/koel/index

# Directory to store database files
MOUNT_SQL=/var/local/koel/sql

# Koel .env file
MOUNT_ENV=./koel.env

Environment

Koel version v5.1.8
OS: Ubuntu 20.04
Browser: Firefox
PHP version Latest as of writing
Node version Latest as of writing

Please report in the right repo. Transferred for you.

@phanan thanks for the transfer, didn't know one can do that, neat feature :).
@INNKCake From what I can gather, it looks like you should be using APP_URL var like you said you used. By any chance, does it make a difference if you provide APP_URL through the environment section in Docker-compose.yml ?
Also, koel uses a lot of caching, does it help if you run php artisan cache:clear in the koel container ? I'm thinking that maybe the paths to the assets is somehow cached and it would still give you the default despite APP_URL having changed.

@phanan thank you for the transfer.
@Hyzual I'll try your suggestions.

@phanan thank you for the transfer.
@Hyzual I'll try your suggestions.

I apparently got it to work with a similar setup now, did you get this fixed @INNKCake ?

I apparently got it to work with a similar setup now, did you get this fixed @INNKCake ?

@xeruf Sadly, no. Same problems. Tried a coulpe of times and desided to leave it for now.
Can you share your koel/nginx configuration that works? Would be great!

Nginx config:
server {
  listen 80;
  listen [::]:80;
  server_name koel.example;
  location / { return 301 https://$host$request_uri; }
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name koel.example;
  ssl_certificate /etc/letsencrypt/live/koel.example/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/koel.example/privkey.pem;

  location / {
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;

    proxy_pass              http://localhost:1380/;

    proxy_read_timeout      600s;
    proxy_send_timeout      600s;
  }
}

docker-compose.mysql.yml
version: '3'

services:
  koel:
    image: hyzual/koel
    depends_on:
      - database
    ports:
      - 1380:80
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=database
      - DB_USERNAME=koel
      - DB_PASSWORD=PASS
      - DB_DATABASE=koel
    volumes:
      - /srv/funkwhale/data/music:/music
      - covers:/var/www/html/public/img/covers
      - search_index:/var/www/html/storage/search-indexes
      - ./koel.env:/var/www/html/.env

  database:
    image: mysql/mysql-server:5.7
    volumes:
      - db:/var/lib/mysql
    environment:
      MYSQL_DATABASE: koel
      MYSQL_USER: koel
      MYSQL_PASSWORD: PASS
      MYSQL_ROOT_PASSWORD: PASS

volumes:
  db:
    driver: local
  music:
    driver: local
  covers:
    driver: local
  search_index:
    driver: local

koel.env
APP_URL=https://koel.example
FORCE_HTTPS=true

Note that I am using the music collection from Funkwhale as that is what I tried before and am now using Ampache as I realized that its feature-richness far surpasses the modern interface of Koel for my case. But all three are still running perfectly well :)
I actually initially had a blank response due to a misconfigured DNS entry :man_facepalming: and then I had forgotten to run the initialization.

I'd also prefer to reverse proxy koel, so certs & such are handled by caddy like everything else on my system. However, I can't even seem to figure out how I'm supposed to set the domain name/cert or even serve koel in any capacity. After successfully installing, I tried php artisan serve, but reverse-proxying localhost:8000 (which is where it said the server was being served), does nothing. I'd assume this is because it's on that port inside of the docker container, but there doesn't appear to be any mention of how else you're supposed to serve it.
also, what is koel.env and Docker-compose.env, I don't have those in the dir from the official release.

Oh my god this needs to be placed or at least linked to chronologically i read this so many times and skipped it every time because i thought it was for manual installs only
https://github.com/koel/docker#useful-environment-variables


Autosave with IndexedDB

By the way, why not use IndexedDB instead of localStorage? And save just a couple of recent saves just in case.

It has already been applied in the last update.


Modals unification, WIP

ref: #6266, #6273
Quickly:

branch, tag and pull_requests are now on new popups
pull_requests intentionally left on a separate page to serve as a POC - will move to in-page popup after comments/discussions
proper UI design is intentionally out of this PR

TODO: describe details
Screenshots:

ready for testing and review. See the PR description. I will also add more technical details later.
@larshp @mbtools

... Not sure I understood the comment :)
Yes, that's the plan. They are intentionally abstract enough so if the direction looks good I'll move them yet in this PR
Will have a look - that was some disappearing bug so thank for the sequence
... mmm, I just wanted to avoid designing in this PR cause I will then end up rewriting the whole component (I'm sure it must not be the form in the background) ... and I'm a bit tired of this piece of code already :) I'll see, maybe will make some CSS border over the options ...

Some details

The new CSS overwrites max-width:

Before:

After:

zcl_abapgit_gui_picklist->get_form_schema

    ro_form->radio(
      iv_name     = c_radio_name
      iv_condense = abap_true     "<<< insert
      iv_label    = mv_title ).

After, it's nicer for branches (few entries):

but for tags it becomes too long:

fixed 2 and 4 (though arguable ... maybe will try with border yet ...)
added a graceful back feature - allows A) exiting popups with Esc (hmm ... maybe also applicable for the hotkeys ?) B) graceful shutdown of a page (if ever needed)
3 - didn't check yet
1 - I don't understand. But the modal is a completely new CSS! How can it impact the existing layouts?

looks good. i will check the css issue

that works

<body class="centered"> was changed to <body class="">

<body class="centered"> was changed to <body class="">

In this PR ?

3 (pages "stuck", disabled events) - this one is a bit tricky ... I see an easy path via the graceful back but it's not as universal as I'd like to ... hmmm

PRs

OK, now I think it's not bad :)
There is potential room for unifications for popup handling in render and on_event, but I wouldn't do it now - needs more use-cases to observe.
ready for testing, review and test with the transpiled version ;)
Next steps:

rewrite picklist internals - it should be based on a form. In particular, no clear way to specify a value selected-by-default. And no room for picklist-specific features (maybe extra buttons ? honestly, I didn't think what are those features, but I feel there are some)

on "Change ELSE part to ELSEIF" check. I'm not insisting and will fix it if requested, but ...
I really think this rule causes more harm than benefits. This is a good example. What we have:
if popup is created
  do this
else (if popup has returned)
  do that

what rules suggests:
if popup is created
  do this
elseif popup->is_not_cancelled
  do that

Although the latter "optimize" the code by 1 line it makes it less readable. In the first case, there is a clear distinction between "what happened" modes. It is also easy to refactor it (if ever needed) and split it into 2 methods. While elseif need a bit more effort. Yet my main claim is about readability. In the latter case, I need to additionally think that elseif something also means the "return" mode of the popup. Or is it only so for me?
@larshp

The issue with missing class in <body> remains.
The new constructor in zcl_abapgit_gui_page_hoc overwrites the default for ms_control-page_layout = 'centered' (set in zcl_abapgit_gui_page) with initial.

🎉 🎉 🎉
Nice feature. A piece of good collaboration from my perspective :)
Lars, thanks for cold-starting the hard stuff (as usual), Marc, thanks for the cool idea and POC with in-page popups.
On my side:

some docs on popups
some more refactoring of the sett_remo (started but not finished. was very busy with personal matters this weekend)

Docs draft: https://github.com/abapGit/docs.abapgit.org/pull/137


merge prettier to eslint, like jscs

Hello,

long time ago there was jscs project, merged to eslint
eslint and babel use the same acorn.js parser

It will be great, if prettier will be merged to eslint and after eslint merged to babel toolchain.
So, what use think about working with eslint team together?

duplicate of https://github.com/standard/standard/issues/811 ?


Support BigDecimal comparison with and initialization from BigRational

This PR allows below code to work:
def add_numbers(*numbers : Number)
  numbers.reduce(0.to_big_d) { |sum, n| sum + n.to_big_d }
end

add_numbers(1, 1.23, 3.to_big_d, 3.3.to_big_r) # => 8.53

Is it GTG? Could we have a 2nd review here?


Include latest in integration test

Signed-off-by: Rob Landers<EMAIL_ADDRESS>Description
Making sure integration tests still pass
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[ ] Tests pass
[x] Created/updated tests
[ ] Extended the documentation

Codecov Report

Merging #134 (912f252) into main (d17e37e) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##               main     #134   +/-   ##
=========================================
  Coverage     73.48%   73.48%
  Complexity      562      562
=========================================
  Files            72       72
  Lines          1746     1746
=========================================
  Hits           1283     1283
  Misses          463      463

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


[ZEPPELIN-2598] Securing Zeppelin with OpenID Connect

What is this PR for?
Integrating Open ID connect login into Zeppelin leveraging Shiro(already present) and Pac4J( that needs to be in the classpath).
Modifications done here should not affect any existing mechanisms but simply integrates and enable new once.
What type of PR is it?
[Improvement]
What is the Jira issue?
[ZEPPELIN-2598]
Questions:

Does the licenses files need update?
Is there breaking changes for older versions?
Does this needs documentation?

i've just tried to login using the config info from online demo for oidc-client in https://demo.c2id.com/oidc-client using modified config below
oidcConfig = org.pac4j.oidc.config.OidcConfiguration
oidcConfig.discoveryURI = https://demo.c2id.com/oidc-client/cb
oidcConfig.clientId = 000123
oidcConfig.secret = 7wKJNYFaKKg4FxUdi8_R75GGYsiWezvAbcdN1uSumE4
oidcConfig.clientAuthenticationMethodAsString = client_secret_basic
oidcClient = org.pac4j.oidc.client.OidcClient
oidcClient.configuration = $oidcConfig
clients = org.pac4j.core.client.Clients
clients.callbackUrl = http://localhost:8080/api/callback
clients.clients = $oidcClient
requireRoleAdmin = org.pac4j.core.authorization.authorizer.RequireAnyRoleAuthorizer
#requireRoleAdmin.elements = <your role>
config = org.pac4j.core.config.Config
config.clients = $clients
#config.authorizers = admin:$requireRoleAdmin
pac4jRealm = io.buji.pac4j.realm.Pac4jRealm
pac4jSubjectFactory = io.buji.pac4j.subject.Pac4jSubjectFactory
securityManager.subjectFactory = $pac4jSubjectFactory
oidcSecurityFilter = io.buji.pac4j.filter.SecurityFilter
oidcSecurityFilter.config = $config
oidcSecurityFilter.clients = oidcClient
callbackFilter = io.buji.pac4j.filter.CallbackFilter
callbackFilter.defaultUrl = http://localhost:8080
callbackFilter.config = $config
securityManager.realms = $pac4jRealm

...

/api/callback = callbackFilter
#/** = anon
/** = authc

but getting exception
ERROR [2017-06-01 14:49:39,711] ({qtp764577347-20} LoginRestApi.java[postLogin]:111) - Exception in login:
org.apache.shiro.authc.pam.UnsupportedTokenException: Realm [io.buji.pac4j.realm.Pac4jRealm@734cf9ff] does not support authentication token [org.apache.shiro.authc.UsernamePasswordToken - alice, rememberMe=false].  Please ensure that the appropriate Realm implementation is configured correctly or that the realm accepts AuthenticationTokens of this type.
	at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doSingleRealmAuthentication(ModularRealmAuthenticator.java:178)
	at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doAuthenticate(ModularRealmAuthenticator.java:267)
	at org.apache.shiro.authc.AbstractAuthenticator.authenticate(AbstractAuthenticator.java:198)
	at org.apache.shiro.mgt.AuthenticatingSecurityManager.authenticate(AuthenticatingSecurityManager.java:106)
	at org.apache.shiro.mgt.DefaultSecurityManager.login(DefaultSecurityManager.java:270)
	at org.apache.shiro.subject.support.DelegatingSubject.login(DelegatingSubject.java:256)
	at org.apache.zeppelin.rest.LoginRestApi.postLogin(LoginRestApi.java:80)

please let me know if you can see any apparent misconfiguration

Hi, I have a question. Does this PR means, zeppelin can be OAuth client? For example github, google, ...

@1ambda potentially yes
@khalidhuseynov thanks for pointing out a public server I can test! I will go through later on
B.t.w. I realized that the MVP to get this working is just upgrading shiro and the ui triggers,
the rest of the libraries can be provided on an ad-hoc basis (i.e. in a lib dir) without any need of packaging them into zeppelin itself, this will enable also users to choose the preferred version.

Then can we add detailed documentation for "How to use this feature?"
That's because users are having trouble when they setup security things and there is no proper documentation. LDAP is one example.
So, it would be nice to include some examples,

How to setup Google OAuth
How to setup Github OAuth
...

@1ambda To be honest I'm not such an expert and I'm just integrating from a technical POV a solution that other experts in team found.
I will love to have such documentation too, but I cannot realistically propose myself for writing it... sorry.

do this minimal and cleaned up version needs anything else to be worked out in order to be merged?

It turns out that the Pac4JPrincipal provided by buji is returning
CommonProfile.getId() and not the getUsername() or getDisplayName() values
for getName().
https://github.com/bujiio/buji-pac4j/blob/master/src/main/java/io/buji/pac4j/subject/Pac4jPrincipal.java
I believe the intent of the Principal.getName() method is to return a
human-friendly name, not a computer-friendly identifier.  I created an
issue on the Buji github project to see if they are open to changing it.
https://github.com/bujiio/buji-pac4j/issues/61
On Fri, Jun 9, 2017 at 6:50 AM, Andrea Peruffo<EMAIL_ADDRESS>wrote:

@andreaTP commented on this pull request.
In zeppelin-web/src/components/navbar/navbar.html
https://github.com/apache/zeppelin/pull/2373#discussion_r121099593:

@@ -86,7 +86,7 @@

         {{ticket.principal}}

         {{ticket.screenUsername}}

@volumeint https://github.com/volumeint I like your proposal and
implemented it, unfortunately it turns out that for example with Keycloak
from "getName" I got instead the UUID
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/apache/zeppelin/pull/2373#discussion_r121099593, or mute
the thread
https://github.com/notifications/unsubscribe-auth/Aa_ih9guSoye9v10b1bqHjOCfWJ-ULxeks5sCSORgaJpZM4NpYAh
.

I sincerely think that this implementation is enough to unlock the usage of pac4j, buji (due to the rest of updates sent there).
I think that the name parsing can be refactored later on, actual implementation is not optimal but "good enough" to me(i.e. I have no cases where it fails), in case @volumeint could you share your configuration to login through other oidc providers in docs in another PR?
Please let try to finalize this in this week
cc. @Leemoonsoo @1ambda @felixcheung

ping

@andreaTP , a bit strange why Jenkins succeeds, running "mvn clean package -DskipTests" fails with the below errors introduced in this pull request. Can you have a look? Thanks.

.../zeppelin-web/src/app/app.js
[INFO]   166:1   error  More than 1 blank line not allowed            no-multiple-empty-lines
[INFO]   180:3   error  Unexpected var, use let or const instead      no-var
[INFO]   180:27  error  Extra space before value for key 'headers'    key-spacing
[INFO]   181:5   error  Strings must use singlequote                  quotes
[INFO]   181:25  error  Strings must use singlequote                  quotes
[INFO]   182:5   error  Expected indentation of 2 spaces but found 4  indent
[INFO]   189:50  error  Strings must use singlequote                  quotes
[INFO]   190:18  error  Strings must use singlequote                  quotes
[INFO]   196:5   error  Unexpected var, use let or const instead      no-var
[INFO]   197:30  error  Expected '===' and instead saw '=='           eqeqeq
[INFO]   197:49  error  Expected '!==' and instead saw '!='           eqeqeq
[INFO]   198:7   error  Expected space or tab after '//' in comment   spaced-comment

@necosta checked again but it works for me and on CI ... I have had this problem once try to fetch and pull and see if this solves

@andreaTP , sorry, I forgot to add. You need to test on top of latest master. nokia:keycloak is 45 commits behind apache:master . That could explain why it's not failing here. Thanks.

rebased on top of master and fixed style issues, this PR is taking too long for reviewers...

LGTM

@Leemoonsoo @felixcheung @1ambda
I have had to rebase on master again after a week of no updates.
Please tell me what to do to on this to get it merged or why this is not going to be merged.
Thanks a lot in advance!

ok, now also CI is happy  :-)

thanks
merging if no more comment

thanks a lot!

@andreaTP After this PR, an error is thrown like in dev mode. To reproduce,

cd zeppelin-web
npm install (only once)
npm run dev

Could you check it?

I think this issue is addressed https://github.com/apache/zeppelin/pull/2463 I'm not sure if having a switch for prod and dev is good BTW ....

Hi @andreaTP, All,
Could anyone please help me to understand this pull request better ?
If I integrate all the changes as per this pull request and amend the shiro.ini file with OIDC (pac4j) Keycloak configuration settings, I do not get it working due to a couple of reasons:

If I keep /** = authc in [urls] uncommented I get Zeppelin's login prompt to enter username and password - so I am not redirected to Keycloak... In addition if I enter username and password which is registered in Keycloak I get an exception:

org.apache.shiro.authc.pam.UnsupportedTokenException: Realm [io.buji.pac4j.realm.Pac4jRealm@5e7a3fcc] does not support authentication token [org.apache.shiro.authc.UsernamePasswordToken - sarunas, rememberMe=false].  Please ensure that the appropriate Realm implementation is configured correctly or that the realm accepts AuthenticationTokens of this type.

If I comment /** = authc in [urls] section out, nothing happens as Zeppelin's main screen is loaded without any authentication nor transferring to Keycloak... and it is supposed as to be-no auth required.

My shiro.ini example:

Click to expand

[main]
securityManager.realms = $pac4jRealm
oidcConfig = org.pac4j.oidc.config.OidcConfiguration
oidcConfig.discoveryURI = http://localhost:8080/auth/realms/demo/.well-known/openid-configuration
oidcConfig.clientId = zeppelin
oidcConfig.secret = 1baabe32-50bc-49c4-9ac3-a303a9f953c5
oidcConfig.clientAuthenticationMethodAsString = client_secret_basic
oidcClient = org.pac4j.oidc.client.OidcClient
oidcClient.configuration = $oidcConfig
clients = org.pac4j.core.client.Clients
clients.callbackUrl = http://localhost:8082/api/callback
clients.clients = $oidcClient
#requireRoleAdmin = org.pac4j.core.authorization.authorizer.RequireAnyRoleAuthorizer
#requireRoleAdmin.elements = zeppelin_group
config = org.pac4j.core.config.Config
config.clients = $clients
config.authorizers = admin:$requireRoleAdmin
pac4jRealm = io.buji.pac4j.realm.Pac4jRealm
pac4jSubjectFactory = io.buji.pac4j.subject.Pac4jSubjectFactory
securityManager.subjectFactory = $pac4jSubjectFactory
oidcSecurityFilter = io.buji.pac4j.filter.SecurityFilter
oidcSecurityFilter.config = $config
oidcSecurityFilter.clients = oidcClient
callbackFilter = io.buji.pac4j.filter.CallbackFilter
callbackFilter.defaultUrl = http://localhost:8082
callbackFilter.config = $config
[urls]
/api/callback = callbackFilter
#/** = anon
/** = authc

So:

Has anyone managed to get Zeppelin integrated with e.g. Keycloak by means of shiro + pac4j oidc ?
Can anyone share example of their shiro.ini file if so ?
Is my understanding then correct that changes from this pull request are not enough for getting Zeppelin->pac4j-oidc->Keycloak mix working, we need some code adjustments in zeppelin-web project?

Hi @SarunasG , yes I'm using Zeppelin with Keycloak from what I can see the only missing bit in your configuration is:
/** = oidcSecurityFilter

Hi @andreaTP
Having this line /** = oidcSecurityFilter in  [urls] section fixed everything, now it works totally fine! Thank You very much for such a quick response and all the help to get it working!!

Hi All,
Have one more question related to OIDC enablement on Zeppelin. I am now able successfully authenticate my user and log into Zeppelin app by Shiro, OIDC and Keycloak, but unfortunately I am not able to log out. It loops when I click on Logout button keeping my user being logged in with the initial token id, and does not direct me to Keycloak for another login attempt.
The scenario is:

I hit default Zeppelin URL and then I am transferred to Keycloak for user credentials.
I authenticate by user name and password so am logged into Zeppelin.
I click on "Logout" button within Zeppelin app once I am there, then "Logout success" dialog box appears, and I am redirected to main Zeppelin screen.
baseUrlSrv.getRestApiBase() + '/login/logout' followed by window.location = baseUrlSrv.getBase() from navbar.controller.js
Once I am redirected to main page, default url is triggered and my user is logged in again without any promt for credentials because of stored token.

I also added a few lines into shiro.ini file just to try, which I thought might help but looks it has no effect.
[main]
logout.redirectUrl=http://localhost:8080/auth/realms/demo/protocol/openid-connect/logout

[urls]
/api/login/logout = logout

Currently I am trying to solve this logout issue (to get actually logged out & directed to Keycloack for authentication with e.g. another user credentials...) and find a solution, but maybe someone already did that ?
Any tips on how to log out from Zeppelin with or without code modifications would be very welcome !

Hi @SarunasG , actually I'm facing the very same situation here ...
I haven't had enough time to dig deeper, but it looks like that 'logout` action is not triggering the REST call to do a logout from the Oidc authority.
Eventually we will try to find a solution but please keep me copied if you can go further in your investigation too.

Hi! Please redirect your questions to<EMAIL_ADDRESS>or open a JIRA if there is a bug?

Is there any document or example to tell us how to use SSO function in zeppelin?

@1ambda Do you have a sample code to test this function?

@xixikaikai https://github.com/apache/zeppelin/pull/2373#issuecomment-323267967

I think the link is broken.
here: https://github.com/apache/zeppelin/pull/2373/files

actually a more detailed description is available here: https://github.com/apache/zeppelin/pull/2552/files

@andreaTP  thanks, I am now trying keycloak with the oidc

BTW  can I use local keycloak for oidc connect to zeppelin?
I now set up a local env of keycloak @andreaTP

@xixikaikai sure, we are using keycloak in production

hello  I've put the following libs into my 0.7.3's zeppelin lib folder,
But the errors occur, can I ask you for a help?

@andreaTP

$ cat  logs/zeppelin-zhengkai-zhengkais-MacBook-Pro.local.out  ZEPPELIN_CLASSPATH: ::/Users/zhengkai/Downloads/zeppelin-0.7.3-bin-all/lib/interpreter/*:/Users/zhengkai/Downloads/zeppelin-0.7.3-bin-all/lib/*:/Users/zhengkai/Downloads/zeppelin-0.7.3-bin-all/*::/Users/zhengkai/Downloads/zeppelin-0.7.3-bin-all/conf Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/beanutils/BeanIntrospector 	at org.apache.shiro.config.IniSecurityManagerFactory.<init>(IniSecurityManagerFactory.java:64) 	at org.apache.shiro.config.IniSecurityManagerFactory.<init>(IniSecurityManagerFactory.java:68) 	at org.apache.shiro.config.IniSecurityManagerFactory.<init>(IniSecurityManagerFactory.java:73) 	at org.apache.zeppelin.utils.SecurityUtils.initSecurityManager(SecurityUtils.java:55) 	at org.apache.zeppelin.server.ZeppelinServer.setupRestApiContextHandler(ZeppelinServer.java:324) 	at org.apache.zeppelin.server.ZeppelinServer.main(ZeppelinServer.java:179) Caused by: java.lang.ClassNotFoundException: org.apache.commons.beanutils.BeanIntrospector 	at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 	... 6 more

Again I've added more jars to zeppelin-0.7.3, but the error occur once more

Zeppelin is restarting ZEPPELIN_CLASSPATH: ::/Users/zhengkai/Downloads/zeppelin-0.7.3-bin-all/lib/interpreter/*:/Users/zhengkai/Downloads/zeppelin-0.7.3-bin-all/lib/*:/Users/zhengkai/Downloads/zeppelin-0.7.3-bin-all/*::/Users/zhengkai/Downloads/zeppelin-0.7.3-bin-all/conf Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/beanutils/BeanIntrospector 	at org.apache.shiro.config.IniSecurityManagerFactory.<init>(IniSecurityManagerFactory.java:64) 	at org.apache.shiro.config.IniSecurityManagerFactory.<init>(IniSecurityManagerFactory.java:68) 	at org.apache.shiro.config.IniSecurityManagerFactory.<init>(IniSecurityManagerFactory.java:73) 	at org.apache.zeppelin.utils.SecurityUtils.initSecurityManager(SecurityUtils.java:55) 	at org.apache.zeppelin.server.ZeppelinServer.setupRestApiContextHandler(ZeppelinServer.java:324) 	at org.apache.zeppelin.server.ZeppelinServer.main(ZeppelinServer.java:179) Caused by: java.lang.ClassNotFoundException: org.apache.commons.beanutils.BeanIntrospector 	at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 	... 6 more

Hello,
Has anyone tried with zeppelin with keycloak ?

@SarunasG @1ambda @khalidhuseynov @andreaTP Hello, is there any doc of details for me to add libs in 0.7.3 and by changing the shiro.ini config file to support open id?

Hello @xixikaikai ,
I am using zeppelin 0.8.0 and with the below changes i am able to integrate it with keycloak.
Dependencies to be added in zeppelin-0.8.0 lib folder:
buji-pac4j-3.0.0.jar
lang-tag-1.4.3.jar
json-smart-1.3.1.jar
commons-lang3-3.5.jar
commons-collections4-4.1.jar
pac4j-core-2.3.1.jar
oauth2-oidc-sdk-5.24.2.jar
mail-1.4.7.jar
shiro-crypto-hash-1.4.0.jar
shiro-crypto-core-1.4.0.jar
shiro-crypto-cipher-1.4.0.jar
shiro-core-1.4.0.jar
shiro-config-ogdl-1.4.0.jar
shiro-config-core-1.4.0.jar
shiro-cache-1.4.0.jar
pac4j-oidc-2.3.1.jar
slf4j-api-1.7.25.jar
shiro-web-1.4.0.jar
shiro-lang-1.4.0.jar
shiro-event-1.4.0.jar
I have added the shiro.ini conf and dependency in the attachment.
dep.txt

@ajaygk95 , thanks for sharing -  it worked for us! There are two not resolved questions still:

is it possible to define roles and users and have different permissions by using OpenID and Keycloak?
how to get real username in zeppelin in the top right corner instead of id from Keycloak?

@ajaygk95 , thanks for sharing - it worked for us! There are two not resolved questions still:
* is it possible to define roles and users and have different permissions by using OpenID and Keycloak?

* how to get real username in zeppelin in the top right corner instead of id from Keycloak?

Hi @pmuntyanu ,
I am also still figuring out the authorization part of user and role mapping.
For the username issue you can use pac4jRealm.principalNameAttribute = preferred_username under pac4jRealm section in your shiro.ini. This will display the actual username in your zeppelin UI.

Hi @ajaygk95 , it worked! I even changed the preferred_username to the email  - for my use case, it is better. With regards to the roles and permissions, I think it is possible to use keycloak roles and RequireAnyRoleAuthorizer which we can setup via java-bean-like shiro.ini file. In the end, it is just an idea and I have not tested it yet, but it looks like it can work. More details are here and example is here

Which SecurityUtils class do you mean here? Is it the one in spring-core project? That one doesn't have getRoles method

I've tried many times following some of the configurations above, but for some strange reason, keep getting  redirected to http://ZEPPELIN_ROOT/null. It appears that a request for http://ZEPPELIN_ROOT/api/security/ticket is denied ("unauthorized request") and subsequently redirected to/null (It does this very quickly, had to use a packet sniffer to discover this). Strangely enough, however, I can manually access http://ZEPPELIN_ROOT/api/security/ticket, login, and then once I manually navigate to http://ZEPPELIN_ROOT it shows I'm logged in.
I'm really not sure where the null is coming from and not sure what to do (or if OpenID Connect is still supported). I attached my shiro.ini file below (localhost:8085 is my Keycloak Root and localhost:8080 is my Zeppelin Root).
shiro.txt

@alexanderswerdlow please open JIRA at https://issues.apache.org/jira/browse/ZEPPELIN

@alexott I have done so here but haven't received any response

@alexott I have done so here but haven't received any response

Hello this
I encountered the same problem as yours, the configuration is almost the same, and when the ticket is executed, a 401 appears and the callback reaches null. At present, the problem is solved. Is there any good way?


Journal processing for Risc0

Pull Request type
Enhancement
Please check the type of change your PR introduces:

[ ] Bugfix
[X] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build-related changes
[ ] Documentation content changes
[ ] Testing
[ ] Other (please describe):

What is the current behavior?
Issue#209
What is the new behavior?
Other than changing how and what the python and cairo programs are serializing/deserializing, the new code also tries to address Issue#207 in that it allows the user to easily get access to the journal of the ZKP.
Does this introduce a breaking change?

[ ] Yes
[X] No

Perfect.


Docs: note use of free() for disposal of NewBuffer

Hello,
Assuming my understanding of the API is correct, this addition to the docs should help people migrating from v1's NanBufferUse to v2's Nan::NewBuffer.
Cheers,
Lovell
/cc @JCMais

Committed as 325c24efbcd33b45a0a5a0e8d6f0396be19bd25d

Well done! :+1:

Thanks Benjamin for merging and, more importantly, all the time you spend to help maintain nan.


Load Default Mappings Bug

Hi @benjamin-heasly,
@hblasins and I both tried to switch and pull the master branches of all the repos. Upon trying to run any example scenes (e.g. rtbMakeDragon) we both get this error below:
Attempt to reference field of non-structure array.

Error in RtbAssimpStrategy/loadMappings (line 163)
            defaultConverterMappings = obj.converter.loadDefaultMappings(obj.mappingsArgs{:});

Error in rtbMakeSceneFiles (line 84)
mappings = strategy.loadMappings(mappingsFile);

Error in rtbMakeDragon (line 23)
    nativeSceneFiles = rtbMakeSceneFiles(parentSceneFile, ...

I believe the issue is that the obj.converter is missing/empty when we call the function below:
        function mappings = loadMappings(obj, mappingsFile)
            defaultBasicMappings = RtbAssimpStrategy.loadDefaultMappings(obj.mappingsArgs{:});
            defaultConverterMappings = obj.converter.loadDefaultMappings(obj.mappingsArgs{:});
            rawMappings = cat(2, defaultBasicMappings, defaultConverterMappings);
            defaultMappings = rtbValidateMappings(rawMappings);
            sceneMappings = rtbLoadJsonMappings(mappingsFile);
            mappings = cat(2, defaultMappings, sceneMappings);
        end

Could something have changed when merging?

Upon further investigation, it would seem that even after passing through this function in RtbAssimpStrategy, the obj still does not have a converter or a renderer:
    methods
        function obj = RtbAssimpStrategy(hints, varargin)
            obj.hints = rtbDefaultHints(hints);
            obj.importArgs = cat(2, obj.importArgs, varargin);
            obj.mappingsArgs = cat(2, {hints}, varargin);
            obj.converter = RtbAssimpStrategy.chooseConverter(obj.hints);
            obj.renderer = RtbAssimpStrategy.chooseRenderer(obj.hints);
        end
    end

obj =

  RtbAssimpStrategy with properties:

                                hints: [1x1 struct]
                           importArgs: {'ignoreRootTransform'  [1]  'flipUVs'  [1]}
                         mappingsArgs: {[1x1 struct]}
         remodelOnceBeforeAllFunction: []
    remodelPerConditionBeforeFunction: []
     remodelPerConditionAfterFunction: []
                            converter: []
                             renderer: []

Hi @tlian7 ,
I think you need to add RenderToolbox4 to your path again.
Unrelated to the example scenes, I did some reorganization of renderer-specific code.  So the folders have changed.
Sorry I forgot to mention this.  I forgot about it because I'm using ToolboxToolbox, which takes care of setting up the path automatically :smile:

And just to be clear -- The MoreExampleScenes branch also has the re-organized folders, because I merged master into it.

Re-adding RTB4 to the MATLAB path solved this issue. Thanks!


{{ }} escapes html by default

It's not a good idea to escape by default for example:
image = "http://example.com/image/test.jpg"
<img src="{{image}}"> will escape the path so the image will not be rendered.
I know it's probably too much work to implement {{ image | e }} for escaping but maybe it's ok when it's escaped for {{ }} because I can use ``` image ```

It looks like even blahblah is now doing html escaping and it also changed everything to lower case. It doesn't happen every time but sometimes it does.

Sorry for waiting you. I mainly work on weekends, and it may take a few more days to fix the bugs(including other issue).


Contact info

Add contact info in footer, returned from config API (https://github.com/csgroup-oss/sharinghub-server/issues/19).

@CGuichard, @geonux what you think of reusing configuration used for external urls  with possibilty to add as item in footer section:
external-urls:
      - name: Contacts
        header: false # equivalent to footer:true
        url : mailto:contact1<EMAIL_ADDRESS>        locales:
          fr:
            name: Contacts

To allow email contact  ?


Apollo 9.0 Failed Build , RTX 4060

ubuntu 24.04
Apollo master (9.0) build from source

I have NVIDIA GeForce RTX 4060. I cloned Apollo master, changed the docker image according to the link and followed the instruction.
After entering the container, when I run
./apollo.sh build_gpu
I get the following error:

I tried also export TF_TENSORRT_VERSION=8.5.2 but didn't solve the issue.

deleting .apollo.bazelrc after the first failed build solved the problem.


added some badges in README

This fixes #94
What does this PR do?
I have changed all the badges to single type and added some badges with the links related to them in the README.md file, after clicking on the badges the users will be redirected to the related section/web page.
How can this be manually tested?
These changes can be tested and verified manually.
What is the relevant issue link?
https://github.com/starlightknown/Cyberon/issues/94
Screenshots (if appropriate here)
Original

Updated

Thanks a lot for contributing! :)


Outcome 2: Organize integrated atlas generation and annotation jamborees

Bionetwork annotation Jamborees are being planned in a federated way, where the bionetwork themselves drives the jamboree strategy. The hope is that most of the 6 will be held before 2024 but CZI will probably not be actively involved in planning.


Update README.md

Hi,
I just updated the README.md to make it a bit more "readable"

This is a local fork of ESPloitV2 since there are some PR unapproved on exploitagency/ESPloitV2 that I would like to see merged.
If you have PRs and don't get approved on Corey's repo, do make them here: https://github.com/whid-injector/WHID/tree/master/ESPloitV2_whid
Thanks.

Can I use a newer versions of


VSCode crashed (reason: 'crashed', code: '132'

Informations

VS Code Version: 1.91.1 x64
OS Version: Fedora Linux 40

Steps to Reproduce:

Restart system and open a vscode window.

Similar bug report:

#184574

More Details

Output of code --verbose command:

[12617:0719/080400.029820:WARNING:bluez_dbus_manager.cc(248)] Floss manager not present, cannot set Floss enable/disable.
[main 2024-07-19T11:04:00.106Z] [File Watcher (node.js)] Request to start watching: /home/renan/.config/Code/User (excludes: <none>, includes: <all>, filter: <none>, correlationId: <none>),/home/renan/.config/Code/User/settings.json (excludes: <none>, includes: <all>, filter: <none>, correlationId: <none>)
[main 2024-07-19T11:04:00.118Z] Starting VS Code
[main 2024-07-19T11:04:00.118Z] from: /usr/share/code/resources/app
[main 2024-07-19T11:04:00.118Z] args: {
  _: [],
  diff: false,
  merge: false,
  add: false,
  goto: false,
  'new-window': false,
  'reuse-window': false,
  wait: false,
  help: false,
  'list-extensions': false,
  'show-versions': false,
  'pre-release': false,
  'update-extensions': false,
  version: false,
  verbose: true,
  status: false,
  'prof-startup': false,
  'no-cached-data': false,
  'prof-v8-extensions': false,
  'disable-extensions': false,
  'disable-lcd-text': false,
  'disable-gpu': false,
  'disable-chromium-sandbox': false,
  sandbox: false,
  telemetry: false,
  debugRenderer: false,
  'enable-smoke-test-driver': false,
  logExtensionHostCommunication: false,
  'skip-release-notes': false,
  'skip-welcome': false,
  'disable-telemetry': false,
  'disable-updates': false,
  'use-inmemory-secretstorage': false,
  'disable-workspace-trust': false,
  'disable-crash-reporter': false,
  'crash-reporter-id': '89d3a76e-3776-473c-9a29-67c0c9262a1e',
  'skip-add-to-recently-opened': false,
  'open-url': false,
  'file-write': false,
  'file-chmod': false,
  force: false,
  'do-not-sync': false,
  trace: false,
  'preserve-env': false,
  'force-user-env': false,
  'force-disable-user-env': false,
  'open-devtools': false,
  'disable-gpu-sandbox': false,
  '__enable-file-policy': false,
  'enable-coi': false,
  'no-proxy-server': false,
  'no-sandbox': false,
  nolazy: false,
  'force-renderer-accessibility': false,
  'ignore-certificate-errors': false,
  'allow-insecure-localhost': false,
  'disable-dev-shm-usage': false,
  'profile-temp': false,
  logsPath: '/home/renan/.config/Code/logs/20240719T080400'
}
[main 2024-07-19T11:04:00.119Z] Resolving machine identifier...
[main 2024-07-19T11:04:00.119Z] Resolved machine identifier: 6af071c0d47bbb52a7b2b8f46cbb2096093647c7c5389428f3052684e0740d47
[main 2024-07-19T11:04:00.119Z] Main->SharedProcess#connect
[main 2024-07-19T11:04:00.122Z] [File Watcher (node.js)] Started watching: '/home/renan/.config/Code/User'
[main 2024-07-19T11:04:00.123Z] [File Watcher (node.js)] Started watching: '/home/renan/.config/Code/User/settings.json'
[main 2024-07-19T11:04:00.124Z] StorageMainService: creating application storage
[main 2024-07-19T11:04:00.126Z] ElectronURLListener: waiting for window to be ready to handle URLs...
[main 2024-07-19T11:04:00.126Z] lifecycle (main): phase changed (value: 2)
[main 2024-07-19T11:04:00.126Z] windowsManager#open
[main 2024-07-19T11:04:00.127Z] windowsManager#open pathsToOpen [
  {
    workspace: { id: 'd72b5fd541558f20f18286c2e2053859', uri: [m] },
    type: 2,
    exists: true
  }
]
[main 2024-07-19T11:04:00.127Z] windowsManager#doOpenFolderOrWorkspace {
  folderOrWorkspace: {
    workspace: { id: 'd72b5fd541558f20f18286c2e2053859', uri: [m] },
    type: 2,
    exists: true
  },
  filesToOpen: undefined
}
[main 2024-07-19T11:04:00.128Z] IPC Object URL: Registered new channel vscode:9e90e4a9-7559-418b-b857-79c71f772b0c.
[main 2024-07-19T11:04:00.128Z] window#validateWindowState: validating window state on 1 display(s) { mode: 0, x: 768, y: 156, width: 1024, height: 768 }
[main 2024-07-19T11:04:00.128Z] window#validateWindowState: single monitor working area { x: 0, y: 32, width: 2560, height: 1048 }
[main 2024-07-19T11:04:00.128Z] window#ctor: using window state { mode: 0, x: 768, y: 156, width: 1024, height: 768 }
[12660:0719/080400.169794:WARNING:sandbox_linux.cc(418)] InitializeSandbox() called with multiple threads in process gpu-process.
[main 2024-07-19T11:04:00.185Z] window#load: attempt to load window (id: 1)
[main 2024-07-19T11:04:00.190Z] StorageMainService: creating workspace storage (d72b5fd541558f20f18286c2e2053859)
[main 2024-07-19T11:04:00.190Z] windowsManager#open used window count 1 (workspacesToOpen: 0, foldersToOpen: 1, emptyToRestore: 0, emptyToOpen: 0)
[main 2024-07-19T11:04:00.190Z] lifecycle (main): phase changed (value: 3)
[main 2024-07-19T11:04:00.190Z] resolveShellEnv(): skipped (VSCODE_CLI is set)
[main 2024-07-19T11:04:00.190Z] update#setState idle
[main 2024-07-19T11:04:00.231Z] resolveShellEnv(): skipped (VSCODE_CLI is set)
<--- Last few GCs --->

[1:0x16e000568000]       91 ms: Mark-Compact (reduce) 1.1 (3.7) -> 1.1 (2.7) MB, pooled: 0 MB, 0.72 / 0.00 ms  (average mu = 0.368, current mu = 0.028) last resort; GC in old space requested
[1:0x16e000568000]       92 ms: Mark-Compact (reduce) 1.1 (2.7) -> 1.1 (2.7) MB, pooled: 0 MB, 0.66 / 0.00 ms  (average mu = 0.235, current mu = 0.016) last resort; GC in old space requested

<--- JS stacktrace --->
[12718:0719/080400.286056:ERROR:v8_initializer.cc(799)] V8 javascript OOM (CALL_AND_RETRY_LAST).
[0719/080400.296596:ERROR:directory_reader_posix.cc(43)] opendir /home/renan/.config/Code/Crashpad/attachments/1f40f555-9c0b-4d03-a694-bf444bed1006: No such file or directory (2)
Renderer process crashed - see https://www.electronjs.org/docs/tutorial/application-debugging for potential debugging information.
[main 2024-07-19T11:04:00.695Z] CodeWindow: renderer process gone (reason: crashed, code: 132)
[12660:0719/080400.719374:WARNING:angle_platform_impl.cc(49)] ProgramGL.cpp:700 (checkLinkStatus): Program link or binary loading failed with no info log.
[main 2024-07-19T11:04:02.693Z] lifecycle (main): phase changed (value: 4)
[main 2024-07-19T11:04:30.191Z] update#checkForUpdates, state =  idle
[main 2024-07-19T11:04:30.191Z] update#setState checking for updates
[main 2024-07-19T11:04:30.191Z] resolveShellEnv(): skipped (VSCODE_CLI is set)
[main 2024-07-19T11:04:30.690Z] update#setState idle

When I run code --disable-dev-shm-usage the issue persists
When I run code --crash-reporter-directory ~/Downloads the issues doesn't occurs.
bugreport202407190815.zip
The bug does not occur if I run code [a/folder/path] on terminal.

It might be duplicate of  #221886. See https://github.com/microsoft/vscode/issues/221886#issuecomment-2271739803

The crash is oom from javascript heap limit reached. Can you follow the steps below to capture a heap profile,

From a fresh instance, run Developer: Toggle Developer Tools
Switch to the Memory tab and select the option as shown in the screenshot below

Start the recording, repeat the steps that repro the crash
Save the profile and attach it to this issue


delete spam quotes from a reckless oper abuser

please delete quotes 711-966 they are a product of extreme oper abuse
thank u

wow turnaround time so fast, great work, closing issue


Table column filter is not opened when clicking on filter icon

Wave SDK Version, OS
Latest version in master; Chrome, Firefox, Safari
Actual behavior
Table column filter does not open when clicking on filter (chevron down) icon. It opens when clicking under the column title or on the place between title and chevron down icon. Please, see the example below:
https://user-images.githubusercontent.com/23740173/155089013-93426290-5e9a-4eed-b08e-6ab70123d9fa.mov
Expected behavior
Table column filter opens when clicking on chevron down filter icon next to the column title.
Steps To Reproduce

Open the table example from py/examples/table
Click on the Status column filter

Closed in #1283


Cannot setup a Scully project in a fresh Nx workspace

🐞 Bug report
Description
When I generate a fresh Nx workspace, both an empty or one based on Angular, there are errors when adding Scully as described in the installation guide.
🔬 Minimal Reproduction
└ ❯ npx create-nx-workspace@latest test
✔ What to create in the new workspace · angular
✔ Application name                    · landing
✔ Default stylesheet format           · scss
✔ Use Nx Cloud? (It's free and doesn't require registration.) · No

npm install @scullyio/init
 nx g @scullyio/init:install -- --project=landing

💻Your Environment
Angular CLI: 12.1.3
Node: 14.16.1
Package Manager: npm 7.11.1

Nx looks like version 12.6.2 but nx version returns Angular CLI.
Scully Version:

    "@scullyio/init": "^1.1.4",
    "@scullyio/ng-lib": "^1.0.0",
    "@scullyio/scully": "^1.0.0",

🔥 Exception or Error

"@scullyio/init" schema is using the keyword "id" which its support is deprecated. Use "$id" for schema ID.
    Install ng-lib
    ✅ Added dependency
✔ Packages installed successfully.
"@scullyio/init:scully" schema is using the keyword "id" which its support is deprecated. Use "$id" for schema ID.
    ✅ Update package.json
    ✅ Created scully configuration file in scully.landing.config.ts
"@scullyio/init:pluginTS" schema is using the keyword "id" which its support is deprecated. Use "$id" for schema ID.
InvalidInputOptions [Error]: Schematic input does not validate against the Schema: "landing"
Errors:

  Data path "" must be object.

Hi @Bjeaurn I think this is a bug that is already fixed in the develop version. would you mind verifying this with the develop version?

@Bjeaurn I agree with Jeffery and going to close this now. If it's still an issue, after our net release (sorry, this can take a bit we are facing some issues) ping us, and we will reopen this issue.


fix(debugger): replace sendMessage with devtool eval

Fix for https://github.com/cerebral/cerebral-chrome-extension/issues/12
I had a look at react's extension, which does not have this issue. The way they send an eval'd message did not use the tab Id (which I'm suspecting is maybe being duplicated..?)
See: https://github.com/facebook/react-devtools/blob/master/shells/chrome/src/inject.js
I've replaced most calls to sendMessage with a chrome.devtools.inspectedWindow.eval alternative. There are a few other calls to chrome.tabs.sendMessage that I have no replaced, as I'm not sure of what changing them could do.

This is really awesome, thanks for checking it out. Will use this in next release (right around the corner) and hopefully the issue is fixed :-)


Add Clang CI jobs

I ran into some issues trying to build Boost with libc++, so I added an option to use libstdc++ for now. I'll take another look at a Clang libc++ CI build soon.

I'll take another look at a Clang libc++ CI build soon.

awesome -/ fwiw, we might track that as part of this bunch of issues https://github.com/crossbario/autobahn-cpp/issues?q=is%3Aissue+is%3Aopen+label%3ACI-CD - also, I think these CI improvements really have a multiplying payback, as it will improve / speed up / robustify library development process. highly welcome!


implementation of fail-fast option for copy-from statement

closes #11205
implement fail-fast option for copy from stmt. If return summary option is specified, the successful results up to the point of failure should be available. The current implementation uses bulk_size as a single unit of iteration. It makes sense to use this option in combination with fail-fast that every bulk_size, there will be a check for errors.
Summary of the changes / Why this improves CrateDB
Checklist

[x] Added an entry in CHANGES.txt for user facing changes
[x] Updated documentation & sql_features table for user facing changes
[x] Touched code is covered by tests
[x] CLA is signed
[x] This does not contain breaking changes, or if it does:

It is released within a major release
It is recorded in CHANGES.txt
It was marked as deprecated in an earlier release if possible
You've thought about the consequences and other components are adapted
(E.g. AdminUI)

Hello @mfussenegger , I have made the doc change and replied to your comments.
Overall, the choices I made were based on that the errors which trigger the abortion is only known/visible at result collection stage.

I'm wondering if we should try to invoke a KillRequest on a failure, to ensure the operation is also interrupted on other nodes involved?

I had another look on my implementation, I do not think it is needed. My approach was to stop the batch iterator if any errors are observed during result collection.
below is my experiment to check if killRequest should be invoked:
// data to be inserted
$ head /t.json
{"a":1234599}
{"a":123459999}
{"b":123}
{"b":1}
{"a":1234}
{"a":1234599}
{"a":123459999}
{"b":123}
{"b":1}
{"a":1234}
$ grep "a" /t.json | wc -l
14469
$ grep "b" /t.json | wc -l
9646

// 14469 successes and 9946 failures with fail_fast = false on both nodes
cr> copy tbl from '/t.json' with(shared = false, fail_fast = false, bulk_size = 1) return summary;
+-------------------------------------------------------------------+----------------+---------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| node                                                              | uri            | success_count | error_count | errors                                                                                |
+-------------------------------------------------------------------+----------------+---------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| {"id": "Ag_5JnJvS1WvJMkBI5TWUQ", "name": "Gross Düssi"}           | file:///t.json |         14469 |        9646 | {"mapping set to strict, dynamic introduction of [b] within [default] is not allowed": {"count": 9646, "line_numbers": [3, 9, 8, 13, 43, 63, 19, 54, 58, 69, 48, 44, 33, 74, 79, 149, 213, 178, 198, 189, 219, 234, 244, 248, 238, 49, 34, 104, 103, 118, 139, 174, 209, 224, 233, 88, 94, 99, 158, 128, 124, 144, 133, 164, 148, 199, 214, 188, 204, 68]}} |
| {"id": "r3X0eVfBTvm_COJQvUnaOQ", "name": "Hintere Stangenspitze"} | file:///t.json |         14469 |        9646 | {"mapping set to strict, dynamic introduction of [b] within [default] is not allowed": {"count": 9646, "line_numbers": [83, 93, 104, 138, 13, 29, 39, 49, 79, 33, 44, 69, 28, 3, 114, 173, 244, 24, 239, 178, 224, 199, 124, 119, 139, 148, 48, 64, 58, 228, 194, 103, 133, 164, 144, 84, 99, 89, 109, 129, 94, 208, 218, 4, 158, 14, 169, 183, 189, 229]}} |
+-------------------------------------------------------------------+----------------+---------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
COPY 2 rows in set (3.900 sec)

// under 300 successes and 200 errors with fail_fast = true, on both nodes
cr> copy tbl from '/t.json' with(shared = false, fail_fast = true, bulk_size = 1) return summary;
+-------------------------------------------------------------------+----------------+---------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| node                                                              | uri            | success_count | error_count | errors                                                                                |
+-------------------------------------------------------------------+----------------+---------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| {"id": "Ag_5JnJvS1WvJMkBI5TWUQ", "name": "Gross Düssi"}           | file:///t.json |           266 |         178 | {"mapping set to strict, dynamic introduction of [b] within [default] is not allowed": {"count": 178, "line_numbers": [54, 18, 39, 8, 14, 23, 43, 108, 4, 33, 84, 19, 73, 3, 79, 29, 178, 64, 83, 119, 128, 194, 209, 159, 88, 188, 203, 228, 249, 273, 9, 38, 59, 124, 148, 189, 103, 198, 169, 89, 158, 229, 94, 53, 179, 28, 63, 34, 69, 134]}} |
| {"id": "r3X0eVfBTvm_COJQvUnaOQ", "name": "Hintere Stangenspitze"} | file:///t.json |           113 |          76 | {"mapping set to strict, dynamic introduction of [b] within [default] is not allowed": {"count": 76, "line_numbers": [3, 8, 14, 28, 13, 23, 29, 68, 4, 133, 138, 38, 33, 178, 43, 59, 93, 103, 98, 63, 129, 49, 73, 88, 118, 124, 173, 128, 134, 148, 18, 48, 169, 44, 113, 58, 69, 114, 99, 159, 19, 64, 53, 9, 109, 104, 24, 183, 79, 108]}}     |
+-------------------------------------------------------------------+----------------+---------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
COPY 2 rows in set (0.553 sec)

@mfussenegger, Hello Jordi, the implementation passes simple manual tests and done initial refactoring. Please review the last commit to confirm overall direction. Thank you

Thanks for reviewing @mfussenegger, I have made the changes and  since it is not suggested to add more fields to FileReadingIterator I instead embed it in the exception. Another change was to add Type parameter to Killable.kill but maybe I can remove it since it could be retreived from the exception now.

Hello @mfussenegger, please have another look, Thank you

Thanks for reviewing and your suggestion, @mfussenegger. Before moving on to a complete different approach,

Maybe we've to get back to the drawing board and consider a completely different approach for copy from in general? Maybe the existing BatchIterator pipeline is not the best fit?

I tried to generify as much as possible so that I can completely drop this approach if it turned out badly.

@mfussenegger Please review if the tight coupling has resolved. If the solution is feasible there are few things that I still need to address, Thank you.

@mfussenegger Hello Jordi, with the newly defined scope, the implementation became much simpler, please have a quick look at the implementation. Thanks

@mfussenegger Thanks for reviewing, I have addressed them and added minor message formatting.
Do you have any suggestion on the formatting?
JobKilledException[Job killed. NODE: {id=IS-m0zMzTEKTOQMT_jk03Q, name=Nabois Grande}
[URI: file:///home/jee/crate/t4.json, ERRORS: {mapping set to strict, dynamic introduction of [b] within [default] is not allowed={count=1, line_numbers=[2]}, failed to parse={count=1, line_numbers=[1]}}]]

@mfussenegger Thanks for reviewing, I have addressed them and added minor message formatting. Do you have any suggestion on the formatting?
JobKilledException[Job killed. NODE: {id=IS-m0zMzTEKTOQMT_jk03Q, name=Nabois Grande}
[URI: file:///home/jee/crate/t4.json, ERRORS: {mapping set to strict, dynamic introduction of [b] within [default] is not allowed={count=1, line_numbers=[2]}, failed to parse={count=1, line_numbers=[1]}}]]

I'd trim the node information to just the names or even omit them completely. Otherwise seems okay. The amount of errors reported shoudl stay close to 1, right?

@mfussenegger Thanks for reviewing, I have addressed them and added minor message formatting. Do you have any suggestion on the formatting?
JobKilledException[Job killed. NODE: {id=IS-m0zMzTEKTOQMT_jk03Q, name=Nabois Grande}
[URI: file:///home/jee/crate/t4.json, ERRORS: {mapping set to strict, dynamic introduction of [b] within [default] is not allowed={count=1, line_numbers=[2]}, failed to parse={count=1, line_numbers=[1]}}]]

I'd trim the node information to just the names or even omit them completely. Otherwise seems okay. The amount of errors reported shoudl stay close to 1, right?

It will be all errors seen from a single bulk_size

Hi @mfussenegger, I missed a case and now have a fix for it, would like another review. Thanks!


build version 0.65.

Should retarget this to a new branch

Checklist

[ ] Used a fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin please rerender
@jayfurmanek @conda-forge/poppler can somebody please create a new branch for 0.65?

@hmaarrfk Just for reference, what's the motivation here?

We're trying to build some dependencies needed by r-base one of which is texlive-core. The current version of texlive in the package is 2018 and that only works with an older poppler version. Even 0.65 still needs a patch. The texlive package would need some rework and likely a move up to 2019 (at least) to function with poppler 0.80.  The idea here is to build the older versions to avoid having to rework that package.

This needs some build number consistency check as well.
I mostly wanted to prove that the old recipe still holds

Should I build 0.64 instead?

The patch for texlive-core works against 0.64 or 0.65. This should be good.

This is the last commit to have used 0.65
https://github.com/conda-forge/poppler-feedstock/tree/24ccec08cd03a75d92d585fc9276e06b75930fd4

@conda-forge-admin please rerender

It seems that 0.65 never got built
https://anaconda.org/conda-forge/poppler/files?page=2
This build number is ready to go.
If somebody wanted to create a branch, I would gladly retarget the PR to that branch.

Thanks1


grafana: Support notifications from Grafana Alerting.

Adds support for Grafana's new alerting system. The proposed integration
update wouldn't require explicit configuration and would support both old
and new notifications parallelly. Internally, we differentiate between versions
based on the structure of the incoming payload.

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[x] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[x] Responsiveness and internationalization.
[x]  Strings and tooltips.
[x] End-to-end functionality of buttons, interactions and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

A notification with a single alert now looks like this:

A notification with multiple alerts now looks like this:

This looks pretty reasonable. Should this be marked as closing https://github.com/zulip/zulip/issues/20087?

Yes, I'll mention that in the PR description and the commit message.

And can you look at https://github.com/zulip/zulip/pull/22503, which is for the same issue but unfinished?

Sure, I'll go through it and refine the commits accordingly.

We want this. Grafana integration with our zulip.com org broken until this lands.

Hi i have some questions about connecting Grafana and zulip, because i'm trying to pass this URL :
https://zulip_domain.zulipchat.com/api/v1/external/grafana?api_key=API_KEY
but it's say that we send an malformed JSON, and in grafana its say an 500 internal error.
It is normal or I missing something ?


Is there a performance test report

For example, how long will it take to query 10 years of data, and there is also support for concurrency

I assume you are asking about the yahoo finance?
The data needs to come through the yahoo API, so it's not crazy fast. 13 years of S&P500 takes ~ 9 seconds
explain analyze select * FROM yahoo_finance("^GSPC", "2010-01-01", "2023-02-18", "1d");
┌─────────────────────────────────────┐
│┌───────────────────────────────────┐│
││         Total Time: 8.94s         ││
│└───────────────────────────────────┘│
└─────────────────────────────────────┘
┌───────────────────────────┐
│      EXPLAIN_ANALYZE      │
│   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │
│             0             │
│          (0.00s)          │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│       YAHOO_FINANCE       │
│   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │
│           EC: 0           │
│   ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─   │
│            3326           │
│          (8.94s)          │
└───────────────────────────┘

You can store the information on a duckdb table. Then subsequent queries will be blazing fast.
You can also do multiple concurrent queries. Yahoo does have some anti-scrapping stuff implemented, so if you do it to much they might start denying your  requests.


JDBC isReadOnly return false

Connection allows writes via JDBC by default and setReadOnly is not yet implemented. Function should be able to return false for compatibility without issue.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

We should check on the connection whether it really is read only or not.
The info is available with API get_server_status
Code should be more like this
@Override
  public boolean isReadOnly() throws SQLException { //logger.debug("Entered");
    try {
      logger.debug("Session at close is " + session);
      if (session != null) {
        TServerStatus server_status = client.get_server_status(session);
        return server_status.read_only;
      }
    } catch (TMapDException ex) {
      throw new SQLException("get_server_status failed." + ex.toString());
    } catch (TException ex) {
      throw new SQLException("get_server_status failed." + ex.toString());
    }
    // never should get here
    return true;
  }


Build status should show why it failed when the build pod runs out of ephemeral disk space

Details
When the build pod errors due to a full ephemeral storage disk, the Build's Ready status condition is set to false without a useful reason or message that indicates why.
status:
  conditions:
  - lastTransitionTime: "2023-07-11T23:37:02Z"
    status: "False"
    type: Succeeded

Inspecting the build pod's status, the Ready status condition simply indicates that the pod has failed:
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2023-07-11T23:34:51Z"
    reason: PodFailed
    status: "False"
    type: Ready

The status.initContainerStatuses[{name: "build"}].state shows that the container has terminated with an exit code of 2 and a reason of Error:
status:
  initContainerStatuses:
  - name: build
    ...
    ready: false
    state:
      terminated:
        containerID: ...
        exitCode: 2
        finishedAt: "2023-07-11T23:37:01Z"
        reason: Error
        startedAt: "2023-07-11T23:34:56Z"

The only useful status from the build pod is the status.message field, which states "Pod ephemeral local storage usage exceeds the total limit of containers".
It would be helpful to be able to see the useful error message reflected in the Build (and Image) succeeded status conditions in the human-readable message field. It would also be nice to see the machine-readable reason field copied from the build pod's ready status condition into the succeeded conditions for both resources.

Hey @davewalter, what version of kpack are you using?

Hi @tomkennedy513,
This testing was performed with v0.10.0. I see that v0.11.0 includes changes #1221 and #1226 to improve the status conditions on the Image resource based on the value from the corresponding Build resource. From what I can tell, it doesn't look like the build reconciler's conditionForPod helper function sets a reason/message in the Build's Succeeded condition (other than when the status is unknown).
I have taken a stab at updating the build reconciler to set suitable reasons/messages based on the status of the build pod. Please let me know if you have any questions or comments.

Resolved by #1258


Tooltip-layer isn't rendered when printing

Hey,
really good lib!
I have currently the following problem:
On my map I have 2 overlay layers, one containing markers and one containing the tooltips for each marker (so you can set them to visible separately).
The tooltips are set to visible and permanent by default.
Example:

When trying to print the map the tooltips aren't rendered.
Is there any command to pass in or anything I need to register?
I tried around a bit but couldn't find a solution.
Thanks

Maybe a bit of additional info:
The tooltips are standalone objects added with permanent=true to a FeatureGroup.
If I didn't missed something in the docs, this should be printed without need to register a new layer, shouldn't it?

So finally I found a way to print the tooltips after many hours of research and trial'n error.
First register L.Tooltip as layer, since it isn't registered by default
L.BrowserPrint.Utils.registerLayer(L.Tooltip, "L.Tooltip", function (layer, utils){
        return L.tooltip(utils.cloneOptions(layer.options)).setLatLng(layer.getLatLng()).setContent(layer.getContent());
      })

Then on event "browser-print-start" open each tooltip on the printMap:
for (let i in prop.printObjects["L.Tooltip"]) {
          let e = prop.printObjects["L.Tooltip"][i];
          e.openOn(prop.printMap);
        }

@Igor-Vladyka Already an absolutly awesome lib, but please make this default behaviour or give a parameter to define the behaviour.
Tooltips are widely used, and should be at least be easier and more intuitive to print if needed.


Initial implementation for DP to CP

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (efb1c39) 25.68% compared to head (7ee3bf3) 26.23%.
Report is 5 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1851      +/-   ##
==========================================
+ Coverage   25.68%   26.23%   +0.54%
==========================================
  Files         134       38      -96
  Lines       15100     8433    -6667
  Branches     2453        0    -2453
==========================================
- Hits         3879     2212    -1667
+ Misses      11090     6090    -5000
  Partials      131      131

Flag
Coverage Δ

adapter
26.23% <ø> (-0.01%)
:arrow_down:

common-controller
?

config-deployer-service
?

idp-domain-service
?

router
?

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

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Currently this work on-hold hence closing


Update to Python 3.12

Pull Request
Description
Updates Satip to Python 3.12
Related to https://github.com/openclimatefix/ocf-infrastructure/issues/373
How Has This Been Tested?
Unit tests

[x] Yes

Checklist:

[x] My code follows OCF's coding style guidelines
[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have checked my code and corrected any misspellings

There seems to have been a change in Zarr that means that the attributes from Satpy now aren't valid to write into

could you try python 3.11?

That latest error is due to coverage not being the right version, need to upgrade it

Ah okay, cool, was just about to ask that. What version does it need to be?


Code Refactoring and Error Handling Improvements

Is your feature request related to a problem? Please describe.
I have noticed that the current file handling script lacks comprehensive error tracking and logging, making it difficult to diagnose issues during file processing. Additionally, the color management for console outputs is hard-coded and not standardized, which can lead to inconsistencies and decreased readability in the code.
Describe the solution you'd like
I propose implementing a logging mechanism to capture errors and important events throughout the file processing workflow. This would help in diagnosing issues more effectively. Additionally, creating a centralized color management system (e.g., a Colors class) would standardize the color usage across the application, improving code readability and maintainability.
Describe alternatives you've considered
Manual Print Statements: Adding print statements for error handling, but this would clutter the code and make it harder to manage.
Using External Libraries: Considering external libraries for logging, but they might introduce unnecessary complexity when Python’s built-in logging module suffices.
Retaining Current Structure: Keeping the current error handling and color usage as is, which would not address the existing problems.
Additional context
Implementing these changes would not only enhance the maintainability of the code but also improve the user experience by providing clearer feedback during file processing. Here are a couple of screenshots showing current output and potential improvements with logging and standardized colors.

I see no screenshot provided. We are limiting the usage of external libraries as that creates another issue.
Explain what the logging will help with?

@Sharmeen20 you need to reply by EOD or I will be closing this issue.


[🐛 BUG]: Unable to install v2023 RoadRunner via Composer

No duplicates 🥲.

[X] I have searched for a similar issue in our bug tracker and didn't find any solutions.

What happened?
Compared to the composer.json of v2.12.3, the composer.json of v2023 does not contain any dependency libraries "spiral/roadrunner-worker", "spiral/roadrunner-cli" and "spiral/roadrunner-http" .
This will prevent RoadRunner from being installed using the installation-via-composer mentioned in the README.
Version (rr --version)
2023.1.0
How to reproduce the issue?
When installing with Composer.
composer require spiral/roadrunner:v2023.1.0 nyholm/psr7

Relevant log output
No response

Hey @monkenWu 👋🏻
Yes, you're right. Starting with v2023, RoadRunner is really a meta package from a PHP point of view.


Cannot read property 'draw' of undefined

How can I fix this, Ive got error alert TypeError: Cannot read property 'draw' of undefined
here's the sample json url http://dummy.restapiexample.com/api/v1/employees I tried

Hey,
Having had a look at your JSON listing. It looks like you may have missed the Laravel Package that is used with the component.
You will need to make use of the DataTableCollectionResource on your data as this will send the draw value back to the component. Hence why its undefined.
Let me know if this solves your problem.

Perfectly fine now, thank you for the answer and thanks for this plugins, Great


Add partitions + parameters to materialization

Summary
This change adds support for partitions and parameters in a node's materialization config, based on what was discussed here.
For more context, when a user wants to schedule node materialization, they will add a materialization config to the node. However, users may only wish to materialize specific partitions of the node, so we add the concept of a partition to MaterializationConfig (functions equivalently to the previously discussed parameters):

name: the column name,
type_: either temporal or categorical
range: a range of values like [20200101, 20200201],
values: a list of values like ['a', 'b', 'c'],

This means that using the client to add a materialization config with partitions specified looks like:
dimension_node.add_materialization_config(
    MaterializationConfig(
        engine=Engine(name="spark", version="3.3"),
        schedule="0 * * * *",
        config={
            "spark": {
                <spark conf>
            },
            "partitions": [
                {
                    "name": "date_int",
                    "type_": "temporal",
                    "range": [20200101, 20200201],
                    "values": [20210101, 20210204],
                },
                {
                    "name": "country",
                    "type_": "categorical",
                    "values": ["DE", "MY"],
                },
            ]
        }
    )
)

After the above call, DJ will save the config and ask the query service to schedule the necessary materialization jobs. The query service will be expected to schedule one or more jobs that do the following:

backfill: handles backfilling unmaterialized partitions (based on the values in the partitions specified)
ongoing: a reoccurring job that will handle ongoing materialization for the node

Both types of jobs, backfill and ongoing, will respect the categorical partition values specified. In the example above, the dimension_node will only be materialized for country partitions DE and MY for both types of jobs. Then, for backfills, it will backfill the range specified by the temporal partition date_int, but ongoing jobs will continue to processing more recent temporal partitions.
Test Plan
Ran things locally with a query service

[X] PR has an associated issue: #527
[X] make check passes
[X] make test shows 100% unit test coverage

Deployment Plan

@shangyian thanks for starting this PR. Two clarifying questions for now (sorry I haven't looked at all the code yet):

I think that a partition inside the MatConfig should only have values or range defined. I know I specified all in https://github.com/DataJunction/dj/discussions/421 but I meant just one of them. What do you think?
For the ongoing job, we should have a way to define the current value that will go into any given partition, right?

I think that a partition inside the MatConfig should only have values or range defined. I know I specified all in https://github.com/DataJunction/dj/discussions/421 but I meant just one of them. What do you think?

@agorajek agreed, I think either-or makes sense. Although do you think range needs to be changed to allow for multiple ranges, like [[20210101, 20210201], [20210501, 20210601]], or is the single range enough for now?

For the ongoing job, we should have a way to define the current value that will go into any given partition, right?

Yeah, we should. I'm not sure what the best way to do that would be -- currently I'm just relying on the internal implementation of the query (eventually materialization) service to decide the current value, which it derives based on the scheduler. I'll put out the WIP PR so you can take a look at that as well.

@shangyian based on our chat today there should be two implicit MaterializationConf types: adhoc and scheduled one.

scheduled type must have a schedule defined and single value/expression for all temporal partitions, other partitions are optional
adhoc type does not have a schedule defined and the rest of params optional


feat(Server): server now accepts Fn not fn

fixes #81

Will this also be published to crates.io? It seems the last release is older than this..

Yes, I have been away from simpleserver for a bit. I will try to release soon.


Add ability to get contrast ratio between 2 colors

Hey,
Here is a PR for #21 :)

Current coverage is 100% (diff: 100%)

Merging #25 into master will not change coverage

@@           master   #25   diff @@
===================================
  Files          12    12
  Lines         367   375     +8
  Methods         0     0
  Messages        0     0
  Branches        0     0
===================================
+ Hits          367   375     +8
  Misses          0     0
  Partials        0     0

Powered by Codecov. Last update c738a49...7d8b998

By day TravisCI is much more faster than by night... Thank you for the pull!