[Feature Request] Option to automatically delete Jellyseer users when the corresponding Jellyfin user is deleted

Description
At moment, when Jellyfin users are deleted from Jellyfin through the Jellyfin>Dashboard>Users page or through something like jfa-go, the Jellyseer accounts that were made from those Jellyfin users remain and must be manually deleted. Adding a way to automatically deal with orphaned users would make the Fin/Seer experience more seamless. This is really just a quality of life issue and might be more of general Overseerr accounts issue and thus out of the scope of this project anyway, but I thought to bring it up since it deals with Jellyfin.
Desired Behavior
Add a togglable option under Jellyseer>Settings (Admin)>Users to allow Jellyfin user deletions to trigger Jellyseer user deletions, matched by user name. Possibly also add a function on the Jellyseer>Users (Admin) page that purges all orphaned users.

It seems that it's a feature (https://github.com/sct/overseerr/issues/1638) not present in the core Overseerr too. For now our main focus is to simply add Jellyfin/Emby/Plex support to Jellyseerr and update to the latest features of Overseerr (the :develop tag)

Hey so while we are working on implementing this, you might be interested in this script someone (MattrixM) in discord wrote for this:
#Hostname or IP:port
$URL = ""

#Jellyseerr API Key
$APIKey = ""

$a = Invoke-RestMethod -uri "http://$URL/api/v1/settings/jellyfin/users" -method Get -Headers @{"x-api-key" = "$APIKey"} -ContentType "application/json"

$b = Invoke-RestMethod -uri "http://$URL/api/v1/user?take=200&skip=0&sort=displayname" -method Get -Headers @{"x-api-key" = "$APIKey"} -ContentType "application/json"

$EmbyUsers = $a | select username

$SeerUsers = $b.results | select jellyfinusername, id

ForEach($Item in $SeerUsers)
{
    If($EmbyUsers.username -notcontains $Item.jellyfinUsername)
    {
    $ID = $item.id
    Invoke-RestMethod -uri "http://$URL/api/v1/user/$ID" -method Delete -Headers @{"x-api-key" = "$APIKey"} -ContentType "application/json"
    }
}


add ISA field to precheck playbook

What type of PR is this?
/kind enhancement

What this PR does / why we need it:
add ISA field to precheck playbook

Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

/lgtm


Make version explicit

This PR closes #30 by adding a standardized, explicit way of defining the version of the CiRA pipeline in a setup.py file. While PEP 518 already supersedes the user of setup.py to build distributions, this initial approach at versioning will suffice for now.
The requirements.txt could be removed, but I left them in for now. I am however not opposed to fully removing it once the changes in the scope of this PR are deemed sufficient.

All instances of pip install -r requirements.txt will have to be replaced by pip install -e .

To me, these are two distinct versions: the version in setup.py is the version of the CiRA pipeline, and the version in app.py is the version of the API. Or is that too confusing?

IMHO, It is too confusing.
Also, the purpose of the semantic version is to understand whether a version jump results in potential incompatibility of provided APIs.

E.g., CiRA version 0.9.0 with API 1.0.0 based on dev image 1.2 😉 ->  KISS

Good question, I believe you are right. I will revert the use of the keyword.


Remove usage of removed API in rebuildModule

This PR is to address the issue raised here: https://github.com/webpack/webpack/issues/11269 - The removeReasonsOfDependencyBlock method was calling the removed dependency.module

What kind of change does this PR introduce?
Bugfix.
Did you add tests for your changes?
Yes. I'm not very happy with the method of the testing here, but I'm not familiar enough with webpack to do it in a better way.
The test works by replacing the contents of the other-file, and change the exports. The test then asserts that the exports have changed.
One idea I had was to use a loader to change the other-file.. However I struggled with writing a custom loader.
Very open to suggestions and improvements here.
Does this PR introduce a breaking change?
I don't believe so.
What needs to be documented once your changes are merged?
None, I believe?

Sorry for the ping @sokra , but do you mind please giving me some pointers on how to improve the tests here, and get the coverage up?

Thanks

Thanks


Add beforeDraw and afterDraw hooks to the annotations

This PR is adding before/after draw hooks in order to allow the user to apply whatever needed customization on out-of the-box annotations.
plugins: {
  annotation: {
    annotations: {
      line: {
        type: 'line',
        ....
        beforeDraw(context) {
          console.log('beforeDraw');
          return true;
        },
        afterDraw(context) {
          console.log('afterDraw');
        },
      },
    }
  }
}

Hook
Arguments
Return type
Default
Description

beforeDraw
context
boolean
annotation.beforeDraw
invoked before the element drawing. If returns false, the element is not drawn.

afterDraw
context
void
annotation.afterDraw
invoked after the element drawing

Common hooks for all annotations can be set in the annotation plugin options:
plugins: {
  annotation: {
    beforeDraw(context) {
      console.log('Common beforeDraw');
      return true;
    },
    afterDraw(context) {
      console.log('Common afterDraw');
    },
    annotations: {
      line: {
        type: 'line',
        ....
      },
    }
  }
}

TODO

[x] test cases
[x] types
[x] documentation
[x] samples

Due to the fact that element and label couldn't be drawn in sequence but, in accordance with drawTime options, they could be drawn in a difference sequence, some element internal properties, to manage status of drawing,  has been added.

Due to the fact that element and label couldn't be drawn in sequence but, in accordance with drawTime options, they could be drawn in a difference sequence, some element internal properties, to manage status of drawing, has been added.

I asked for only these two hooks first, so I'd see a small PR that is easily reviewed.
I think you are trying to implement all the use cases you have with these 2 hooks now?

I asked for only these two hooks first, so I'd see a small PR that is easily reviewed.
I think you are trying to implement all the use cases you have with these 2 hooks now?

Yes, @kurkle. As shared, I started with before/afterDraw which are including both element and label drawing (as we shared in the other PR).
I'm trying to see which use cases I can implement with these 2. For instance, issues 145 and 146 can be addressed by these 2 hooks.
Anyway with these hooks you can only extend the existing ones, not create new annotations.
To do that, you need more hooks:

before/afterUpdate, to be invoked before and after resolveElementOptions, in order to allow the user to set own dimensions.
inRange, in order to catch events.
centerPoint, maybe not needed if we go to normalized size (issue 532)

@LeeLenaleee thank you very much! I'm leaving your 2 notes (about comma) open because not clear to me where to add spaces.

@kurkle @LeeLenaleee I was thinking about this PR. I think that probably the complexity we are adding here is too much comparing with the benefits.
At the moment, there are 2 issues which can be addressed by this PR but one of them can be also solved implementing shadowing on the annotations and the other one can't be solved as out of scope of the plugin (at least at the moment).
We could freeze this PR and spend more time to think about. What do you think?

I don't mind setting this on a hold to see if it might be implemented in a different less complex way.
But I do still think it is a verry good addition to the plugin for users to apply a lot of customizability in a relative easy way.

I don't mind setting this on a hold to see if it might be implemented in a different less complex way. But I do still think it is a verry good addition to the plugin for users to apply a lot of customizability in a relative easy way.

I agree with you about the capabilities but I wouldn't add complexity if not really needed. In my opinion now it's not so complex but probably the current features are not enough and some other hooks will be needed. Anyway I'm continue thinking to as simple as possible implementation

Yeah, the "draw state" is a thing I'd like to avoid. Its the only thing I dislike here actually. But lets give it some more time.

Looks like we could actually release 1.2.2 instead of 1.3.0 without this/other unmerged enhancements.

Looks like we could actually release 1.2.2 instead of 1.3.0 without this/other unmerged enhancements.

It makes sense to me!

Looks like we could actually release 1.2.2 instead of 1.3.0 without this/other unmerged enhancements.

Do we have to change the milestone label to PR?

I know I said to take time to think about but I had item and I remove element._draw status.
Now I'm using 2 flags (_drawElement and _drawLabel) at element level to be aware if the element and the label has been drawn.

I need to close this PR because I need to re-fork the project.
As soon as I'll have new project, I'll submit new PR with the same content.


Allow Prometheus scrape interval to be configurable

Allows for the Prometheus scrape interval to be set by the operator when
instantiating the service monitors for a Prometheus instance. This is required
in order to set the rate that Prometheus will scrape the Smart Gateway for
metrics.
Closes #18

Note that I did not test this.

LGTM (I didn't test it either). I assume the ansible version change will be okay?

Yea I don't think it should have any effect. It's really just metadata that isn't even really exposed because we never ship this to galaxy. The boilerplate was bothering me though.

@leifmadsen FYI this worked for me, though TBH I'm slightly surprised. You didn't add this option to the CRD, so I thought it should fail validation? I guess I assumed wrong. This SHOULD be added to the CRD, though, right?
Regardless, it seems to work:

Deployed on quicklab
Check I'm running latest SGO container with this patch

  $ oc describe po smart-gateway-operator-5984c64d88-9d6kp | grep Image
    Image:          docker-registry.default.svc:5000/sa-telemetry/smart-gateway-operator
    Image ID:       docker-pullable://docker-registry.default.svc:5000/sa-telemetry/smart-gateway-operator@sha256:8f02bf87439ab5ed515161f0dfa6618dc141289c11f5541ede82c1206dd21353

oc edit smartgateway cloud1-telemetry and put prometheus_scrape_interval: 14s in the spec
...wait a bit...
oc get servicemonitor smartgateway -o yaml | grep interval

interval: 14s

$ curl --silent http://prometheus-sa-telemetry.apps.safperf001.lab.pnq2.cee.redhat.com/config | grep -A 2 "job_name: sa-telemetry/smartgateway"
- job_name: sa-telemetry/smartgateway/0
  scrape_interval: 14s
  scrape_timeout: 10s

@csibbitt oh right, yes I forgot about the CRD!!! And I'm not sure about the validation part. I know that even if you don't have any validation setup, that the Ansible Operator will just happily let you pass in whatever you want, and that it will convert the CamelCase input into a snake_case automatically...
I'll look and see if there is some sort of flag that can be set so that the Ansible Operator requires validation against the CRD to pass...

OK I was asking in the #ansible-operator channel and got some really good information:

https://kubernetes.io/blog/2019/06/20/crd-structural-schema/
https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#specifying-a-structural-schema

Long story short, the CRD is working as intended for the version of k8s and for the method that we're using in the CRD.
There is no automatic rejection; it'll only validate on fields that you specify and check against those. So for example, it'll check spec.size and will reject if you pass spec.size: 'hello world' (non integer), but spec.siez will be passed through without any validation (since it isn't specified).
Going forward (k8s 1.15) a structural schema can be implemented that will allow the failing of CRs that don't meet the structured schema specified in the CRD. For 1.15 under the apiextensions.k8s.io/v1beta1 API you can create a structural schema, and then use preserveUnknownFields: false which will result in them not being stored (available to the operator). Structural schemas will be required in k8s 1.16 if using the v1 version of the API.


Use redux in <Map> instead of fetch to fetch backend data

This should be done via redux like the rest of the backend API calls: https://github.com/CxSci/SA-dashboard/blob/95ffeee81e38ff142f30d3244c9c0611219619e1/frontend/src/components/Map/Map.js#L54-L68

Resolved by #261.


Fix path getting for document reference

PR should fix the problem with document delition through fixing how path getter works
There's some other changes in I made to library, but I think this one-liner is the only relevant one. Please check if that's correct before merging
https://github.com/chuyentt/localstore/issues/7

On a second thought, this unlockSync might also be related... Don't remember exactly why I added this, but since lib is working for me - I think it's ok to add this :)
As for rethrow - generally that gives more information while debugging.


Some Questions about reproducing the result on COCO by ResNet50-FPN

Hi,
Thanks for the amazing works!! Since I havnt seen any implementation in TF 2.0, I decide to try to reproduce YOLACT as my practice (https://github.com/leohsuofnthu/Tensorflow-YOLACT), I already finish the loss calculation part, but still feels confusing. It would be nice to have your help :)

So far, I am focusing on Resnet50-FPN to train from scratch on MSCOCO,  I am wondering what is the normal range of each loss during the training?

For the part of Linear Combination Mask Loss,  we divide it by the number of batches or also number of positive matching anchors?

I am quite new to Object detection, I wonder if I use Adam, does that affect mAP a lot?

Thanks for your help !

Totally forgot that I can run the original code myself 😅


Give the ability to override service name separately

This would come in handy if we want to adopt an existing service

Please update this to be mergeable and I will merge it.


[Feature Request] Way to give access keyboard or mouse control (even the mouse and keyboard)

I want this feature because for some reason, parsec soda is WAY more faster than the actual parsec and i need this to control my computer from another place

In what way is parsec soda faster than the official app? That makes no sense whatsoever, since it is built using the parsec SDK, and only supports the old network congestion algorithm.

idk, my friends get it somehow faster ping on parsec soda than parsec client

You probably had your bandwidth limit too high


Bootstrap 4?

Hello,
Great dashboards!
Are there plans to build for Bootstrap 4 in the future?

@amartone Good question! I'll see if I can dig up an answer.

Hey @amartone! I don't have a good answer on this yet. 😕 Maybe after Boostrap 4 is out of alpha. If anything changes, we will let you know!

I would lso be interested in a b4 version. Any news now that the beta is out maybe?

any update on this ?

@arnzel no plans to pursue this in the near-term, but it would make for a great #hacktoberfest contribution if someone wants to pick it up 👍

dashboards have been updated with CSS grid, so bootstrap dependencies are removed in v.3.0.0


Missing dependencies for Python 3.9 and possible compatibility issues with TensorFlow 2.10.1 - ImportError: cannot import name 'builder' from 'google.protobuf.internal'

OS Platform and Distribution
Windows 10
Compiler version
No response
Programming Language and version
Python 3.9
Installed using virtualenv? pip? Conda?(if python)
pip inside Conda env
MediaPipe version
mediapipe-0.10.2
Bazel version
No response
XCode and Tulsi versions (if iOS)
No response
Android SDK and NDK versions (if android)
No response
Android AAR (if android)
None
OpenCV version (if running on desktop)
opencv-contrib-python-<IP_ADDRESS>
Describe the problem
Unable to get a compatible version of mediapipe installed. I believe something may be conflicting?
import os
import shutil
import numpy as np
import pandas as pd
import pyarrow.parquet as pq
import json
import matplotlib
import matplotlib.pyplot as plt
import random
import tensorflow as tf
import mediapipe

from skimage.transform import resize
from tqdm.notebook import tqdm
from matplotlib import animation, rc
from mediapipe.framework.formats import landmark_pb2
from tensorflow import keras
from tensorflow.keras import layers

ImportError: cannot import name 'builder' from 'google.protobuf.internal' (c:\Users\chang\anaconda3\envs\tf\lib\site-packages\google\protobuf\internal\__init__.py)

Complete Logs
hello world
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[5], line 11
      9 import random
     10 import tensorflow as tf
---> 11 import mediapipe
     14 from skimage.transform import resize
     15 from tqdm.notebook import tqdm

File [c:\Users\chang\anaconda3\envs\tf\lib\site-packages\mediapipe\__init__.py:16](file:///C:/Users/chang/anaconda3/envs/tf/lib/site-packages/mediapipe/__init__.py:16)
      1 # Copyright 2019 - 2022 The MediaPipe Authors.
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
   (...)
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     15 from mediapipe.python import *
---> 16 import mediapipe.python.solutions as solutions
     17 import mediapipe.tasks.python as tasks
     20 del framework

File [c:\Users\chang\anaconda3\envs\tf\lib\site-packages\mediapipe\python\solutions\__init__.py:17](file:///C:/Users/chang/anaconda3/envs/tf/lib/site-packages/mediapipe/python/solutions/__init__.py:17)
      1 # Copyright 2020 The MediaPipe Authors.
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
   (...)
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     15 """MediaPipe Solutions Python API."""
---> 17 import mediapipe.python.solutions.drawing_styles
     18 import mediapipe.python.solutions.drawing_utils
     19 import mediapipe.python.solutions.face_detection

File [c:\Users\chang\anaconda3\envs\tf\lib\site-packages\mediapipe\python\solutions\drawing_styles.py:20](file:///C:/Users/chang/anaconda3/envs/tf/lib/site-packages/mediapipe/python/solutions/drawing_styles.py:20)
     18 from mediapipe.python.solutions import face_mesh_connections
     19 from mediapipe.python.solutions import hands_connections
---> 20 from mediapipe.python.solutions.drawing_utils import DrawingSpec
     21 from mediapipe.python.solutions.hands import HandLandmark
     22 from mediapipe.python.solutions.pose import PoseLandmark

File [c:\Users\chang\anaconda3\envs\tf\lib\site-packages\mediapipe\python\solutions\drawing_utils.py:24](file:///C:/Users/chang/anaconda3/envs/tf/lib/site-packages/mediapipe/python/solutions/drawing_utils.py:24)
     21 import matplotlib.pyplot as plt
     22 import numpy as np
---> 24 from mediapipe.framework.formats import detection_pb2
     25 from mediapipe.framework.formats import location_data_pb2
     26 from mediapipe.framework.formats import landmark_pb2

File [c:\Users\chang\anaconda3\envs\tf\lib\site-packages\mediapipe\framework\formats\detection_pb2.py:8](file:///C:/Users/chang/anaconda3/envs/tf/lib/site-packages/mediapipe/framework/formats/detection_pb2.py:8)
      6 from google.protobuf import descriptor_pool as _descriptor_pool
      7 from google.protobuf import symbol_database as _symbol_database
----> 8 from google.protobuf.internal import builder as _builder
      9 # @@protoc_insertion_point(imports)
     11 _sym_db = _symbol_database.Default()

ImportError: cannot import name 'builder' from 'google.protobuf.internal' (c:\Users\chang\anaconda3\envs\tf\lib\site-packages\google\protobuf\internal\__init__.py)

I tried following this: https://stackoverflow.com/questions/71759248/importerror-cannot-import-name-builder-from-google-protobuf-internal
Which is a good work around to get the builder.py file, but now I have a second error:
`
NameError                                 Traceback (most recent call last)
Cell In[6], line 11
9 import random
10 import tensorflow as tf
---> 11 import mediapipe
14 from skimage.transform import resize
15 from tqdm.notebook import tqdm
File [c:\Users\chang\anaconda3\envs\tf\lib\site-packages\mediapipe_init_.py:20](file:///C:/Users/chang/anaconda3/envs/tf/lib/site-packages/mediapipe/init.py:20)
16 import mediapipe.python.solutions as solutions
17 import mediapipe.tasks.python as tasks
---> 20 del framework
21 del gpu
22 del modules
NameError: name 'framework' is not defined
`
Seems like a bunch of dependencies are missing, does anyone know where I can get them?

Note I need tensorflow follow the below in order to get GPU support. https://www.tensorflow.org/install/pip#step-by-step_instructions
I had media pipe working for the most current version of python and tensorflow, but was dissatisfied by no GPU support, so now I'm battling this bug ):
# Anything above 2.10 is not supported on the GPU on Windows Native
pip install "tensorflow<2.11"

restarting my computer seemed to fix the issue. Weird behavior, hopefully it does not come back.


Render Elements By Class Name

I would like to use this in Markdown, like
```pseudo
some algorithms
```

And this gives the <pre> element a "pseudo" class. So it would be great to support getElementsByClassName.

Hi @zcysxy, That's a great idea, thanks! Would you like to submit a PR for this?
I would have some time towards the end of the month, hopefully.

Honestly I'm not familiar with javascript. But I may look into it


Pitch improvements

The current pitch implementation manipulates pitch via minPitch and maxPitch. This has two issues:

You can't simply set pitch to something like 60, but continue to allow the user unrestricted pitching
This way of changing pitch does not allow for animation

I've split pitch into pitch and pitchRange to allow pitching and restriction separately.
Note, on initial load, functions in our DSL are being called with MLNMapView's frame being .zero. This is bad: the maplibre camera uses the frame for its calculations, for at .zero, they are wrong - there might be other stuff depending on this too. I've worked around this issue by not using the camera for the .zero case, but maybe we should investigate if we can have MLNMapView having a none .zero frame on first load - no idea if this is possible but might make these workarounds obsolete and solve potential other problems on first load.

Thanks @hactar! I just need to do a bit of testing, but the code looks good + I understand and generally agree with the workarounds. Hopefully merging this soon :)

Sorry I've been a bottleneck on this; I'm going to merge and can always handle any issues discovered in testing later. I know you guys are using this as well, so sorry for blocking 😅


[RFC][file format] file format change without versioned serializer

Motivation
(Write your motivation for proposed changes here.)
Have you read the Contributing Guidelines on pull requests?
(Write your answer here.)
Test Plan
(Share your test plan here. If you changed code, please provide us with clear instructions for verifying that your changes work.)
Related PRs
(If this PR adds or changes functionality, please take some time to update the docs at https://github.com/diem/diem/tree/master/developers.diem.com, and link to your PR here.)

/canary

:broken_heart: Test Failed - Build images and run cluster test

/canary

:sunny: Canary successful


loss nan

When  voc data set was used,it is good running. But the loss will be nan ,when use my data set.
I used to use the  version 1x mmdet to train my data,while it is running normally.
Now i use the last mmdet,and the loss  become nan.
There is loss log.

2020-06-14 10:16:55,236 - mmdet - INFO - Epoch [1][50/4675]	lr: 0.00049, eta: 15:41:30, time: 1.008, data_time: 0.051, memory: 7237, loss_rpn_cls: 0.4373, loss_rpn_bbox: 0.0584, s0.loss_cls: 1.6474, s0.acc: 82.6758, s0.loss_bbox: 0.0144, s1.loss_cls: 0.8500, s1.acc: 78.6055, s1.loss_bbox: 0.0047, s2.loss_cls: 0.4462, s2.acc: 74.5586, s2.loss_bbox: 0.0006, loss: 3.4589
2020-06-14 10:17:45,189 - mmdet - INFO - Epoch [1][100/4675]	lr: 0.00099, eta: 15:36:33, time: 0.999, data_time: 0.005, memory: 7237, loss_rpn_cls: 0.2068, loss_rpn_bbox: 0.0503, s0.loss_cls: 0.5536, s0.acc: 98.2969, s0.loss_bbox: 0.0259, s1.loss_cls: 0.2599, s1.acc: 98.8789, s1.loss_bbox: 0.0066, s2.loss_cls: 0.1278, s2.acc: 99.0723, s2.loss_bbox: 0.0012, loss: 1.2322
2020-06-14 10:18:31,520 - mmdet - INFO - Epoch [1][150/4675]	lr: 0.00149, eta: 15:11:50, time: 0.927, data_time: 0.005, memory: 7237, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 55.3535, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 55.5742, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 55.6484, s2.loss_bbox: nan, loss: nan
2020-06-14 10:19:12,284 - mmdet - INFO - Epoch [1][200/4675]	lr: 0.00199, eta: 14:33:09, time: 0.815, data_time: 0.005, memory: 7237, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 1.3333, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 1.3333, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 1.3333, s2.loss_bbox: nan, loss: nan
2020-06-14 10:19:52,919 - mmdet - INFO - Epoch [1][250/4675]	lr: 0.00249, eta: 14:09:11, time: 0.813, data_time: 0.005, memory: 7237, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 0.6000, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 0.6000, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 0.6000, s2.loss_bbox: nan, loss: nan
2020-06-14 10:20:34,484 - mmdet - INFO - Epoch [1][300/4675]	lr: 0.00299, eta: 13:55:52, time: 0.831, data_time: 0.005, memory: 7237, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 4.1667, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 4.1667, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 4.1667, s2.loss_bbox: nan, loss: nan
2020-06-14 10:21:15,492 - mmdet - INFO - Epoch [1][350/4675]	lr: 0.00349, eta: 13:44:41, time: 0.820, data_time: 0.005, memory: 7237, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 1.3333, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 1.3333, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 1.3333, s2.loss_bbox: nan, loss: nan
2020-06-14 10:21:56,436 - mmdet - INFO - Epoch [1][400/4675]	lr: 0.00399, eta: 13:35:59, time: 0.819, data_time: 0.005, memory: 7237, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 5.0000, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 5.0000, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 5.0000, s2.loss_bbox: nan, loss: nan
2020-06-14 10:22:37,299 - mmdet - INFO - Epoch [1][450/4675]	lr: 0.00449, eta: 13:28:53, time: 0.817, data_time: 0.005, memory: 7237, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 0.0000, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 0.0000, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 0.0000, s2.loss_bbox: nan, loss: nan

There is config
`2020-06-14 10:15:57,473 - mmdet - INFO - Environment info:
sys.platform: linux
Python: 3.7.7 (default, May  7 2020, 21:25:33) [GCC 7.3.0]
CUDA available: True
CUDA_HOME: /usr/local/cuda
NVCC: Cuda compilation tools, release 10.1, V10.1.105
GPU 0,1: Tesla P100-PCIE-12GB
GCC: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
PyTorch: 1.5.0
PyTorch compiling details: PyTorch built with:

GCC 7.3
C++ Version: 201402
Intel(R) Math Kernel Library Version 2020.0.1 Product Build 20200208 for Intel(R) 64 architecture applications
Intel(R) MKL-DNN v0.21.1 (Git Hash 7d2fd500bc78936d1d648ca713b901012f470dbc)
OpenMP 201511 (a.k.a. OpenMP 4.5)
NNPACK is enabled
CPU capability usage: AVX2
CUDA Runtime 10.1
NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_37,code=compute_37
CuDNN 7.6.3
Magma 2.5.2
Build settings: BLAS=MKL, BUILD_TYPE=Release, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -fopenmp -DNDEBUG -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DUSE_INTERNAL_THREADPOOL_IMPL -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, USE_CUDA=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, USE_STATIC_DISPATCH=OFF,

TorchVision: 0.6.0a0+82fd1c8
OpenCV: 4.2.0
MMCV: 0.5.9
MMDetection: 2.0.0+unknown
MMDetection Compiler: GCC 5.4
MMDetection CUDA Compiler: 10.1
2020-06-14 10:15:57,474 - mmdet - INFO - Distributed training: False
2020-06-14 10:15:57,855 - mmdet - INFO - Config:
model = dict(
type='CascadeRCNN',
pretrained='open-mmlab://resnext101_32x4d',
backbone=dict(
type='ResNeXt',
depth=101,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
norm_cfg=dict(type='BN', requires_grad=True),
norm_eval=True,
style='pytorch',
groups=32,
base_width=4),
neck=dict(
type='FPN',
in_channels=[256, 512, 1024, 2048],
out_channels=256,
num_outs=5),
rpn_head=dict(
type='RPNHead',
in_channels=256,
feat_channels=256,
anchor_generator=dict(
type='AnchorGenerator',
scales=[8],
ratios=[0.5, 1.0, 2.0],
strides=[4, 8, 16, 32, 64]),
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0.0, 0.0, 0.0, 0.0],
target_stds=[1.0, 1.0, 1.0, 1.0]),
loss_cls=dict(
type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),
loss_bbox=dict(
type='SmoothL1Loss', beta=0.1111111111111111, loss_weight=1.0)),
roi_head=dict(
type='CascadeRoIHead',
num_stages=3,
stage_loss_weights=[1, 0.5, 0.25],
bbox_roi_extractor=dict(
type='SingleRoIExtractor',
roi_layer=dict(type='RoIAlign', out_size=7, sample_num=0),
out_channels=256,
featmap_strides=[4, 8, 16, 32]),
bbox_head=[
dict(
type='Shared2FCBBoxHead',
in_channels=256,
fc_out_channels=1024,
roi_feat_size=7,
num_classes=80,
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0.0, 0.0, 0.0, 0.0],
target_stds=[0.1, 0.1, 0.2, 0.2]),
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss',
use_sigmoid=False,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0,
loss_weight=1.0)),
dict(
type='Shared2FCBBoxHead',
in_channels=256,
fc_out_channels=1024,
roi_feat_size=7,
num_classes=80,
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0.0, 0.0, 0.0, 0.0],
target_stds=[0.05, 0.05, 0.1, 0.1]),
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss',
use_sigmoid=False,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0,
loss_weight=1.0)),
dict(
type='Shared2FCBBoxHead',
in_channels=256,
fc_out_channels=1024,
roi_feat_size=7,
num_classes=80,
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0.0, 0.0, 0.0, 0.0],
target_stds=[0.033, 0.033, 0.067, 0.067]),
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss',
use_sigmoid=False,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0))
]))
train_cfg = dict(
rpn=dict(
assigner=dict(
type='MaxIoUAssigner',
pos_iou_thr=0.7,
neg_iou_thr=0.3,
min_pos_iou=0.3,
match_low_quality=True,
ignore_iof_thr=-1),
sampler=dict(
type='RandomSampler',
num=256,
pos_fraction=0.5,
neg_pos_ub=-1,
add_gt_as_proposals=False),
allowed_border=0,
pos_weight=-1,
debug=False),
rpn_proposal=dict(
nms_across_levels=False,
nms_pre=2000,
nms_post=2000,
max_num=2000,
nms_thr=0.7,
min_bbox_size=0),
rcnn=[
dict(
assigner=dict(
type='MaxIoUAssigner',
pos_iou_thr=0.5,
neg_iou_thr=0.5,
min_pos_iou=0.5,
match_low_quality=False,
ignore_iof_thr=-1),
sampler=dict(
type='RandomSampler',
num=512,
pos_fraction=0.25,
neg_pos_ub=-1,
add_gt_as_proposals=True),
pos_weight=-1,
debug=False),
dict(
assigner=dict(
type='MaxIoUAssigner',
pos_iou_thr=0.6,
neg_iou_thr=0.6,
min_pos_iou=0.6,
match_low_quality=False,
ignore_iof_thr=-1),
sampler=dict(
type='RandomSampler',
num=512,
pos_fraction=0.25,
neg_pos_ub=-1,
add_gt_as_proposals=True),
pos_weight=-1,
debug=False),
dict(
assigner=dict(
type='MaxIoUAssigner',
pos_iou_thr=0.7,
neg_iou_thr=0.7,
min_pos_iou=0.7,
match_low_quality=False,
ignore_iof_thr=-1),
sampler=dict(
type='RandomSampler',
num=512,
pos_fraction=0.25,
neg_pos_ub=-1,
add_gt_as_proposals=True),
pos_weight=-1,
debug=False)
])
test_cfg = dict(
rpn=dict(
nms_across_levels=False,
nms_pre=1000,
nms_post=1000,
max_num=1000,
nms_thr=0.7,
min_bbox_size=0),
rcnn=dict(
score_thr=0.05, nms=dict(type='nms', iou_thr=0.5), max_per_img=100))
dataset_type = 'WeldDataset'
data_root = '/7T_DISK/zhr/data/'
img_norm_cfg = dict(
mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=False)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(type='Resize', img_scale=(1333, 800), keep_ratio=True),
dict(type='RandomFlip', flip_ratio=0),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=False),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(1000, 600),
flip=False,
transforms=[
dict(type='Resize', keep_ratio=True),
dict(type='RandomFlip'),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=False),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img'])
])
]
data = dict(
samples_per_gpu=2,
workers_per_gpu=2,
train=dict(
type='WeldDataset',
ann_file=
'/7T_DISK/zhr/data/weldDataSet_v9.0/ImageSets/Main/trainval.txt',
img_prefix='/7T_DISK/zhr/data/weldDataSet_v9.0/',
pipeline=[
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(type='Resize', img_scale=(1333, 800), keep_ratio=True),
dict(type='RandomFlip', flip_ratio=0),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=False),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
]),
val=dict(
type='WeldDataset',
ann_file='/7T_DISK/zhr/data/weldDataSet_v9.0/ImageSets/Main/test.txt',
img_prefix='/7T_DISK/zhr/data/weldDataSet_v9.0/',
pipeline=[
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(1000, 600),
flip=False,
transforms=[
dict(type='Resize', keep_ratio=True),
dict(type='RandomFlip'),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=False),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img'])
])
]),
test=dict(
type='WeldDataset',
ann_file='/7T_DISK/zhr/data/weldDataSet_v9.0/ImageSets/Main/test.txt',
img_prefix='/7T_DISK/zhr/data/weldDataSet_v9.0/',
pipeline=[
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(1000, 600),
flip=False,
transforms=[
dict(type='Resize', keep_ratio=True),
dict(type='RandomFlip'),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=False),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img'])
])
]))
evaluation = dict(interval=1, metric='mAP')
optimizer = dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=None)
lr_config = dict(
policy='step',
warmup='linear',
warmup_iters=500,
warmup_ratio=0.001,
step=[8, 11])
total_epochs = 12
checkpoint_config = dict(interval=1)
log_config = dict(interval=50, hooks=[dict(type='TextLoggerHook')])
dist_params = dict(backend='nccl')
log_level = 'INFO'
load_from = None
resume_from = None
workflow = [('train', 1)]
work_dir = 'checkpoints/cascade_rcnn_x101_32x4d_1x_weld_v10.0_20200613'
gpu_ids = [0]`

Hi @zuhaoran ,
If you are converting models and datasets from v1.0 version, you might need to check the box conversions here. Some old conversion (e.g., bbox transform) might in v1.0 could cause loss to be Nan in V2.0.

Thanks @ZwwWayne ,
I use the model from v2.10 version. What text I need to change？
There is a annotations.
<annotation> 	<folder>weld2020</folder> 	<filename>0001.png</filename> 	<size> 		<width>880</width> 		<height>457</height> 		<depth>3</depth> 	</size> 	<segmented>1</segmented> 	<object> 		<name>circular</name> 		<pose>Unspecified</pose> 		<truncated>0</truncated> 		<difficult>0</difficult> 		<bndbox> 			<xmin>432</xmin> 			<ymin>348</ymin> 			<xmax>532</xmax> 			<ymax>440</ymax> 		</bndbox> 	</object> </annotation>
There is the my dataset file, mmdet.datasets.weld.py. It was changed from voc.py
`from mmdet.core import eval_map, eval_recalls
from .builder import DATASETS
from .xml_style import XMLDataset
@DATASETS.register_module()
class WeldDataset(XMLDataset):
CLASSES = ('crack', 'lpenetration', 'lfusion', 'circular', 'stripy')
# CLASSES_ad = ('cr', 'lp', 'lf', 'ci', 'st')
def __init__(self, **kwargs):
    super(WeldDataset, self).__init__(**kwargs)

def evaluate(self,
             results,
             metric='mAP',
             logger=None,
             proposal_nums=(100, 300, 1000),
             iou_thr=0.5,
             scale_ranges=None):
    if not isinstance(metric, str):
        assert len(metric) == 1
        metric = metric[0]
    allowed_metrics = ['mAP', 'recall']
    if metric not in allowed_metrics:
        raise KeyError('metric {} is not supported'.format(metric))
    annotations = [self.get_ann_info(i) for i in range(len(self))]
    eval_results = {}
    if metric == 'mAP':
        assert isinstance(iou_thr, float)
        ds_name = self.CLASSES
        mean_ap, _ = eval_map(
            results,
            annotations,
            scale_ranges=None,
            iou_thr=iou_thr,
            dataset=ds_name,
            logger=logger)
        eval_results['mAP'] = mean_ap
    elif metric == 'recall':
        gt_bboxes = [ann['bboxes'] for ann in annotations]
        if isinstance(iou_thr, float):
            iou_thr = [iou_thr]
        recalls = eval_recalls(
            gt_bboxes, results, proposal_nums, iou_thr, logger=logger)
        for i, num in enumerate(proposal_nums):
            for j, iou in enumerate(iou_thr):
                eval_results['recall@{}@{}'.format(num, iou)] = recalls[i,
                                                                        j]
        if recalls.shape[1] > 1:
            ar = recalls.mean(axis=1)
            for i, num in enumerate(proposal_nums):
                eval_results['AR@{}'.format(num)] = ar[i]
    return eval_results

`
It is my data set config, which changed from voc0712.py
`# dataset settings
dataset_type = 'WeldDataset'
data_root = '/7T_DISK/zhr/data/'
img_norm_cfg = dict(
mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=False)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(type='Resize', img_scale=(1333, 800), keep_ratio=True),
dict(type='RandomFlip', flip_ratio=0),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(1000, 600),
flip=False,
transforms=[
dict(type='Resize', keep_ratio=True),
dict(type='RandomFlip'),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img']),
])
]
data = dict(
samples_per_gpu=2,
workers_per_gpu=2,
train=dict(
type=dataset_type,
ann_file=data_root + 'weldDataSet_v9.0/ImageSets/Main/trainval.txt',
img_prefix=data_root + 'weldDataSet_v9.0/',
pipeline=train_pipeline),
val=dict(
type=dataset_type,
ann_file=data_root + 'weldDataSet_v9.0/ImageSets/Main/test.txt',
img_prefix=data_root + 'weldDataSet_v9.0/',
pipeline=test_pipeline),
test=dict(
type=dataset_type,
ann_file=data_root + 'weldDataSet_v9.0/ImageSets/Main/test.txt',
img_prefix=data_root + 'weldDataSet_v9.0/',
pipeline=test_pipeline))
evaluation = dict(interval=1, metric='mAP')
`

Hi @zuhaoran ,
For now I have not observe bug from you code. You may also try to add gradient clip in your model. In MMDetection V1.x gradient clip is a default option but we do not use that for speed. Also, you can check the learning rate, 0.02 is for batch size 16 on 8 gpus.

Thanks @ZwwWayne
Can you give me an example to set gradient clip?

@ZwwWayne
I have changed the schedule_1x.py
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
The nan still appears.
2020-06-14 17:57:03,135 - mmdet - INFO - workflow: [('train', 1)], max: 12 epochs 2020-06-14 17:58:07,697 - mmdet - INFO - Epoch [1][50/9350]	lr: 0.00100, eta: 1 day, 16:13:15, time: 1.291, data_time: 0.046, memory: 4140, loss_rpn_cls: 0.2407, loss_rpn_bbox: 0.0520, s0.loss_cls: 0.6504, s0.acc: 95.0664, s0.loss_bbox: 0.0124, s1.loss_cls: 0.3260, s1.acc: 94.9141, s1.loss_bbox: 0.0039, s2.loss_cls: 0.1794, s2.acc: 92.7070, s2.loss_bbox: 0.0004, loss: 1.4654 2020-06-14 17:59:09,184 - mmdet - INFO - Epoch [1][100/9350]	lr: 0.00116, eta: 1 day, 15:14:51, time: 1.230, data_time: 0.003, memory: 4140, loss_rpn_cls: 0.2045, loss_rpn_bbox: 0.0578, s0.loss_cls: 0.2052, s0.acc: 98.5273, s0.loss_bbox: 0.0244, s1.loss_cls: 0.0908, s1.acc: 99.0664, s1.loss_bbox: 0.0056, s2.loss_cls: 0.0437, s2.acc: 99.2383, s2.loss_bbox: 0.0007, loss: 0.6327 2020-06-14 18:00:11,717 - mmdet - INFO - Epoch [1][150/9350]	lr: 0.00133, eta: 1 day, 15:07:45, time: 1.251, data_time: 0.003, memory: 4140, loss_rpn_cls: 0.2378, loss_rpn_bbox: 0.0525, s0.loss_cls: 0.1292, s0.acc: 98.3008, s0.loss_bbox: 0.0219, s1.loss_cls: 0.0557, s1.acc: 98.7539, s1.loss_bbox: 0.0069, s2.loss_cls: 0.0261, s2.acc: 98.9453, s2.loss_bbox: 0.0012, loss: 0.5311 2020-06-14 18:01:13,258 - mmdet - INFO - Epoch [1][200/9350]	lr: 0.00150, eta: 1 day, 14:54:20, time: 1.231, data_time: 0.003, memory: 4140, loss_rpn_cls: 0.1725, loss_rpn_bbox: 0.0373, s0.loss_cls: 0.1727, s0.acc: 98.5625, s0.loss_bbox: 0.0226, s1.loss_cls: 0.0734, s1.acc: 99.0664, s1.loss_bbox: 0.0065, s2.loss_cls: 0.0346, s2.acc: 99.2383, s2.loss_bbox: 0.0013, loss: 0.5209 2020-06-14 18:02:08,820 - mmdet - INFO - Epoch [1][250/9350]	lr: 0.00166, eta: 1 day, 14:01:18, time: 1.111, data_time: 0.003, memory: 4140, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 43.2812, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 43.4922, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 43.5391, s2.loss_bbox: nan, loss: nan 2020-06-14 18:02:59,441 - mmdet - INFO - Epoch [1][300/9350]	lr: 0.00183, eta: 1 day, 12:54:56, time: 1.012, data_time: 0.003, memory: 4141, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 2.0000, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 2.0000, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 2.0000, s2.loss_bbox: nan, loss: nan 2020-06-14 18:03:49,653 - mmdet - INFO - Epoch [1][350/9350]	lr: 0.00200, eta: 1 day, 12:05:08, time: 1.004, data_time: 0.003, memory: 4141, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 4.0000, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 4.0000, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 4.0000, s2.loss_bbox: nan, loss: nan 2020-06-14 18:04:41,088 - mmdet - INFO - Epoch [1][400/9350]	lr: 0.00216, eta: 1 day, 11:33:14, time: 1.029, data_time: 0.003, memory: 4141, loss_rpn_cls: nan, loss_rpn_bbox: nan, s0.loss_cls: nan, s0.acc: 2.0000, s0.loss_bbox: nan, s1.loss_cls: nan, s1.acc: 2.0000, s1.loss_bbox: nan, s2.loss_cls: nan, s2.acc: 2.0000, s2.loss_bbox: nan, loss: nan

From my experience, if intersection of gt_bbox and image has zero size, the loss will be NaN in 2.0 version.

If the gradient clip does not work, you might need to check whether the data is clean, e.g., do not have out-of-image bbox.

@ZwwWayne  @thisisi3 thank you for your suggestions.

Hi,@ZwwWayne  I met same problem, when using cascade-rcnn.Last week,with same dataset,same configs , I trained successfully with v2.0. After upgrading mmdetection to v2.1,loss will become nan after some epochs.I have tried diffrent lr and check my dataset,loss will  still become nan.

Hi @cdzhu ,
Similar suggestions as given above. 1. You may also need to add gradient clip in your model. 2. If the gradient clip does not work, you might need to check whether the data is clean, e.g., do not have out-of-image box. 3. If you implement you own dataset or augmentation, check the code whether the box has zero area.

A demo for checking whether the annos has out-of-image boxs.
import xml.etree.ElementTree as ET
import os

import cv2
import mmcv
from PIL import Image
import numpy as np

xml_root = "./data"
new_xml_root = "./data"
image_root = "./data"

xml_name_list = sorted(os.listdir(xml_root))

def print_all_classes():
    all_name_list = []
    for xml_name in xml_name_list:
        print(f"{xml_name}")
        xml_path = os.path.join(xml_root, xml_name)
        tree = ET.parse(xml_path)
        root = tree.getroot()
        for obj in root.findall("object"):
            name = obj.find("name").text
            all_name_list.append(name)
        print(all_name_list)

def check_hw():
    tranposed_name_lists = []
    for xml_name in xml_name_list:
        xml_path = os.path.join(xml_root, xml_name)
        tree = ET.parse(xml_path)
        root = tree.getroot()
        size = root.find("size")
        width = int(size.find("width").text)
        height = int(size.find("height").text)
        image_path = os.path.join(image_root, xml_name[:-4] + ".jpg")
        img = cv2.imread(image_path, flags=cv2.IMREAD_COLOR)
        h, w, _ = img.shape
        if height != h or width != w:
            print(width, w, height, h)
            print(f"{xml_name}'s h, w is tranposed.")
            tranposed_name_lists.append(xml_name)
    print(tranposed_name_lists)

def check_bbox():
    if not os.path.exists(new_xml_root):
        os.makedirs(new_xml_root)

    for xml_name in xml_name_list:
        xml_path = os.path.join(xml_root, xml_name)
        tree = ET.parse(xml_path)
        root = tree.getroot()
        for obj in root.findall("object"):
            bnd_box = obj.find("bndbox")
            bbox = [
                int(float(bnd_box.find("xmin").text)),
                int(float(bnd_box.find("ymin").text)),
                int(float(bnd_box.find("xmax").text)),
                int(float(bnd_box.find("ymax").text)),
            ]
            image_path = os.path.join(image_root, xml_name[:-4] + ".jpg")
            img = cv2.imread(image_path, flags=cv2.IMREAD_COLOR)
            h, w, _ = img.shape

            if bbox[0] >= bbox[2] or bbox[1] >= bbox[3]:
                print("bbox[0] >= bbox[2] or bbox[1] >= bbox[3]", bbox, xml_name)
                # bboxes = np.array([bbox])
                # mmcv.imshow_det_bboxes(img, bboxes, labels=np.array(["h"]))
                # bbox_min_ge_max_name_lists.append(xml_name)
                root.remove(obj)
            elif bbox[3] > h or bbox[2] > w:
                bnd_box.find("xmax").text = str(min(w, bbox[2]))
                bnd_box.find("ymax").text = str(min(h, bbox[3]))
                print("bbox[3] > h or bbox[2] > w", bbox, h, w, xml_name)
                # bboxes = np.array([bbox])
                # mmcv.imshow_det_bboxes(img, bboxes, labels=np.array(["h"]))
                # bbox_max_border_name_lists.append(xml_name)
        tree.write(os.path.join(new_xml_root, xml_name))

check_bbox()

Hi, I had the same problem. Would u please tell me how u solve it？

@tyj1996  you can check you dataset
if bbox.xmin==0 : bbox.xmin=1 ;
if bbox.ymin==0 : bbox.ymin=1 ;
if bbox.xmax==wight : bbox.xmax=wight-1 ;
if bbox.ymax==high : bbox.ymin=high-1 ;

@tyj1996 if xmin>xmax and ymin >ymax
the xmin,ymin should be xmax,ymax

@tyj1996 if xmin>xmax and ymin >ymax
the xmin,ymin should be xmax,ymax

I face similar problem, and have solved. there are tips:
at the begining i take three operation
first, check your dataset, makesure all bbox  boundary in the image, and still not work
second, try to reduce learning rate, and still not work
third, add grad_clip in config, and still not work
at last  i consider it maybe raise  due to mmedtection version, and  solved
my project is bases with mmdetection v1 and the catetory number is 4. i try to replement with  mmdetection v2(2.8.0)
reference compatibility,
at the mmdetection v1, num_classes=5,  and cateory label corresponding to [1, 2, 3, 4], and background corresponding to 0
at the mmdetection v2, num_classes=2,  and cateory label corresponding to [0, 1, 2, 3], and background corresponding to 4
according the diffrent paremeter, i change the dataset and config module, and successful resolved loss Nan

@tyj1996 if xmin>xmax and ymin >ymax
the xmin,ymin should be xmax,ymax

I face similar problem, and have solved. there are tips:
at the begining i take three operation
first, check your dataset, makesure all bbox  boundary in the image, and still not work
second, try to reduce learning rate, and still not work
third, add grad_clip in config, and still not work
at last  i consider it maybe raise  due to mmedtection version, and  solved
my project is bases with mmdetection v1 and the catetory number is 4. i try to replement with  mmdetection v2(2.8.0)
reference compatibility,
at the mmdetection v1, num_classes=5,  and cateory label corresponding to [1, 2, 3, 4], and background corresponding to 0
at the mmdetection v2, num_classes=2,  and cateory label corresponding to [0, 1, 2, 3], and background corresponding to 4
according the diffrent paremeter, i change the dataset and config module, and successful resolved loss Nan

@zuhaoran
I face similar problem, and have solved. there are tips:
at the begining i take three operation
first, check your dataset, makesure all bbox boundary in the image, and still not work
second, try to reduce learning rate, and still not work
third, add grad_clip in config, and still not work
at last i consider it maybe raise due to mmedtection version, and solved
my project is bases with mmdetection v1 and the catetory number is 4. i try to replement with mmdetection v2(2.8.0)
reference compatibility,
at the mmdetection v1, num_classes=5, and cateory label corresponding to [1, 2, 3, 4], and background corresponding to 0
at the mmdetection v2, num_classes=2, and cateory label corresponding to [0, 1, 2, 3], and background corresponding to 4
according the diffrent paremeter, i change the dataset and config module, and successful resolved loss Nan

@zuhaoran
I face similar problem, and have solved. there are tips:
at the begining i take three operation
first, check your dataset, makesure all bbox boundary in the image, and still not work
second, try to reduce learning rate, and still not work
third, add grad_clip in config, and still not work
at last i consider it maybe raise due to mmedtection version, and solved
my project is bases with mmdetection v1 and the catetory number is 4. i try to replement with mmdetection v2(2.8.0)
reference compatibility,
at the mmdetection v1, num_classes=5, and cateory label corresponding to [1, 2, 3, 4], and background corresponding to 0
at the mmdetection v2, num_classes=2, and cateory label corresponding to [0, 1, 2, 3], and background corresponding to 4
according the diffrent paremeter, i change the dataset and config module, and successful resolved loss Nan

@zuhaoran
I face similar problem, and have solved. there are tips:
at the begining i take three operation
first, check your dataset, makesure all bbox boundary in the image, and still not work
second, try to reduce learning rate, and still not work
third, add grad_clip in config, and still not work
at last i consider it maybe raise due to mmedtection version, and solved
my project is bases with mmdetection v1 and the catetory number is 4. i try to replement with mmdetection v2(2.8.0)
reference compatibility,
at the mmdetection v1, num_classes=5, and cateory label corresponding to [1, 2, 3, 4], and background corresponding to 0
at the mmdetection v2, num_classes=2, and cateory label corresponding to [0, 1, 2, 3], and background corresponding to 4
according the diffrent paremeter, i change the dataset and config module, and successful resolved loss Nan

@zuhaoran
I face similar problem, and have solved. there are tips:
at the begining i take three operation
first, check your dataset, makesure all bbox boundary in the image, and still not work
second, try to reduce learning rate, and still not work
third, add grad_clip in config, and still not work
at last i consider it maybe raise due to mmedtection version, and solved
my project is bases with mmdetection v1 and the catetory number is 4. i try to replement with mmdetection v2(2.8.0)
reference compatibility,
at the mmdetection v1, num_classes=5, and cateory label corresponding to [1, 2, 3, 4], and background corresponding to 0
at the mmdetection v2, num_classes=2, and cateory label corresponding to [0, 1, 2, 3], and background corresponding to 4
according the diffrent paremeter, i change the dataset and config module, and successful resolved loss Nan

similiar issue happened when tried to train retinanet on voc,  i added the warmup strategy then everything is ok.(for mmdet2.x)
cfg.lr_config.warmup="linear" cfg.lr_config.warmup_iters=500 cfg.lr_config.warmup_ratio=0.001

Why would mmdet show a loss of NaN if learning rate is too big? There should be a loss, regardless of the LR

I have this problem together with 'ERROR - The testing results of the whole dataset is empty', but I solved with solution 'optim_wrapper = dict(
type='OptimWrapper',
optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001),
clip_grad=dict(max_norm=35, norm_type=2))'
be careful of the 'clip_grad' and 'grad_clip', 'clip_grad' is used in 3.x version to replace 'grad_clip' in 2.x version!!!
By the way, the solution of decrease lr_rate, I thought this one is better 'auto_scale_lr = dict(enable=True, base_batch_size=16)'.


DO NOT MERGE YET: deleting for JIRA DOCS-3460

Need to check for any links to the deleted files and deal with potential 404 issues with Steven and Fer.

these have been removed or redirected


Return detailed error on deployment failure

On a deployment CreateOrUpdate, a possible error return JSON looks like this:
{
    "status": "Failed",
    "error": {
        "code": "DeploymentFailed",
        "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.",
        "details": [
            {
                "code": "Conflict",
                "message": "{\r\n  \"status\": \"Failed\",\r\n  \"error\": {\r\n    \"code\": \"ResourceDeploymentFailure\",\r\n    \"message\": \"The resource operation completed with terminal provisioning state 'Failed'.\",\r\n    \"details\": [\r\n      {\r\n        \"code\": \"StorageAccountTypeNotSupported\",\r\n        \"message\": \"Disk osdisk uses blablob which is a Blob storage account. Please retry with General purpose storage account.\"\r\n      }\r\n    ]\r\n  }\r\n}"
            }
        ]
    }
}

However useful, the details get lost in translation. This object is deserialized into a operationResource by DoPollForAsynchronous/updatePollingState, the error ends up being deserialized as a ServiceError struct, which does not handle the details array.

Would this fix it in the generated code?
https://github.com/Azure/azure-rest-api-specs/pull/267/commits/18935a975900118c8517c4600b7499cb85c12821

@paulmey this is done.

Thanks, I'll update my dependencies and profit from your hard work! :+1:


SEPG Automated Release - v3.1.2

SEPG Details
Release Build Link: https://sou-jenkins2.swinfra.net/job/Auto-Release/523/
Build Token: github.com/CAFapi/buildenv-dotnet-mono-image/main/8b01c23eb795a58f7cdb305d1b96c01e4d1e0d51
Versioning Behaviour: Roll on to next minor
Artifacts For Release
Docker

cafapi/buildenv-dotnet-mono:3.1.2 (Static Tag)
cafapi/buildenv-dotnet-mono:3.1 (Dynamic Tag)
cafapi/buildenv-dotnet-mono:3 (Dynamic Tag)
cafapi/buildenv-dotnet-mono:latest (Dynamic Tag)

 Build Stage
Action
Status

Release Checks
completed
:heavy_check_mark:

Gather Release Data

:white_small_square:

QA Documentation Site Deployment

:white_small_square:

QA Deployment Branch Promotion

:white_small_square:

Docker Image Promotion

:white_small_square:

Maven Artifact Promotion (Closed Source)

:white_small_square:

NuGet Artifact Promotion

:white_small_square:

Artifactory Release Artifact Tagging

:white_small_square:

Generic Artifact Promotion

:white_small_square:

Maven Artifact Promotion (Open Source)

:white_small_square:

Maven Staging Repository Removal (Open Source)

:white_small_square:

Git Tagging

:white_small_square:

Git Release

:white_small_square:

Git Release Asset Deployment

:white_small_square:

Pull Request Merge

:white_small_square:

Release Branch Deletion

:white_small_square:

view the build log here


Do you have plans to support proxy authentication?

Hello, do you have plans to support proxy authentication?

No
The focus of proxyfor CLI is on capture and analysis rather than proxying.


Updated spec with model pipelines

Types of changes

[x] Enhancement (project structure, spelling, grammar, formatting)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

A description of the changes proposed in the Pull Request

Updated the spec to explain model plugin pipelines.

LGTM. I wonder in some cases whether the distinction between chaining models and simply cleaning/preprocessing data from the impl might get a bit blurry? Probably just semantics.

That's a good point. I've been calling everything a model. I think it's worthwhile still calling them models but having the understanding some will be simple processors?

LGTM. I wonder in some cases whether the distinction between chaining models and simply cleaning/preprocessing data from the impl might get a bit blurry? Probably just semantics.

That's a good point. I've been calling everything a model. I think it's worthwhile still calling them models but having the understanding some will be simple processors?

The distinction between the 2 is : there is a "component" which enriches the observation(s) and passes it on to the next model in the pipeline and the second is a component which actually calculates an Impact metric. In the true sense if we want to brand impact plugin as a software component that calculates impact metrices only then do we want to call these as ModelData Enrichment components. Here I am referring to our Observation as Model Data.

To review @srini1978 comments offline and confirm if there are any updates/objections before merging.


Failed to authenticate: Request Failed with status code 400

Issue Title
VSCode Desktop unable to authenticate coder url.

Tried to open workspace directly

Description
Coder is working fine in Terminal. I can able to connect using manual command
ssh -v -T -D 49217 "coder-vscode--iknow--silver-greenhopper-59" bash
Version
v2.11.0+8979bf
Extensions Version: V1.0.2 / used as well V1.1.0
Steps to Reproduce
Step 1: Login to Coder URL
Step 2: Create workspace template
Step 3: Create workspace from Step 2
Step 4: Connect to vscode
Logs from vscode
No logs
Logs from "globalStorage\coder.coder-remote\log"
No logs here as well
Command line login
coder login works file when provide token
Note
Using self sign certificate
using http_proxy too

How are you setting the proxy for VS Code?  Using the http.proxy setting?

Yes. It is added in settings.json
"coder.insecure": true,
"http.proxy": "http://IP:PORT",
"http.proxyAuthorization": null

When you run cURL is it using the proxy as well?  Do you get a response back for curl --proxy http://IP:PORT https://my-coder-domain/api/v2/buildinfo?
Are you able to get any logs from the proxy?
I think we need to add some better debugging on the plugin when a request fails, right now there is no good way to actually inspect the request that was made.
The CSRF error I believe can be ignored.

Yes. I get response back when i used --proxy in curl
PS C:\Users\demo\Downloads> curl -v --proxy http://<IP_ADDRESS>:3128 https://myurl.coder.domain/api/v2/buildinfo
* Uses proxy env variable no_proxy == 'localhost'
*   Trying <IP_ADDRESS>:3128...
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 3128
* CONNECT tunnel: HTTP/1.1 negotiated
* allocate connect buffer
* Establish HTTP proxy tunnel to myurl.coder.domain:443
> CONNECT myurl.coder.domain:443 HTTP/1.1
> Host: myurl.coder.domain:443
> User-Agent: curl/8.7.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
< Connection: close
<
* CONNECT phase completed
* CONNECT tunnel established, response 200

I don't have proxy logs but, tcp trace shows as below,
14	3.913391	10.yyy.yyy.yyy	10.x.xxx.xxx	HTTP	306	CONNECT myurl.coder.domain:443 HTTP/1.1 , NTLMSSP_NEGOTIATE
15	3.941441	10.x.xxx.xxx	10.yyy.yyy.yyy	TCP	66	[TCP Window Update] 8080 → 41821 [ACK] Seq=1 Ack=1 ............
84	4.126459	10.x.xxx.xxx	10.yyy.yyy.yyy	HTTP	105	HTTP/1.1 200 Connection established
85	4.138854	10.yyy.yyy.yyy	10.x.xxx.xxx	TLSv1.2	583	Client Hello (SNI=myurl.coder.domain)
86	4.187255	10.x.xxx.xxx	10.yyy.yyy.yyy	TLSv1.2	1314	Server Hello
87	4.187255	10.x.xxx.xxx	10.yyy.yyy.yyy	TLSv1.2	902	Certificate, Server Key Exchange, Server Hello Done
tcp trace logs when using vscode coder extentions
509	11.982731	10.yyy.yyy.yyy	10.x.xxx.xxx	HTTP	455	GET https://myurl.coder.domain:8080/api/v2/users/me HTTP/1.1 , NTLMSSP_NEGOTIATE
510	12.014605	10.x.xxx.xxx	10.yyy.yyy.yyy	TCP	66	[TCP Window Update] 8080 → 41704 [ACK] Seq=1 Ack=1 ............
511	12.014605	10.x.xxx.xxx	10.yyy.yyy.yyy	TCP	1314	8080 → 41704 [ACK] Seq=1 Ack=390 Win=99328 Len=1248 ............
512	12.014974	10.yyy.yyy.yyy	10.x.xxx.xxx	TCP	66	41704 → 8080 [ACK] Seq=390 Ack=1249 Win=132096 Len=0 ...........
513	12.015057	10.x.xxx.xxx	10.yyy.yyy.yyy	TCP	1314	8080 → 41704 [ACK] Seq=1249 Ack=390 Win=99328 Len=1248 .............
514	12.015057	10.x.xxx.xxx	10.yyy.yyy.yyy	HTTP	613	HTTP/1.1 400 Bad Request  (text/html)
not sure why it is checking on port 8080. same information is available without 8080 url too.

in vscode, If i change below settings,
"http.proxySupport": "fallback"
then, port 8080 is not added. but, still it fails with 400 Bad Request
176	7.115697	10.yyy.yyy.yyy	10.x.xxx.xxx	HTTP	483	GET https://myurl.coder.domain/api/v2/users/me HTTP/1.1 , NTLMSSP_NEGOTIATE
177	7.142449	10.x.xxx.xxx	10.yyy.yyy.yyy	TCP	66	[TCP Window Update] 8080 → 32101 [ACK] Seq=1 Ack=1 ...........
178	7.146010	10.x.xxx.xxx	10.yyy.yyy.yyy	TCP	1314	8080 → 32101 [ACK] Seq=1 Ack=418 Win=99328 Len=1248 ............
179	7.146010	10.x.xxx.xxx	10.yyy.yyy.yyy	TCP	1314	8080 → 32101 [ACK] Seq=1249 Ack=418 Win=99328 Len=1248 ...............
180	7.146010	10.x.xxx.xxx	10.yyy.yyy.yyy	HTTP	608	HTTP/1.1 400 Bad Request  (text/html)
same GET url does work from curl but, not from extension

Hmmmm interesting that the CONNECT seems to be missing in the tcp trace.
One thing you could try is to update to 1.2.1 and set http.proxySupport to either on or off to make the Coder plugin use its own proxy rather than have VS Code handle it, although our support is pretty much the same as VS Code's so I doubt it would work any better, but if it does work with ours that means there could be a bug in VS Code.
Do other parts of VS Code work fine with the proxy?  Like searching for extensions?

@code-asher
searching and downloading extensions works fine and well.
No. changing, http.proxySupport didn't help.
but, wondering that why coder extension is making query to get https://myurl.coder.domain/api/v2/users/me because, It should go for authentication first.
GET https://myurl.coder.domain/api/v2/users/me HTTP/1.1
Accept: application/json, text/plain, /
Coder-Session-Token: AdBes3XXXXXXXXXXXXXXXXXXXXCYH
User-Agent: axios/1.6.8
Accept-Encoding: gzip, compress, deflate, br
host: myurl.coder.domain
Connection: close
HTTP/1.1 400 Bad Request
Cache-Control: no-cache
X-XSS-Protection: 1
Connection: close
Content-Type: text/html; charset=utf-8
Content-Length: 2863
Pragma: no-cache

I understood that GET and PUT requests are getting block.
I tried manually send GET request using axios and It is showing same error as coder extensions shows status 400.

but, wondering that why coder extension is making query to get https://myurl.coder.domain/api/v2/users/me because, It should go for authentication first.

What do you mean by "go for authentication first"?  We always need the user details, so we make that the first call.  There is no separate auth call, we have to handle authorization for every call we make since the token can expire at any time, if that makes sense.

I understood that GET and PUT requests are getting block.

Oh interesting!  Could be a proxy configuration issue then?

@code-asher I am experiencing the same issue behind a corporate HTTP proxy, and this seems related to https://github.com/axios/axios/issues/4531
Using the current extension implementation, I always get "Request failed with status code 400" while authenticating, whatever the proxy configuration I set.
I could also reproduce the issue using the following snippet:
const axios = require('axios');

axios.get('https://coder/api/v2/users/me', {
  headers: {"Coder-Session-Token": "..."},
  proxy: {
    host: "...",
    port: "...",
    protocol: "http",
    auth: {
      username: "...",
      password: "..."
    }
  }
}

)
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .finally(function () {
  });

While the following - using ProxyAgent - seems to fix the issue, i.e. I get a 200 instead:
const axios = require("axios").default;
const https = require('https')
const { ProxyAgent } = require("proxy-agent");

async function call() {
  const url = "https://coder/api/v2/users/me";
  const agent = new ProxyAgent();
  const res = await axios.get(url, {
      headers: {"Coder-Session-Token": "..."},
      httpAgent:agent,
      httpsAgent:agent,
      proxy: false
    }
  );
  console.log(res.data);
}
call();

I'll see if I can test the extension with such implementation and confirm it fixes the issue.

In the first snippet there is no agent so it makes sense that it would fail.  We use new ProxyAgent() when a proxy is configured (either through settings or environment variables), although depending on the value of proxySupport VS Code might override our agent with their own.

FYI sending the example request below using the REST Client extension, with http.proxySupport set to on or override, I get a 200.
GET https://coder/api/v2/users/me
Content-Type: application/json
Coder-Session-Token: ...

@code-asher Setting config.proxy = false in restClient.getAxiosInstance() (src/api.ts) as in my second snippet above seems to fix the issue (http.proxySupport must be set to on or off); at least I can login when behind the corporate HTTP proxy, and use the extension.
Should I make a PR?

Oh!  Interesting.  I did not realize Axios had its own proxy.  Yeah disabling it in favor of our own makes sense to me.  Thank you for figuring this out!


More TS conversion.

Port the following to TS.

control
dataRetrieval
block
mining

Pull Request Test Coverage Report for Build 475

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 66.88%

Totals

Change from base Build 470:
0.0%

Covered Lines:
1369

Relevant Lines:
1951

💛  - Coveralls

:tada: This PR is included in version 1.0.0 :tada:
Your semantic-release bot :package::rocket:


Add old Swedish radar codes to OPERA radar database

Swedish radars got upgraded in 2016-2019 and received new odim codes (see enram/registry#7). Archived data still exists under the old odim codes, but these are not listed in the OPERA radar database (archive), except for sevar. I think they should all be added to the OPERA_RADAR_ARH_DB.json file. Here's an overview of all Swedish radars and their replacements: https://github.com/enram/data-repository/wiki/se
These old radars should be added:

[x] 1224: sease (data until 2017), replaced by sehem (start year 2017, data since 2017).
[x] 1228: sehud (data until 2016), replaced by sehuv (start year 2017, data since 2017)
[x] 1231: sekir (data until 2020), replaced by sekrn (start year 2020, data since 2021)
[x] 1225: sekkr (data until 2018), replaced by sekaa (start year 2018, data since 2019)
[x] 1229: selek (S) replaced by selek (D) in 2017
[x] 1274: seang (S) replaced by seang (D) in 2015
[x] 1227: selul (data until 2018), replaced by sella (start year 2018, data since 2019)
[x] 1230: seosu (data until 2016), replaced by seosd (start year 2016, data since 2016)
[x] 1226: seovi (data until 2017), replaced by seoer (start year 2017, data since 2017)
[x] 1289: sevar (data until 2016), replaced by sevax (start year 2016, data since 2016) already included in archive
[x] 1288: sevil (data until 2019), replaced by seatv (start year 2019, data since 2019)

Per radar:

[x] Retrieve metadata
[x] Verify metadata (by SMHI)
[ ] Add replacedBy property?
[ ] Add finishyear
[x] Add startyear for the old radars
[x] Verify that startyear for new radar is correct

All except the last issue are resolved at the source.


trouble downloading to windows

I am not able to download the zencash swing wallet to my laptop on windows.
First Norton disables it and when I correct that, the windows says the file cannot be found
Please help

This seems to be the same problem as reported in https://github.com/ZencashOfficial/zencash-swing-wallet-ui/issues/14

zen-cli.exe and zend.exe need to be in the same directory as ZENCashSwingWalletUI.jar

@bethscapade Is your PC running 64-bit Windows? having at least 8 GB RAM?

Support case - no further information received.


Fix #62 add ensure! to check fee >= 1000, a new Error variant and test

Added ensure! check for fee out of bounds
Added a new Error variant for this case
Added a test case

@zycon91  review this if possible


Fix model name parsing in world generation

Problem
When model paths are populated into the .world file specifications during .world generation, the model paths are populated by naively copying the thumbnail name that corresponds to the model.
Unfortunately, due to changes in how we are now specifying models (https://github.com/osrf/traffic_editor/pull/132, https://github.com/osrf/traffic_editor_assets/pull/2), this would result in an erroneous model path being specified (i.e., one that includes a namespace.)
Solution
As such, the world generation pipeline will be edited to explicitly remove any namespaces if they exist. This should not change any user-facing workflows or interfaces, and is fully back-compatible with old-style thumbnail specifications.
Although due to https://github.com/osrf/traffic_editor_assets/pull/2 and https://github.com/osrf/traffic_editor_assets/pull/3 , all future thumbnails will be using the new-style thumbnail specifications with namespaces moving forward.
Additionally, the README has been updated to reflect the change in thumbnail default directory.
Caveats
Note then that since we will be removing namespaces during world generation, this will prevent users from manually inserting namespace models into their GAZEBO_MODEL_PATH, but this is a minor issue as this is not the standard way to specify Gazebo models as it contradicts Gazebo's normal behaviour when downloading models (as well as pit_crew's behaviour when downloading missing models during world generation.)
Additionally, note that the model_name attributes under each model in generated building.yaml files actually refer to the thumbnail name (and path), rather than the corresponding model.
E.g.
building.yaml : {model_name: OpenRobotics/VendingMachine, name: VendingMachine, static: true, x: 62.373, y: 73.121, yaw: -3.1416, z: 0}
Would imply that the corresponding:

Thumbnail will be named OpenRobotics/VendingMachine and be stored in OpenRobotics/VendingMachine
Model will be found in the <model_dir>/VendingMachine/ path directory.

Notice that the model path does not contain the namespace of the author (in this case OpenRobotics.)
Edit

9001f2d now substitutes missing non-namespaced thumbnails with namespaced ones, with a warning.
And 6b95ff5 reassigns the configured model_name so that it will save as that substituted namespace model_name moving forward.
Future work:
Implement an author_name attribute and change how the model_list.yaml is structured to reflect namespaces.
Will have to do it in as backcompatible a way as possible.

CH3EERS!

https://github.com/osrf/traffic_editor/pull/136/commits/9001f2dbd13345173980632e96cf179d88967c76 now substitutes missing non-namespaced thumbnails with namespaced ones, with a warning.
And https://github.com/osrf/traffic_editor/pull/136/commits/6b95ff500df57061bcfcc23886c7f80ca0e3343e reassigns the configured model_name so that it will save as that substituted namespace model_name moving forward.
Future work:
Implement an author_name attribute and change how the model_list.yaml is structured to reflect namespaces.
Will have to do it in as backcompatible a way as possible.

Hopefully, I didn't miss out on any more edge cases, hmm..

I think we should be ok now.
Any further work that will help get things stable will probably be involving thumbnail regeneration with the fixes this PR introduces.
I think we are good to merge.

I don't have write permissions to merge this in, so I think you can go ahead if you can @aaronchongth


[Firebase Analytics] setCurrentScreen("Analytics Demo") translates to general screen_view in dashboard

Describe the bug
Running  the example code "Analytics Demo" also triggers that function:
  Future<void> _testSetCurrentScreen() async {
    await analytics.setCurrentScreen(
      screenName: 'Analytics Demo',
      screenClassOverride: 'AnalyticsDemo',
    );
    setMessage('setCurrentScreen succeeded');
  }

The result in the dashboard of Firebase Analytics is only the event "screen_view" which is kind of way too general and doesnt include the name "Analytics Demo".
To Reproduce
Steps to reproduce the behavior:
Run the example code (https://github.com/FirebaseExtended/flutterfire/tree/master/packages/firebase_analytics/example/lib) and check the Firebase Analytics console (DebugView, StreamView or later on Events)
Expected behavior
I would expect that i see event names supplied with setCurrentScreen("Analytics Demo") call. Here "Analytics Demo" instead of "screen_view" in the console.
Additional context
i debugged the underlying code in firebase_analytics.dart and my supplied screenNames were in fact correctly submitted to:
Future<void> setCurrentScreen(
      {@required String screenName,
      String screenClassOverride = 'Flutter'}) async {
    if (screenName == null) {
      throw ArgumentError.notNull('screenName');
    }

    await _channel.invokeMethod<void>('setCurrentScreen', <String, String>{
      'screenName': screenName,
      'screenClassOverride': screenClassOverride,
    });
  }

So the invokeMethod() call gets all the correct data. What happens then is beyond my knowledge ;-)

After digging some more, i noticed that the supplied screenName is just a parameter for the general event screen_view. You can drill down into the screen_views and see the user supplied screenNames. So everything fine, i just didnt get how the Analytics GUI works. Sorry for the noise, but perhaps someone having the same problems can learn from my answer here.
But it would be anyway nice to log the supplied user data in the debugView. This way it would be really debugView. Just seeing the event screen_name doesnt cut it for a "debug" view in my view.


Reflection on parametrized types

cc @boourns @carsonb @brunobowden
I've been trying to use square's retrofit library with j2objc and have run into various roadblocks (see e.g. #659 and https://github.com/j2objc-contrib/j2objc-gradle/issues/570) which I am slowly working around.
I now have it building, however I am running into a problem with it's use of reflection (specifically the check at https://github.com/square/retrofit/blob/62b2290fea162850942477638bd500b1db670e12/retrofit/src/main/java/retrofit/Utils.java#L184-L186). My code works fine in Java, since the type in question is a retrofit.Call<MyFoo>. However, j2objc translates retrofit.Call into an interface rather than a parametrized generic, so even though the code is right, it throws the given IllegalArgumentException when run on iOS.
I'm not sure what Objective-C's type system is like when you get into complex stuff like this, but I suspect j2objc should be translating retrofit.Call into something else, or perhaps shimming the reflection library to recognize interfaces as parametrized types?
I haven't been able to come up with a minimal test case, but it should be straight-forward for someone with more java reflection experience.

Looks like a straightforward bug, which should be relatively easy to fix.
To answer your question about how reflecting parameterized types works, each translated class has a private __metadata class method, which returns a J2ObjcClassInfo struct that provides the Java type information that can't be inferred using the Objective C runtime.
Like in JVM class files, parameterized type information is stored as generic signature strings in the class, method and field structs, using the same format. An easy way to verify that a signature is correct is to run "javap -v" on the associated class file, and compare it with the string in the __metadata struct. If the signature doesn't match then the issue is with the translator, otherwise it's a potential bug in the reflection runtime.

Both the java and objc sides provide the same signature string: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/Cloneable; so that part is correct (generated from the file https://github.com/square/retrofit/blob/62b2290fea162850942477638bd500b1db670e12/retrofit/src/main/java/retrofit/Call.java). This suggests a bug in the reflection runtime then.

However, things may be slightly more complicated. The type in question is coming from a method which returns retrofit.Call<Foo>. Dumping javap -v on that file I see the string Lretrofit/Call<Lcom/shopify/Foo;> whereas in objc, the J2ObjcMethodInfo struct for that method lists the return type as only Lretrofit.Call; so perhaps this is a translation issue after all? Just with the method return specifically rather than the type as a whole.

There was a bug in the translator, with a fix out for review. To keep the metadata small, we only emit signatures when there's a need, and that test for methods wasn't checking that a method's return value was parameterized (only that it was a type variable). Changing that test to:
if (method.isGenericMethod() || method.getReturnType().isTypeVariable()
    || method.getReturnType().isParameterizedType()) {

fixed the unit test I wrote. If you have the time and inclination, please patch the above and see if it fixes your issue.


Errror when developing  locally

Hi,
I've got the following error when testing a local script:
Error: _makeCall() - cURL error: Failed to connect to <IP_ADDRESS>: Host is down
I've made sure the cURL options are set:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
But it makes no difference.
I'm using the open access option to get media.
$search_data = $instagram->getMedia('769610294212249053_13460080');
Copied to a live server this works fine.
Thanks for your help.
Jamie

This sounds like you might be behind a proxy.


New version: CImGui v1.82.0

Registering package: CImGui
Repository: https://github.com/Gnimuc/CImGui.jl
Created by: @pxl-th
Version: v1.82.0
Commit: 3cbbf91e2118211abd7f4ba1e31b2a89044cde21
Reviewed by: @pxl-th
Reference: https://github.com/Gnimuc/CImGui.jl/commit/3cbbf91e2118211abd7f4ba1e31b2a89044cde21#commitcomment-101473177
Description: Julia wrapper for cimgui

Version 1.82.0 is to stay in sync with ImGui version. So it is fine to skip 1.80

This package doesn't follow semver. We need admin's help to merge this manually.


Replace MockUsage with Usage.test in build tests

Description
Leverage AnalyticsMock logging feature to capture usage events from Usage.test() by redirecting its console print to the buffer logger.  Replace a few MockUsage instances.
Related Issues
https://github.com/flutter/flutter/pull/67598#discussion_r501899905

common.dart would be a good place for a helper to wrap the zone logic:
Future<void> runWithLogger(Future<void> Function() cb, Logger logger) {
  return runZoned(cb, zoneSpecification ...);
}

Added helper.  Also changed it to a StringBuffer and migrated daemon_test to use the helper.


HDDS-1654. Ensure container state on datanode gets synced to disk whennever state change happens.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
31
Docker mode activated.

_ Prechecks _

+1
dupname
0
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

-1
test4tests
0
The patch doesn't appear to include any new or modified tests.  Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.

_ trunk Compile Tests _

+1
mvninstall
496
trunk passed

+1
compile
275
trunk passed

+1
checkstyle
78
trunk passed

+1
mvnsite
0
trunk passed

+1
shadedclient
812
branch has no errors when building and testing our client artifacts.

+1
javadoc
155
trunk passed

0
spotbugs
330
Used deprecated FindBugs config; considering switching to SpotBugs.

+1
findbugs
511
trunk passed

_ Patch Compile Tests _

+1
mvninstall
448
the patch passed

+1
compile
273
the patch passed

+1
javac
273
the patch passed

+1
checkstyle
73
the patch passed

+1
mvnsite
0
the patch passed

+1
whitespace
0
The patch has no whitespace issues.

+1
shadedclient
704
patch has no errors when building and testing our client artifacts.

+1
javadoc
178
the patch passed

+1
findbugs
544
the patch passed

_ Other Tests _

-1
unit
152
hadoop-hdds in the patch failed.

-1
unit
1145
hadoop-ozone in the patch failed.

+1
asflicense
58
The patch does not generate ASF License warnings.

6111

Reason
Tests

Failed junit tests
hadoop.ozone.container.common.impl.TestHddsDispatcher

hadoop.ozone.container.common.statemachine.commandhandler.TestBlockDeletion

hadoop.ozone.client.rpc.TestWatchForCommit

hadoop.ozone.client.rpc.TestOzoneRpcClient

hadoop.ozone.client.rpc.TestOzoneRpcClientWithRatis

hadoop.ozone.client.rpc.TestSecureOzoneRpcClient

hadoop.ozone.client.rpc.TestOzoneAtRestEncryption

Subsystem
Report/Notes

Docker
Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-923/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/923

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle

uname
Linux 5e37e1335ebb 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / a91d24f

Default Java
1.8.0_212

unit
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/1/artifact/out/patch-unit-hadoop-hdds.txt

unit
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/1/artifact/out/patch-unit-hadoop-ozone.txt

Test Results
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/1/testReport/

Max. process+thread count
5190 (vs. ulimit of 5500)

modules
C: hadoop-hdds/container-service U: hadoop-hdds/container-service

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/1/console

versions
git=2.7.4 maven=3.3.9 findbugs=3.1.0-RC1

Powered by
Apache Yetus 0.10.0 http://yetus.apache.org

This message was automatically generated.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
26
Docker mode activated.

_ Prechecks _

+1
dupname
0
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

-1
test4tests
0
The patch doesn't appear to include any new or modified tests.  Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.

_ trunk Compile Tests _

+1
mvninstall
518
trunk passed

+1
compile
281
trunk passed

+1
checkstyle
80
trunk passed

+1
mvnsite
0
trunk passed

+1
shadedclient
922
branch has no errors when building and testing our client artifacts.

+1
javadoc
166
trunk passed

0
spotbugs
337
Used deprecated FindBugs config; considering switching to SpotBugs.

+1
findbugs
528
trunk passed

_ Patch Compile Tests _

+1
mvninstall
458
the patch passed

+1
compile
289
the patch passed

+1
javac
289
the patch passed

+1
checkstyle
84
the patch passed

+1
mvnsite
0
the patch passed

+1
whitespace
0
The patch has no whitespace issues.

+1
shadedclient
724
patch has no errors when building and testing our client artifacts.

+1
javadoc
166
the patch passed

+1
findbugs
548
the patch passed

_ Other Tests _

-1
unit
167
hadoop-hdds in the patch failed.

-1
unit
1191
hadoop-ozone in the patch failed.

+1
asflicense
49
The patch does not generate ASF License warnings.

6360

Reason
Tests

Failed junit tests
hadoop.ozone.container.common.impl.TestHddsDispatcher

hadoop.ozone.client.rpc.TestOzoneAtRestEncryption

hadoop.ozone.client.rpc.TestOzoneRpcClientWithRatis

hadoop.ozone.client.rpc.TestBlockOutputStreamWithFailures

hadoop.ozone.client.rpc.TestOzoneRpcClient

hadoop.hdds.scm.pipeline.TestSCMPipelineManager

Subsystem
Report/Notes

Docker
Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-923/2/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/923

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle

uname
Linux 2413c00c2d31 4.4.0-143-generic #169~14.04.2-Ubuntu SMP Wed Feb 13 15:00:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / a91d24f

Default Java
1.8.0_212

unit
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/2/artifact/out/patch-unit-hadoop-hdds.txt

unit
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/2/artifact/out/patch-unit-hadoop-ozone.txt

Test Results
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/2/testReport/

Max. process+thread count
4171 (vs. ulimit of 5500)

modules
C: hadoop-hdds/container-service U: hadoop-hdds/container-service

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/2/console

versions
git=2.7.4 maven=3.3.9 findbugs=3.1.0-RC1

Powered by
Apache Yetus 0.10.0 http://yetus.apache.org

This message was automatically generated.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
36
Docker mode activated.

_ Prechecks _

+1
dupname
0
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

-1
test4tests
0
The patch doesn't appear to include any new or modified tests.  Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.

_ trunk Compile Tests _

+1
mvninstall
510
trunk passed

+1
compile
293
trunk passed

+1
checkstyle
90
trunk passed

+1
mvnsite
0
trunk passed

+1
shadedclient
902
branch has no errors when building and testing our client artifacts.

+1
javadoc
177
trunk passed

0
spotbugs
332
Used deprecated FindBugs config; considering switching to SpotBugs.

+1
findbugs
519
trunk passed

_ Patch Compile Tests _

+1
mvninstall
462
the patch passed

+1
compile
304
the patch passed

+1
javac
304
the patch passed

+1
checkstyle
94
the patch passed

+1
mvnsite
0
the patch passed

+1
whitespace
0
The patch has no whitespace issues.

+1
shadedclient
688
patch has no errors when building and testing our client artifacts.

+1
javadoc
181
the patch passed

+1
findbugs
538
the patch passed

_ Other Tests _

-1
unit
152
hadoop-hdds in the patch failed.

-1
unit
1482
hadoop-ozone in the patch failed.

+1
asflicense
46
The patch does not generate ASF License warnings.

6662

Reason
Tests

Failed junit tests
hadoop.ozone.container.common.impl.TestHddsDispatcher

hadoop.ozone.client.rpc.TestOzoneRpcClient

hadoop.ozone.client.rpc.TestOzoneAtRestEncryption

hadoop.ozone.client.rpc.TestFailureHandlingByClient

hadoop.ozone.client.rpc.TestSecureOzoneRpcClient

hadoop.ozone.client.rpc.TestOzoneRpcClientWithRatis

Subsystem
Report/Notes

Docker
Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-923/3/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/923

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle

uname
Linux 2a24167232fc 4.4.0-139-generic #165-Ubuntu SMP Wed Oct 24 10:58:50 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / a91d24f

Default Java
1.8.0_212

unit
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/3/artifact/out/patch-unit-hadoop-hdds.txt

unit
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/3/artifact/out/patch-unit-hadoop-ozone.txt

Test Results
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/3/testReport/

Max. process+thread count
5284 (vs. ulimit of 5500)

modules
C: hadoop-hdds/container-service U: hadoop-hdds/container-service

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-923/3/console

versions
git=2.7.4 maven=3.3.9 findbugs=3.1.0-RC1

Powered by
Apache Yetus 0.10.0 http://yetus.apache.org

This message was automatically generated.

+1 LGTM.

This patch needs to be rebased I believe, previously there is a bug where acceptance test run used to hang. To get a Jenkins run, this needs to be rebased.

/retest

The unit test failures are not related and acceptance test results show it all passed in the details.

Thanks @bharatviswa504 for the review. I have committed this change to trunk.


Move view switch button for metadata-update to the right and in line with the header (or something nicer)

I don't like how it looks now, it would be nice to use either another icon or something. And to move it to the right and inline (or something similar) with the header.

We decided to start the web app from scratch after the major design/architecture decisions and changes we made. No longer relevant.


Drawer accessible in subreddit and comments view after device rotation

The device was rotated to landscape and back to portrait before recording these videos:
https://i.imgur.com/x187fRH.mp4
https://i.imgur.com/ro3r5zO.mp4

How did you open the drawer in that video?

The drawer was opened by swiping up on the bottom bar. The drawer is only accessible like this after the device is rotated - for example: https://i.imgur.com/7grkrl9.mp4 It's as if rotating the device activates a swip gesture on the subreddit and comments bottom bar that reveals the drawer.

Fixed!


Release Google.Cloud.Gaming.V1Beta version 1.0.0-beta05

Changes in this release:

Commit 6bde7a3: docs: Adds service comments to client documentation
Commit 1765de9:

fix!: Corrects return type of long running delete operations
fix: Increases timeout for CreateGameServerCluster (issue 5125)

Commit 0bf565a: feat: Adds retry configuration.
Commit 947a573: docs: Adds more explicit documentation.

Created release for Google.Cloud.Gaming.V1Beta-1.0.0-beta05