text:
Interpolation mode UI problems

Old UI:

interpolation mode is only allowed for boxes. Trying to select another type of shape produces the message that it is allowed for boxes and single points, but pressing on points only produces the same notification. [i0]
tracks, however, can be created by merging shapes.

merging polygons and polylines is allowed, but no interpolation happens, however. [i1]
merged shapes have "outside" property set for intermediate frames. May be ok, but enabling again does not incur interpolaiton. [i2]
merged shapes have "outside" property set for the last shape. If shape type is points "outside" is not set, however. [i3]

New UI:

[i0] Merge is allowed for points, but clicks on points conflict with frame dragging logic.
[i1] After saving, closing and loading the task interpolation finally happens. It is true for polygons and points, but not for polylines.
"Go to previous keyframe" highlights hidden ("outside") shape on an intermediate frame. "Go to next keyframe" does not.
Interpolation for one to multiple points happens mostly for 1 point. It would probably be better if all the points were moved uniformly.
[i2] Interpolation happens all the way long for polygons and points ignoring "outside".
[i3] last "outside" is ignored for polylines. It looks like for polylines this logic is inverted.

Task 29256, representative test is a task with 4+ frames.

but pressing on points only produces the same notification.

It is need to set number of points to 1 before.

merging polygons and polylines is allowed, but no interpolation happens, however

Old CVAT UI (and CVAT server, by the way) does not have algorithm to interpolate polyshapes. We've never supported it before.

merged shapes have "outside" property set for intermediate frames. May be ok, but enabling again does not incur interpolaiton.

I am not sure what you mean enabling again does not incur interpolaiton
Speaking about the new UI, it has some "internal" interpolation algorithms (again, only on client), but they are only beta. To sum up, it is better do not use new UI to work with any tracked polyshapes (merged or drawn) at least because you aren't able to dump got interpolated annotations at all.

Old CVAT UI (and CVAT server, by the way) does not have algorithm to interpolate polyshapes. We've never supported it before.

It is, actually, supported on the server for quite a while. It will probably work even for different shape types in the same track.

I am not sure what you mean enabling again does not incur interpolaiton

I mean that there is no way to get interpolated shapes after merging until task annotation window is reopened (to be more correct - until annotations are saved and loaded). For this specific case the situation was: frame 1 has shape, frame 3 has shape, they are merged into a track. The track then has a shape on the frames 2 and 4 with outside property set. One may expect that the track could be interpolated between 1 and 3rd frames if outside is unset, but no. However, after the task is reloaded, tracks are partially interpolated, as described above.

It is, actually, supported on the server for quite a while. It will probably work even for different shape types in the same track.

Yes, Nikita did something like that, but there is reasons why this server algorithm doesn't work in the most of cases. So, I wouldn't say server supports it

I see here some minor bugs in both old and new UI, and I will fix them.
But any interpolation algorithms, finally will be added only in the nearest future (release 1.0).

merged shapes have "outside" property set for the last shape. If shape type is points "outside" is not set, however.

Should be fixed in the PR above

Merge is allowed for points, but clicks on points conflict with frame dragging logic.

Should be fixed in the PR above

[i1] After saving, closing and loading the task interpolation finally happens. It is true for polygons and points, but not for polylines.
"Go to previous keyframe" highlights hidden ("outside") shape on an intermediate frame. "Go to next keyframe" does not.
Interpolation for one to multiple points happens mostly for 1 point. It would probably be better if all the points were moved uniformly.
[i2] Interpolation happens all the way long for polygons and points ignoring "outside".
[i3] last "outside" is ignored for polylines. It looks like for polylines this logic is inverted.

Was not able to reproduce. Will try later.

Check out the task 29256, where all of this was tested.

I tried.

After saving, closing and loading the task interpolation finally happens. It is true for polygons and points, but not for polylines.
"Go to previous keyframe" highlights hidden ("outside") shape on an intermediate frame. "Go to next keyframe" does not.

I created three polygons (shapes) on frames 0, 1, 5
Merged them
Tried Go next/previous keyframe. In both directions it visits the same frames.
Saved, reloaded the page
No interpolation on frames 2,3,4, > 6 (track is invisible)

Also I could not reproduce:
[i2] Interpolation happens all the way long for polygons and points ignoring "outside". [i3] last "outside" is ignored for polylines. It looks like for polylines this logic is inverted.
Actually I am not sure what should I do to reproduce it. Merge works well.

@zhiltsov-max
Can we close the issue?

authors: bsekachev zhiltsov-max

repo: opencv/cvat


text:
periodic sync upstream KF to midstream ODH

content:

adapt https://github.com/kubeflow/model-registry/pull/41
with https://github.com/opendatahub-io/model-registry/commit/0ebf88d1db5dc2b57b2e5c49fecf7e8ebcce21a2
keep https://github.com/kubeflow/model-registry/pull/39
adapt https://github.com/kubeflow/model-registry/pull/43
with https://github.com/opendatahub-io/model-registry/commit/0ebf88d1db5dc2b57b2e5c49fecf7e8ebcce21a2
keep https://github.com/kubeflow/model-registry/pull/49
keep https://github.com/kubeflow/model-registry/pull/47

Codecov Report
Attention: Patch coverage is 67.10526% with 25 lines in your changes are missing coverage. Please review.

Project coverage is 79.34%. Comparing base (bb0a432) to head (0ebf88d).

Files
Patch %
Lines

clients/python/src/model_registry/_utils.py
53.19%
20 Missing and 2 partials :warning:

clients/python/src/model_registry/utils.py
89.28%
0 Missing and 3 partials :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #32      +/-   ##
==========================================
+ Coverage   76.43%   79.34%   +2.90%
==========================================
  Files          17       14       -3
  Lines        2054      673    -1381
  Branches       74       93      +19
==========================================
- Hits         1570      534    -1036
+ Misses        299      111     -188
+ Partials      185       28     -157

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

source: gharchive/pull-request

authors: codecov-commenter tarilabs

repo: opendatahub-io/model-registry

license_type: permissive

license_source: github-api


text:
Using Vuex

Between the router state, the session, and alerts, Central (and the App component in particular) is doing a fair amount of global state management, leading to complex code in some places. Would using Vuex simplify that?

We now have Vuex: the router state, the session (along with request data generally), and alerts have been moved to Vuex. I think this ended up simplifying App, as well as parent-child communication among components in general.

source: gharchive/issue

repo: opendatakit/central-frontend


text:
Add PipelineRun name to ODS context

The ODS context is quite helpful when rendering documents with https://github.com/opendevstack/ods-pipeline-adoc. One thing that is currently missing, but often required for documents, is a reference of the PipelineRun name.

For documents, this can also be achieved by passing the value as a param to the documentation task. Another alternative is to use the K8s downward API (the pipeline run name is available as a pod label).

repo: opendevstack/ods-pipeline


text:
Create project specific trigger secret

Instead of one trigger secret shared across all webhook proxies, we need one per project (aka initiative).

This will be done through https://github.com/opendevstack/ods-provisioning-app/pull/265.

repo: opendevstack/ods-project-quickstarters


text:
Require assistance - Nginx server unreachable

I followed the instructions on readme but the nginx server is unreachable. Can any of the contributors assist me with debugging the issue over remote desktop? My network works fine with any other dpdk application.

Coud you please share your steps and detail log.

I downloaded dpdk from http://dpdk.org/browse/dpdk/snapshot/dpdk-2.2.0.tar.gz
make config T=x86_64-native-linuxapp-gcc
make install T=x86_64-native-linuxapp-gcc
export RTE_SDK=/dpdk-2.2.0
export RTE_TARGET=x86_64-native-linuxapp-gcc
Setup huge pages
insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
tools/dpdk_nic_bind.py --bind=igb_uio 81:00.0
tools/dpdk_nic_bind.py --bind=igb_uio 81:00.1

export RTE_ODP=/git/dpdk-odp
cd /git/dpdk-odp/opendp
make
build/opendp -c 0x1 -n 1  -- -p 0x1 --config="(0,0,0)"
(Run log attached)
cd /git/dpdk-nginx/
./configure  --with-http_dav_module
edited conf/nginx to listen on 2.2.2.2:80 instead of 80
make
make install
objs/nginx
(Run log attached)
Connection failure on client (Client has ip 2.2.2.3/2.2.2.4)
root@dilangov2:~# wget http://2.2.2.2/index.html
--2016-03-02 13:03:40--  http://2.2.2.2/index.html
Connecting to 2.2.2.2:80... failed: Connection timed out.
Retrying.
--2016-03-02 13:05:48--  (try: 2)  http://2.2.2.2/index.html
Connecting to 2.2.2.2:80...
nginx run log.txt
opendp run log.txt

hi,

I test it in my env, it is successfully.
root@h163:~# wget http://2.2.2.2/index.html
--2016-03-03 08:37:59--  http://2.2.2.2/index.html
Connecting to 2.2.2.2:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 612 [text/html]
Saving to: ‘index.html.1’

100%[======================================>] 612         --.-K/s   in 0s
2016-03-03 08:37:59 (59.3 MB/s) - ‘index.html.1’ saved [612/612]

You can check it by below way.

please ping 2.2.2.2 from your client to check if it is successfully.
Go to below directory, enable netdp debug log to check why netdp refuse the tcp connection.
root@h163:~/dpdk-odp# cd netdp_cmd/
root@h163:~/dpdk-odp/netdp_cmd# ./build/netdpcmd
netdp> log level set debug
Set log level successfully

Hi,
Thanks for your response. The wire connection seems fine when I test other dpdk applications. However with the current setup, ping 2.2.2.2 does not work for me so I can't get to the point to obtain logs.
Are there any other tests?

Maybe something are wrong with the NIC driver in odp_main.c. you can print  RX packets in odp_main_loop() to check if receive the packets from NIC, also print TX packets in odp_send_burst() to check if send packet to NIC.

I saw one packet received and transmitted initially.
root@dilangov1:/git/dpdk-odp/opendp# build/opendp -c 0x1 -n 1  -- -p 0x1 --config="(0,0,0)"
EAL: Detected lcore 0 as core 0 on socket 0
EAL: Detected lcore 1 as core 1 on socket 0
EAL: Detected lcore 2 as core 2 on socket 0
EAL: Detected lcore 3 as core 3 on socket 0
EAL: Detected lcore 4 as core 4 on socket 0
EAL: Detected lcore 5 as core 8 on socket 0
EAL: Detected lcore 6 as core 9 on socket 0
EAL: Detected lcore 7 as core 10 on socket 0
EAL: Detected lcore 8 as core 11 on socket 0
EAL: Detected lcore 9 as core 16 on socket 0
EAL: Detected lcore 10 as core 17 on socket 0
EAL: Detected lcore 11 as core 18 on socket 0
EAL: Detected lcore 12 as core 19 on socket 0
EAL: Detected lcore 13 as core 20 on socket 0
EAL: Detected lcore 14 as core 24 on socket 0
EAL: Detected lcore 15 as core 25 on socket 0
EAL: Detected lcore 16 as core 26 on socket 0
EAL: Detected lcore 17 as core 27 on socket 0
EAL: Detected lcore 18 as core 0 on socket 1
EAL: Detected lcore 19 as core 1 on socket 1
EAL: Detected lcore 20 as core 2 on socket 1
EAL: Detected lcore 21 as core 3 on socket 1
EAL: Detected lcore 22 as core 4 on socket 1
EAL: Detected lcore 23 as core 8 on socket 1
EAL: Detected lcore 24 as core 9 on socket 1
EAL: Detected lcore 25 as core 10 on socket 1
EAL: Detected lcore 26 as core 11 on socket 1
EAL: Detected lcore 27 as core 16 on socket 1
EAL: Detected lcore 28 as core 17 on socket 1
EAL: Detected lcore 29 as core 18 on socket 1
EAL: Detected lcore 30 as core 19 on socket 1
EAL: Detected lcore 31 as core 20 on socket 1
EAL: Detected lcore 32 as core 24 on socket 1
EAL: Detected lcore 33 as core 25 on socket 1
EAL: Detected lcore 34 as core 26 on socket 1
EAL: Detected lcore 35 as core 27 on socket 1
EAL: Detected lcore 36 as core 0 on socket 0
EAL: Detected lcore 37 as core 1 on socket 0
EAL: Detected lcore 38 as core 2 on socket 0
EAL: Detected lcore 39 as core 3 on socket 0
EAL: Detected lcore 40 as core 4 on socket 0
EAL: Detected lcore 41 as core 8 on socket 0
EAL: Detected lcore 42 as core 9 on socket 0
EAL: Detected lcore 43 as core 10 on socket 0
EAL: Detected lcore 44 as core 11 on socket 0
EAL: Detected lcore 45 as core 16 on socket 0
EAL: Detected lcore 46 as core 17 on socket 0
EAL: Detected lcore 47 as core 18 on socket 0
EAL: Detected lcore 48 as core 19 on socket 0
EAL: Detected lcore 49 as core 20 on socket 0
EAL: Detected lcore 50 as core 24 on socket 0
EAL: Detected lcore 51 as core 25 on socket 0
EAL: Detected lcore 52 as core 26 on socket 0
EAL: Detected lcore 53 as core 27 on socket 0
EAL: Detected lcore 54 as core 0 on socket 1
EAL: Detected lcore 55 as core 1 on socket 1
EAL: Detected lcore 56 as core 2 on socket 1
EAL: Detected lcore 57 as core 3 on socket 1
EAL: Detected lcore 58 as core 4 on socket 1
EAL: Detected lcore 59 as core 8 on socket 1
EAL: Detected lcore 60 as core 9 on socket 1
EAL: Detected lcore 61 as core 10 on socket 1
EAL: Detected lcore 62 as core 11 on socket 1
EAL: Detected lcore 63 as core 16 on socket 1
EAL: Detected lcore 64 as core 17 on socket 1
EAL: Detected lcore 65 as core 18 on socket 1
EAL: Detected lcore 66 as core 19 on socket 1
EAL: Detected lcore 67 as core 20 on socket 1
EAL: Detected lcore 68 as core 24 on socket 1
EAL: Detected lcore 69 as core 25 on socket 1
EAL: Detected lcore 70 as core 26 on socket 1
EAL: Detected lcore 71 as core 27 on socket 1
EAL: Support maximum 128 logical core(s) by configuration.
EAL: Detected 72 lcore(s)
EAL: VFIO modules not all loaded, skip VFIO support...
EAL: Setting up physically contiguous memory...
EAL: Ask a virtual area of 0x140000000 bytes
EAL: Virtual area found at 0x7f7a00000000 (size = 0x140000000)
EAL: Ask a virtual area of 0x40000000 bytes
EAL: Virtual area found at 0x7f7980000000 (size = 0x40000000)
EAL: Ask a virtual area of 0x100000000 bytes
EAL: Virtual area found at 0x7f7840000000 (size = 0x100000000)
EAL: Requesting 5 pages of size 1024MB from socket 0
EAL: Requesting 5 pages of size 1024MB from socket 1
EAL: TSC frequency is ~2294682 KHz
EAL: Master lcore 0 is ready (tid=cd1068c0;cpuset=[0])
EAL: PCI device 0000:01:00.0 on NUMA socket -1
EAL:   probe driver: 8086:1521 rte_igb_pmd
EAL:   Not managed by a supported kernel driver, skipped
EAL: PCI device 0000:01:00.1 on NUMA socket -1
EAL:   probe driver: 8086:1521 rte_igb_pmd
EAL:   Not managed by a supported kernel driver, skipped
EAL: PCI device 0000:81:00.0 on NUMA socket -1
EAL:   probe driver: 8086:10fb rte_ixgbe_pmd
EAL:   PCI memory mapped at 0x7f7b40000000
EAL:   PCI memory mapped at 0x7f7b40080000
PMD: eth_ixgbe_dev_init(): MAC: 2, PHY: 12, SFP+: 3
PMD: eth_ixgbe_dev_init(): port 0 vendorID=0x8086 deviceID=0x10fb
EAL: PCI device 0000:81:00.1 on NUMA socket -1
EAL:   probe driver: 8086:10fb rte_ixgbe_pmd
EAL:   PCI memory mapped at 0x7f7b40084000
EAL:   PCI memory mapped at 0x7f7b40104000
PMD: eth_ixgbe_dev_init(): MAC: 2, PHY: 12, SFP+: 4
PMD: eth_ixgbe_dev_init(): port 1 vendorID=0x8086 deviceID=0x10fb
param nb 1 ports 2
port id 0
Start to Init port
port 0:
port name rte_ixgbe_pmd:
max_rx_queues 128: max_tx_queues:128
rx_offload_capa 31: tx_offload_capa:63
Creating queues: rx queue number=1 tx queue number=1...
MAC Address:00:1B:21:44:F1:D8
lcore id:0, tx queue id:0, socket id:0
PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f7b3fd1f7c0 hw_ring=0x7f7b3fd21800 dma_addr=0x23fd21800
PMD: ixgbe_set_tx_function(): Using simple tx code path
PMD: ixgbe_set_tx_function(): Vector tx enabled.
Skipping disabled port 1
Allocated mbuf pool on socket 0, mbuf number: 16384
Initializing rx queues on lcore 0 ...
port id:0, rx queue id: 0, socket id:0
PMD: ixgbe_dev_rx_queue_setup(): sw_ring=0x7f7b3d64cbc0 sw_sc_ring=0x7f7b3d64c680 hw_ring=0x7f7b3d64d100 dma_addr=0x23d64d100
core mask: 1, sockets number:1, lcore number:1
start to init netdp
USER8: LCORE[0] lcore mask 0x1
USER8: LCORE[0] lcore id 0 is enable
USER8: LCORE[0] lcore number 1
USER1: rte_ip_frag_table_create: allocated of 25165952 bytes at socket 0
USER8: LCORE[0] UDP layer init successfully, Use memory:4194304 bytes
USER8: LCORE[0] TCP hash table init successfully, tcp pcb size 448 total size 27525120
USER8: LCORE[0] so shm memory 17039360 bytes, so number 133120,  sock shm size 128 bytes
USER8: LCORE[0] Sock init successfully, allocated of 42598400 bytes
add eth0 device
add IP 2020202 on device eth0
Skipping disabled port 1
Show interface
eth0	HWaddr 00:1b:21:44:f1:d8
inet addr:2.2.2.2
inet addr:255.255.255.0
add static route
Destination		Gateway		Netmask			Flags		Iface
2.2.2.0		*		255.255.255.0		U C 		0
2.2.2.5		*		255.255.255.255		U H L 		0
3.3.3.0		2.2.2.5		255.255.255.0		U G 		0
USER8: LCORE[-1] NETDP mgmt thread startup
PMD: ixgbe_set_rx_function(): Port[0] doesn't meet Vector Rx preconditions or RTE_IXGBE_INC_VECTOR is not enabled
PMD: ixgbe_set_rx_function(): Rx Burst Bulk Alloc Preconditions are satisfied. Rx Burst Bulk Alloc function will be used on port=0.
Checking link status .done
Port 0 Link Up - speed 10000 Mbps - full-duplex
### Number of packets read=1
USER8: main loop on lcore 0
USER8:  -- lcoreid=0 portid=0 rxqueueid=0
nb ports 2 hz: 2294682266
### Ret value in TX:1
USER8: LCORE[0] Register app(129296) start
USER8: LCORE[0] Add app(129296) in table, lcore:0
USER8: LCORE[0] netdp recv app msg: type: 12
USER8: LCORE[0] netdp epoll_create
USER8: LCORE[0] alloc_socket(3), lcore(0)
USER8: LCORE[0] shm_head addr 0x7f7b382b2e40, so shm: 0x7f7b382b2fc0, sock id 3  netdp_sock_shm 128
USER8: LCORE[0] netdp_epcreate: fd 3
USER8: LCORE[0] netdp recv app msg: type: 12
USER8: LCORE[0] netdp epoll_create
USER8: LCORE[0] alloc_socket(4), lcore(0)
USER8: LCORE[0] shm_head addr 0x7f7b382b2e40, so shm: 0x7f7b382b3040, sock id 4  netdp_sock_shm 128
USER8: LCORE[0] netdp_epcreate: fd 4
USER8: LCORE[0] netdp recv app msg: type: 6
USER8: LCORE[0] netdp_close(3)
USER8: LCORE[0] get_socket(3)
USER8: LCORE[0] free_socket(3) end, lcore(0)
USER8: LCORE[0] netdp recv app msg: type: 2
USER8: LCORE[0] netdp socket
USER8: LCORE[0] alloc_socket(5), lcore(0)
USER8: LCORE[0] shm_head addr 0x7f7b382b2e40, so shm: 0x7f7b382b30c0, sock id 5  netdp_sock_shm 128
USER8: LCORE[0] Create tcp pcb successfully
USER8: LCORE[0] netdp_socket(PF_INET, SOCK_STREAM, 0)
USER8: LCORE[0] netdp recv app msg: type: 14
USER8: LCORE[0] netdp_epwait: epfd:4
USER8: LCORE[0] get_socket(4)
USER8: LCORE[0] epoll_waiting: no epoll event
USER8: LCORE[0] netdp_epwait(4) succeeded
USER8: LCORE[0] netdp recv app msg: type: 3
USER8: LCORE[0] netdp bind, fd:5
USER8: LCORE[0] get_socket(5)
USER8: LCORE[0] netdp_bind:, fd:5, addr=0x2020202, port=80
USER8: LCORE[0] Add pcb to port table successfully, reuse port 1
USER8: LCORE[0] tcp_bind: bind to port 80, IP addr 0x2020202
USER8: LCORE[0] netdp_bind(5) succeeded
USER8: LCORE[0] netdp recv app msg: type: 5
USER8: LCORE[0] netdp_listen(fd=5, backlog=511)
USER8: LCORE[0] get_socket(5)
USER8: LCORE[0] netdp recv app msg: type: 5
USER8: LCORE[0] netdp_listen(fd=5, backlog=511)
USER8: LCORE[0] get_socket(5)
USER8: LCORE[0] netdp recv app msg: type: 12
USER8: LCORE[0] netdp epoll_create
USER8: LCORE[0] alloc_socket(6), lcore(0)
USER8: LCORE[0] shm_head addr 0x7f7b382b2e40, so shm: 0x7f7b382b3140, sock id 6  netdp_sock_shm 128
USER8: LCORE[0] netdp_epcreate: fd 6
USER8: LCORE[0] netdp recv app msg: type: 13
USER8: LCORE[0] netdp epoll_ctl, fd:5, epfd:6
USER8: LCORE[0] get_socket(5)
USER8: LCORE[0] get_socket(6)
USER8: LCORE[0] netdp_epctl(epfd:6, op=0x1, fd=5)
USER8: LCORE[0] epoll add: events 0x2019
USER8: LCORE[0] netdp_conn_epctl: remove epoll out
USER8: LCORE[0] sock(5) epoll event isn't in event list
USER8: LCORE[0] netdp_epctl(5) succeeded
USER8: LCORE[0] netdp recv app msg: type: 14
USER8: LCORE[0] netdp_epwait: epfd:6
USER8: LCORE[0] get_socket(6)
USER8: LCORE[0] epoll_waiting: no epoll event
USER8: LCORE[0] netdp_epwait(6) succeeded
Also, I do not see any active connection listening at port 80
root@dilangov1:~# netstat -lptu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 :5900                  :                     LISTEN      3366/vino-server
tcp        0      0 localhost:26002         :                     LISTEN      108342/nxnode.bin
tcp        0      0 dilangov1:domain        :                     LISTEN      2142/dnsmasq
tcp        0      0 localhost:ipp           :                     LISTEN      102467/cupsd
tcp        0      0 localhost:afs3-callback :                     LISTEN      3420/nxnode.bin
tcp        0      0 localhost:21018         :                     LISTEN      2393/nxserver.bin
tcp        0      0 localhost:20000         :                     LISTEN      108309/nxserver.bin
tcp        0      0 :4000                  :                     LISTEN      2525/nxd
tcp        0      0 localhost:12001         :                     LISTEN      3420/nxnode.bin
tcp        0      0 localhost:12002         :                     LISTEN      108342/nxnode.bin
tcp        0      0 localhost:25001         :                     LISTEN      3482/nxclient.bin
tcp6       0      0 [::]:5900               [::]:                  LISTEN      3366/vino-server
tcp6       0      0 ip6-localhost:ipp       [::]:                  LISTEN      102467/cupsd
tcp6       0      0 ip6-local:afs3-callback [::]:*                  LISTEN      3420/nxnode.bin
tcp6       0      0 [::]:4000               [::]:*                  LISTEN      2525/nxd
tcp6       0      0 [::]:12865              [::]:*                  LISTEN      2359/netserver
tcp6       0      0 [::]:5800               [::]:*                  LISTEN      3366/vino-server
udp        0      0 *:36991                 :                                 3420/nxnode.bin
udp   214528      0 dilangov1.jf.intel:mdns :                                 2393/nxserver.bin
udp        0      0 *:mdns                  :                                 2393/nxserver.bin
udp     8448      0 2.2.2.1:mdns            :                                 3420/nxnode.bin
udp     8448      0 2.2.2.2:mdns            :                                 3420/nxnode.bin
udp    61440      0 dilangov1.jf.intel:mdns :                                 3420/nxnode.bin
udp   213504      0 *:mdns                  :                                 3420/nxnode.bin
udp        0      0 *:mdns                  :                                 1449/avahi-daemon:
udp        0      0 *:57082                 :                                 1449/avahi-daemon:
udp        0      0 :32668                 :                                 2111/dhclient
udp        0      0 dilangov1:domain        :                                 2142/dnsmasq
udp        0      0 :bootpc                :                                 2111/dhclient
udp        0      0 :ipp                   :                                 1506/cups-browsed
udp6       0      0 [::]:34888              [::]:                              1449/avahi-daemon:
udp6       0      0 [::]:51856              [::]:                              2111/dhclient
udp6       0      0 [::]:mdns               [::]:                              1449/avahi-daemon:
as it would do in a normal nginx-kernel stack
tcp        0      0 *:http                  :                     LISTEN      136295/nginx

netdp tcp stack is correct. app create socket in netdp, and bind 80 to the socket, and then listen on the socket.
netdp didn't print the socket connection. Refer to the log, netdp tcp stack didn't receive any tcp packets.
So please focus on the icmp traffic, why can't ping successfully from you client. please ping 2.2.2.2 from your client continuously. check how many packets are received at the NIC, and how many packets are sent at the NIC.
Please print more information(eg, IP header and eth header) of the packets at odp_main.c.

I think odp_main.c can't receive the packets from the dpdk NIC.
You many enable Promiscuous mode with below command.
build/opendp -c 0x1 -n 1 -- -P -p 0x1 --config="(0,0,0)"

Hello,
I printed some packets stats in odp_main.
Packet 1 sent
Ethernet Dst Addr:FF:FF:FF:FF:FF:FF
Ethernet Src Addr:00:1B:21:44:F1:D8
Ethernet Type:1544
Packet 1 received
Ethernet Dst Addr:01:00:5E:00:00:FB
Ethernet Src Addr:90:E2:BA:2C:8E:EC
Ethernet Type:8
Src IP:2.2.2.3 Dst IP:224.0.0.251 Src port:5353,Dst port:5353
Packet 1 received
Ethernet Dst Addr:01:00:5E:00:00:FB
Ethernet Src Addr:90:E2:BA:2C:8E:EC
Ethernet Type:8
Src IP:2.2.2.3 Dst IP:224.0.0.251 Src port:5353,Dst port:5353
Packet 1 received
Ethernet Dst Addr:01:00:5E:00:00:FB
Ethernet Src Addr:90:E2:BA:2C:8E:EC
Ethernet Type:8
Src IP:2.2.2.3 Dst IP:224.0.0.251 Src port:5353,Dst port:5353
Packet 1 received
Ethernet Dst Addr:01:00:5E:00:00:FB
Ethernet Src Addr:90:E2:BA:2C:8E:EC
Ethernet Type:8
Src IP:2.2.2.3 Dst IP:224.0.0.251 Src port:5353,Dst port:5353
Packet 1 received
Ethernet Dst Addr:01:00:5E:00:00:FB
Ethernet Src Addr:90:E2:BA:2C:8E:EC
Ethernet Type:8
Src IP:2.2.2.3 Dst IP:224.0.0.251 Src port:5353,Dst port:5353
Packet 1 received
Ethernet Dst Addr:01:00:5E:00:00:FB
Ethernet Src Addr:90:E2:BA:2C:8E:EC
Ethernet Type:8
Src IP:2.2.2.3 Dst IP:224.0.0.251 Src port:5353,Dst port:5353
Looks like an ARP message is received initially. Remaining tx messages belong to an external udp process running on port 5333.
Please help!

Please ping from your client, and tcpdump the packets.
Please try this way to startup opendp,  build/opendp -c 0x1 -n 1 -- -P -p 0x1 --config="(0,0,0)"

Hello,
I do not see any messages flowing through except for the ARP requests by client
tcpdump -nni eth7
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth7, link-type EN10MB (Ethernet), capture size 262144 bytes
23:53:36.995683 ARP, Request who-has 2.2.2.2 tell 2.2.2.4, length 28
23:53:37.995480 ARP, Request who-has 2.2.2.2 tell 2.2.2.4, length 28
23:53:38.995492 ARP, Request who-has 2.2.2.2 tell 2.2.2.4, length 28
Can I a video sharing session with you so that I can show you the stack?

Can you try dpdk l3fwd example, if it run successfully and traffic transfer successfully?

With my current setup I tried running l2fwd on server and test-pmd on client to transmit a burst of packets from client to server. l2fwd reported stats.
Sample output on server running l2fwd
Port statistics ====================================
Statistics for port 0 ------------------------------
Packets sent:                213580044
Packets received:            212171008
Packets dropped:                     0
Statistics for port 1 ------------------------------
Packets sent:                212171008
Packets received:            213580044
Packets dropped:                     0
Sample output on client running testpmd
---------------------- Forward statistics for port 0  ----------------------
RX-packets: 0              RX-dropped: 0             RX-total: 0
TX-packets: 32             TX-dropped: 0             TX-total: 32
---------------------- Forward statistics for port 1  ----------------------
RX-packets: 0              RX-dropped: 0             RX-total: 0
TX-packets: 32             TX-dropped: 0             TX-total: 32
+++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
RX-packets: 0              RX-dropped: 0             RX-total: 0
TX-packets: 64             TX-dropped: 0             TX-total: 64
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I'm not able to get stats from l3fwd so tested with l2fwd.

Please try below NIC configuration. replace below code in  in odp_main.c

static struct rte_eth_conf odp_port_conf =
{
.rxmode =
{
.mq_mode = ETH_MQ_RX_NONE,
.max_rx_pkt_len = ETHER_MAX_LEN,
.split_hdr_size = 0,
.header_split   = 0,      /< Header Split disabled */
.hw_ip_checksum = 1, /< IP checksum offload enabled */
.hw_vlan_filter = 0,     /< VLAN filtering disabled */
.jumbo_frame    = 0,   /< Jumbo Frame Support disabled */
.hw_strip_crc   = 0,    /**< CRC stripped by hardware */
},
.txmode =
{
.mq_mode = ETH_MQ_TX_NONE,
},
};

Did you try below command? which add "-P" parameter to enable promiscuous.
build/opendp -c 0x1 -n 1 -- -P -p 0x1 --config="(0,0,0)"

You can talk in the web room.
https://opendp.hipchat.com/home , the room name is opendp

I was able to see packets flowing in the server once i ping from the client, but I'm not able to isolate to which program they belong to. They have source port 0/2048. The ping does not work though on the client.
Src IP:2.2.2.3 Dst IP:2.2.2.2 Src port:2048,Dst port:40608
Packet 1 sent
Ethernet Dst Addr:90:E2:BA:2C:8E:EC
Ethernet Src Addr:00:1B:21:44:F1:D8
Ethernet Type:8
Src IP:2.2.2.2 Dst IP:2.2.2.3 Src port:0,Dst port:42656
Packet 1 received
Ethernet Dst Addr:00:1B:21:44:F1:D8
Ethernet Src Addr:90:E2:BA:2C:8E:EC
Ethernet Type:8
I have requested access to join the team opendp. Do I need to wait on approval to sign up first on hipchat?

I didn't see your request to join the team opendp. needn't sign up first on hipchat.
Please download latest code to try. For the NIC issue, it is hard do troubleshoot, you may get help from your colleague.

The new code shows the same results. Could you tell me why I do not see a nginx process created?
Also can you invite me to the opendp room by my email "akdaks08@gmail.com"

You shall startup up opendp(a tcp/ip stack) at firstly, and then startup nginx(application).
Please read the readme in dpdk-nginx carefully.

Please try below steps.

tcpdump as a file on the client pc when ping 2.2.2.2.
open the file with Wireshark tools to check if the packets is correct, if the checksum isn't correct, maybe your NIC didn't support HW checksum.  please disable the HW checksum in odp_main.c,
init_conf.hw_ip_checksum = NETDP_HW_CHKSUM_DISABLE;
init_conf.max_sock_conn = 1024 * 130;
init_conf.max_tcp_conn_per_lcore = 1024 * 60;
Please send the packets to me by email. my email is zimeiw@163.com.

Hello,
I did start nginx after starting opendp. Once I disabled hw_ip_checksum the ping worked successfully. I still do not see a nginx process and wget failed. I saw this message in the nginx process.
2016/03/22 12:16:21 [info] 105229#0: *1 client 2.2.2.3 closed keepalive connection
2016/03/22 12:20:19 [info] 105229#0: *2 client 2.2.2.3 closed keepalive connection
At the server
wget http://2.2.2.2/index.html
--2016-03-22 20:39:44--  http://2.2.2.2/index.html
Connecting to 2.2.2.2:80... connected.
HTTP request sent, awaiting response... ^C
I have emailed you the pcap files.

You may clone the opendp latest code from  github, it could enable HW checksum because the NIC config is changed.
What is the nginx log?
You may enable opendp debug log by "netdpcmd> log level set debug"  command, and share the opendp log.

It seems the tcp connection is established,  see below log.
"Connecting to 2.2.2.2:80... connected"
Please tcpdump the tcp packets. and you can also try "ab" to test the tcp.

I cloned the latest copy of opendp and nginx. Nginx server crashes after wget/ab.
USER8: LCORE[-1] netdpsock any lcore id 0xffffffff
USER8: LCORE[1] netdpsock app id: 114281
USER8: LCORE[1] netdpsock app name: nginx
USER8: LCORE[1] netdpsock app bind lcoreId: 0
USER8: LCORE[1] netdpsock app bind queueId: 0
USER8: LCORE[1] netdpsock app lcoreId: 1
skip linux fd 5
2016/03/23 03:42:51 [notice] 114281#0: using the "epoll" event method
2016/03/23 03:42:51 [notice] 114281#0: nginx/1.9.5
2016/03/23 03:42:51 [notice] 114281#0: built by gcc 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu2)
2016/03/23 03:42:51 [notice] 114281#0: OS: Linux 4.2.0-19-generic
2016/03/23 03:42:51 [notice] 114281#0: getrlimit(RLIMIT_NOFILE): 1024:65536
Segmentation fault (core dumped)
Opendp log
USER8: LCORE[0] Register app(114281) start
USER8: LCORE[0] Add app(114281) in table, lcore:0
USER8: LCORE[0] netdp recv app msg: type: 12
USER8: LCORE[0] netdp epoll_create
USER8: LCORE[0] alloc_socket(3), lcore(0)
USER8: LCORE[0] shm_head addr 0x7ff6782b2e40, so shm: 0x7ff6782b2fc0, sock id 3  netdp_sock_shm 128
USER8: LCORE[0] netdp_epcreate: fd 3
USER8: LCORE[0] netdp recv app msg: type: 12
USER8: LCORE[0] netdp epoll_create
USER8: LCORE[0] alloc_socket(4), lcore(0)
USER8: LCORE[0] shm_head addr 0x7ff6782b2e40, so shm: 0x7ff6782b3040, sock id 4  netdp_sock_shm 128
USER8: LCORE[0] netdp_epcreate: fd 4
USER8: LCORE[0] netdp recv app msg: type: 6
USER8: LCORE[0] netdp_close(3)
USER8: LCORE[0] get_socket(3)
USER8: LCORE[0] free_socket(3) end, lcore(0)
USER8: LCORE[0] netdp recv app msg: type: 2
USER8: LCORE[0] netdp socket
USER8: LCORE[0] alloc_socket(5), lcore(0)
USER8: LCORE[0] shm_head addr 0x7ff6782b2e40, so shm: 0x7ff6782b30c0, sock id 5  netdp_sock_shm 128
USER8: LCORE[0] Create tcp pcb successfully
USER8: LCORE[0] netdp_socket(PF_INET, SOCK_STREAM, 0)
USER8: LCORE[0] netdp recv app msg: type: 14
USER8: LCORE[0] netdp_epwait: epfd:4
USER8: LCORE[0] get_socket(4)
USER8: LCORE[0] epoll_waiting: no epoll event
USER8: LCORE[0] netdp_epwait(4) succeeded
USER8: LCORE[0] netdp recv app msg: type: 3
USER8: LCORE[0] netdp bind, fd:5
USER8: LCORE[0] get_socket(5)
USER8: LCORE[0] netdp_bind: fd:5, addr=0x2020202, port=80
USER8: LCORE[0] Add pcb to port table successfully, reuse port 1
USER8: LCORE[0] tcp_bind: bind to port 80, IP addr 0x2020202
USER8: LCORE[0] netdp_bind(5) succeeded
USER8: LCORE[0] netdp recv app msg: type: 5
USER8: LCORE[0] netdp_listen(fd=5, backlog=511)
USER8: LCORE[0] get_socket(5)
USER8: LCORE[0] netdp recv app msg: type: 5
USER8: LCORE[0] netdp_listen(fd=5, backlog=511)
USER8: LCORE[0] get_socket(5)
USER8: LCORE[0] netdp recv app msg: type: 12
USER8: LCORE[0] netdp epoll_create
USER8: LCORE[0] alloc_socket(6), lcore(0)
USER8: LCORE[0] shm_head addr 0x7ff6782b2e40, so shm: 0x7ff6782b3140, sock id 6  netdp_sock_shm 128
USER8: LCORE[0] netdp_epcreate: fd 6
USER8: LCORE[0] netdp recv app msg: type: 13
USER8: LCORE[0] netdp epoll_ctl, fd:5, epfd:6
USER8: LCORE[0] get_socket(5)
USER8: LCORE[0] get_socket(6)
USER8: LCORE[0] netdp_epctl(epfd:6, op=0x1, fd=5)
USER8: LCORE[0] epoll add: events 0x2019
USER8: LCORE[0] netdp_conn_epctl: remove epoll out
USER8: LCORE[0] sock(5) epoll event isn't in event list
USER8: LCORE[0] netdp_epctl(5) succeeded
USER8: LCORE[0] netdp recv app msg: type: 14
USER8: LCORE[0] netdp_epwait: epfd:6
USER8: LCORE[0] get_socket(6)
USER8: LCORE[0] epoll_waiting: no epoll event
USER8: LCORE[0] netdp_epwait(6) succeeded
USER8: LCORE[0] tcp_input: src IP: 3020202, dest IP: 2020202, rss: 8768ae
USER8: LCORE[0] tcp_input: src port: 43332, dest port: 80, seqno: 3758107382, ackno: 0, wnd:29200, flags:2
USER8: LCORE[0] Lookup hash table, src ip:2020202, dst ip: 3020202, src port:20480, dst port:17577
USER8: LCORE[0] tcp_input: no find pcb from hash table
USER8: LCORE[0] tcp_input: LISTENing pcb, ip addr: 0x2020202 , port 80
USER8: LCORE[0] tcp_input: LISTENing connection, loop_num 0, reuse_ctrl 0,  reuse_port 1.
USER8: LCORE[0] tcp_input: packed for LISTENing connection, pcb(0x7ff6798cf6c0)
USER8: LCORE[0] TCP connection request  17577 -> 20480.
USER8: LCORE[0] Create tcp pcb successfully
USER8: LCORE[0] Add hash table, src ip:2020202, dst ip: 3020202, src port:20480, dst port:17577
USER8: LCORE[0] Add hash table successfully
USER8: LCORE[0] tcp_parseopt: MSS
USER8: LCORE[0] tcp_parseopt: other
USER8: LCORE[0] tcp_parseopt: TS
USER8: LCORE[0] tcp_parseopt: NOP
USER8: LCORE[0] tcp_parseopt: other
USER8: LCORE[0] tcp_enqueue_flags: queuelen: 0
USER8: LCORE[0] tcp_create_segment: optlen: 16, data len: 0, data off 128
USER8: LCORE[0] tcp_enqueue_flags: queueing 1897462078:1897462079 (0x12)
USER8: LCORE[0] tcp_enqueue_flags: 1 (after enqueued)
USER8: LCORE[0] tcp_output: snd_wnd 29200, cwnd 1, wnd 1, seg len 0, effwnd 0, seq 1897462078, ack 1897462078
USER8: LCORE[0] State: SYN_RCVD
USER8: LCORE[0] tcp_output loop: snd_wnd 29200, cwnd 1, wnd 1, seg len 0, effwnd 0, seq 1897462078, ack 1897462078, nagle value 1
USER8: LCORE[0] tcp_output_segment: start seqno 1897462078: next seqno 1897462078
USER8: LCORE[0] tcp_output_segment: rtseq 1897462078
USER8: LCORE[0] tcp_output_segment: 1897462078:1897462078
USER8: LCORE[0] tcp transmit: send to ip layer, pkt len 56, tcp remote port 43332
USER8: LCORE[0] tcp transmit, error 0
USER8: LCORE[0] arp_input: ifindex: eth0, op: 2, src IP: 3020202, dst IP: 2020202 , myaddr: 2020202 , sdl index: 0
USER8: LCORE[0] tcp_input: src IP: 3020202, dest IP: 2020202, rss: 8768ae
USER8: LCORE[0] tcp_input: src port: 43332, dest port: 80, seqno: 3758107383, ackno: 1897462079, wnd:29200, flags:10
USER8: LCORE[0] Lookup hash table, src ip:2020202, dst ip: 3020202, src port:20480, dst port:17577
USER8: LCORE[0] Lookup hash table successfully
USER8: LCORE[0] TCP flags:USER8: LCORE[0] ACK USER8: LCORE[0]
USER8: LCORE[0] State: SYN_RCVD
USER8: LCORE[0] tcp_parseopt: NOP
USER8: LCORE[0] tcp_parseopt: NOP
USER8: LCORE[0] tcp_parseopt: TS
USER8: LCORE[0] alloc_socket(7), lcore(0)
USER8: LCORE[0] netdp_accept_cb: newpcb->state: 4, app_id 114281, sock_id 7
USER8: LCORE[0] shm_head addr 0x7ff6782b2e40, so shm: 0x7ff6782b31c0, sock id 7  netdp_sock_shm 128
USER8: LCORE[0] sock(5) epoll event is inserted in event list of lcore index(0)
USER8: LCORE[0] epoll: sem post to app, maxevents 1
USER8: LCORE[0] tcp_receive: seqno:3758107383, ackno:1897462079
USER8: LCORE[0] tcp_receive: window update 29200
USER8: LCORE[0] tcp_receive: slow start cwnd 1461
USER8: LCORE[0] tcp_receive: ACK for 1897462079, unacked->seqno 1897462078 :1897462079
USER8: LCORE[0] tcp_receive: removing 1897462078 :1897462079  from pcb->unacked
USER8: LCORE[0] tcp_receive: queuelen 1 ...
USER8: LCORE[0] snd_queuelen 0 (after freeing unacked)
USER8: LCORE[0] tcp_receive: pcb->rttest 0 rtseq 1897462078 ackno 1897462079
USER8: LCORE[0] TCP connection established 17577 -> 20480. cwnd 14600, ssthresh 29200
USER8: LCORE[0] State: ESTABLISHED
USER8: LCORE[0] tcp_input: end
USER8: LCORE[0] tcp_input: src IP: 3020202, dest IP: 2020202, rss: 8768ae
USER8: LCORE[0] tcp_input: src port: 43332, dest port: 80, seqno: 3758107383, ackno: 1897462079, wnd:29200, flags:18
USER8: LCORE[0] Lookup hash table, src ip:2020202, dst ip: 3020202, src port:20480, dst port:17577
USER8: LCORE[0] Lookup hash table successfully
USER8: LCORE[0] TCP flags:USER8: LCORE[0] PSH USER8: LCORE[0] ACK USER8: LCORE[0]
USER8: LCORE[0] State: ESTABLISHED
USER8: LCORE[0] tcp_parseopt: NOP
USER8: LCORE[0] tcp_parseopt: NOP
USER8: LCORE[0] tcp_parseopt: TS
USER8: LCORE[0] tcp_receive: seqno:3758107383, ackno:1897462079
USER8: LCORE[0] tcp_receive: pcb->rttest 0 rtseq 1897462078 ackno 1897462079
USER8: LCORE[0] tcp_receive: seq in window, seqno 3758107383, rcv_nxt 3758107383, rcv_wnd 64512
USER8: LCORE[0] pcb established, flag:0
USER8: LCORE[0] recv tcp packets, fwd to app, fd 7, pkt len 144
USER8: LCORE[0] sobuf put, sb_cnt 0, sb_byte 0
USER8: LCORE[0] tcp_recved: recveived 144 bytes, wnd 64512 (0).
USER8: LCORE[0] netdp_tcp_recv_cb: No register epoll socket
USER8: LCORE[0] State: ESTABLISHED
USER8: LCORE[0] tcp_input: end
USER8: LCORE[0] tcp_input: src IP: 3020202, dest IP: 2020202, rss: 8768ae
USER8: LCORE[0] tcp_input: src port: 43332, dest port: 80, seqno: 3758107383, ackno: 1897462079, wnd:29200, flags:18
USER8: LCORE[0] Lookup hash table, src ip:2020202, dst ip: 3020202, src port:20480, dst port:17577
USER8: LCORE[0] Lookup hash table successfully
USER8: LCORE[0] TCP flags:USER8: LCORE[0] PSH USER8: LCORE[0] ACK USER8: LCORE[0]
USER8: LCORE[0] State: ESTABLISHED
USER8: LCORE[0] tcp_parseopt: NOP
USER8: LCORE[0] tcp_parseopt: NOP
USER8: LCORE[0] tcp_parseopt: TS
USER8: LCORE[0] tcp_receive: seqno:3758107383, ackno:1897462079
USER8: LCORE[0] tcp_receive: pcb->rttest 0 rtseq 1897462078 ackno 1897462079
USER8: LCORE[0] tcp_receive: duplicate seqno 3758107383
USER8: LCORE[0] tcp_receive: segment is not withing the window, seqno 3758107383, rcv_nxt 3758107527, rcv_wnd 64512
USER8: LCORE[0] tcp_send_empty_ack: sending ACK for 3758107527
USER8: LCORE[0] tcp transmit: send to ip layer, pkt len 52, tcp remote port 43332
USER8: LCORE[0] tcp transmit, error 0
USER8: LCORE[0] pcb established, flag:0
USER8: LCORE[0] State: ESTABLISHED
USER8: LCORE[0] tcp_input: end
USER8: LCORE[-1]  app (PID 114281) has terminated
USER8: LCORE[-1] Process(114281) has terminated
USER8: LCORE[-1]  send msg to lcore(0), app (PID 114281) has terminated, 114281
USER8: LCORE[0] clear socket, recv app_id: 114281, so app_id: 114281, fd:4
USER8: LCORE[0] netdp_close(4)
USER8: LCORE[0] get_socket(4)
USER8: LCORE[0] free_socket(4) end, lcore(0)
USER8: LCORE[0] clear socket, recv app_id: 114281, so app_id: 114281, fd:5
USER8: LCORE[0] netdp_close(5)
USER8: LCORE[0] get_socket(5)
USER8: LCORE[0] netdp_conn_delete, state: 1, type:16
USER8: LCORE[0] tcp_close: closing in
USER8: LCORE[0] tcp_close_shutdown: rcv_wnd:64512
USER8: LCORE[0] State: LISTEN
USER8: LCORE[0] tcp_close_shutdown: state: 1
USER8: LCORE[0] tcp_pcb_remove: tcp_pcbs_sane()
USER8: LCORE[0] Delete pcb to port table successfully, reuse port 0
USER8: LCORE[0] tcp_free
USER8: LCORE[0] netdp_conn_free: remove epoll event
USER8: LCORE[0] Remove sock(5) epoll event from event list
USER8: LCORE[0] free_socket(5) end, lcore(0)
USER8: LCORE[0] clear socket, recv app_id: 114281, so app_id: 114281, fd:6
USER8: LCORE[0] netdp_close(6)
USER8: LCORE[0] get_socket(6)
USER8: LCORE[0] free_socket(6) end, lcore(0)
USER8: LCORE[0] clear socket, recv app_id: 114281, so app_id: 114281, fd:7
USER8: LCORE[0] netdp_close(7)
USER8: LCORE[0] get_socket(7)
USER8: LCORE[0] netdp_conn_delete, state: 0, type:16
USER8: LCORE[0] tcp_close: closing in
USER8: LCORE[0] tcp_close_shutdown: rcv_wnd:64512
USER8: LCORE[0] State: ESTABLISHED
USER8: LCORE[0] tcp_close_shutdown: state: 4
USER8: LCORE[0] tcp_send_fin: start
USER8: LCORE[0] tcp_enqueue_flags: queuelen: 0
USER8: LCORE[0] tcp_create_segment: optlen: 12, data len: 0, data off 128
USER8: LCORE[0] tcp_enqueue_flags: queueing 1897462079:1897462080 (0x1)
USER8: LCORE[0] tcp_enqueue_flags: 1 (after enqueued)
USER8: LCORE[0] tcp_output: snd_wnd 29200, cwnd 14600, wnd 14600, seg len 0, effwnd 0, seq 1897462079, ack 1897462079
USER8: LCORE[0] State: FIN_WAIT_1
USER8: LCORE[0] tcp_output loop: snd_wnd 29200, cwnd 14600, wnd 14600, seg len 0, effwnd 0, seq 1897462079, ack 1897462079, nagle value 1
USER8: LCORE[0] tcp_output_segment: start seqno 1897462079: next seqno 1897462079
USER8: LCORE[0] tcp_output_segment: rtseq 1897462079
USER8: LCORE[0] tcp_output_segment: 1897462079:1897462079
USER8: LCORE[0] tcp transmit: send to ip layer, pkt len 52, tcp remote port 43332
USER8: LCORE[0] tcp transmit, error 0
USER8: LCORE[0] free_socket(7) end, lcore(0)
USER8: LCORE[0] tcp_input: src IP: 3020202, dest IP: 2020202, rss: 8768ae
USER8: LCORE[0] tcp_input: src port: 43332, dest port: 80, seqno: 3758107527, ackno: 1897462080, wnd:29200, flags:11
USER8: LCORE[0] Lookup hash table, src ip:2020202, dst ip: 3020202, src port:20480, dst port:17577
USER8: LCORE[0] Lookup hash table successfully
USER8: LCORE[0] TCP flags:USER8: LCORE[0] FIN USER8: LCORE[0] ACK USER8: LCORE[0]
USER8: LCORE[0] State: FIN_WAIT_1
USER8: LCORE[0] tcp_parseopt: NOP
USER8: LCORE[0] tcp_parseopt: NOP
USER8: LCORE[0] tcp_parseopt: TS
USER8: LCORE[0] tcp_receive: seqno:3758107527, ackno:1897462080
USER8: LCORE[0] tcp_receive: window update 29200
USER8: LCORE[0] tcp_receive: slow start cwnd 16060
USER8: LCORE[0] tcp_receive: ACK for 1897462080, unacked->seqno 1897462079 :1897462080
USER8: LCORE[0] tcp_receive: removing 1897462079 :1897462080  from pcb->unacked
USER8: LCORE[0] tcp_receive: queuelen 1 ...
USER8: LCORE[0] snd_queuelen 0 (after freeing unacked)
USER8: LCORE[0] tcp_receive: pcb->rttest 1 rtseq 1897462079 ackno 1897462080
USER8: LCORE[0] tcp_receive: experienced rtt 0 ticks (0 msec).
USER8: LCORE[0] tcp_receive: RTO 5 (2500 milliseconds)
USER8: LCORE[0] tcp_receive: seq in window, seqno 3758107527, rcv_nxt 3758107527, rcv_wnd 64512
USER8: LCORE[0] tcp_receive: received FIN.
USER8: LCORE[0] TCP connection closed: FIN_WAIT_1 17577 -> 20480.
USER8: LCORE[0] tcp_pcb_purge
USER8: LCORE[0] tcp_send_empty_ack: sending ACK for 3758107528
USER8: LCORE[0] tcp transmit: send to ip layer, pkt len 52, tcp remote port 43332
USER8: LCORE[0] tcp transmit, error 0
USER8: LCORE[0] State: TIME_WAIT
USER8: LCORE[0] tcp_input: end
USER8: LCORE[0] tcp_input: src IP: 3020202, dest IP: 2020202, rss: c9c83846
USER8: LCORE[0] tcp_input: src port: 43334, dest port: 80, seqno: 2659282436, ackno: 0, wnd:29200, flags:2
USER8: LCORE[0] Lookup hash table, src ip:2020202, dst ip: 3020202, src port:20480, dst port:18089
USER8: LCORE[0] tcp_input: no find pcb from hash table
USER8: LCORE[0] TCP flags:USER8: LCORE[0] SYN USER8: LCORE[0]
USER8: LCORE[0] tcp_input: no PCB match found, resetting.
USER8: LCORE[0] tcp_rst: seqno 0 ackno 2659282437, local ip: 2020202, remote ip: 3020202 .
USER8: LCORE[0] tcp_rst: seqno 0 ackno 2659282437.
^C
I could not see any nginx process in netstat, neither the access or error logs.
On client side
Ping worked fine but wget and ab failed as follows
root@dilangov2:/# wget http://2.2.2.2:80/index.html
--2016-03-23 12:02:52--  http://2.2.2.2/index.html
Connecting to 2.2.2.2:80... connected.
HTTP request sent, awaiting response... No data received.
Retrying.
--2016-03-23 12:02:53--  (try: 2)  http://2.2.2.2/index.html
Connecting to 2.2.2.2:80... failed: Connection refused.
ab -n 30000 -c 500 2.2.2.2:80/
This is ApacheBench, Version 2.3 <$Revision: 1638069 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 2.2.2.2 (be patient)
apr_socket_recv: Connection refused (111)
Total of 500 requests completed
I have emailed you the tcpdump capturing tcp packets.

after you update opendp code, you shall compiled nginx again. because the static lib is updated. otherwise it would crash.
the tcp connection is established in netdp(fastpath tcp/ip stack), you can get the connection by netstat tool, netstat only get the connection from linux kernel.

I downloaded the latest version of opendp and nginx.
This is the setting in my nginx.conf
server {
listen       2.2.2.2:80;
#server_name  localhost;
I'm in PST time zone. Could you suggest a time post noon? I can be online on Slack.

Tomorrow i will online the all day

Hello, I'm online now.

Thank you so much for your patience in helping me resolve the issue. With HW checksum enabled in the code and NIC, I was able to test successfully.

repo: opendp/dpdk-nginx

license_source: bigquery


text:
Proof that DP-GAN and DP-CTGAN are differentially private?

Hi,
Seems like Opacus was tacked onto a non-private CTGAN implementation, but for suspicions I raise in a comment to another Github repo that adapts this code, I am not totally convinced that the solution is end-to-end differentially private.
Is there some explanation or reasoning anywhere for why privacy is still preserved under the conditional vector mechanism and preprocessing?

Hello, great question. We made several extra steps to make the dp-cptgan private in addition to just apply dp-sgd to discriminator part including: we use noisy frequencies in DataSampler, and instead of using GMM for preprocessing step; we also provided three options of dp-preprocessing step for continuous columns (no-change, dp standard scaler, and dp min-max). If you still want to use GMM to do the preprocessing step as what paper does, you should perform that preprocessing step locally and only provided preprocessed data to DP-CTGAN, and converted back to original form with generated synthetic data locally.

Makes sense, thanks for the clarification! I see that taken into account here indeed, so we can compute privacy usage as we measure frequencies of values of discrete columns (which is used to calibrate the random selection of a column + value during training), and then compose this later with training privacy cost.
However, I see that on this line, we're storing all of the indices of the given dataset (e.g. indices of the rows) for which a column takes on a particular value. Then, on this line, we randomly sample rows from the stored row indices (training-by-sampling). Intuitively, we would expect this to affect the privacy amplification calculus, since Opacus assumes a standard uniform sampling scheme to calculate its privacy spent, but here we are:

sampling constrained to only a subset of the dataset rather than uniformly from the entire dataset -> makes it impossible to have a batch with examples that differ in every column (so sample space is smaller)
overall, sampling non-uniformly (since smaller subsets are weighted more due to the log factor than would be expected under uniform sampling)
sampling from a potentially tiny batch size-sized subset, for which it is not obvious to me whether the same privacy accounting for DP-SGD would hold.

However, when we take a look at the privacy accounting portion of the code here and here, it seems that only the privacy expenditure from measuring the column frequencies and performing DP-SGD are factored in. Is this the case, or am I missing something? (my logic went wrong somewhere or Opacus is modified under the hood to take this into account)

Note that log_frequency defaults to False, and we throw a privacy warning if the caller asks for log frequencies.
Also note that batches typically include samples that differ in every column (unless I am misunderstanding your comment).  The training loop calls sample_condvec, which uniformly randomly selects from the available columns to determine which column will be the conditional column for each row.  From there, a categorical value for the chosen conditional column is selected (using the noisy frequencies).  Then, sample_data samples a row uniformly from the rows that have that value in the randomly-selected categorical column.  The distribution of conditional categories in the batch will be uniform, the distribution of values in those conditional categories will be the noisy distribution, and the rows from there will be uniform.

Ah, I see. I still think that one has to prove that such a conditional vector sampling process is differentially private, correct? In other words, instead of a uniform sampling from the dataset, this is non-uniform sampling where the probabilities depend on the values of the examples themselves (which to me seems a bit concerning). Would you not need to go through the DP-SGD proof and rework it?

When log_frequency is false, the sampler is actually sampling uniformly from the dataset.  It's just doing so in a roundabout manner.  The steps taken are:

Select a categorical column uniformly at random.  Let's suppose we select the gender column.
Select a category value for that column, according to the actual frequencies in the data.  Supposing our data is 43% male, then 67% of the time we will select female (assume PUMS, which has two genders).  This is equivalent to uniformly selecting a row from the vector of all gender values.
Now, uniformly randomly select a row where gender is equal to the value we randomly chose above.

This is the procedure outlined in the CTGAN paper, which only needs to be done this way if step 2 is non-uniform, for example using log frequencies.  When step 2 is using the actual frequencies, it is exactly uniform sampling.  Every row in the dataset has the same probability of being sampled for every row in the batch.
To see that this is so, suppose that you have 1 billion rows of data with 52 total dimension combinations (2 genders, 2 marital statuses, and 13 education levels).  You can count the frequencies of all dimension combinations and divide by the number of rows to get a probability distribution spread across 52 possible rows.  Now, instead of uniformly selecting row indices between 0 and 1 billion, you can draw from this 52-element probability vector to get rows that uniformly match the underlying distribution.  You can also select one column according to its marginal probability, then the next conditioned on the previous column, and so on, to get the same result.  In all of these procedures, each source row has equal probability of being selected.
FWIW, it would be possible to maintain log_frequency on a large enough dataset by undersampling, but we didn't see improvements from using log_frequency, so it didn't seem worth the effort to support it.

Oh, I see. This makes a lot of sense. So this means that sampling in this situation is identical to a non-conditional sampling process? In other words, the fact that there is a conditional vector at all would result in an identical training process to as if this code was not included.
I also see from here that the pre-processing is quite simple under DP: just DP standard scaler for the continuous columns and one-hot for the categorical columns. If I am understanding this correctly, does this mean that the central contributions of CT-GAN---mode-specific normalization and its conditional vector idea---have been excluded from it's differentially private version?

That's correct, though we still create the random conditional mask which selects a different categorical value to serve as a "label" for each row in the batch.  The technique of randomly choosing categorical values to "condition" the other variables is relatively common, as is the technique of using masks to speed up the computation.  As far as I know, both techniques predate the CTGAN paper, so the key innovation in that paper is using the random mask to up-sample rare category values via log-frequency.  In our implementation the mask and row are both uniformly selected, so it's accurate to say we are excluding a key part of the CTGAN design.
As you've noticed, we also vary from the non-DP implementation of CTGAN by excluding the use of the GMM preprocessor, which seems to have hurt the performance more than excluding log-frequency did.  The synthesizer can still get good results if the analyst has a way to preprocess the continuous values into something that is standard scale.  In the case of PUMS (e.g.), we know the min and max for income, and can log transform and do a minmax scale without having to spend epsilon, and this gives OK results with DPCTGAN.  We can also spend some budget to learn a DPMinMax or DPStandardScaler, and that works OK so long as datasets are large enough to learn useful summaries to perform the preprocessing.  However, the comparison with non-DP is unfavorable with something small like PUMS 1000, because we are comparing a non-noisy GMM against a pre processor trying to learn a differentially private variance on a small number of rows with values of large magnitude.  The GMM in the original (non-DP) CTGAN implementation "just works" in a lot of cases where DP requires fiddling.

repo: opendp/smartnoise-sdk

license: MIT


text:
CAS-53: Initial NVMEoF nexus implementation

A version of the NVMEoF nexus support work which is slimmed down as much as possible. Limited to nexus using the same target as the replicas and without discovery support.

Although not merged yet, can you have a quick look at PR#261 as one of us will need to resolve the conflicts that will arise.

The conflicts don't look horrendous, so just merge your changes when they're approved and I can mop up.

As discussed, I'll let @gila merge this into his changes, then onto develop.

Oops, didn't mean to add a merge commit. Rebased again now.

repo: openebs/Mayastor


text:
test: add example pool-client

Add an example pool client which can make requests to the pool service
over a nats message bus.

This looks very cool and almost easy to use I'm glad we were stubborn and pushed for a REST API last year.  Just a general comment; if you add an example, some explicit comments might be helpful :)

This looks very cool and almost easy to use I'm glad we were stubborn and pushed for a REST API last year.  Just a general comment; if you add an example, some explicit comments might be helpful :)

bors merge

bors merge

bors merge

bors merge

authors: gila paulyoong


text:
Container should take output directory as another mountpoint

This will allow the invokers to run with the requirement parameters, parse the results for success, failure or generating graphs.

Moved the issue to openebs/test-tools repo: https://github.com/openebs/test-tools/issues/14

authors: kmova ksatchit

repo: openebs/litmus


text:
Add Documentation for prometheus

Documentation

Add Readme and documentation related to prometheus.

Quotes on Prometheus from various References:

Prometheus is not an event-based monitoring system.

You do not send raw events to Prometheus, nor can it store them. Prometheus is in the business of collecting aggregated time series data.

The effort for establishing a connection is small compared to the metrics payload and other required work. The TCP/HTTP overhead in Prometheus is still negligible compared to the other work that the Prometheus server has to do to ingest data (especially persisting time series data on disk).

The scaling bottleneck here has never been related to pulling metrics, but usually to the speed at which the Prometheus server can ingest the data into memory and then sustainably persist and expire data on disk/SSD.

When you have many endpoints scattered around the world which are not directly reachable due to firewalls or complicated networking setups, and where it's infeasible to run a Prometheus server directly in each of the network segments. This is not quite the environment for which Prometheus was built, although workarounds are often possible (via the Pushgateway or restructuring your setup).

How to feed logs into Prometheus?

Don't. Use ELK for this instead. Prometheus is a system to collect and process metrics, not an event logging system. The Raintank blog post Logs and Metrics and Graphs, Oh My! provides more details about the differences between logs and metrics.

If you want to extract Prometheus metrics from application logs, Google's mtail might be helpful.

Can I send Alerts ? Yes. With Alertmanager.

How is Prometheus highly available ?  Run identical Prometheus servers on two or more separate machines. Identical alerts will be deduplicated by the Alertmanager. For high availability of the Alertmanager, you can run multiple instances in a Mesh cluster and configure the Prometheus servers to send notifications to each of them.

Why does Prometheus use a custom storage backend rather than [some other storage method]? Isn't the "one file per time series" approach killing performance?

Initially, Prometheus ran completely on LevelDB, but to achieve better performance, we had to change the storage for bulk sample data. We evaluated many storage backends that were available at the time, without getting satisfactory results. So we implemented exactly the parts we needed.
For indexes, it uses LevelDB
For the bulk sample data, it has its own custom storage layer, which organizes sample data in chunks of constant size (1024 bytes payload). These chunks are then stored on disk in one file per time series.
LevelDB for making heavy use of file system capabilities.
More on chunks & chunk encodings are present here & here.

What about the memory usage of this custom storage backend ?

Prometheus keeps all the currently used chunks in memory. In addition, it keeps as many most recently used chunks in memory as possible. You have to tell Prometheus how much memory it may use for this caching.
Details are available here.

What about the performance local storage solution for most of the use-cases ?

Important requirements are:

An acceptable query speed for common queries &
Sustainable ingestion rate of hundreds of thousands of samples per second. This further depends on many parameters, like the compressibility of the sample data, the number of time series the samples belong to, the retention policy, and even more subtle aspects like how full your SSD is.

Refer configuring prometheus for performance.

InfluxDB vs. Prometheus:

InfluxDB uses a variant of a log-structured merge tree for storage with a write ahead log, sharded by time. This is much more suitable to event logging than Prometheus's append-only file per time series approach. InfluxDB supports timestamps with up to nanosecond resolution, and float64, int64, bool, and string data types. Prometheus by contrast supports the float64 data type with limited support for strings, and millisecond resolution timestamps.
InfluxDB is maintained by a single commercial company following the open-core model, offering premium features like closed-source clustering, hosting and support. Prometheus is a fully open source and independent project, maintained by a number of companies and individuals, some of whom also offer commercial services and support.

InfluxDb is better when:

You are doing event logging
Commercial option offers clustering for InfluxDB, which is also better for long term data storage.
Eventually consistent view of data between replicas.

What about Prometheus' Query Language ?

It is a query language used for graphing & alerting.

References:

https://prometheus.io/blog/2016/07/23/pull-does-not-scale-or-does-it/

repo: openebs/openebs


text:
Assessment events uniqueness

For merge & release after next opened-api's release

Already had it, but it's missing the unique constraint on the index.

repo: openedinc/callisto


text:
Make sure all display string props accept element proptype

Studio-frontend needs to be able to pass in an element wherever a component accepts a display string because it wraps all translated string in a span that specifies the language of the translation e.g. .

I would argue that this is what props.children should be used for
<MyComponent>
  blahbblahblah
</MyComponent>

and
<MyComponent>
 blahblahblah
</MyComponent>

If we do that, then we will loose the ability to enforce certain accessible patterns. Like requiring a legend on a Fieldset, a label on an asInput, and a description for the danger theme validation icon on asInput and Fieldset. Getting rid of those props would mean that it would be up to the consumer of Paragon to make sure to include them in the children. Is that the direction that we want to go in?

As Jae pointed out, we should rename the closeText prop on the Modal to something that implies that it accepts a string or an element. closeLabel maybe?

Again, I feel like this API might be more intuitive
<Modal>
  <Title>
    Some title
  </Title>

    Some body

    Some label

</Modal>

I think we should think about using children instead of jamming things into props.

How do we enforce certain components/aria attributes that are needed for accessibility become children then? I feel like that could lead to regressions in accessibility due to folks needing to know all required children instead of having them by default and providing the text (element for i18n) and more or less getting the accessibility out of the box. That sort of change feels to me like we're doing a component library, but not necessarily an accessible one which I thought was one of the main appeals of Paragon and a goal to help prevention of regressions as we move forward.

Well when you iterate through the children you can check their types.
If, for a modal, you iterate through all the children and a Label has not been found then you can throw / console.log an error, or create one by default.

Personally, I don't trust that a console error will prevent these types of regressions moving forward - anyone can 100% ignore messages in the console, merge, and maybe "come back to it later." Especially since this sort of functionality is already there by default, removing it for a console log solution seems like a very risky trade-off.
To your your second point of creating the missing child by default, how do we know what the default values should be at that point? If nothing is being sent in, creating a default seems like we would be making many assumptions for what the implementer was intending without getting more information from them, which again increases risk. Also, aren't we already creating these defaults today, but giving the option for providing us with the context, information, customization with the props.
This hypothetical validation that will be looping though the passed in children would also have to have logic involved for proper aria-attributes (labels/describedby/hidden/etc) on each required child that we would need to know in advance by in order to ensure accessibility. That amount of logic and forward thinking maintenance to handle this for every optional case of "you can pass in any children at all and we will validate it with this loop" seems rather high instead of allowing folks to pass in a string or element as a prop (that is predominantly for i18n or Icons currently) for specific component features that explicitly exist and that provide a linting catch on the prop type validation prior to the merge occurring.
Overall I'm not sure the tradeoffs are worth the amount of effort involved for pretty much overhauling the components altogether. This change initially called for expanding functionality of existing props and ensuring their names are handled correctly, which overall is a light lift and a quick win. I'm happy to chat more, but so far I'm not 100% convinced.

Personally, I don't trust that a console error will prevent these types of regressions moving forward - anyone can 100% ignore messages in the console, merge, and maybe "come back to it later."

Sure, so I guess, throw an Error then?
This is how PropType violations are seen - at runtime, in development mode, as console error statements - and they're supposed to define part of the API for your component.
I am unsure how a similar validation system (if not a stricter validation system, by actually throwing exceptions) wouldn't be useful for communicating 95% of all API misuse to the implementer.

how do we know what the default values should be at that point?

Well, we have a default prop value for closeText right?
I'm just saying that we should move the API from being prop-based to being children-based.
I don't see how you lose that customization with a more declarative children-based API. You're just moving the API entry point from a prop to a child.

That amount of logic and forward thinking maintenance to handle this...seems rather high

I think most really good APIs generally have a decent amount of abstracted logic to make using the actual API as intuitive as possible.

I'm not trying to generally disagree with your suggestion, the context that I'm missing here and what I was looking for with my discussion points is: what is the value-add of changing the the APIs in this way and how does that compare to the value-add of the original suggested solution? I know the scope of this issue was initially thought of in the view of being able to support i18n within the text of Paragon components. I'm assuming that your change suggestion goes after a larger scope of benefit and I'd like to understand that viewpoint to weigh the benefits vs tradeoffs of the two proposed solutions that we have.

This is being handled by ongoing work to add native i18n support via react-intl to Paragon. Closing.

authors: adamstankiewicz fysheets jaebradley thallada

repo: openedx/paragon


text:
[BD-46] fix: fixed icon button

Description
Fixed icon button.
Merge Checklist

[ ] If your update includes visual changes, have they been reviewed by a designer? Send them a link to the Netlify deploy preview, if applicable.
[ ] Does your change adhere to the documented style conventions?
[ ] Do any prop types have missing descriptions in the Props API tables in the documentation site (check deploy preview)?
[ ] Were your changes tested using all available themes (see theme switcher in the header of the deploy preview, under the "Settings" icon)?
[ ] Were your changes tested in the example app?
[ ] Is there adequate test coverage for your changes?
[ ] Consider whether this change needs to reviewed/QA'ed for accessibility (a11y). If so, please add wittjeff and adamstankiewicz as reviewers on this PR.

Post-merge Checklist

[ ] Verify your changes were released to NPM at the expected version.
[ ] If you'd like, share your contribution in #show-and-tell.
[ ] 🎉 🙌 Celebrate! Thanks for your contribution.

Thanks for the pull request, @PKulkoRaccoonGang! I've created BLENDED-1249 to keep track of it in Jira.   More details are on the BD-46 project page.
When this pull request is ready, tag your edX technical lead.

@PKulkoRaccoonGang 🎉 Your pull request was merged!  Please take a moment  to answer a two question survey so we can improve your experience in the future.

:tada: This PR is included in version 19.25.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


text:
Add more instruction for BGP EIP in Getting Started / Usage / Use OpenELB in BGP mode

Getting Started / Usage / Use OpenELB in BGP mode section of the documentation can be made more beginner-friendly by informing that the address in EIP object can be any random IP address representation, except the IP addresses already in use.

/assign @Patrick-LuoYu

Hi @zheng1 I have already created a PR which is ready to be reviewed.

repo: openelb/website


text:
Feature/improve-oEQ-accessibility

#1432
Checklist

[x] the [contributor license agreement] is signed
[x] commit message follows [commit guidelines]
[x] screenshots are included showing significant UI changes

Description of change
As discussed with @mrblippy , we need to add the attribute 'aria-label' to Screen option' elements.
This PR provides the ability of adding 'aria-label' to Wizard controls (e.g. Editbox and Drop-down List) that do not have <label> to describe themselves.
In terms of the vertical dots, as it is a standard Material-UI component, we can directly add aria-label to it.

I did not realise more aria-xxx attributes are required. I will make some changes soon.

Fundamental changes:
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-e429819f4b1a064c4d029a3555e436a3
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-662191e23580feb940cf1f86ecff5b63

Screen options:
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-9516b8bdb2fa8664f07b5556e8b25cd2
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-42e3fa70a73fb5dd53c92a542a8687a5
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-109f21cd1296cce5dcd1f9892e412fd1
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-d48f6ca441caa4c8f53f89afda543e0a

Search button:
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-dd82c3a0f3d3325b47d49876c73d49ec

Filter, Sort, Share buttons:
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-4f2eca6c4c2f5ef6a939ac151e8cbff5
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-3b88ce07f077128314f50ac29c248bee

Show attachments button:
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-65783d6236a48190cf97181d05b1035b
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-9bce0f16be0f937dde024fd6759f3a92
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-cb3f414ef7484ca01e5931f85547194d

Archive extractions dropdown:
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-d11a9b7a3d135ee0c7fc792eb683c42e
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-687ac3030039feb5829a470bd76503b0

Mandatory fields:
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-dc27ce6539cc5fb0a384d8002864b197

Modal dialogs:
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-54e9021e05d78e3389c4e5e1ccc7e8f5
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-b06845f3ac0c95061fcbef275116dcbe
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-4ba9e65348beba0c412be08c7d509744
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-b49cc6fbeb67e7e7e69ae5ac2b11288d

Non-important:
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-600a51202778c5bbefe6da9e084f07af
https://github.com/openequella/openEQUELLA/pull/1475/files#diff-f716c8be32bdf3a60a849f229e63b99e

Star rating: https://github.com/openequella/openEQUELLA/pull/1475/commits/58240c537a7983c0b84affb2a025ebb2bf2260b4#diff-e226bbcf9da33bb635ed40e933fe8a2b
line 101-106, 141

repo: openequella/openEQUELLA


text:
release: v0.7.1

0.7.1 (2024-09-16)
This release includes fixes for several bugs identified in the previous release related to OpenTelemetry metrics reporting: (#124)

fix: attribute values are now correctly exported as their intended types (previously, these were all sent as string values)
fix: http_client_request_duration being reported in seconds rather than the intended milliseconds
fix: sync client mistakenly passing the entire configuration (rather than just the OpenTelemetry configuration as intended) to queryDuration() and requestDuration()
fix: some attributes may not have been exported as expected under some conditions
fix: queryDuration() and requestDuration() may not have updated their histograms reliably when attr_http_client_request_duration or attr_http_server_request_duration (respectively) were not enabled (which is the default)

Please note that if you use third-party OpenTelemetry tooling to visualize the attributes mentioned above, you may need to update your queries to account for these changes.

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

Project coverage is 69.16%. Comparing base (ce12fcf) to head (7ceec30).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #125   +/-   ##
=======================================
  Coverage   69.16%   69.16%
=======================================
  Files         121      121
  Lines        9982     9982
=======================================
  Hits         6904     6904
  Misses       3078     3078

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

authors: codecov-commenter evansims

repo: openfga/python-sdk


text:
Sphinx logging best practices update

Turns out the previous push only stopped Sphinx from spitting out errors during a local build. On RTD it seems that they call Sphinx on their own. This PR aims to fix that too

This is the PR that I mentioned earlier where I'd like to try and get this merged in today

Additions all look good, might need some CI tweaking but the branch itself looks good.

repo: openfheorg/openfhe-development


text:
Fatal DB Error, duplicate column name

What

I'm on the latest internal playstore

Is the screen I am greeted with. Maybe I have missed some migration script but that shouldn't happen.

Duplicate with #5732.
@M123-dev Have you been playing with different versions, or just been a normal user waiting for app upgrades from Google Play?

@M123-dev is in internal, so prob one of the 10-20 ish people impacted by the hotfixes

@M123-dev is in internal, so prob one of the 10-20 ish people impacted by the hotfixes

Makes sense, but I prefer to double-check. We don't want this bug to happen for thousands of users, do we?

Duplicate with #5732. @M123-dev Have you Oh yes I've been looking for this one but wasn't scrolling that far

Just normal internal user. So yes I have some more versions but haven't done some manual version switching.

@M123-dev Then I guess we'd rather be careful.
I'll try to PR a fix today.

Heyy @monsieurtanuki sorry for my admittedly very late response, am on really busy schedule rn.
My app on latest internal (seems to be from 19.11.  android settings say 4.16.9) I still have the same problem.
I haven't seen someone else complain in Slack or somewhere so I guess it's a one time thing with some bad internal version mixing, maybe skipping some migrations. I'm not using the internal version that often.
Is it fine to re-install?

Updated again, still happening. Maybe the "Fatal Error" at the beginning 🤷, but I didn't double-check if it's coming from somewhere else in the error catching logic.
For me, it is fine to reinstall. Don't have anything important on the Play Store version, but I don't want to uninstall when this is maybe a problem others could face.
Sounds unlikely, but you are the db wizard who can tell whether it's a critical thing or just bad luck.

@M123-dev Would you please double-check the displayed error message? There may be a typo in the String I catch and check.

authors: M123-dev monsieurtanuki teolemon

repo: openfoodfacts/smooth-app


text:
ECMWF Met data storage

Need ability to cache met data for simulations.
Build on the MetData dataclass and add ability to store 0-3D Met data objects.

This has been partially implemented - see https://github.com/openghg/openghg/blob/master/openghg/modules/_ecmwf.py

repo: openghg/openghg


text:
Write a few simple lessons about how picture becomes 3d

The questions are:

what's the e2e flow and How 2d image is applied to 3d globe, at which step the  transformer happens.
How camera play a role  in this process
How lighting plays a role in this process
Tree traversal logic? Terrain oriented render design & flow Etc.
Suggestions to build delightful 3d visualization experience.

Making https://github.com/openglobus/openglobus/wiki/How-it-works

repo: openglobus/openglobus


text:
偶发空指针异常

`
java.lang.NullPointerException: null
at cn.crane4j.core.util.CollectionUtils.computeIfAbsent(CollectionUtils.java:430)
at cn.crane4j.core.util.ReflectUtils.getDeclaredFields(ReflectUtils.java:472)
at cn.crane4j.core.util.ReflectUtils.lambda$null$12(ReflectUtils.java:499)
at cn.crane4j.core.util.ReflectUtils.traverseTypeHierarchy(ReflectUtils.java:439)
at cn.crane4j.core.util.ReflectUtils.lambda$getFields$13(ReflectUtils.java:499)
at cn.crane4j.core.util.CollectionUtils.computeIfAbsent(CollectionUtils.java:430)
at cn.crane4j.core.util.ReflectUtils.getFields(ReflectUtils.java:497)
at cn.crane4j.core.util.ReflectUtils.getField(ReflectUtils.java:484)
at cn.crane4j.core.support.reflect.ReflectivePropertyOperator$ReflectivePropDesc.findGetterMethod(ReflectivePropertyOperator.java:298)
at cn.crane4j.core.support.reflect.ReflectivePropertyOperator$ReflectivePropDesc.findGetter(ReflectivePropertyOperator.java:129)
at cn.crane4j.core.support.reflect.AbstractPropDesc.lambda$obtainInvokerFromCache$1(AbstractPropDesc.java:60)
at cn.crane4j.core.util.CollectionUtils.computeIfAbsent(CollectionUtils.java:430)
at cn.crane4j.core.support.reflect.AbstractPropDesc.obtainInvokerFromCache(AbstractPropDesc.java:59)
at cn.crane4j.core.support.reflect.AbstractPropDesc.getGetter(AbstractPropDesc.java:35)
at cn.crane4j.core.support.reflect.PropertyOperator.findGetter(PropertyOperator.java:52)
at cn.crane4j.core.support.reflect.PropertyOperator.readProperty(PropertyOperator.java:39)
at cn.crane4j.core.support.reflect.ChainAccessiblePropertyOperator.lambda$chainGetter$1(ChainAccessiblePropertyOperator.java:99)
at cn.crane4j.core.support.auto.DefaultAutoOperateAnnotatedElement.execute(DefaultAutoOperateAnnotatedElement.java:70)
at cn.crane4j.core.support.aop.MethodResultAutoOperateSupport.afterMethodInvoke(MethodResultAutoOperateSupport.java:80)
at cn.crane4j.extension.spring.aop.MethodResultAutoOperateAdvisor.invoke(MethodResultAutoOperateAdvisor.java:56)
`
在新增数据之后，立即调用查询方法，间隔时间比较端，在毫秒级别，就会有一定概率出现这个异常

同样的场景还会偶发异常：
java.lang.NegativeArraySizeException: -1         at java.base/java.util.HashSet.toArray(HashSet.java:368)         at java.base/java.util.LinkedList.addAll(LinkedList.java:412)         at java.base/java.util.LinkedList.addAll(LinkedList.java:391)         at cn.crane4j.core.util.CollectionUtils.addAll(CollectionUtils.java:269)         at cn.crane4j.core.util.ReflectUtils.traverseTypeHierarchy(ReflectUtils.java:444)         at cn.crane4j.core.util.ReflectUtils.lambda$getFields$13(ReflectUtils.java:499)         at cn.crane4j.core.util.CollectionUtils.computeIfAbsent(CollectionUtils.java:430)         at cn.crane4j.core.util.ReflectUtils.getFields(ReflectUtils.java:497)         at cn.crane4j.core.util.ReflectUtils.getField(ReflectUtils.java:484)         at cn.crane4j.core.support.reflect.ReflectivePropertyOperator$ReflectivePropDesc.findGetterMethod(ReflectivePropertyOperator.java:298)         at cn.crane4j.core.support.reflect.ReflectivePropertyOperator$ReflectivePropDesc.findGetter(ReflectivePropertyOperator.java:129)         at cn.crane4j.core.support.reflect.AbstractPropDesc.lambda$obtainInvokerFromCache$1(AbstractPropDesc.java:60)         at cn.crane4j.core.util.CollectionUtils.computeIfAbsent(CollectionUtils.java:430)         at cn.crane4j.core.support.reflect.AbstractPropDesc.obtainInvokerFromCache(AbstractPropDesc.java:59)         at cn.crane4j.core.support.reflect.AbstractPropDesc.getGetter(AbstractPropDesc.java:35)         at cn.crane4j.core.support.reflect.PropertyOperator.findGetter(PropertyOperator.java:52)         at cn.crane4j.core.support.reflect.PropertyOperator.readProperty(PropertyOperator.java:39)         at cn.crane4j.core.support.reflect.ChainAccessiblePropertyOperator.lambda$chainGetter$1(ChainAccessiblePropertyOperator.java:99)         at cn.crane4j.core.support.auto.DefaultAutoOperateAnnotatedElement.execute(DefaultAutoOperateAnnotatedElement.java:70)         at cn.crane4j.core.support.aop.MethodResultAutoOperateSupport.afterMethodInvoke(MethodResultAutoOperateSupport.java:80)         at cn.crane4j.extension.spring.aop.MethodResultAutoOperateAdvisor.invoke(MethodResultAutoOperateAdvisor.java:56)         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)         at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:752)         at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)         at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:752)         at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703)

第一个问题看起来是由于 ReflectUtils#getDeclaredFields 方法入参为 null 引起的，不过光靠这个堆栈很难排查出为什么一条路传下来冒出来了一个 null。第二个问题目前还没有什么头绪，感觉可能跟 JDK 版本有关系。
这两个问题我本地都没有复现出来，能否把涉及到的相关代码发上来呢？包括触发填充的方法和它返回的类(即被 @AutoOperate 注解的方法)，被填充的类以及它的父类和接口(如果有的话)，如果有可运行的实例代码就更好了。

目前能确认的是，NegativeArraySizeException 这个问题是由一个 HashSet 的并发修改问题引起的。
具体来说，当进行反射的时候，都会调用 ReflectUtils#traverseTypeHierarchy 这个方法遍历类与其层级结构：
public static void traverseTypeHierarchy(Class<?> beanType, Consumer<Class<?>> consumer) {
      Set<Class<?>> accessed = new HashSet<>();
      Deque<Class<?>> typeQueue = new LinkedList<>();
      typeQueue.add(beanType);
      while (!typeQueue.isEmpty()) {
          Class<?> type = typeQueue.removeFirst();
          accessed.add(type);
          // do something for current type
          consumer.accept(type);
          // then find superclass and interfaces
          Set<Class<?>> declaredSuperClassWithInterface = getDeclaredSuperClassWithInterface(type); // 获取父类与接口
          declaredSuperClassWithInterface.remove(Object.class);
          declaredSuperClassWithInterface.removeAll(accessed);
          CollectionUtils.addAll(typeQueue, declaredSuperClassWithInterface);
      }
  }

问题在于，getDeclaredSuperClassWithInterface 这个方法获取的 Set 集合实际上是从缓存中获取的：
public static Set<Class<?>> getDeclaredSuperClassWithInterface(Class<?> type) {
      return CollectionUtils.computeIfAbsent(DECLARED_SUPER_CLASS_WITH_INTERFACE, type, k -> {
          Set<Class<?>> result = new LinkedHashSet<>();
          Class<?> superClass = type.getSuperclass();
          if (superClass != null) {
              result.add(superClass);
          }
          result.addAll(Arrays.asList(type.getInterfaces()));
          return result;
      });
  }

而在 traverseTypeHierarchy 方法中又修改了获取的 Set 集合，在并发环境下，就又可能出现 Set 内部持有的 Map 集合因为并发操作，最终出现 size 被扣减到 0 以下的情况，此后再调用 Set.toArray 就会出现 NegativeArraySizeException 异常。
不过，上面的空指针目前仍然不能确认是什么原因造成的，只能根据堆栈初步判断是在通过 traverseTypeHierarchy 方法遍历类层级结构的时候出现了一个 null，所以目前怀疑可能也是因为这个并发修改的问题导致的。
这周内会发布 2.8.1 先修复 NegativeArraySizeException  这个问题，升级完以后需要再观察一下空指针这个问题是否会再出现。

authors: Createsequence feiyue


text:
Disable atlas collection, flycapture, ptgrey by default

Disables building of atlas-collection, flycapture, and ptgrey by default. The changes in this PR would need to be manually reverted on the Atlas control computers and should not affect anyone else.
Dependent on #36
Addresses https://github.com/openhumanoids/oh-distro/issues/38
Tested on a "public, no-matlab, no private-externals" build on a fresh Ubuntu install.

I'm not sure I want to disable so much code by default.  How do build servers enable this code for testing?  I think we're reaching the limits of what tobuild.txt was designed for.  We now have options, but pod builds do not really support configuration options.

What to do with the atlas proprietary code issue isn't resolved yet @iamwolf . We shouldn't make steps to make Atlas unrunnable.
I had been envisaging moving atlas-collections to an entirely separate repo. It could still be build tested as part of a minimal distro - like I do for pronto.
I'm interested in hearing what @patmarion thinks is the right solution.

I'm not sure.  Drake abandoned tobuild.txt and now uses custom logic around CMake's ExternalProject system.  Oh-distro uses ExternalProject for software/externals, but still uses tobuild.txt for the main build.  We could abandon tobuild.txt, or we could add tricks in the subdirs to return early, similar to what was recently added to software/control when Matlab is not available.  Replacing software/tobuild.txt would take some development effort, but maybe that's the best long term solution.  It's a recursive job though, in addition to the top level tobuild.txt, you need to do it for subdirs, too.

My intention was neither to break Atlas/make it unrunnable nor to ignite a debate on changing build systems - apologies. The intention is to allow a full build when private externals are 'off' without throwing errors because it cannot find these directories. Happy to use something like returning early - the issue at the moment is these directories it is trying to build do not exist if BUILD_PRIVATE_EXTERNALS is off and it fails when trying to recurse into those directories.

Do you think it would be possible to return early where possible (ptgrey, but not atlas-collection/atlas and flycapture) and have a environment variable set in bashrc for those wanting to build it [i.e. the build servers, the Atlas computer in MIT, etc.] that is read and determines whether it is build?
Hereto, can the proprietary code possibly be built as part of the externals where we have CMake logic rather than in drivers? What was the reasoning behind having to copy from externals into atlas-collection/atlas and drivers/flycapture for instance instead of building in externals?
Or, deactivate by default and provide a bash script to activate atlas (using sed to replace #deactivated-module with deactivated-module in the tobuild.txt files) for the build server and the Atlas machine (or prepending these steps in the CDash script)? This script could also be called with exec_program when BUILD_PRIVATE_EXTERNALS is 'on'.

I'm also happy to close this PR and just add it to the README that people should manually edit the tobuild files to deactivate those modules when building without the private externals.

I'm not in favour of abandoning tobuild. I want to retain modularity for the pods that are being built here and tobuild gives that without and ambiguity.
What about making all the atlas collection a separate repository that lives in a different repository? And for those operating Atlas (on the one machine that needs to) having an additional post-build step (after building software) of:
$ checkout_atlas_repo
$ make_atlas

authors: iamwolf mauricefallon patmarion

repo: openhumanoids/oh-distro


text:
Cancelation results for hints not handled properly

I see an exception thrown by validation that appears to be incorrectly handling results that do not include a Hint value, such as when the user cancels the Hint flow.

Looks like this is duplicate of https://github.com/openid/OpenYOLO-Android/issues/49.
Closing for now.

authors: dxslly iainmcgin

repo: openid/OpenYOLO-Android


text:
Deploy DEV subgraph to Subgraph Studio

Yesterday, The Graph launched their decentralized subgraph product, which will require GRT to query and signal on a subgraph. https://thegraph.com/docs/developer/deploy-subgraph-studio
https://thegraph.com/blog/curation-live

[ ] Deploy DEV (rinkeby) subgraph to test the new product before deploying PROD (mainnet) version
[ ] Update README.md subgraph deployment steps
[ ] Update tributedao.com subgraph deployment section

Scheduled for mainnet deployment 3rd August

repo: openlawteam/tribute-contracts


text:
test_rendering broken

make serve and load http://localhost:3000/test_rendering/
Only the first test is run:

@fredj ^^

authors: ahocevar fredj


text:
Improve docs/examples for loadingstrategy

I was looking for docs on the bbox loadingstrategy. The typedef currently has no description, so I've added a minimal one. I searched the examples for 'bbox', and it finds 3, none of which actually uses a bbox strategy :confused: So I've removed the bbox description from the ESRI examples, and changed the WFS example so that does use ol.loadingstrategy.bbox - AFAICS this continues to work with no problem, so I'm not sure why it currently uses a Tile strategy, which seems like an unnecessary complication. No doubt someone will let me know if I'm missing something ;-)

review anyone?

thanks @probins this makes sense to me.

authors: bartvde probins


text:
ImageWMS "ratio" option only works when "serverType" is set

OL 4.6.4
The "ratio" option of ImageWMS only works together with "serverType". Otherwise the ratio option is ignored.
The correct image size is also requested with serverType: 'blabla'. It doesn't work when serverType is not defined.
I recommend it should also work, even when serverType is unset. Or the documentation should be updated. Thanks.
See longer description here: https://gis.stackexchange.com/a/269950/1230

It's already mentioned in the documentation:
http://openlayers.org/en/latest/apidoc/ol.source.ImageWMS.html
For serverType:
The type of the remote WMS server: mapserver, geoserver or qgis. Only needed if hidpi is true. Default is undefined.
And because hidpi is true by default, serverType is mandatory.

It's already mentioned in the documentation
From your viewpoint as OL developer that documentation probably makes sense.

But from a pure API users point of view, that is not very clear. Where is the connection between the ratio-option and serverType? The default value of serverType is incompatible with the default value of hidpi? Why is blabla a valid input for serverType ?
I think OL can improve the documentation here. Would it be helpful that I make a suggestion? Or does the majority not share my confusion? (Could be just me being bad at reading OL documentation)
So, feel free to close the ticket or I will try to help. ;-)

I think there is some confusion here. The ratio option works fine, even without serverType set. The serverType is only required when hidpi is set to true, because requesting images with a non-standard dpi is different for the supported server types.

authors: ahocevar alfonx fredj

repo: openlayers/openlayers


text:
Check for last resort in core_group/new_from_welcome

Closes #1502
This PR just copies the logic in group::MlsGroup::new_from_welcome(...), which checks for last resort extension in keypackage, to group::CoreGroup::new_from_welcome(...).

Thanks for the PR! It looks like it solves the issue. To confirm that it does and to ensure we don't run into this sort of thing in the future, would you be so kind as to add a simple test? You can add the test to mls_group/test_mls_group.rs, where you can find inspiration on how to set up the test as well. I think it's better to have the test at the MlsGroup (rather than the CoreGroup) level, since we're likely to move all provider access to MlsGroup level eventually anyway (see #1207).

See 050d330 for the test.  Open to feedback/guidance on a more robust test procedure for this case.

See 4253a26 for the cargo fmt changes.

authors: josephlukefahr kkohbrok

repo: openmls/openmls


text:
Extract display name and description from JavaDoc

For https://github.com/PicnicSupermarket/error-prone-support/pull/925 & @Stephan202

Nice! Within Error Prone Support we currently have similar functionality using an @Description annotation, but I have pondered in the past whether indeed we should instead just look at the Javadoc. So this change SGTM!

Ah interesting! Had been looking for something like that on your end, but didn't immediately spot anything. I only see that @tech.picnic.errorprone.refaster.annotation.Description applied twice though, once in tests. I'm guessing you're considering just taking the JavaDoc there as well then?

I'm guessing you're considering just taking the JavaDoc there as well then?

Nothing decided, but at this point it seems likely: the JavaDoc seems more maintainable and easy to use, especially when considering line wrapping.

repo: openrewrite/rewrite-templating


text:
JavaTemplate doesn't support import replacing

An example failing test:
    @Test
    void replaceImport() {
        rewriteRun(
          spec -> spec.expectedCyclesThatMakeChanges(2)
            .recipe(toRecipe(() -> new JavaVisitor<>() {

                @Override
                public J visitImport(J.Import impoort, ExecutionContext executionContext) {
                    impoort = impoort.withTemplate(
                      JavaTemplate.builder(this::getCursor, "import #{}").build(),
                      impoort.getCoordinates().replace(),
                      "java.util.Stack"
                    );
                    return impoort;
                }
            }
          )),
          java(
            """
              import java.util.List;
              class A {
              }
                """,
            """
              import java.util.Stack;
              class A {
              }
              """
          )
        );
    }

Could hypothetically be added, but for now closing as we would suggest using higher level add/remove dependency encapsulations.

Thanks a lot for opening this issue and looking into it!
I understand that there is a better working solution, but the fact that the code above is a silent no-op makes the developer's live complex. I would rather raise an exception if possible.
Anyway, for the record (if someone googles here) what ended up working for me was to modify the visitImport to:
    maybeAddImport(newTypeName, false);
    RemoveImport<ExecutionContext> remove = new RemoveImport<>(currentTypeName, true);
    if (!getAfterVisit().contains(remove)) {
        doAfterVisit(remove);
    }

authors: jandsu jkschneider kunli2

repo: openrewrite/rewrite