testing not working. update the spec-bundle.js file

npm run test is failing.
They of course changed alot of stuff in zone and rc6.
Change the spec-bundle.js file to:
/**
 * @author: @AngularClass
 */

/*
 * When testing with webpack and ES6, we have to do some extra
 * things to get testing to work right. Because we are gonna write tests
 * in ES6 too, we have to compile those as well. That's handled in
 * karma.conf.js with the karma-webpack plugin. This is the entry
 * file for webpack test. Just like webpack will create a bundle.js
 * file for our client, when we run test, it will compile and bundle them
 * all here! Crazy huh. So we need to do some setup
 */
Error.stackTraceLimit = Infinity;

require('core-js/es6');
require('core-js/es7/reflect');

// Typescript emit helpers polyfill
require('ts-helpers');

require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/proxy'); // since zone.js 0.6.15
require('zone.js/dist/sync-test');
require('zone.js/dist/jasmine-patch'); // put here since zone.js 0.6.14
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');

// RxJS
require('rxjs/Rx');

var testing = require('@angular/core/testing');
var browser = require('@angular/platform-browser-dynamic/testing');

testing.TestBed.initTestEnvironment(
  browser.BrowserDynamicTestingModule,
  browser.platformBrowserDynamicTesting()
);

/*
 * Ok, this is kinda crazy. We can use the context method on
 * require that webpack created in order to tell webpack
 * what files we actually want to require or import.
 * Below, context will be a function/object with file names as keys.
 * Using that regex we are saying look in ../src then find
 * any file that ends with spec.ts and get its path. By passing in true
 * we say do this recursively
 */
var testContext = require.context('../Client', true, /\.spec\.ts/);

/*
 * get all the files, for each file, call the context function
 * that will require the file and load it up here. Context will
 * loop and require those spec files here
 */
function requireAll(requireContext) {
    return requireContext.keys().map(requireContext);
}

// requires and returns all modules that match
var modules = requireAll(testContext);

Once karma is working, you will notice ngOninit tests are all failing

waiting for angular team to finalise some documentation around testing.

Just to update on this, i have it working in another branch of this project called testing, but there are some issue with how tests are written, I am writing some useful tests and raised couple of issues with angular team. Documentation is limited at the moment as well, so I will say this Work in Progress !!

Got testing working now. Closing it for now. Let me know if you find any issue.


Document the configuration and access details of the Synapse node

This task is to document the configuration and access details of the Synapse node created for task #265

See #267 for details on the ip address etc.

Closing due to bittorrent stories being out of scope / replaced with bitswap.


Support nopython sets

Support for sets in nopython mode. This requires hash() to be defined on the key type: currently on numbers, booleans and tuples.
All set operations are supported. However, sets cannot (as of this PR) be passed from or to Python code.

Looks like all the comments have been addressed.


Migrate Flink client to OpenApiGenerator

Description
Flink community has released an OAS for Flink's REST API: https://nightlies.apache.org/flink/flink-docs-release-1.15/generated/rest_v1_dispatcher.yml
As we propose in #30, we should be able to generate a client stub from the OAS.

We created a new repository https://github.com/giros-dit/python-flink-client that contains a Flink API client generated from its OAS. For this client we used python (stable) generator.


[BUG] Looking for a coder that can investigate an error I am getting.

I am willing to pay, and can't find anyone who knows Flowise and LocalAI enough to do this. Here is my error:
2023-08-10 22:33:13 [INFO]: ⬆ POST /api/v1/chatmessage/5c7c9f51-ba1b-4cea-99f9-a4467ca40466
2023-08-10 22:33:13 [INFO]: ⬆ POST /api/v1/internal-prediction/5c7c9f51-ba1b-4cea-99f9-a4467ca40466
2023-08-10 22:33:13 [INFO]: [server]: Chatflow 5c7c9f51-ba1b-4cea-99f9-a4467ca40466 added into ChatflowPool
2023-08-10 22:33:13 [ERROR]: [server]: Error: Cannot read properties of undefined (reading '0')
TypeError: Cannot read properties of undefined (reading '0')
at OpenAIChat._call (/usr/local/lib/node_modules/flowise/node_modules/langchain/dist/llms/openai-chat.cjs:463:28)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Promise.all (index 0)
at async OpenAIChat._generate (/usr/local/lib/node_modules/flowise/node_modules/langchain/dist/llms/base.cjs:256:29)
at async OpenAIChat._generateUncached (/usr/local/lib/node_modules/flowise/node_modules/langchain/dist/llms/base.cjs:133:22)
at async LLMChain._call (/usr/local/lib/node_modules/flowise/node_modules/langchain/dist/chains/llm_chain.cjs:121:33)
at async LLMChain.call (/usr/local/lib/node_modules/flowise/node_modules/langchain/dist/chains/base.cjs:98:28)
at async runPrediction (/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/chains/LLMChain/LLMChain.js:132:29)
at async LLMChain_Chains.run (/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/chains/LLMChain/LLMChain.js:77:21)
at async App.processPrediction (/usr/local/lib/node_modules/flowise/dist/index.js:873:23)
2023-08-10 22:33:13 [INFO]: ⬆ POST /api/v1/chatmessage/5c7c9f51-ba1b-4cea-99f9-a4467ca40466

Hi @cbassoc3265,
Could you share screenshot of your flow?


feat/reverse-adaptation

Please review before merging.

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


Analysis of terminating statements doesn't take into account symbols

A call to the "panic" function is considered terminating. However, at the weeder stage, we don't know if that is the built-in panic or a different panic. Therefore this check cannot occur in the weeder.

We're just not gonna bother with panic anymore.


Official instance rules page

@gaviscapes like a markdown page for rules?

Love it

@gaviscapes like a markdown page for rules?

Yes.


Request: Be able to use OpenAI Assistant ID / Thread ID...

If possible, would be nice to use OpenAI with Assistant ID / Thread ID instad? if om not misstaken, this way it is possible to bypass 4k token limit? But also great to have access to the diffrent Assistant that one might build up. Math teacher, "Jarvis" etc etc.

Hi @Dan1jel! Thank you, I'm looking into it

So I've done some coding with the assistant API -- I would suggest this would be a great thing to have in chatgtp-cli, but it might be too early.
Assitant API is still early beta, and they don't have a streaming option on the way back.  You have to "fast poll" an endpoint to see when the job is done, which adds complexity & inefficiency to the code that would be needed.  In any case, they're going to add streaming support soon.
Would totally support doing this though.   Note that you can bypass the token limit by using different models, and so using assistants and bypassing the token limit are just different issues, you don't need one to do the other.

So I've done some coding with the assistant API -- I would suggest this would be a great thing to have in chatgtp-cli, but it might be too early.
Assitant API is still early beta, and they don't have a streaming option on the way back.  You have to "fast poll" an endpoint to see when the job is done, which adds complexity & inefficiency to the code that would be needed.  In any case, they're going to add streaming support soon.
Would totally support doing this though.   Note that you can bypass the token limit by using different models, and so using assistants and bypassing the token limit are just different issues, you don't need one to do the other.

Aah I see, thanks for looking in too it :) my first idea was to, instead of a website that might reload and lose all history, a cli version would maybe have the history there, or be on going (in for example, a tmux window). But I understand, I just hope it will be possible in the near future :)

Via the OpenAI Assistants API and Threads (https://platform.openai.com/docs/assistants/how-it-works#:~:text=Assistants can access persistent Threads,it as your users reply.) -- they keep track of the threads.  Probably wouldn't need to keep the threads locally, because they could be gotten by the API whenever you need them.  The CLI would need to keep track of which thread you were on, and there'd probably have to be command line options for "make a new thread" vs. "pick up our chat as of the latest status on thread ID XYZ".   A good default behavior would be to start a new thread every time the app runs
one slight concern for me though is that it's such an early beta, like I could probably build code to do this in an afternoon, but it would suck if it breaks in 3 weeks


Add airtight component to diagonal shuttle walls

1 line edit to make diagonal walls airtight so they can be used.

How does this work if you're standing in the same tile as the diagonal? Will it not prevent air from reaching you?

I tested by spawning mice in the area. Before edit, they died, after they lived. Your concern is if someone is standing directly on the half tile that's "open"?

Yes.

hmm. well, seems a small chance that someone would stand in that spot for long enough to die, but making the walls act as a half tile is probably over my head.

where exactly are these mapped that this actually matters? if these are required to be airtight i cant imagine the map not looking incredibly wrong and ugly

Currently trying to use them here

They should not be full airtight, only the two flat walls should have the airtight bit set.

They should not be full airtight, only the two flat walls should have the airtight bit set.

I'm not sure I understand what you're saying.
The sections that are diagonal are letting not airtight and that's a problem.

The diagonal tiles should only block air in two directions, and let air flow in the other two. I.e., in tis image red = blocked.

so, if I'm not mistaken, it;s really just a matter of adding
noAirWhenFullyAirBlocked: false
airBlockedDirection:
- South
-East

I think so. you should also check the directions are correct by using the showatmos command.

Looks legit


CSRF Cookie not set

I just tried installing 2.15 via
$ sudo dpkg -i omnidb-server_2.15.0-debian-amd64.deb

syslog tells me that things seemed to start OK.   In /etc/omnidb.conf I changed
listening_address    = <IP_ADDRESS>
listening_port       = 8002

When I bring up the login page in a web browser, I get "request error" in the browser, and this message in syslog
Apr 30 13:48:55 ip-172-31-21-62 bash[22160]: [04/30/2019 13:48:55] WARNING [django.security.csrf:228] Forbidden (CSRF cookie not set.): /check_session_message/

Hi @ccurvey, did you configure omnidb.conf with is_ssl set to true?
How are you accessing with the browser? Is that a direct access or through a reverse proxy?
Rafael.

yes, I was trying to set up SSL for my OmniDB server, so I had set is_ssl=True.  But I have changed that back to False to try to get anything working again.
I'm directly hitting http://fqdn.of.my.server:8002  No proxy servers are involved (that I know of!)
I thought this might be a cacheing issue, as I'm getting the error in chrome, but not Firefox. I think that's wrong, as clearing Chrome's cache does not seem to change anything.

Hi @ccurvey ,
Thanks for explaining what was the issue you were seeing.
Best regards,
William

@ccurvey, did you also clear the cookies? If you can please try that.


Machine linux-16 went dead from network monitoring website.

Machine linux-16 went dead from network monitoring website.

linux-16 was hung and require to power recycle machine.


Remote workers don't receive submissions

Dear Codabench team,
My remote workers have stopped receiving any traffic - is there an explanation, recent update, etc. From one day to the next, submissions are not being processed. Everything was good on May 23, 2024, but they stopped working on May 24, 2024.
I have multiple remote workers, and I do see that they are connected when turning on/off:
[2024-05-24 19:50:31,650: INFO/MainProcess] missed heartbeat from compute-worker@94d6bfcb71122
[2024-05-24 19:55:00,922: INFO/MainProcess] sync with compute-worker@6e369caec6052

When using the default CPU queue, I can run submissions; however, due to the 20-minute limit, I have to use my own remote workers.
Link to Ekstra Bladet News Recommendation Competition
Best,
Johannes

Hi @johanneskruse
This is strange. We haven't changed anything that will break something. Can you please confirm the following:

Your submissions work on the default queue
Your workers are listening and the broker URL of your queue is configured there
Do you have GPU or CPU workers?

hi,
Thanks for the quick response.

Yes, it works on default query
The broker URL has been working until the 24.05.24 - never changed it. And they communicate with each other (have multiple). It been working perfectly for more than a month
They are CPU clusters

From: Ihsan Ullah @.>
Sent: Saturday, May 25, 2024 7:23:16 AM
To: codalab/codabench @.>
Cc: Johannes Kruse @.>; Mention @.>
Subject: Re: [codalab/codabench] Remote workers don't receive submissions (Issue #1455)
Hi @johanneskrusehttps://github.com/johanneskruse
This is strange. We haven't changed anything that will break something. Can you please confirm the following:

Your submissions work on the default queue
Your workers are listening and the broker URL of your queue is configured there
Do you have GPU or CPU workers?

—
Reply to this email directly, view it on GitHubhttps://github.com/codalab/codabench/issues/1455#issuecomment-2131289138, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AKICL5T7FGFBISIA6Z4CHX3ZECNFJAVCNFSM6AAAAABIICBK4OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZRGI4DSMJTHA.
You are receiving this because you were mentioned.Message ID: @.***>

Where are your workers hosted? Are you using google cloud or another service?

I am using Amazon Web Services (AWS) to run my remote workers on t3.xlarge instances (https://aws.amazon.com/ec2/instance-types/)

Can you do the following to see if this helps:

create another queue on codabench.
Stop your compute worker
Change the broker URL in your .env in your worker
Remove the compute worker image in your worker
Create the the worker again by following the instructions.
submit new submission

If this does not work, create a compute worker on Google Cloud and see if that works.

I have tried to follow your steps; unfortunately, it didn't change anything. I assume Codabench is run on Google Cloud. What are you running?

Have you tried a Google Cloud worker?

So far I've just been working with AWS and their cloud workers

Please try google cloud. That should work. I am not sure what is the problem with AWS. Or maybe contact AWS support maybe they will help you

Just to check, if there is anything unusual. This is the output logs when running starting my remote worker:
docker logs -f compute_worker
/usr/local/lib/python3.8/site-packages/celery/platforms.py:800: RuntimeWarning: You're running the worker with superuser privileges: this is
absolutely not recommended!

Please specify a different user using the --uid option.

User information: uid=0 euid=0 gid=0 egid=0

  warnings.warn(RuntimeWarning(ROOT_DISCOURAGED.format(

 -------------- compute-worker@1f29b478b104 v4.4.0 (cliffs)
--- ***** -----
-- ******* ---- Linux-5.15.0-1057-aws-x86_64-with-glibc2.34 2024-05-26 06:40:33
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app:         __main__:0x7fcc8a308a30
- ** ---------- .> transport:   amqp://63a35e45-cb28-4eed-9c2c-af8072bf9d9c:**@www.codabench.org:5672/394a4b70-ae72-4680-8bb8-4c956f7ed2f3
- ** ---------- .> results:     disabled://
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> compute-worker   exchange=compute-worker(direct) key=compute-worker

[tasks]
  . compute_worker_run

[2024-05-26 06:40:34,247: INFO/MainProcess] Connected to amqp://63a35e45-cb28-4eed-9c2c-af8072bf9d9c:**@www.codabench.org:5672/394a4b70-ae72-4680-8bb8-4c956f7ed2f3
[2024-05-26 06:40:34,399: INFO/MainProcess] mingle: searching for neighbors
[2024-05-26 06:40:35,774: INFO/MainProcess] mingle: all alone
[2024-05-26 06:40:36,142: INFO/MainProcess] compute-worker@1f29b478b104 ready.

Also, have you made a guide how to set it up using Google Cloud Compute?

And just for reference, this happened for all my remote workers:

Logs look good.
For Google cloud the guidelines are the same. You have to go to google cloud console. Select VM instances. Click Create Instance (select storage, memory, location of VM, allow http/https traffic). You can access the VM through a shell provided on the console. The rest of the setup is the same

I've set up remote working using Google Cloud; however, unfortunately, this hasn't changed anything.

Please repeat the google cloud with a new queue.

With a new queue I get the following:
[2024-05-27 05:03:13,245: INFO/MainProcess] Connected to amqp://63a35e45-cb28-4eed-9c2c-af8072bf9d9c:**@www.codabench.org:5672/ff428499-5eab-44cf-8c25-6f2680a0a956
[2024-05-27 05:03:13,966: INFO/MainProcess] mingle: searching for neighbors
[2024-05-27 05:03:17,346: INFO/MainProcess] mingle: all alone
[2024-05-27 05:03:17,916: CRITICAL/MainProcess] Unrecoverable error: PreconditionFailed(406, "PRECONDITION_FAILED - inequivalent arg 'x-max-priority' for queue 'compute-worker' in vhost 'ff428499-5eab-44cf-8c25-6f2680a0a956': received the value '10' of type 'signedint' but current is none", (50, 10), 'Queue.declare')
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/celery/worker/worker.py", line 205, in start
    self.blueprint.start(self)
  File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py", line 369, in start
    return self.obj.start()
  File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py", line 318, in start
    blueprint.start(self)
  File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/tasks.py", line 40, in start
    c.task_consumer = c.app.amqp.TaskConsumer(
  File "/usr/local/lib/python3.8/site-packages/celery/app/amqp.py", line 301, in TaskConsumer
    return self.Consumer(
  File "/usr/local/lib/python3.8/site-packages/kombu/messaging.py", line 386, in __init__
    self.revive(self.channel)
  File "/usr/local/lib/python3.8/site-packages/kombu/messaging.py", line 408, in revive
    self.declare()
  File "/usr/local/lib/python3.8/site-packages/kombu/messaging.py", line 421, in declare
    queue.declare()
  File "/usr/local/lib/python3.8/site-packages/kombu/entity.py", line 611, in declare
    self._create_queue(nowait=nowait, channel=channel)
  File "/usr/local/lib/python3.8/site-packages/kombu/entity.py", line 620, in _create_queue
    self.queue_declare(nowait=nowait, passive=False, channel=channel)
  File "/usr/local/lib/python3.8/site-packages/kombu/entity.py", line 648, in queue_declare
    ret = channel.queue_declare(
  File "/usr/local/lib/python3.8/site-packages/amqp/channel.py", line 1148, in queue_declare
    return queue_declare_ok_t(*self.wait(
  File "/usr/local/lib/python3.8/site-packages/amqp/abstract_channel.py", line 88, in wait
    self.connection.drain_events(timeout=timeout)
  File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 508, in drain_events
    while not self.blocking_read(timeout):
  File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 514, in blocking_read
    return self.on_inbound_frame(frame)
  File "/usr/local/lib/python3.8/site-packages/amqp/method_framing.py", line 55, in on_frame
    callback(channel, method_sig, buf, None)
  File "/usr/local/lib/python3.8/site-packages/amqp/connection.py", line 520, in on_inbound_method
    return self.channels[channel_id].dispatch_method(
  File "/usr/local/lib/python3.8/site-packages/amqp/abstract_channel.py", line 145, in dispatch_method
    listener(*args)
  File "/usr/local/lib/python3.8/site-packages/amqp/channel.py", line 279, in _on_close
    raise error_for_code(
amqp.exceptions.PreconditionFailed: Queue.declare: (406) PRECONDITION_FAILED - inequivalent arg 'x-max-priority' for queue 'compute-worker' in vhost 'ff428499-5eab-44cf-8c25-6f2680a0a956': received the value '10' of type 'signedint' but current is none

Not sure what is happening there.
Can you please list down the steps you are following to setup a worker and then linking it to your queue. @Didayolo do you have any idea?
By the way I was recently using Google Cloud workers for a competition and I haven't faced any issue like this

I follow the guide you have provided step-by-step.
On both AWS and Google Cloud.

Create Instance
docker pull codalab/competitions-v2-compute-worker
Make .env file
Make a broken URL and copy it to the.env file
Run the docker run \ (...)

Everything was been working perfectly until Friday.

Everything was been working perfectly until Friday.

You mean that you were able to process submissions on your workers in the past, and it stopped working?

Yes, that's what has happened at our end. Taking over from @johanneskruse .

Adding a few details, I've set up a new smaller version of the competition, the submissions for this new dummy competition run on the default queue without any issues but when I set up the new queue attached to a gcp worker, the submissions are stuck on "Submitting" and the worker gets no traffic, logs remain unchanged.
The steup of the GCP worker is the same as @ihsaan-ullah has provided above.

Logs look good.
For Google cloud the guidelines are the same. You have to go to google cloud console. Select VM instances. Click Create Instance (select storage, memory, location of VM, allow http/https traffic). You can access the VM through a shell provided on the console.

We are generally following the steps given here for CPU workers - https://github.com/codalab/codabench/wiki/Compute-Worker-Management---Setup
Thanks

I'm running into this issue too, which can be reproduced by creating a competition using the example in https://github.com/codalab/competition-examples/tree/master/codabench/wheat_seeds.

Add a private queue in the Queue management tab
Add a queue field to the competition.yaml file in the example folder, with the value set to the Vhost of the queue
Run zip -r comp.zip .  inside the example folder
Upload comp.zip in https://www.codabench.org/competitions/upload/

This creates a benchmark, with the private queue configured as indicated by the GUI.
Following the steps for running a compute worker (https://github.com/codalab/codabench/wiki/Compute-Worker-Management---Setup), create a .env like this:
# Queue URL
BROKER_URL=<REDACTED>

# Location to store submissions/cache -- absolute path!

Please specify a different user using the --uid option.

User information: uid=0 euid=0 gid=0 egid=0

  warnings.warn(RuntimeWarning(ROOT_DISCOURAGED.format(

 -------------- compute-worker@11bfd8fffc9e v4.4.0 (cliffs)
--- ***** -----
-- ******* ---- Linux-6.5.0-1023-oem-x86_64-with-glibc2.34 2024-05-27 10:48:23
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app:         __main__:0x76d8c5837a30
- ** ---------- .> transport:   amqp://f6fb6c54-275d-4137-8212-f3fe87e4fc24:**@www.codabench.org:5672/699b95f9-b3a3-40a2-9701-02ebcd7d3158
- ** ---------- .> results:     disabled://
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> compute-worker   exchange=compute-worker(direct) key=compute-worker

[tasks]
  . compute_worker_run

[2024-05-27 10:48:23,877: INFO/MainProcess] Connected to amqp://f6fb6c54-275d-4137-8212-f3fe87e4fc24:**@www.codabench.org:5672/699b95f9-b3a3-40a2-9701-02ebcd7d3158
[2024-05-27 10:48:24,315: INFO/MainProcess] mingle: searching for neighbors
[2024-05-27 10:48:25,795: INFO/MainProcess] mingle: all alone
[2024-05-27 10:48:26,267: INFO/MainProcess] compute-worker@11bfd8fffc9e ready.

Then, submitting the default sample sample_code_submission.zip, it shows up in https://www.codabench.org/server_status:

It hangs from here.

After reading https://github.com/codalab/codabench/issues/1457, I can confirm that even the default queue does not process jobs anymore, even for the example competitions.

@julianevanneeleman
Indeed, we have some issues with the default queue. Right now it is working again, by we are actively investigating the problem to avoid it happening again.

On my side I am not able to reproduce the problem. I tried several custom queues and several workers, and they are receiving and computing the submissions without problem.
Can you retry? Maybe it was linked to other problems of the platform (queue congestion, ...)

My workers are now receiving submissions again! I haven't changed or done anything on my end.
Thank you for the shift actions; I hope it stays stable for now. I will follow #1446 closely.

Everything is probably linked. I'm closing this issue and keeping the other one open.

Indeed I can see that the submissions are stuck in "Submitted" on your queue: https://www.codabench.org/server_status
I don't know the reason. I'll investigate this.

Hi @Didayolo, thank you for getting back!
Are there anything we can do in the mean while or help to debugging this issue?

I did start a new issue #1473

Indeed I can see that the submissions are stuck in "Submitted" on your queue: https://www.codabench.org/server_status
I don't know the reason. I'll investigate this.

I'm now able to access the ``server_status; however, it doesn't register the newly assigned queue, and when using RecSys24_competition_v4```, I get the error from #1473.

I tried to remove RecSys24_competition_v4. Now the queue is always *.

It's now showing the new queue, but there is still no connection to the worker:


Servers value always turned into relative value

Description
New to using connexion but...
Whenever I specify the servers attribute in my swagger.yaml file with values such as "http://locahost:8080/v1" or "http://example.com/v1" the server value is always replaced with one entry of "v1" when looking at the Swagger UI after running the app. Am I doing something wrong?
Expected behaviour
servers value in openapi.json shows absolute url for the server
Actual behaviour
servers value shows relative value ("/v1") as the only server entry
Steps to reproduce
specify the servers value of
servers:
  - url: "http://localhost:8080/v1"

and run the app. Look at the generated openapi.json file
Additional info:
Output of the commands:

python --version
Python 3.6.8
pip show connexion | grep "^Version\:"
Version: 2.6.0

I see the same thing.  Furthermore:  if you specify something like
servers:
  - url: https://{customerId}.saas-app.com:{port}/v2
    variables:
      customerId:
        default: demo
        description: Customer ID assigned by the service provider
      port:
        enum:
          - '443'
          - '8443'
        default: '443'

It also just turn it into "/v2".  I care about this because I want to be able to use a reverse proxy in front of the swagger UI and have the requests work properly as in the SaaS example here.

Hey @ktarplee - This change was actually introduced in order to enable using path-altering reverse-proxies ( here: https://github.com/zalando/connexion/pull/823 ).
It's a tricky thing to implement - from the spec, it isn't clear if connexion should be the server for every server in the block, and if so how it should handle multiple servers in the list with different paths.
If you follow the reverse-proxy example, the base-path is autogenerated based on the reverse-proxy path.
I'm up for changing the behavior (I admit it has confused a lot of people), but we'd need to first answer the question "Who is the servers block for?". Is it for the UI? Is it for the flask app? Is it for the reverse proxy?
Since connexion can host swagger-ui, we need to be self-consistent in order for everything to work correctly as a cohesive package.

@dtkav Thanks for the issue link.  The solution you currently have does not work for me in the case of the path-altering reverse-proxy.  Let me explain:
The relevant part of the server looks like:
def main(port=5000):
    app = connexion.AioHttpApp(__name__, port=port)

    yaml = ruamel.yaml.YAML(typ='safe')
    with importlib.resources.path('act3.test_py_api', 'api.yaml') as f:
        openapi_dict = yaml.load(f)

    app.add_api(openapi_dict, arguments={'title': 'Simple Greeter'}, strict_validation=True, validate_responses=True)
    app.run(debug=True)

My nginx.conf file (for the reverse proxy) is:
worker_processes  1;

events {
    worker_connections  1024;
}

http {

    server {
        listen 8080;

        location /api/ {
            # The trailing slash is important
            # http://localhost:8080/api/v1.0/x will proxy to http://<IP_ADDRESS>:5000/v1.0/x (this is the API server)
            proxy_pass http://<IP_ADDRESS>:5000/;
        }
    }
}

docker run --name nginx-reverse -v $PWD/nginx_simple.conf:/etc/nginx/nginx.conf:ro -p 8080:8080 --rm -it nginx
If I do this:
curl -s http://localhost:8080/api/v1.0/openapi.json | jq .servers
I get
[
  {
    "url": "/v1.0"
  }
]

It should use url=/api/v1.0 or an absolute path http://.../api/v1.0 for the swagger UI to work properly.  What am I missing?

@dtkav It seems that the text in https://swagger.io/specification/#serverObject answers your questions about the server block.

REQUIRED. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the OpenAPI document is being served. Variable substitutions will be made when a variable is named in {brackets}.

The part about "to indicate that the host location is relative to the location where the OpenAPI document is being served" means that we MAY (which I will say should) support have url="." or "./" to indicate the API is in the current directory.  There is no need to re-write the servers block as it is NOT meant to always be absolute.  Swagger-UI should just make relative requests by joining the server url (".") with the handler URI "/greeting/dave" to make the AJAX request to ./greeting/dave which will resolve (by the browser) properly to http://localhost:1234/api/v1.0/./greeting/dave

I found one solution/hack that will work for @timeconsumer .  You can add a new GET for /openapi.  Add it to your api.yaml file and write the handler that just returns the JSON of the un-modified api.yaml file.  Then when you go to Swagger-UI you can change the path to the openapi.json file to ../openapi.  Then you will see the unmodified servers block and will be able to do what you originally intended.  As long as connexion is modifying the servers block, you won't be able to use the features that you and I want in the servers block (like variables).


PURCHASE-1454 Open web view target='_blank' links by pushing to navigation stack

Fixes PURCHASE-1454
For some reason this navigation messes with the close button's position persistently. We already have a QA ticket for that bug on notion because it's affecting the auction views too, so I'm happy to tackle it separately. What do you think @alloy?

Can you please link to the actual jira ticket?

For some reason this navigation messes with the close button's position persistently. We already have a QA ticket for that bug on notion because it's affecting the auction views too, so I'm happy to tackle it separately. What do you think @alloy?

I concur 👍

Can you add some test coverage? But otherwise this is great 👌

@alloy tests added 🍏

Great stuff, thanks @ds300 👍
#MergeOnGreen


Disable youtube logo when video is paused

Hi i want to know if there is a way to disable the youtube logo that shows up on right side of the screen when the video is paused, thanks.

Hi, no unfortunately it's not possible. The IFrame API player shows it even when the UI is disabled.