Add TCP support

Currently we only support UDP clients
If this blocks you from using pion-turn please comment, and we can escalate

I tried to use pion-turn with SimpleWebRTC clients. They weren't able to connect to each other and the server logged several:
YYYY/MM/DD HH:MM:SS Failed to handle ALLOCATE-REQUEST from XXX.XXX.XXX.XXX:1650: MessageIntegrity mismatch 227dde3a5dfea88f12e8ac08d5e4497a ace4ee917261ed5d5037e8a9da505039fe0ecf54

Is that related? If so, I think for compatibility reasons TCP should be implemented.

Hey @iwittkau
MessageIntegrity is for authentication, what browser were you using? At one time we had a bug that broke FireFox https://github.com/pions/turn/commit/c0352cc33c523f5bbea8eae0f899f5254f458e64
I will improve the error message so it says to double check the username/credential also

I was using Chrome 65 on macOS.
I now tested it again with the WebRTC samples Trickle ICE Test which said "Authentication failed?". Same error in pion-turn: "MessageIntegrity mismatch".

Is it possible the username/password is wrong?
I did make modifications to simple-turn with https://github.com/pions/turn/commit/04bf642eceea8e112e19b59ee165d9b9dea4ab1a but I have been using the TURN server and auth has worked fine for me so far!

I was able to get it to work now: it wasn't an authentication failure. I had pion-turn listen on a port that was also opened for TCP requests in the firewall. So I disabled TCP for the pion-turn port in my firewall.
It seems like TURN clients try to use TCP first, if available?
Anyway, I can now report that it works flawlessly with andyet's SimlpeWebRTC clients and signalmaster!

@iwittkau Thanks again for being such a fantastic user/tester :) that is great to hear!
I will start a branch with TCP support this weekend! It shouldn't be that hard, just been distracted working on pions/webrtc which has been a lot of fun.

@Sean-Der nice! Hope I can test that sometime aswell :)

@iwittkau hey! sorry I didn't get to this during the weekend, was caught up doing DTLS stuff :(
Promise that this week will start on it, I am really excited to get this done. Then there shouldn't be any reason people can't use us!

Hey @oec
Sorry for the slow response, I am going through and triaging all our issues!
pion/webrtc really took off as far as users requests and interest, and has taken up most of my time. Since it has production users (and most interest) it has gotten most of my attention.
I do think we will get to this by the end of the summer though! We use pion/turn to test pion/webrtc and we have had a few requests for TCP TURN support. I will update this ticket when I start on that though.
thanks for the patience, and if I can ever be helpful always happy to talk on Slack

@Sean-Der in case it helps, here are my thoughts for what it's worth...
Framing
We will need to synchronize the STUN packets over TCP. I do not think RFC 5766 does not mention anything about how the synchronization should work. I believe, we have to follow STUN RFC Sec 7.2.2 for it, which seems to indicate that we do not have to have additional framing layer (use STUN packet's length field, also length field of Channel Bind). In addition to that, RFC 5766 requires padding for packets over TCP stream. (RFC 5766 Sec 11.5) - probably the hardest part of TCP support.
Retransmission
RFC 5766 does not mention anything about how to deal with retransmission of STUN packets over TCP.  Probably we will need to follow STUN RFC.
   Reliability of STUN over TCP and TLS-over-TCP is handled by TCP
   itself, and there are no retransmissions at the STUN protocol level.

So, we should turn off the retransmissions implemented in the "PerformTransaction" method when TCP is used..

pion/webrtc now supports TCP!
I will know working on adding server support to pion/turn so we can have integration tests

@enobufs I started looking at this, what do you think of these API ideas?
I would like the API to be like how we have Client people pass in Conn/Listeners, and then we just loop over them. That will give people the flexibility they need to do UDP, DTLS, TCP and TLS. It will require API breakage though.
turn.ServerConfig{
    PacketConns []*net.PacketConn
    PacketConnListeners []func() (*net.PacketConn err)
}

Then users can populate the PacketConns with UDP sockets. PacketConnListeners will be full of blocking functions that return a TCP or TLS socket that is wrapped with a STUNConn so it will appear to be a PacketConn so we can keep the internal code simple still.

Then I will make our interface iteration code and update the examples to use them.

@Sean-Der
I have actually been wondering if turn.Client should have completely owned the conn.
The reason is because, when you try to close, turn.Client, it has to close the conn to have conn.Read() unblock. (this problem may be happening in CandidateRelay...) I also thought about using conn.SetReadDeadline to unblock Read(), but then turn.Client is changing the behavior of conn that it does not own.
Any thoughts?

Oof that is a tough one, I don't know which is better.
I think closing the passed socket is 'least' surprising. Otherwise we will be leaking a goroutine. It will also be pretty easy for the user to debug/tell that the socket was closed if they were reading it in another thread.
I wish Go had the ability to cancel Reads, that would make this a lot easier! Something like select would be great

Personally I like how Client is, it gives us the flexibility to do a lot more. After we land TCP support I am going to update the docs and talk more about the 'vision' and setup auto-building.
I think it is really powerful if we can provide an 'API for building TURN servers'. At work scaling coturn is really painful, I would love if we could get pion/turn to the point that we could easily scale it. So I think having hooks (but maybe less new dev friendly) is the way to go.

I am fine with decoupling conn from Client and Server as long as we can do so safely.
Looking at turn.Client code, it attempts both patterns, deatch and non-detached conn, but with one problem as I mentioned above, where you pass conn to turn.Client, but if you use Listen(), you cannot unblock Read() unless you close the conn you attempted to detach. Too bad golang's net is designed this way and not as flexible as C's select() / poll(), etc. (I agree with you), but my instinct says, we should follow the Go way, or it would bite you back later.
Therefore, I think if we should have the following design policy:

When conn is not detached, turn.Client/Server should read/write and manage the entire lifecycle of the conn. (needless to say)
When conn is decoupled, turn.Client/Server should not directly read data from conn. Have the user code read the data, then provide a method like HandleInbound().

Current turn.Client does not create the conn by itself but provides Listen() method which reads data from the conn, which is the problem I see, and we will need to fix it.
We could support both patterns. But I personally feel we could do the decoupling when it becomes absolutely necessary.

My vote is we only do HandleInbound()then! Would you be ok with getting rid of Listen I would prefer we only have one pattern of doing this.
I don't mind verbosity, I think this way accomplishes what I want the most (Flexibility, Explicit/Not Bug Prone)
re: scaling. I don't like how coturn forces you to do integrations (with stuff like redis). Lots of companies have existing proprietary systems, so I want to make that easy. If people want easy 'drop in TURN server' that problem has already been solved :)
Would you be ok with me starting a v2 branch, and when we are ready we can make that master? It will be a decent amount of breaking changes, but it will enable TCP for the server and get rid of Listen and we will only have HandleInbound

It's your call!
It's just me trying not to invest anything until I know exactly what the goal is.  I know you have some idea!

Totally understand! I will do /v2 if we don't like it we can start over.
I really love your feedback though, lots of great ideas have come out of it! I have made so many tech debt mistakes, so nice to get others people opinion.
thanks @enobufs! Will try to have something this weekend, I really want to have integration tests before I call  TCP support done.

Thanks for this project, really useful. Is there any more progress on TCP support?

@rstinear hey! I am REALLY shooting to have this done this weekend.
Technically the work isn't hard just struggling with designing a good API, I want to measure twice cut once hopefully :) I will have a PR you can test with that supports UDP, DTLS, TCP and TLS by the end of this weekend!

How have you gotten on @Sean-Der ? I'm still keen to take a look at a PR when you get the chance, thanks!

@rstinear yes! It is a real mess right now, but I have been prototyping on https://github.com/pion/turn/blob/v2/examples/turn-server/main.go#L59-L81 it is a mess, but I am playing around with ideas I have wanted to do for a while.
You pass Conn and PacketConn directly into the server

You can intercept/inspect traffic easier. This could let people do interesting things.
You can do more then just TCP/UDP/TLS/DTLS. People can do testing/simulations easier.

Having a RelayAddressGenerator. You can generate the `relay-address

It will make load balancing easier if you want to share your allocations across many servers
It should work out of the box for the typical AWS user. If you put it behind a NAT it will work, no scripting to setup the external-address

And maybe more ideas! Sorry I have gotten more aggressive with the refactoring, I just wanted to build something that solved problems I have learned about in the past year :)

Hey @rstinear
TCP support is merged into master. I am going to work on bringing up the code coverage ~80% and fixing bugs before I announce though!
If you have any opinions/thoughts I would love to hear them. The design has dramatically changed, but I believe this goes down the path of solving issues with TURN servers people have been fighting.

Ok I feel pretty good about this, check it out when you get a chance! We have a simple example here
I would love peoples feedback. I also have the v2 release notes to see everything that went into this release. I would love peoples feedback before I announce to the greater world.
I am going to try and put as much polish as possible into pion/turn, but will get dragged away in about a week. So if anyone has things they can think of now I would love to hear!


Bumping to version 1.0.3, setting min iOS to 15.0

Jira story: https://doximity.atlassian.net/browse/IOSDOX-12132
Bumping the podspec version and min iOS version supported to work with Doximity. I set the min iOS version to 15.0 to account for many of our app users that are still on iOS 15.

@dmallory, I'm requesting a review to sanity check the change to CODEOWNERS file


Support for --source and --target in JavaBuild::compile()

Hi,
I am trying to compile your excellent robius-authentication crate for android using a Flutter/Android Studio setup and I am getting a class version mismatch.
I think it is because in the Android Studio gradle config I have:
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = '17'
    }

But when JavaBuild::compile() is executed it uses the latest available version (21) yielding this error:
SEVERE:   Error in /Users/muji/git/sos/local_auth/build/rust_lib_local_auth/build/aarch64-linux-android/debug/build/robius-authentication-3a6eb04dd668c228/out/robius/authentication/AuthenticationCallback.class:
SEVERE:   java.lang.IllegalArgumentException: Unsupported class file major version 65

I really don't want to change the version in Android Studio as it will likely wreak havoc with other dependencies so I wonder if it makes sense to add a couple more environment variables to android-build so we can specify the source and target compile versions?
Perhaps ANDROID_SOURCE_VERSION and ANDROID_TARGET_VERSION could be translated to the --source and --target javac options?
I don't think it's feasible to set JavaBuild::command() directly as android-build is a transient dependency of robius-authentication in this case.
FWIW, these are the configured environment variables (trying to ensure that android-build uses the same JDK as Android Studio):
export ANDROID_JAR="$ANDROID_SDK/platforms/android-34/android.jar"
export ANDROID_SDK_ROOT="$ANDROID_SDK"
export ANDROID_D8_JAR="$ANDROID_SDK/build-tools/34.0.0/lib/d8.jar"
export ANDROID_BUILD_TOOLS_VERSION="34.0.0"
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"

Happy to contribute a PR if you think this approach is correct, thanks 🙏

A note to myself or anyone else stumbling on this, after updating to set --source and --target in a fork I hit this error:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not resolve all files for configuration ':app:androidJdkImage'.
   > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}.
      > Execution failed for JdkImageTransform: /Users/muji/Library/Android/sdk/platforms/android-34/core-for-system-modules.jar.
         > Error while executing process /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/jlink with arguments {--module-path /Users/muji/.gradle/caches/8.10.2/transforms/7e6fe1d7056aecdc23d8f8d7c1f001d4-d1961ba1-ee63-44c4-8320-d1c77b9c65c5/transformed/output/temp/jmod --add-modules java.base --output /Users/muji/.gradle/caches/8.10.2/transforms/7e6fe1d7056aecdc23d8f8d7c1f001d4-d1961ba1-ee63-44c4-8320-d1c77b9c65c5/transformed/output/jdkImage --disable-plugin system-modules}

The fix was to update the "com.android.application" (in my case from 8.1.0) to:
plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version "8.7.0" apply false
    id "org.jetbrains.kotlin.android" version "1.8.22" apply false
}

And make sure you are using 8.10.2 in the gradle wrapper.

thanks, this is certainly something we'd be happy to add support for.
(sorry for the delay, was on vacation)

All good @kevinaboos , hope you had a good vacation! I have updated the PR which should close this 👍


Implement removing rules

Steps that will reproduce the problem?

Open appFirewall.app
Select an entry in one of the lists
Try to remove it

What is the expected result?
No option to remove a rule.
What happens instead?
Other options related to information, blocking, whitelisting are available.
Possible workaround:
n/a
Any additional information:
none

wrong repo


[events] handle missing data

handle when server passes empty data fields

on autopush:

with this fix:

Thanks for the fix Jennifer!  Does this address the other empty event type page too (I forget floods was it)?


Move to helm chart (deploy to new cluster)

Don't simply merge this, I need to create the PVC and transfer the state manually before this can be deployed
I've overwritten the KUBECONFIG_RAW org secret with a repo secret, the KUBECONFIG_RAW secret in this repo is configured to deploy to the new cluster.
output of dry_run (helm upgrade -n telegram-bots hhhdiffbot . --install --dry-run):
---
# Source: hhh-diff-bot/templates/secret.yml
apiVersion: v1
kind: Secret
metadata:
  name: hhhdiffbot-telegram-token
  namespace: telegram-bots
data:
  DEFAULT_PASSWORD: "__TELEGRAM_TOKEN__"
---
# Source: hhh-diff-bot/templates/pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: hhhdiffbot-state
  namespace: telegram-bots
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
# Source: hhh-diff-bot/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hhhdiffbot
  namespace: telegram-bots
spec:
  revisionHistoryLimit: 1
  replicas: 1
  selector:
    matchLabels:
      app: hhhdiffbot
  template:
    metadata:
      labels:
        app: hhhdiffbot
    spec:
      containers:
      - name: hhhdiffbot
        image: ghcr.io/preparingforexams/hhh-diff-bot:__TAG__
        imagePullPolicy: Always
        envFrom:
          - secretRef:
              name: hhhdiffbot-telegram-token
        volumeMounts:
          - mountPath: /data
            name: hhhdiffbot-state
        resources:
          requests:
            cpu: 50m
            memory: 50Mi
      volumes:
      - name: hhhdiffbot-state
        persistentVolumeClaim:
          claimName: hhhdiffbot-state

I find your heavy usage of Helm templates more confusing than helpful, but generally I approve.

Makes it easier to be reusable across projects IMO


[#115403129] Build from tag in staging and production

What
Story: Enable build from tag option
Adds the tag_filter option on the paas-cf git resource in all the pipelines and creates predefined filters for staging and production.
This is controlled via make commands or can be set via the variable $PAAS_CF_TAG_FILTER
How to review

Build an environment, including bootstrap with different values for variable $PAAS_CF_TAG_FILTER
Empty variable means no filter and all commits will pass
To test for staging and prod, you can execute the targets set_stage_tag_filter or set_prod_tag_filter within the dev target.
Push tags (annotated tags preferred). Patterns are glob(7) compatible
Observe the paas-cf resource only fetches the required commits
Observe the bosh-cf pipeline is triggered

Who can review
Anyone but me

I'm unable to review this at the moment due to us having reached the max number of ELBs in the dev account. (We're going to fix that, but it might take a while).

+1

We should update the README to refer to the new bootstrap targets in the Makefile.

Comments addressed

Tested OK. I'll have look over the updated commits on Monday :+1:

:+1:


Rename package to just graphula

There is no graphula-{not core} anymore, so the -core is superfluous. I had
intended to upload this package to Hackage as graphula, but missed this little
name.
I assume I can just re-release like this to create graphula on Hackage too,
but what do I do with the graphula-core there now?

I believe you can deprecate a package...

On the maintainers page
http://hackage.haskell.org/package/graphula-core/maintain

Perfect, will do.


Bug(scope):  SyntaxError: Unexpected token 'export' after update from Angular 18 to 19

Is there an existing issue for this?

[X] I have searched the existing issues

Relates to https://github.com/jsverse/transloco/issues/714 but non of the described fixes work
Which Transloco package(s) are the source of the bug?
Transloco
Is this a regression?
Yes
Current behavior
after the update to Angular 19 the jest test don't compile anymore:
{code}
C:\projects\xyz\src\Web\Client\node_modules\flat\index.js:10
export function flatten(target, opts) {
^^^^^^

SyntaxError: Unexpected token 'export'

>  | import { translate } from '@jsverse/transloco';
   | ^

{code}
Expected behavior
it should compile as with Angular 18
Transloco Config
No response
Please provide the environment you discovered this bug in
Transloco: "@jsverse/transloco": "^7.5.0",
Angular: 19
Node: v20.17.0
Package Manager: npm 10.8.2

"jest": "^29.7.0",
"jest-preset-angular": "^14.4.2",
"jest-transform-stub": "^2.0.0",

the jest.config.ts already contains the transformIgnorePatterns mentioned in https://github.com/jsverse/transloco/issues/714
transformIgnorePatterns: ['node_modules/?!(.*\\.mjs$|@jsverse)'],

Additional context
Relates to https://github.com/jsverse/transloco/issues/714

We have added
  transformIgnorePatterns: ['node_modules/?!(.\\*.mjs$|@jsverse)'],
  moduleNameMapper: {
    '^flat': 'node_modules/flat/index.js',
  },

in our jest.preset.js. Now it works.

@seventyeight if we use it like you describe we get:
   Configuration error:

    Could not locate module flat mapped as:
    node_modules/flat/index.js.

    Please check your configuration for these entries:
    {
      "moduleNameMapper": {
        "/^flat/": "node_modules/flat/index.js"
      },
      "resolver": undefined
    }

       5 | import { cypressId } from '../../../../helpers/cypressId';
       6 | import { T } from 'T';
    >  7 | import { TranslocoPipe, translate } from '@jsverse/transloco';
         | ^
       8 |
       9 | @Component({
      10 |     selector: 'gcert-dialog-actions',

if we use '^flat': '<rootDir>/node_modules/flat/index.js' instead to make sure the correct dir is used we are back where we started:
export function flatten(target, opts) {
    ^^^^^^

SyntaxError: Unexpected token 'export'

@ChristianSchwarz Hey, if you create a fresh repo does it reproduce? this is also required to provide a reproduction when submitting an issue

To fix the issue I forced flat dependencies in package.json
  "overrides": {
    "@jsverse/transloco": {
      "flat": "5.0.2"
    },
  }

Then I removed the specific transformIgnorePatterns and moduleNameMapper for flat.
Hope that helps for quick fix

for some reason, module name mapping doesn't work on <rootDir>/node_modules/flat
If I copy <rootDir>/node_modules/flat/index.js to my project, ie: <rootDir>/overrides/flat/index.js
I can map, and jest test will be back to normal
  "moduleNameMapper": {
    "^@lucca/cdk/(.*)$": "<rootDir>/projects/lucca-cdk/$1/src/public-api.ts",
    "^flat": "<rootDir>/overrides/flat/index.js"
  },

We fixed the issue by setting the "flat" version to "5.0.2" in the package.json, but we workaround https://github.com/jsverse/transloco/issues/817#issuecomment-2544854886 looks more clear.
@shaharkazaz  many people have the same problem and for some projects there is no clean solution yet. What about removing the dependency to "flat" from transloco? It seems like "flat" provides only a few utility functions that could be rewritten in transloco. This would save a lot of time for us users, see how many people had this issue and in #714 too. I assume that a total of +100 hours were wasted on the “flat” problem.


Uncaught SyntaxError: Unexpected token U

[Enter steps to reproduce below:]

...
...

Atom Version: 1.3.2
System: Microsoft Windows 10 Pro
Thrown From: Remote-FTP package, v0.7.15
Stack Trace
Uncaught SyntaxError: Unexpected token U
At file:///C:/Users/gpopa.TAYCOR/AppData/Local/atom/app-1.3.2/resources/app.asar/static/index.html#%7B%22locationsToOpen%22%3A%5B%7B%22pathToOpen%22%3A%22C%3A%5C%5CUsers%5C%5CGPOPA~1.TAY%5C%5CAppData%5C%5CLocal%5C%5CTemp%5C%5Cscp22471%5C%5Chome%5C%5Cdesktop%5C%5Csalesapp%5C%5Cmeteor%5C%5Cclient%5C%5Ctimeline.js%22%2C%22initialLine%22%3Anull%2C%22initialColumn%22%3Anull%7D%2C%7B%22pathToOpen%22%3A%22C%3A%5C%5CUsers%5C%5Cgpopa.TAYCOR%5C%5C.atom%22%2C%22initialLine%22%3Anull%2C%22initialColumn%22%3Anull%7D%5D%2C%22windowInitializationScript%22%3A%22C%3A%5C%5CUsers%5C%5Cgpopa.TAYCOR%5C%5CAppData%5C%5CLocal%5C%5Catom%5C%5Capp-1.3.2%5C%5Cresources%5C%5Capp.asar%5C%5Csrc%5C%5Cinitialize-application-window.js%22%2C%22resourcePath%22%3A%22C%3A%5C%5CUsers%5C%5Cgpopa.TAYCOR%5C%5CAppData%5C%5CLocal%5C%5Catom%5C%5Capp-1.3.2%5C%5Cresources%5C%5Capp.asar%22%2C%22devMode%22%3Afalse%2C%22safeMode%22%3Afalse%2C%22profileStartup%22%3Afalse%2C%22appVersion%22%3A%221.3.2%22%2C%22atomHome%22%3A%22C%3A%5C%5CUsers%5C%5Cgpopa.TAYCOR%5C%5C.atom%22%2C%22shellLoadTime%22%3A282%2C%22projectDirectoryPaths%22%3A%5B%22C%3A%5C%5CUsers%5C%5CGPOPA~1.TAY%5C%5CAppData%5C%5CLocal%5C%5CTemp%5C%5Cscp22471%5C%5Chome%5C%5Cdesktop%5C%5Csalesapp%5C%5Cmeteor%5C%5Cclient%5C%5Ctimeline.js%22%2C%22C%3A%5C%5CUsers%5C%5Cgpopa.TAYCOR%5C%5C.atom%22%5D%7D:10

SyntaxError: Unexpected token U
    at Object.parse (native)
    at C:\Users\gpopa.TAYCOR\.atom\packages\Remote-FTP\lib\client.js:78:21
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)

Commands
     -7:25.3.0 tree-view:remove (li.file.entry.list-item.selected)
  2x -7:18.6.0 tree-view:remove-project-folder (span.name.icon.icon-file-directory)
     -7:03.3.0 remote-ftp:create-sftp-config (ol.tree-view.full-menu.list-tree.has-collapsable-children.focusable-panel)
  2x -6:56.8.0 remote-ftp:toggle (ol.tree-view.full-menu.list-tree.has-collapsable-children.focusable-panel)
     -6:51.7.0 application:open-folder (atom-pane.pane.active)
     -6:40.5.0 remote-ftp:toggle (atom-pane.pane.active)
     -5:14.5.0 remote-ftp:connect (ol.tree-view.full-menu.list-tree.has-collapsable-children.focusable-panel)
     -5:00.7.0 remote-ftp:toggle (atom-pane.pane.active)
     -3:15 tree-view:remove-project-folder (span.name.icon.icon-file-directory)
     -2:55.1.0 remote-ftp:toggle (ol.tree-view.full-menu.list-tree.has-collapsable-children.focusable-panel)
     -2:27.2.0 remote-ftp:create-sftp-config (ul.list-inline.tab-bar.inset-panel)
     -2:12.3.0 core:backspace (atom-text-editor.editor.is-focused)
     -1:57.7.0 core:move-left (atom-text-editor.editor.is-focused)
  2x -1:56.8.0 core:paste (atom-text-editor.editor.is-focused)
  3x -1:41.5.0 core:save (atom-text-editor.editor.is-focused)
     -0:01.3.0 remote-ftp:connect (atom-text-editor.editor.is-focused)

Config
{
  "core": {}
}

Installed Packages
# User
color-picker, v2.0.14
highlight-selected, v0.11.1
minimap-highlight-selected, v4.3.1
remote-edit, v1.8.23
Remote-FTP, v0.7.15
smart-tab-name, v1.0.5

# Dev
No dev packages

Please post your .ftpconfig without credentials

Please post your .ftpconfig without credentials

Fixed this bug. I had to escape the back-slashes in the path to the file.

Fixed this bug. I had to escape the back-slashes in the path to the file.

@radupopa2010 what do you mean escape backslashes? thanks
does the whats the key file format? is it .ppk?


ERRAI-1018: Support for javax.enterprise.inject.Typed

Reintroduces support for @Typed and related refactoring.
The previous ERRAI-1018 commit that was reverted caused an infinite loop for apps injecting raw types. This PR includes tests protecting against this bug and related issues when injecting raw types.

Hey @mbarkley ! Thanks for this feature, that's great!
I'm really interested on this, so would like to give it a try, but I'm facing with the lastest snapshots some compile issues right now about uf social stuff. This is blocking me to check this and another PR, trying to fix, but doing other stuff too, so not sure if will be able to give this a try unitl tomorrow again...

@romartin No worries. I've gone ahead and merged this since all of the KIE webapps seem to build properly. I'll be happy to hear your feedback when you get a chance to try it out.


Fix Parshas

In a year like 5779 when Pesach starts on Shabbos, in Galus the Parsha of that week should be Acharei Mos, but it was showing Metzora, fixed that.
Also, the Parshios from Nitzavim to Vezos Habracha were not showing up correctly, that was fixed as well

Codecov Report

Merging #12 into master will decrease coverage by 0.8%.
The diff coverage is 84.61%.

@@             Coverage Diff              @@
##             master      #12      +/-   ##
============================================
- Coverage       100%   99.19%   -0.81%
- Complexity      232      236       +4
============================================
  Files            23       23
  Lines           366      371       +5
============================================
+ Hits            366      368       +2
- Misses            0        3       +3

Impacted Files
Coverage Δ
Complexity Δ

src/Getters/Parsha.php
94.73% <84.61%> (-5.27%)
42 <0> (+4)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e9ff50a...25f1141. Read the comment docs.

thank you both issues are fixed


Unable to load local model from the directory for  TGI Gaudi 1.2 version

System Info
tgi-gaudi V1.2.
Error: Traceback (most recent call last):
File "/usr/local/bin/text-generation-server", line 8, in
sys.exit(app())
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/cli.py", line 149, in download_weights
utils.weight_files(model_id, revision, extension)
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/utils/hub.py", line 96, in weight_files
filenames = weight_hub_files(model_id, revision, extension)
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/utils/hub.py", line 25, in weight_hub_files
info = api.model_info(model_id, revision=revision)
File "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_validators.py", line 110, in _inner_fn
validate_repo_id(arg_value)
File "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_validators.py", line 158, in validate_repo_id
raise HFValidationError(
huggingface_hub.utils._validators.HFValidationError: Repo id must be in the form 'repo_name' or 'namespace/repo_name':
Pointed directory has below files

Information

[X] Docker
[ ] The CLI directly

Tasks

[X] An officially supported command
[ ] My own modifications

Reproduction
Run command: docker run -p 8080:80 -v $volume:/data --runtime=habana -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e HABANA_VISIBLE_DEVICES=all -e OMPI_MCA_btl_vader_single_copy_mechanism=none --cap-add=sys_nice --ipc=host tgi_gaudi --model-id /home/ubuntu/model_10e/ --sharded true --num-shard 8 --max-total-tokens 5120
Expected behavior
TGI should have loaded local model for serving but it failed to recognize local model.

Looking at your command:
docker run -p 8080:80 -v $volume:/data --runtime=habana -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e HABANA_VISIBLE_DEVICES=all -e OMPI_MCA_btl_vader_single_copy_mechanism=none --cap-add=sys_nice --ipc=host tgi_gaudi --model-id /home/ubuntu/model_10e/ --sharded true --num-shard 8 --max-total-tokens 5120

it seems you give as model-id the path to your model on your instance (i.e. /home/ubuntu/model_10e/).
The TGI server is run inside a Docker container that doesn't have access to that folder by default. You need to use the -v arg to link a volume on your host to a volume in your container.
Can you try the following command?
docker run -p 8080:80 -v /home/ubuntu:/data --runtime=habana -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e HABANA_VISIBLE_DEVICES=all -e OMPI_MCA_btl_vader_single_copy_mechanism=none --cap-add=sys_nice --ipc=host tgi_gaudi --model-id /data/model_10e/ --sharded true --num-shard 8 --max-total-tokens 5120

Thanks for the update. I made the changes to point the model in the mounted volume but facing the below issue.
docker run -p 8080:80 -v $volume:/data --runtime=habana -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e HABANA_VISIBLE_DEVICES=all -e OMPI_MCA_btl_vader_single_copy_mechanism=none --cap-add=sys_nice --ipc=host tgi_gaudi --sharded true --num-shard 8  --model-id $model
2024-02-07T08:46:59.875416Z  INFO text_generation_launcher: Args { model_id: "/data/Local_model/RTL_model_50e/", revision: None, validation_workers: 2, sharded: Some(true), num_shard: Some(8), quantize: None, dtype: None, trust_remote_code: false, max_concurrent_requests: 128, max_best_of: 2, max_stop_sequences: 4, max_top_n_tokens: 5, max_input_length: 1024, max_total_tokens: 2048, waiting_served_ratio: 1.2, max_batch_prefill_tokens: 4096, max_batch_total_tokens: None, max_waiting_tokens: 20, hostname: "cdb285643c82", port: 80, shard_uds_path: "/tmp/text-generation-server", master_addr: "localhost", master_port: 29500, huggingface_hub_cache: Some("/data"), weights_cache_override: None, disable_custom_kernels: false, cuda_memory_fraction: 1.0, rope_scaling: None, rope_factor: None, json_output: false, otlp_endpoint: None, cors_allow_origin: [], watermark_gamma: None, watermark_delta: None, ngrok: false, ngrok_authtoken: None, ngrok_edge: None, env: false }
2024-02-07T08:46:59.875446Z  INFO text_generation_launcher: Sharding model on 8 processes
2024-02-07T08:46:59.875559Z  INFO download: text_generation_launcher: Starting download process.
2024-02-07T08:47:02.212617Z ERROR download: text_generation_launcher: Download encountered an error: /usr/local/lib/python3.10/dist-packages/torch/distributed/distributed_c10d.py:252: UserWarning: Device capability of hccl unspecified, assuming cpu and cuda. Please specify it via the devices argument of register_backend.
warnings.warn(
Traceback (most recent call last):
File "/usr/local/bin/text-generation-server", line 8, in
sys.exit(app())
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/cli.py", line 178, in download_weights
model_id, revision, trust_remote_code=trust_remote_code
NameError: name 'trust_remote_code' is not defined
Error: DownloadError

Also tried with option --trust-remote-code but then i got below issue
2024-02-07T08:50:32.665803Z ERROR download: text_generation_launcher: Download encountered an error: Usage: text-generation-server download-weights [OPTIONS] MODEL_ID
Try 'text-generation-server download-weights --help' for help.
Error: No such option: --trust-remote-code
Error: DownloadError

It seems to be a bug indeed. Will propose a fix.

@avinashkarani Can you try it using the branch called fix_trust_remote_code please?

@regisss 2) Issue if I proved model with adaptors already merged, Code still defaults to PEFT model and failing with adapters config not found issue

@avinashkarani Currently I tried to build the docker image using the v1.2-release branch but somehow got the dependencies conflict. Did you got this issue as well? Thank you
323.2 The conflict is caused by:
323.2     text-generation-server 1.2.0 depends on huggingface-hub<0.17.0 and >=0.16.4
323.2     tokenizers 0.14.1 depends on huggingface_hub<0.18 and >=0.16.4
323.2     diffusers 0.26.3 depends on huggingface-hub>=0.20.2
323.2     text-generation-server 1.2.0 depends on huggingface-hub<0.17.0 and >=0.16.4
323.2     tokenizers 0.14.1 depends on huggingface_hub<0.18 and >=0.16.4
323.2     diffusers 0.26.2 depends on huggingface-hub>=0.20.2
323.2     text-generation-server 1.2.0 depends on huggingface-hub<0.17.0 and >=0.16.4
323.2     tokenizers 0.14.1 depends on huggingface_hub<0.18 and >=0.16.4
323.2     diffusers 0.26.1 depends on huggingface-hub>=0.20.2
323.2     text-generation-server 1.2.0 depends on huggingface-hub<0.17.0 and >=0.16.4
323.2     tokenizers 0.14.1 depends on huggingface_hub<0.18 and >=0.16.4
323.2     diffusers 0.26.0 depends on huggingface-hub>=0.20.2

@muhammad-asn Can you try this PR and let me know if that works for you?

@regisss , Tested new branch observed two issues

If we run with PEFT model (with adapters config present), its peft version seems to be not compatible
Loading checkpoint shards: 100%|██████████| 2/2 [00:12<00:00,  6.48s/it]
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/tgi_service.py", line 29, in
main(args)
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/tgi_service.py", line 16, in main
server.serve(
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/server.py", line 213, in serve
asyncio.run(serve_inner(model_id, revision, dtype, sharded))
File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
return future.result()
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/server.py", line 177, in serve_inner
model = get_model(model_id, revision=revision, dtype=data_type)
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/models/init.py", line 33, in get_model
return CausalLM(model_id, revision, dtype)
File "/usr/local/lib/python3.10/dist-packages/text_generation_server/models/causal_lm.py", line 512, in init
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=dtype, **model_kwargs)
File "/usr/local/lib/python3.10/dist-packages/transformers/models/auto/auto_factory.py", line 565, in from_pretrained
return model_class.from_pretrained(
File "/usr/local/lib/python3.10/dist-packages/transformers/modeling_utils.py", line 3380, in from_pretrained
model.load_adapter(
File "/usr/local/lib/python3.10/dist-packages/transformers/integrations/peft.py", line 137, in load_adapter
check_peft_version(min_version=MIN_PEFT_VERSION)
File "/usr/local/lib/python3.10/dist-packages/transformers/utils/peft_utils.py", line 120, in check_peft_version
raise ValueError(
ValueError: The version of PEFT you are using is not compatible, please use a version that is greater than 0.5.0 rank=0

@avinashkarani I think the issue here is that you're using a checkpoint that was created with an old version of PEFT. Could you try with a more recent checkpoint?

@regisss 2) Issue if I proved model with adaptors already merged, Code still defaults to PEFT model and failing with adapters config not found issue
is_local_model = (Path(model_id).exists() and Path(model_id).is_dir()) or os.getenv( "WEIGHTS_CACHE_OVERRIDE", None ) is not None
if not is_local_model:
    # Try to download weights from the hub
    try:
        filenames = utils.weight_hub_files(model_id, revision, extension)
        utils.download_weights(filenames, model_id, revision)
        # Successfully downloaded weights
        return

    # No weights found on the hub with this extension
    except utils.EntryNotFoundError as e:
        # Check if we want to automatically convert to safetensors or if we can use .bin weights instead
        if not extension == ".safetensors" or not auto_convert:
            raise e

else:
    # Try to load as a local PEFT model
    try:
        utils.download_and_unload_peft(
            model_id, revision, trust_remote_code=trust_remote_code
        )
        utils.weight_files(model_id, revision, extension)
        return
    except (utils.LocalEntryNotFoundError, utils.EntryNotFoundError):
        pass

# Try to see if there are local pytorch weights
try:
    # Get weights for a local model, a hub cached model and inside the WEIGHTS_CACHE_OVERRIDE
    local_pt_files = utils.weight_files(model_id, revision, ".bin")

Above code in cli.py is first checking for PEFT model and failing in the else condition

What is the path to your local model? Are you sure the volume where your model is located is well linked to the Docker container?

@regisss let me check first. thank you for your fast response

@regisss https://github.com/huggingface/tgi-gaudi/issues/54 I attach the issue on seperate github issue to prevent wider context

@muhammad-asn is the problem still exists? Can we close this issue?

Yes you can close this issue, it is solved by recent PR
Thank you


NA's after DA-GLMM

Hello,
Thank you for the package. It is well written. I have a paired-design experiment with different times of visits. I am trying to get DA-GLMM to work on an experiment with a design formula. The code I am using is the following:
ei <- metadata(sce3)$experiment_info
da_formula <- createFormula(ei, cols_fixed = c("Clinical_Benefit","Visit", "Dose"), cols_random = c("sample_id", "Donor"))
contrst <- createContrast(c(0, 1, 0, 0, 0, 0, 0, 0, 0, 0))
da_res <- diffcyt(sce3, formula = da_formula, contrast = contrst, analysis_type = "DA", method_DA = "diffcyt-DA-GLMM", clustering_to_use = "meta20", verbose = TRUE)
A sample of the experiment metadata
sample_id               Donor           Visit           Dose            Clinical_Benefit                Stain_Batch             n_cells
58101-002_PBMC_C1_300           58101-002               C1              300             No              200229          5e+05
58101-002_PBMC_C2_300           58101-002               C2              300             No              200229          5e+05
58105-001_PBMC_C1_300           58105-001               C1              300             Yes             200229          5e+05
58105-001_PBMC_C2_300           58105-001               C2              300             Yes             200229          483611
58105-001_PBMC_C4_300           58105-001               C4              300             Yes             200229          451636
58105-003_PBMC_C1_600           58105-003               C1              600             No              200229          5e+05
58105-003_PBMC_C2_600           58105-003               C2              600             No              200229          5e+05
58106-001_PBMC_C1_300           58106-001               C1              300             Yes             200229          5e+05
The levels for each of the fixed effects are:
Clinical_Benefit: No | Yes
Visit: C1 | C2 | C4
Dose: 45 | 135 | 300 | 600 | 1200
The command runs fine but I am just getting NAs in the output.
Thank you for your help.
Best regards,
Yanal

Hi there! Did you manage to resolve this issue? I am having the same problem.


ENH CLN TST:  Support to Activity DataFrame and reading module for TCX, FIT, GPX tracking files

closes #4

It supports the base architecture for Activity Data Frame
Reading module for tcx, fit, gpx tracking format files
suite of tests for reading the trackign format files

Codecov Report

Merging #5 into master will decrease coverage by 5.10%.
The diff coverage is 32.44%.

@@            Coverage Diff             @@
##           master       #5      +/-   ##
==========================================
- Coverage   37.50%   32.40%   -5.11%
==========================================
  Files           3       21      +18
  Lines          16      500     +484
  Branches        0       36      +36
==========================================
+ Hits            6      162     +156
- Misses         10      338     +328

Impacted Files
Coverage Δ

runpandas/io/gpx/__init__.py
0.00% <0.00%> (ø)

runpandas/io/gpx/_parser.py
0.00% <0.00%> (ø)

runpandas/io/tcx/__init__.py
0.00% <0.00%> (ø)

runpandas/io/tcx/_parser.py
0.00% <0.00%> (ø)

runpandas/conftest.py
21.42% <21.42%> (ø)

runpandas/_utils.py
23.80% <23.80%> (ø)

runpandas/io/fit/_parser.py
23.80% <23.80%> (ø)

runpandas/reader.py
25.00% <25.00%> (ø)

runpandas/tests/test_fit_parser.py
30.00% <30.00%> (ø)

runpandas/tests/test_xml_utils.py
30.76% <30.76%> (ø)

... and 30 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 70893b8...e9b5506. Read the comment docs.


Docs: Move "Migrating from JavaScript" to a new toplevel box?

"Migrating from JavaScript" sounds like an important enough document (and different from the other entries in the tutorials section) to go into its own toplevel box, with links to the sections.

Yep, that's a goal!

This is in now, there's now a "JavaScript" section which is focused on JS users using TS tooling


E2E test is flaky in CI

Even though it famously "works on my machine":tm:!
 I suspect a webhook isn't ready?
I added a kubectl cluster-info dump saved as artifact to better understand what's going on. We should look into it next time the test fails.

fixed by 57de1e122bfc850723eddeac207bcc12510aced9 (I think)


cmd/go: get can't work with a non-routeable IP address

What version of Go are you using (go version)?
go version go1.15.1 linux/amd64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/dean/.cache/go-build"
GOENV="/home/dean/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/dean/src/golang/go3p/pkg/mod"
GONOPROXY="ubuntu-18-extssd"
GONOSUMDB="ubuntu-18-extssd"
GOOS="linux"
GOPATH="/home/dean/src/golang/go3p:/home/dean/src/golang/examples/go-module-package-test/package/package-driver"
GOPRIVATE="ubuntu-18-extssd"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/dean/bin/go1.15.1.linux-amd64/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/dean/bin/go1.15.1.linux-amd64/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build013931004=/tmp/go-build -gno-record-gcc-switches"

What did you do?
I have a git repo on a computer on my network (hostname ubuntu-18-extssd, IP <IP_ADDRESS>):
$ git remote --v
origin	dean@ubuntu-18-extssd:gitrepo/go-package-test-stringutil (fetch)

Inside of the repo is a package stringpackage.
The go get command fails:
$ go get -v ubuntu-18-extssd/gitrepo/go-package-test-stringutil/stringpackage
package ubuntu-18-extssd/gitrepo/go-package-test-stringutil/stringpackage: unrecognized import path "ubuntu-18-extssd/gitrepo/go-package-test-stringutil/stringpackage": import path does not begin with hostname

So I try with the IP address:
$ go get -v <IP_ADDRESS>/gitrepo/go-package-test-stringutil/stringpackage
package <IP_ADDRESS>/gitrepo/go-package-test-stringutil/stringpackage: unrecognized import path "<IP_ADDRESS>/gitrepo/go-package-test-stringutil/stringpackage": https fetch: Get "https://<IP_ADDRESS>/gitrepo/go-package-test-stringutil/stringpackage?go-get=1": dial tcp <IP_ADDRESS>:443: connect: connection refused

I add the following to ~/.gitconfig:
[url "ssh://dean@<IP_ADDRESS>:"]
	insteadOf = https://<IP_ADDRESS>/

I get the same error.
I've tried multiple ways of setting GOPRIVATE
export GOPRIVATE=<IP_ADDRESS>/gitrepo/*
export GOPRIVATE=ubuntu-18-extssd
but get the same error.
You need to actually try this on a local computer with a non-routeable IP address.  I've tried the same thing on github.com and it works.  The go get command only wants to work on public, routeable IP addresses.
Many companies keep their source code internally on hosts with non-routable IP addresses, and this prevents sharing code and makes using modules impossible.

This looks like 2 separate errors

import path does not begin with hostname

go currently does not consider names without dots as hosts, as of #37641 these are considered reserved names for the stdlib

https fetch: Get "https://<IP_ADDRESS>/gitrepo/go-package-test-stringutil/stringpackage?go-get=1": dial tcp <IP_ADDRESS>:443: connect: connection refused

remote imports need to follow https://golang.org/cmd/go/#hdr-Remote_import_paths
specifically either end with .git for a git repo or answer to a http/https request with the meta tag

I added .git to the url like this
go get <IP_ADDRESS>/gitrepo/go-package-test-stringutil.git/stringpackage
and it gives a different message:
package <IP_ADDRESS>/gitrepo/go-package-test-stringutil.git/stringpackage: cannot download, git://<IP_ADDRESS>/gitrepo/go-package-test-stringutil uses insecure protocol
My ~/.gitconfig has this
[url "ssh://dean@<IP_ADDRESS>:"]
insteadOf = https://<IP_ADDRESS>/
When go get calls 'gitit seems to be picking up what I have in ~/.gitconfig but converts thessh:prefix togit:.  I believe that is the same thing, though.  I have no idea why go get` considers that an insecure protocol.

@dwschulze Could you run with -x and post the log? That should show the actual commands run.
The git protocol is not secure. The Protocols has more information. git+ssh may be what you want instead. Or if you trust your local network, set GOINSECURE=<IP_ADDRESS>.

your git config also needs to rewrite the git protocol to ssh

I removed the ssh:// prefix from my ~/.gitconfig and now it is working:
[url "dean@<IP_ADDRESS>:"] 	insteadOf = https://<IP_ADDRESS>/
The docs really need to cover this and explain why having the ssh:// prefix gives an insecure protocol message.  That is very confusing.

I'd like to guide this issue to some resolution. I don't think we really know what went wrong. Having the -x log would help.
This doesn't seem related to whether the host contains a non-routable address or not. We don't allow module paths that don't have a dot in the first path element (see Module paths and versions, but local names and IP addresses are fine.
Finding a repository for a module path describes the process. That section doesn't cover qualified module paths, so it should definitely be updated.
When the module path ends with a VCS qualifier like .git, the go command will derive a repository URL directly from that path instead of sending a ?go-get=1 request. It doesn't know the scheme, so it tries git, https, http, git+ssh, and ssh (git and http are only allowed if GOINSECURE matches).


We need the privacy banner on mobile

We need the privacy banner (or in the menu) on mobile devices

Could you elaborate? Do you mean a link to the privacy statement in the menu?

The yellow banner, we made it hidden on mobile, easy enough to display it.
Although if it's taking up too much space, we can look to redesign the two bars on mobile to display differently

Yes, it should be redesigned

Fixed in #345


When paging and then filtering, the paging doesn't reset after the filter is selected

Works as designed. The reported example was using a custom change event.


[BUG] 502 Server Error - Long Running Chat Flow Causes Chat Session to Terminate Early

Describe the bug
When constructing a long-running chat flow, the chat window appears to timeout early and yield this error always:

502 Server Error

Error: Server Error
The server encountered a temporary error and could not complete your request.Please try again in 30 seconds.

Is there any way to instruct the chat window to WAIT LONGER before throwing some sort of timeout error?
To Reproduce
Steps to reproduce the behavior:

Build a complicated chat flow that takes longer than 30 seconds to fully complete.
Submit query into chat window.
See 502 Server Errors

Expected behavior
Is there any way to override the 30 second timeout for the chat window per input?
Screenshots

To reproduce this issue further, use the attached test-delay-v1 Chatflow.json as a template:
test-delay-v1 Chatflow.json
Specifically, the Custom Tool is named wait_for_num_seconds and has this structure:

I've attached the wait_for_num_seconds-CustomTool.json file here:
wait_for_num_seconds-CustomTool.json
Essentially, the core tool code looks like this:
/*
* Must return a string value at the end of function
*/

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

try {
    await sleep($seconds * 1000);
    return 'Slept after ' + $seconds + ' seconds';
} catch (error) {
    console.error(error);
    return '';
}

And the System Message for the Agent looks like this:
You are an AI assistant that echos back all user input.  But before you echo back to the user, you call the wait_for_num_seconds tool to delay your output by 30 seconds.

  But before you echo back to the user, you call the wait_for_num_seconds tool to delay your output by 1 seconds.

Then, I see that the chat UI works correctly:
Initial input w/ sleep starting...

Then, after 1 second, the bot response updates...

If I change it to 2 seconds, it also works correctly:
Sleep starting...

Then completion after 2 seconds:

If I change it to 20 seconds,
Sleep starting...

No update in the UI:

If I close the chat window and reopen it again, I see it refreshed:

If I change it to 30 seconds, this is what I see:
Sleep starting...

Then failure:

It seems like the OpenAI Function Agent was never really built for streaming outputs while tools run more than about 1 second of total execution.  I'm not really sure how to fix this.  I tried turning OFF streaming altogether within the AzureChatOpenAI node, but that really didn't solve anything.
If anyone has ideas on how to fix this, I'd sincerely appreciate it!

Are you using nginx? I had a similar problem. It defaults to a 30 second timeout on read and send. I updated the nginx config proxy_read_timeout and proxy_send_timeout both to 300 (5 minutes) and haven't had any problems with streams or API calls taking 2+ minutes.

Hey @Jaredude, I'm running the Kubernetes workload inside GCP on Autopilot.  GCP might use nginx internally, but I'm not 100% sure.  Do you happen to know the proxy configuration settings for GCP?  I assume this setting might be something I need to set in like an ingress.yaml file, perhaps?

I haven't done much with Kubernetes, but it seems like it should be possible: https://cloud.google.com/endpoints/docs/openapi/custom-nginx

Thanks, @Jaredude!  I think you helped me figure out the issue.  It was a 30 second timeout assigned to the proxy by GCP.  In order to fix this issue, I had to make the following changes to my YAML files:
Note: To set the timeout to be 10 minutes (for example) -- we specify 600 seconds below.

Create a backendconfig.yaml file with the following content:

    apiVersion: cloud.google.com/v1
    kind: BackendConfig
    metadata:
      name: flowise-backendconfig
      namespace: your-namespace
    spec:
      timeoutSec: 600

Issue:
kubectl apply -f backendconfig.yaml

Update your service.yaml file with the following reference to the BackendConfig:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        cloud.google.com/backend-config: '{"default": "flowise-backendconfig"}'
      name: flowise-service
      namespace: your-namespace
    ...

Issue:
kubectl apply -f service.yaml

^ @HenryHengZJ , you may want to update your GCP deployment guide to include these caveats:
https://docs.flowiseai.com/configuration/deployment/gcp

thanks @dkindlund @Jaredude ! will update the docs


Reaching out via email

Hey Ryan, I wanted to ask you a question and I realize I don't have your email, so all I have is public ways to reach you. Sorry for abusing your tracker! Could you email me at<EMAIL_ADDRESS>

Haha, sure. I was really confused for a moment there!!


ORM ChangeLog Requests

Environment

Python version: 3.8
Nautobot version: 1.2.2

Proposed Functionality
Would like to have an ORM method to save with user information that would create a changelog entry

Use Case
When someone makes an edit to a database object, the change shows up on the next UI edit, within the changelog the person that made the last UI edit gets attributed to the database object update.

Database Changes
New function? Unsure if there are database changes needed for this

External Dependencies
None

This should be achievable today with already available features, however documentation can be updated to include an example as to how one would do this.

Maybe this could be integrated into validated_save()

There is some documentation on this here
https://nautobot.readthedocs.io/en/stable/administration/nautobot-shell/#change-logging-and-webhooks

We support this via the documented context manager. https://docs.nautobot.com/projects/core/en/stable/user-guide/administration/tools/nautobot-shell/?h=change+logging#change-logging-and-webhooks


Extending/miniaturise Orion export/import on tabular table level

Hi,
I am wondering if possible to extend/miniaturise the functionality of export/import package on a tabular level? Currently, the functionality of it is for all collections and dictionary. It would be great if we can import a csv file on a table and not removing the existing data, instead it will append on the table. I have a test repo demo about csv import but i don't think it will run on orion, I didn't test it yet.

I don't think that feature would be in the near future, but I have done that in the past and you could use it as example. It was a older orion version, the only change is the way of creating admin links.
The code that receives the upload
https://github.com/madeby-nicolaslopezj/asistencias-uai/blob/master/server/upload.js
Templates of the upload view
https://github.com/madeby-nicolaslopezj/asistencias-uai/tree/master/client/views/upload
Library that I used (I were using xlxs, not csv)
https://github.com/madeby-nicolaslopezj/asistencias-uai/blob/master/client/compatibility/excel.js
Any question you can ask

Thanks Nicolas! :+1:
I can see that on the template who loads all the data from xlxs is not a table,  instead it will create a spreadsheet like excel UI just like in sheet js demo? and the current version of orion is using autoform and tabular which i think will conflict, that's why this feature is excluded on the future of orion. Maybe, if i could use it on my project and I will figured out how I will integrate this with my current setup of orion.
What do you think @nicolaslopezj  should l go for it? :)

Yes! go for it.
Share your results

Yeah!
Thanks @nicolaslopezj!


finetuning result is so bad when using my pretrained checkpoints on QVhighlights.

Hi, I used your pre-trained SeViLA localizer checkpoints on QVHighlights to fine-tune NExT-QA and got similar NExT-QA results as in your paper (73.2 vs. 73.8). However, when I used your script to first pretrain a sevila localizer and then finetune NExT-QA using my pretrained SeViLA localizer checkpoints, I got only an accuracy of 45 in the first epoch (71 using the checkpoints your gave). I found that your checkpoint is 815M and my pretrained sevila localizer on QVHighlights is 1.4G. Is there any post-processing for the pretrained sevila localizer checkpoints?

Hi,
Did you solve this problem? I am in the same situation, and I got the pretrained sevila localizer on QVHighlights with 1.4G too.
Best

The pretrained ckpt includes BLIP-2 Q-former localizer parameters and some t5 parameters, while the downstream finetuning stage requires only the BLIP-2 Q-form localizer and a original BLIP-2 Q-former answerer parameters. You should combine the pretrained ckpt and the original BLIP-2 parameters to get a new ckpt for downstream finetuning.

Thanks for the replying.  Yes, I figured out by printing those keys. And I directly replaced the downloaded ckp's weights related to loc.

Would you help me clarifying this, so sevila has the checkpoints from the localizer and the zero shot answerer, but what about :
"https://storage.googleapis.com/sfr-vision-language-research/LAVIS/models/BLIP2/blip2_pretrained_flant5xl.pth"
This would be the again the original BLIP-2 Q-former?


Optimize loading indexes and IDs

Fixes #648

For more details, open the Copilot Workspace session.

Summary by CodeRabbit

New Features

Enhanced buffering mechanism allowing additional subscribers to receive emitted values.
Introduced new parameters to support improved value emission through subjects in both ID and index buffering functions.

Bug Fixes

Corrected function signatures to ensure proper integration of new features and maintain functionality.

I don't think this saw enough of the context to come up with a solution that does what I intended. If you look at the code, it adds code when it most certainly should have also removed code. Closing as a "failed" experiment.


fix(behavior_path_planner):  prevent modification of planning data while planner is running

Description
This PR prevents planning data from being modified while the behavior_path_planner is running, which could cause crashes.
Closes #1049
The main issue is solved by keeping the mutex for planning data locked while running the planner.
Additional changes:

Pass ConstSharedPtr by value rather than by reference.
Avoid unnecessary copies when accessing vector elements.

Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[X] I've confirmed the contribution guidelines.
[X] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[x] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

@maxime-clem thank you for working on this. This PR definitely solves the issue.


chore(block-producer): disable ansi color for console log

Please pick this commit to develop branch.


[Update] DELETE /linode/instances/{linodeId}/disks/{diskId}

added a note that a disk can only be deleted if not attached to a linode with a currently running config profile
Documents:
-[ARB-1406] https://jira.linode.com/browse/ARB-1406

@MichaelSaah Okay, thanks for digging into this a bit more. Will close for now and standby for any upcoming changes.


EL-476: Dependant wording

Link to the Jira ticket
Alternative wording for dependants pages when client has partner

Closing as this requirement has been dropped.


bug report

bug report

Hi - It looks like you might have hit Comment too soon, if there is an issue, can you provide more detail?


[Remix] Solidity Snippet plugin

Solidity Snippet
(subject to change)

See https://github.com/ethberlin-hackathon/ETHBerlin-Teambuilding/blob/master/RemixHackathon.md for more info about the Remix hackathon. Please be sure to read it before starting.
Some infos about Remix: https://remix.readthedocs.io/en/latest/
Online version: http://remix.ethereum.org

We've been releasing an API (available in http://remix-alpha.ethereum.org) which allows developing plugin for Remix.
(See https://github.com/ethereum/remix/blob/master/docs/remix_plugin.md and https://github.com/ethereum/remix/blob/master/docs/remix_plugin_api.md)
Checkout https://remix-alpha.ethereum.org / settings tab / Oraclize for a live example.
This issue is specifically about developing a ethpm Plugin.
This is an open subject, we want to make Remix and Truffle working better together.
Some proposition might be added, but we are looking forward to your proposals.
Proposal for implementation
The implementation is fairly open and this probably needs more specification.
Here are some insights:
It is very often that users require to import codes of entire contract, or simply some secure and audited code snippet. Having a plugin for importing such a thing will:

save time (not having to code or  to look for the right implementation online)
be sure to have "safe to use" code.

This plugin could list a bunch already audited (or at least sure) contracts and/or code snippet and propose to use them in Remix (either by injecting an import statement in solidity, or by directly copying the contract code in a new solidity file).
Here is a list of possible source:

https://github.com/OpenZeppelin/openzeppelin-solidity

Team
We are the team behind Remix IDE and related libraries, using this hackathon as a kickstart for the Remix API.
We've setup an extended team for helping you during this event

Remix team - @ninabreznik @serapath @ryestew @yann300 @iurimatias
Go team - @ligi @holiman
Solidity team - @leonardoalt @chriseth
C++, ewasm - @chfast @axic

Beside normal funding, we will at the end of the event select 4 teams that will receive sponsorship from the Ethereum Foundation.
Be sure to contact us at any time online or grab us directly at the event.
Skills wanted
JavaScript / Ethereum
Communication
We will be around giving advice and helping if needed.
And in any case just drop your thoughts there ;)
https://gitter.im/ethereum/remix-dev-plugin
How to get started:

Clone https://github.com/yann300/remix-plugin , go to src folder
Serve the folder through local web server
Go to remix-alpha.ethereum.org
Settings tab / Plugin section
Input Description:

{
“title”: “<name of plugin>”,
“url”: “http://<IP_ADDRESS>:<port>”
}

Load  and Start using it.

Issue has been moved to https://github.com/ethberlin-hackathon/ETHBerlin-Bounties/issues/15


User Guide to package

User Guide needs to be inserted inside the bundle.

Should be done. Commit: https://github.com/mkoskim/mawejs/commit/54dbb8bb0475f1b41f0378f46214e0379adedd2d
This can be used to include also other resource files to the package.


Unable to use Yourls from subfolder

Code of Conduct

[X] I agree to follow this project's Code of Conduct.

Submission validity

[X] This is not a personal support request, that should be posted on discussions community.
[X] I checked current issues and this request isn't a duplicate of an existing issue, opened or closed.

Self troubleshooting

[X] I've read the documentation and made sure to follow it.
[X] I've read the troubleshooting first steps guide.

Version
1.8.2
Description
Unable to run yourls from a subfolder (/y) keeping the short url like domain.com/XXX
When following wiki instructions, I get ERR_TOO_MANY_REDIRECTS in my main page,
Yourls admin page (domain.com/y/admin) is properly shown, but if I create a redirect (i.e: domain.com/g pointing to google.com), it points to domain.com/y/admin/google.com
Expectation
My main site should be shown properly and the redirections should work.
Reproduction steps

Installed yourls in root webserver folder.
Created the following .htaccess file in the root folder:

# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yourls-loader.php [L]
</IfModule>
# END YOURLS

Moved everything to /y
Created the following /y/.htaccess file:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} domain.com$
RewriteCond %{REQUEST_URI} !^/y/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /y/$1
RewriteCond %{HTTP_HOST} domain.com$
RewriteRule ^(/)?$ y/yourls-loader.php [L]
</IfModule>

Context
Server version: Apache/2.4.41 (Ubuntu)
Server built:   2022-01-05T14:49:56
PHP 7.4.3 (cli) (built: Nov 25 2021 23:16:22) ( NTS )
Server version: 10.3.32-MariaDB-0ubuntu<IP_ADDRESS> Ubuntu 20.04

https://github.com/YOURLS/YOURLS/wiki/.htaccess

Hi @ozh,
With all due respecto. I appreciate your work and think yourls used to be a great software. However, don't you think your acting might be consider as disrespectful?
I have already RTFM and followed it step by step. In fact, I recall to have read about some users that have the same issue with 1.8.2.
Have you even try to reproduce this issue?
Regards,
Guillermo.

Thanks for your reply @ehguille.
I understand @ozh's answer can be frustrating, but the "disrespect" has been initiated in your report, where you checked both:

I've read the documentation and made sure to follow it.
I checked current issues and this request isn't a duplicate of an existing issue, opened or closed.

This topic is widely documented and has been answered quite a lot of time.
Just a quick search for subfolder give a good list of answered tickets. The issue on these tickets is always .htaccess misconfiguration, thus the link from @ozh answer.
I hope this helps.

Thanks, @LeoColomb. I've opened an issue is because I have already read all documentation I found, even the closed issues, and try several configurations.
Anyway, there's no point on discuss this. I guess is just a matter of empathy.
Regards,
Guillermo.

I do lack empathy, I admit ;-)
Your .htaccess as posted in your issue doesn't match the one in the wiki, so ...

Hi again, ozh!
I reinstalled yourls on my server so I could make your swallow your words 😠.
I carefully follow the guide step-by-step, as I did the previous time, and wrote the same .htaccess files (with the only exception that this time i gave the installation folder the proper permission so it create .htaccess by itself). This time, the application did not include the RewriteCond %{HTTPS} !=on line in the installation folder .htaccess. This is the only difference (in fact, I wrote it because I saw it here https://github.com/YOURLS/YOURLS/wiki/.htaccess).
I also checked that the root folder .htaccess file is exactly equal to the one I posted first.
Given that, and with all the pain in my hearth, I should apologize 🤦🏽♂.
My mistake was that I was accessing to domain.com/yourlsdirectory/admin, and generating the short urls from there. If you try so, yo get a "too many redirects" error. When doing so from domain.com/admin the issue dissapears.
To sum up: I still think my .htaccess where ok, but the issue was due to my mistake using the app, not because the .htaccess file (I belive). Anyway, if you could show me where the mistake was, I would really apreciate it.


Mediumish

Hi, I really impressed your creativity and thanks. In that theme I have got some errors.
1.How do I hide newsletter subscriber form, it's in stable.
2. In that bottom of archive posts, if I click that it shows 404.

Hi, @dkarthe , thanks for your kind words.

In _layout/default.html, remove the "bottom alert bar" section (L101-113).

Jekyll Arhives plugin doesn't work on GitHub Pages hosted sites (where the demo is). So if you host your website outside Github pages, you will not get any 404. If you do and still want to use the theme you could simply get rid of the categories.

Hope this helps,
Sal

Hi, @Sal, is there any  possible to "auto-hide alert bar" after few seconds.

@wowthemesnet Thank you for developing such a great Jekyll theme. I am wondering when the Jekyll Archives plugin will work on GitHub Page. I can't wait to adopt this Jekyll theme when the archives plugin is supported. Thanks.


API Signup

Is there a documentation update (or working example ) available for working with the API, specific the signup call?
I figured out there is a new pwh_version field, but what are the options (and differences) there ?

The docs here are a start.


SDL2 is not recognized by GitHub actions

https://github.com/dabresua/gol/actions/runs/1872809288
Run make
find: ‘lib’: No such file or directory
g++ -std=c++1[7](https://github.com/dabresua/gol/runs/5266231598?check_suite_focus=true#step:3:7) -Wall -Wextra -g -Iinclude -c src/graphics.cpp  -o src/graphics.o
In file included from src/graphics.cpp:1:
include/graphics.h:11:10: fatal error: SDL2/SDL.h: No such file or directory
   11 | #include <SDL2/SDL.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:[9](https://github.com/dabresua/gol/runs/5266231598?check_suite_focus=true#step:3:9)2: src/graphics.o] Error 1
Error: Process completed with exit code 2.

Credits to Alexandru Ene for his trick configuring the actions
https://alexene.dev/2019/09/04/Github-actions-CI-rust-SDL2.html


Can we find a way to make sliders printable?
What is the expected behavior?
I would like to be able to see both the line and the selector.
What is the current behavior?
Using the base slider example:

Unchanged it will only print the circle selector with no line.
Changed will print nothing (neither the line or the selector)

My assumption is this is due to background colors do not print.
One possible fix is use box-shadow (because i believe these are printable)
What are the steps to reproduce?
https://mndnjgqbrvd.angular.stackblitz.io/
What is the use-case or motivation for changing an existing behavior?
I have documentation pages where the slider is a completion level.
So it would be nice to be able to print the page.
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
All

This would be nice to have but I don't think the core team will have time to work on it. It might be a good fix for someone to contribute

@crisbeto I guess this issue can be closed as well since pr #22300 is merged.


fix: lp data

Description
Fixes a regression in https://github.com/shapeshift/web/pull/6320 which caused useUserLpData to return null, breaking the position page and withdrawals.
Pull Request Type

[x] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[ ] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[ ] :nail_care: New Feature (Breaking/Non-breaking Change)

Issue (if applicable)
N/A
Risk
Small

What protocols, transaction types or contract interactions might be affected by this PR?

None.
Testing
LP position data should be great again (see screenshots).
Engineering
☝
Operations
☝
Screenshots (if applicable)
Develop

This branch

Thanks for the fix! I was trying to break down my refactor into smaller PRs for easier review, but this is what happens I guess... This fix is resolved in: https://github.com/shapeshift/web/pull/6323, so going to close in favor of that.

Ah got it, thanks @kaladinlight! Just needed to get unblocked on withdraw dev 🙏


Install of extension - need to install "@sap/hana-client@latest"

Installed extension.  Rebooted VS Code.  Get the following:

clicked Install now. Seeing:

I'm running 64-bit Windows installer from https://nodejs.org/en/download/ to address the npm issue.

Installation from last line above fixed issue.
Next issue is getting connection parameters correct.  Isn't directly related to this opening thread's subject line.
CLOSING issue


What is the format for the AutoPkg plist?

I don't use AutoPkg and so don' have a AutoPkg pref files with the JSS location, user, or password information.
I've looked at it before, but it's just not applicable to my environment. I reinstalled it and the com.github.autopkg.stage.plist file isn't automatically created and don't see where through AutoPkg's CLI to set this info.

Good question.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>API_PASSWORD</key>
	<string>password</string>
	<key>API_USERNAME</key>
	<string>account</string>
	<key>JSS_URL</key>
	<string>https://example.jamfcloud.com</string>
</dict>
</plist>


Megarparsec fixes, remove redundant imports, release, update nightly version date

fixes #67

update circleci base docker image
megaparsec: explicit version constraints, support megaparsec7
update nightly version date to the latest nightly
remove now redundant import: Data.Monoid
release <IP_ADDRESS>

hmm right with this change we don't build on the previous LTS. I'll make it so we support the previous LTS and the current nightly too and update the PR

btw another question about the merge. I split the commits so I'd probably do "rebase and merge this time". Let me know if you prefer "squash and merge".

Rebase and merge works if the commits are organized that way. 👍

I deployed the new version on hackage. Turns out, I may have broken some old versions with the Data.Monoid change. The build matrix shows failures on ghc 8.2 & 8.0
src/Web/Slack/Types.hs:70:74: error:
• Variable not in scope: (<>) :: Text -> [Char] -> Text
• Perhaps you meant one of these:
‘<$>’ (imported from Prelude), ‘*>’ (imported from Prelude),
‘<$’ (imported from Prelude)
It looks like the Data.Monoid import was needed for <> actually up to base-4.11
https://hackage.haskell.org/package/base-<IP_ADDRESS>/changelog

Make Semigroup a superclass of Monoid; export Semigroup((<>)) from Prelude; remove Monoid reexport from Data.Semigroup (#14191).

If you want I can make a PR with #if. GHC 8.2 is 2017, not that old.


Multiple Travis failures for "service, link, component sub-commands command integration" tests

I saw multiple Travis failures for service, link, component sub-commands command integration tests.
First occurrence
This failure happened because even after 1 minute of doing odo app delete, the underlying service in that app was not deleted. I'm not sure if we can add timeout for a longer period. But I've not seen this fail in the past.
Failure [106.843 seconds]
odo service command tests
/home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:15
  When the application is deleted
  /home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:439
    should delete the service(s) in the application as well [It]
    /home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:444
    Timeout out after 1 minutes

Second occurrence
Doesn't look related to our code to me.
Collecting pip==19.3.1
[odo]   Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)
[odo] Installing collected packages: pip
[odo]   Found existing installation: pip 9.0.1
[odo]     Uninstalling pip-9.0.1:
[odo]       Successfully uninstalled pip-9.0.1
[odo] Successfully installed pip-19.3.1
[odo] ---> Installing dependencies ...
[odo] Collecting gunicorn
[odo]   Downloading https://files.pythonhosted.org/packages/69/ca/926f7cd3a2014b16870086b2d0fdc84a9e49473c68a8dff8b57f7c156f43/gunicorn-20.0.4-py2.py3-none-any.whl (77kB)
[odo] Collecting numpy
[odo]   Downloading https://files.pythonhosted.org/packages/3d/fc/4763e5f17ac6e7e7d55f377cde859ca1c5d5ac624441ab45315bc578aa9e/numpy-1.18.3-cp36-cp36m-manylinux1_x86_64.whl (20.2MB)
[odo] ERROR: Exception:
[odo] Traceback (most recent call last):
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py", line 425, in _error_catcher
[odo]     yield
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py", line 507, in read
[odo]     data = self._fp.read(amt) if not fp_closed else b""
[odo]   File "/opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py", line 459, in read
[odo]     n = self.readinto(b)
[odo]   File "/opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py", line 503, in readinto
[odo]     n = self.fp.readinto(b)
[odo]   File "/opt/rh/rh-python36/root/usr/lib64/python3.6/socket.py", line 586, in readinto
[odo]     return self._sock.recv_into(b)
[odo]   File "/opt/rh/rh-python36/root/usr/lib64/python3.6/ssl.py", line 1012, in recv_into
[odo]     return self.read(nbytes, buffer)
[odo]   File "/opt/rh/rh-python36/root/usr/lib64/python3.6/ssl.py", line 874, in read
[odo]     return self._sslobj.read(len, buffer)
[odo]   File "/opt/rh/rh-python36/root/usr/lib64/python3.6/ssl.py", line 631, in read
[odo]     v = self._sslobj.read(len, buffer)
[odo] ConnectionResetError: [Errno 104] Connection reset by peer
[odo]
[odo] During handling of the above exception, another exception occurred:
[odo]
[odo] Traceback (most recent call last):
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 153, in _main
[odo]     status = self.run(options, args)
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 382, in run
[odo]     resolver.resolve(requirement_set)
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 201, in resolve
[odo]     self._resolve_one(requirement_set, req)
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 365, in _resolve_one
[odo]     abstract_dist = self._get_abstract_dist_for(req_to_install)
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 313, in _get_abstract_dist_for
[odo]     req, self.session, self.finder, self.require_hashes
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 194, in prepare_linked_requirement
[odo]     progress_bar=self.progress_bar
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/download.py", line 465, in unpack_url
[odo]     progress_bar=progress_bar
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/download.py", line 316, in unpack_http_url
[odo]     progress_bar)
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/download.py", line 551, in _download_http_url
[odo]     _download_url(resp, link, content_file, hashes, progress_bar)
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/download.py", line 253, in _download_url
[odo]     hashes.check_against_chunks(downloaded_chunks)
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/utils/hashes.py", line 80, in check_against_chunks
[odo]     for chunk in chunks:
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/download.py", line 223, in written_chunks
[odo]     for chunk in chunks:
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/utils/ui.py", line 160, in iter
[odo]     for x in it:
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_internal/download.py", line 212, in resp_read
[odo]     decode_content=False):
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py", line 564, in stream
[odo]     data = self.read(amt=amt, decode_content=decode_content)
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py", line 529, in read
[odo]     raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
[odo]   File "/opt/rh/rh-python36/root/usr/lib64/python3.6/contextlib.py", line 99, in __exit__
[odo]     self.gen.throw(type, value, traceback)
[odo]   File "/opt/app-root/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py", line 443, in _error_catcher
[odo]     raise ProtocolError("Connection broken: %r" % e, e)
[odo] pip._vendor.urllib3.exceptions.ProtocolError: ("Connection broken: ConnectionResetError(104, 'Connection reset by peer')", ConnectionResetError(104, 'Connection reset by peer'))
[odo] WARNING: You are using pip version 19.3.1; however, version 20.0.2 is available.
[odo] You should consider upgrading via the 'pip install --upgrade pip' command.
[odo]
[odo]  ✗  command terminated with exit code 2
Deleting dir: /tmp/624345455
Deleting dir: /tmp/489211394
Deleting project: liajoweoqm
Running odo with args [odo project delete liajoweoqm -f]
[odo] This project contains the following applications, which will be deleted
[odo] Application app
[odo] This application has following components that will be deleted
[odo] component named backend
[odo] component named frontend
[odo]  •  Deleting project liajoweoqm  ...
 ✓  Deleting project liajoweoqm [7s]
[odo]  ✓  Deleted project : liajoweoqm
Deleting dir: /tmp/034198608
• Failure [67.153 seconds]
odo link and unlink command tests
/home/travis/gopath/src/github.com/openshift/odo/tests/integration/cmd_link_unlink_test.go:14
  When link between components using wrong port
  /home/travis/gopath/src/github.com/openshift/odo/tests/integration/cmd_link_unlink_test.go:55
    should fail [It]
    /home/travis/gopath/src/github.com/openshift/odo/tests/integration/cmd_link_unlink_test.go:64
    No future change is possible.  Bailing out early after 22.976s.
    Running odo with args [odo push --context /tmp/489211394]
    Expected
        <int>: 1
    to match exit code:
        <int>: 0

Third occurrence
Running odo with args [odo component list --app app --project vhbtrcozvq]
[odo]  ✗  invalid configuration: no configuration has been provided
Setting current dir to: /home/travis/gopath/src/github.com/openshift/odo/tests/integration
Deleting project: vhbtrcozvq
Running odo with args [odo project delete vhbtrcozvq -f]
[odo]  •  Deleting project vhbtrcozvq  ...
 ✓  Deleting project vhbtrcozvq [7s]
[odo]  ✓  Deleted project : vhbtrcozvq
Deleting dir: /tmp/244880333
• Failure [42.418 seconds]
odo sub component command tests
/home/travis/gopath/src/github.com/openshift/odo/tests/integration/cmd_cmp_sub_test.go:13
  when component is in the current directory and --project flag is used
  /home/travis/gopath/src/github.com/openshift/odo/tests/integration/component.go:512
    creates a local python component, pushes it and then deletes it using --all flag in local directory [It]
    /home/travis/gopath/src/github.com/openshift/odo/tests/integration/component.go:560
    No future change is possible.  Bailing out early after 0.204s.
    Running odo with args [odo component list --app app --project vhbtrcozvq]
    Expected
        <int>: 1
    to match exit code:
        <int>: 0

/kind flake
Originally posted by @dharmit in https://github.com/openshift/odo/pull/2944#issuecomment-617655352

Hitting odo app delete (First occurrence in original issue description) issue again:
[oc] NAME                CLASS                                   PLAN      STATUS           AGE
[oc] dh-postgresql-apb   ClusterServiceClass/dh-postgresql-apb   dev       Deprovisioning   2m
• Failure [146.789 seconds]
odo service command tests
/home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:15
  When the application is deleted
  /home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:439
    should delete the service(s) in the application as well [It]
    /home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:444
    Timeout out after 1 minutes
    /home/travis/gopath/src/github.com/openshift/odo/tests/helper/helper_generic.go:48

A different error this time. Fails to build the maven project for #2944
[odo] [INFO] Downloading: https://repo.spring.io/snapshot/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar
[odo] [INFO] ------------------------------------------------------------------------
[odo] [INFO] BUILD FAILURE
[odo] [INFO] ------------------------------------------------------------------------
[odo] [INFO] Total time: 42.382 s
[odo] [INFO] Finished at: 2020-04-22T10:30:18Z
[odo] [INFO] Final Memory: 16M/53M
[odo] [INFO] ------------------------------------------------------------------------
[odo] [ERROR] Failed to execute goal on project demo: Could not resolve dependencies for project com.example:demo:jar:0.0.1-SNAPSHOT: Could not transfer artifact org.mockito:mockito-core:jar:1.10.19 from/to central (https://repo1.maven.org/maven2): GET request of: org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar from central failed: Connection reset -> [Help 1]
[odo] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project demo: Could not resolve dependencies for project com.example:demo:jar:0.0.1-SNAPSHOT: Could not transfer artifact org.mockito:mockito-core:jar:1.10.19 from/to central (https://repo1.maven.org/maven2): GET request of: org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar from central failed
[odo] 	at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:221)
[odo] 	at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:128)
[odo] 	at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:246)
[odo] 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:200)
[odo] 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
[odo] 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
[odo] 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[odo] 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[odo] 	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
[odo] 	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[odo] 	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
[odo] 	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
[odo] 	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
[odo] 	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
[odo] 	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
[odo] 	at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
[odo] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[odo] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[odo] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[odo] 	at java.lang.reflect.Method.invoke(Method.java:498)
[odo] 	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
[odo] 	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
[odo] 	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
[odo] 	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[odo] Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project com.example:demo:jar:0.0.1-SNAPSHOT: Could not transfer artifact org.mockito:mockito-core:jar:1.10.19 from/to central (https://repo1.maven.org/maven2): GET request of: org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar from central failed
[odo] 	at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:209)
[odo] 	at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:195)
[odo] 	... 23 more
[odo] Caused by: org.eclipse.aether.resolution.DependencyResolutionException: Could not transfer artifact org.mockito:mockito-core:jar:1.10.19 from/to central (https://repo1.maven.org/maven2): GET request of: org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar from central failed
[odo] 	at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:393)
[odo] 	at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:202)
[odo] 	... 24 more
[odo] Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.mockito:mockito-core:jar:1.10.19 from/to central (https://repo1.maven.org/maven2): GET request of: org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar from central failed
[odo] 	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:453)
[odo] 	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:255)
[odo] 	at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:376)
[odo] 	... 25 more
[odo] Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.mockito:mockito-core:jar:1.10.19 from/to central (https://repo1.maven.org/maven2): GET request of: org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar from central failed
[odo] 	at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:52)
[odo] 	at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:364)
[odo] 	at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:76)
[odo] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[odo] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[odo] 	at java.lang.Thread.run(Thread.java:748)
[odo] Caused by: org.apache.maven.wagon.TransferFailedException: GET request of: org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar from central failed
[odo] 	at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java:363)
[odo] 	at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java:316)
[odo] 	at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java:285)
[odo] 	at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:97)
[odo] 	at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
[odo] 	at org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run(WagonTransporter.java:569)
[odo] 	at org.eclipse.aether.transport.wagon.WagonTransporter.execute(WagonTransporter.java:436)
[odo] 	at org.eclipse.aether.transport.wagon.WagonTransporter.get(WagonTransporter.java:413)
[odo] 	at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:456)
[odo] 	at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:359)
[odo] 	... 4 more
[odo] Caused by: java.net.SocketException: Connection reset
[odo] 	at java.net.SocketInputStream.read(SocketInputStream.java:210)
[odo] 	at java.net.SocketInputStream.read(SocketInputStream.java:141)
[odo] 	at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
[odo] 	at sun.security.ssl.InputRecord.readV3Record(InputRecord.java:593)
[odo] 	at sun.security.ssl.InputRecord.read(InputRecord.java:532)
[odo] 	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
[odo] 	at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:933)
[odo] 	at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
[odo] 	at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
[odo] 	at org.apache.http.impl.io.SessionInputBufferImpl.read(SessionInputBufferImpl.java:198)
[odo] 	at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:176)
[odo] 	at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:135)
[odo] 	at org.apache.maven.wagon.AbstractWagon.transfer(AbstractWagon.java:531)
[odo] 	at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java:353)
[odo] 	... 13 more
[odo] [ERROR]
[odo] [ERROR] Re-run Maven using the -X switch to enable full debug logging.
[odo] [ERROR]
[odo] [ERROR] For more information about the errors and possible solutions, please read the following articles:
[odo] [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[odo] Aborting due to error code 1 for Maven build
[odo]
[odo]  ✗  command terminated with exit code 1
[odo]  ✗  Building component [46s]
Deleting project: urndhzizle
Running odo with args [odo project delete urndhzizle -f]
[odo] This project contains the following applications, which will be deleted
[odo] Application app
[odo] This application has following components that will be deleted
[odo] component named sb-app
[odo] This component has following urls that will be deleted with component
[odo] URL named sb-app-8080 with host sb-app-8080-app-urndhzizle.<IP_ADDRESS>.nip.io having protocol http at port 8080
[odo]  •  Deleting project urndhzizle  ...
 ✓  Deleting project urndhzizle [8s]
[odo]  ✓  Deleted project : urndhzizle
Setting current dir to: /home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog
Deleting dir: /tmp/727307853
• Failure [133.609 seconds]
odo service command tests
/home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:15
  When creating with a spring boot application
  /home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:132
    should be able to create postgresql and link it with springboot [It]
    /home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:146
    No future change is possible.  Bailing out early after 116.054s.
    Running odo with args [odo push]
    Expected
        <int>: 1
    to match exit code:
        <int>: 0

Collecting pip==19.3.1
[odo]   Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)
[odo] Installing collected packages: pip
[odo]   Found existing installation: pip 9.0.1
[odo]     Uninstalling pip-9.0.1:
[odo]       Successfully uninstalled pip-9.0.1
[odo] Successfully installed pip-19.3.1
[odo] ---> Installing dependencies ...
[odo] Collecting gunicorn
[odo]   Downloading https://files.pythonhosted.org/packages/69/ca/926f7cd3a2014b16870086b2d0fdc84a9e49473c68a8dff8b57f7c156f43/gunicorn-20.0.4-py2.py3-none-any.whl (77kB)
[odo] Collecting numpy
[odo]   Downloading https://files.pythonhosted.org/packages/3d/fc/4763e5f17ac6e7e7d55f377cde859ca1c5d5ac624441ab45315bc578aa9e/numpy-1.18.3-cp36-cp36m-manylinux1_x86_64.whl (20.2MB)
[odo] ERROR: Exception:
[odo] Traceback (most recent call last):

Build panic out. May be it happens because it builds the package which are not downloaded properly due to some network glitch hence panic out.

[odo] [INFO] Downloading: https://repo.spring.io/snapshot/org/mockito/mockito-core/1.10.19/mockito-core-1.10.19.jar
[odo] [INFO] ------------------------------------------------------------------------
[odo] [INFO] BUILD FAILURE
[odo] [INFO] ------------------------------------------------------------------------
[odo] [INFO] Total time: 42.382 s
[odo] [INFO] Finished at: 2020-04-22T10:30:18Z
[odo] [INFO] Final Memory: 16M/53M
[odo] [INFO] ------------------------------------------------------------------------
[odo] [ERROR] Failed to

Not related to our code. Throws build mvn error because it builds on the package which are not downloaded properly due to some network glitch.

Failure [106.843 seconds]
odo service command tests
/home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:15
When the application is deleted
/home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:439
should delete the service(s) in the application as well [It]
/home/travis/gopath/src/github.com/openshift/odo/tests/integration/servicecatalog/cmd_service_test.go:444
Timeout out after 1 minutes

Unfortunately here we missed the full failure log. Anyway will wait for the next occurrence for full failure log.
Now the issue looks more specific. May be due to four test runs in parallel causing slow down. @dharmit Can you please update the issue title to something like  On four test node app delete takes more than 1 min

@dharmit Can you please update the issue title to something like On four test node app delete takes more than 1 min

ping @dharmit

Closing since we have a larger issue at hands #4253
/close


Remove CORS from the specification and into a new developer guidance page

The CDS Hooks specification doesn't need to contain information on CORS; rather, we should move this into some new developer guidance page.

Instead of creating a "Developer Guidance" page on the website, I moved the CORS section from the spec into the existing Security Model FAQ wiki page in PR #170


Light vs Switch

I have quite a few non dimmable light switches but using the "light" category wont work, I'm forced to use switch instead, but by doing this, Homekit does not know its a light.

I figured its easier to tell Homekit its a light than trying to configure it as a light