MassageToLongError

unable login onedrive
how to make Massage shorter？
maybe it can fix this problem

An error happen, and the trace back is too long.
Please share the full log. You can extract the log file from the container.

here is log

Serving Flask app 'auth_server'

Debug mode: off

WARNING: This is a development server. Do not use it in a production deployment.  Either identify and stop that program, or start the server with a different port.
<IP_ADDRESS> - - [17/Nov/2024 20:31:27] "GET /auth?get=True HTTP/1.1" 200 -
2024-11-17 20:29:17.225427
Logining into Telegram...
2024-11-17 20:29:29.079893
Please visit https://<IP_ADDRESS>:8337 to input your code to login to Telegram.
Signed in successfully as Zack; remember to not break the ToS or you will risk an account ban!
2024-11-17 20:29:52.221406
Login to Telegram successful!
2024-11-17 20:29:52.737989
Here are the authorization url of OneDrive:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00285d96-f3f2-459e-af0a-31f0c9775360&response_type=code&redirect_uri=https%3A%2F%2F<IP_ADDRESS>%3A8337%2Fauth&scope=offline_access+Files.ReadWrite+User.Read
2024-11-17 20:30:11.828256
Traceback (most recent call last):
File "/telegram-onedrive/modules/utils.py", line 134, in wrapper
if not await tg_client.get_me():

File "/usr/local/lib/python3.8/site-packages/telethon/client/users.py", line 164, in get_me
me = (await self(

File "/usr/local/lib/python3.8/site-packages/telethon/client/users.py", line 30, in call
return await self._call(self._sender, request, ordered=ordered)

File "/usr/local/lib/python3.8/site-packages/telethon/client/users.py", line 67, in _call
future = sender.send(request, ordered=ordered)

File "/usr/local/lib/python3.8/site-packages/telethon/network/mtprotosender.py", line 179, in send
raise ConnectionError('Cannot send requests while disconnected')

ConnectionError: Cannot send requests while disconnected
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/telegram-onedrive/modules/onedrive/session.py", line 128, in load_session
record = cls.db.get_current_user()

File "/telegram-onedrive/modules/onedrive/database.py", line 139, in get_current_user
self.execute(command)

File "/telegram-onedrive/modules/onedrive/database.py", line 327, in execute
self.cursor.execute(command, params)

sqlite3.OperationalError: no such table: current_user
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/telegram-onedrive/modules/handlers/auth.py", line 147, in auth_handler
onedrive.load_session()

File "/telegram-onedrive/modules/onedrive/init.py", line 68, in load_session
self.client.auth_provider.load_session()

File "/usr/local/lib/python3.8/site-packages/onedrivesdk/auth_provider.py", line 323, in load_session
self._session = self._session_type.load_session(**load_session_kwargs)

File "/telegram-onedrive/modules/onedrive/session.py", line 142, in load_session
raise NoSessionExecption("No session found.")

modules.onedrive.session.NoSessionExecption: No session found.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 196, in _new_conn
sock = connection.create_connection(

File "/usr/local/lib/python3.8/site-packages/urllib3/util/connection.py", line 60, in create_connection
for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):

File "/usr/local/lib/python3.8/socket.py", line 918, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):

socket.gaierror: [Errno -3] Try again
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 789, in urlopen
response = self._make_request(

File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 490, in _make_request
raise new_e

File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 466, in _make_request
self._validate_conn(conn)

File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 1095, in _validate_conn
conn.connect()

File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 615, in connect
self.sock = sock = self._new_conn()

File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 203, in _new_conn
raise NameResolutionError(self.host, self, e) from e

urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0x7f25cb40ed00>: Failed to resolve 'login.microsoftonline.com' ([Errno -3] Try again)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(

File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 843, in urlopen
retries = retries.increment(

File "/usr/local/lib/python3.8/site-packages/urllib3/util/retry.py", line 519, in increment
raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /common/oauth2/v2.0/token (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f25cb40ed00>: Failed to resolve 'login.microsoftonline.com' ([Errno -3] Try again)"))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/telegram-onedrive/modules/handlers/auth.py", line 100, in od_auth
onedrive.auth(code)

File "/telegram-onedrive/modules/onedrive/init.py", line 54, in auth
self.client.auth_provider.authenticate(

File "/telegram-onedrive/modules/onedrive/_rewrite.py", line 31, in authenticate
response = self._http_provider.send(

File "/usr/local/lib/python3.8/site-packages/onedrivesdk/http_provider.py", line 69, in send
response = session.send(prepped)

File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)

File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 700, in send
raise ConnectionError(e, request=request)

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /common/oauth2/v2.0/token (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f25cb40ed00>: Failed to resolve 'login.microsoftonline.com' ([Errno -3] Try again)"))
2024-11-17 20:31:25.260269
Logining into Telegram...
2024-11-17 20:31:26.374376
Login to Telegram successful!
2024-11-17 20:31:26.879749
Here are the authorization url of OneDrive:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00285d96-f3f2-459e-af0a-31f0c9775360&response_type=code&redirect_uri=https%3A%2F%2F<IP_ADDRESS>%3A8337%2Fauth&scope=offline_access+Files.ReadWrite+User.Read
Unhandled exception on wrapper
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/telethon/client/updates.py", line 570, in _dispatch_update
await callback(event)

File "/telegram-onedrive/modules/utils.py", line 126, in wrapper
return await func(event, *args, **kwargs)

File "/telegram-onedrive/modules/utils.py", line 138, in wrapper
return await func(event, *args, **kwargs)

File "/telegram-onedrive/modules/utils.py", line 146, in wrapper
await res_not_login(event, od_not_login_res)

File "/telegram-onedrive/modules/utils.py", line 156, in res_not_login
await auth_handler(event, propagate=True)

File "/telegram-onedrive/modules/utils.py", line 126, in wrapper
return await func(event, *args, **kwargs)

File "/telegram-onedrive/modules/handlers/auth.py", line 150, in auth_handler
await od_auth(conv)

File "/telegram-onedrive/modules/handlers/auth.py", line 103, in od_auth
await conv.send_message(logger(e))

File "/usr/local/lib/python3.8/site-packages/telethon/tl/custom/conversation.py", line 88, in send_message
sent = await self._client.send_message(

File "/usr/local/lib/python3.8/site-packages/telethon/client/messages.py", line 905, in send_message
result = await self(request)

File "/usr/local/lib/python3.8/site-packages/telethon/client/users.py", line 30, in call
return await self._call(self._sender, request, ordered=ordered)

File "/usr/local/lib/python3.8/site-packages/telethon/client/users.py", line 87, in _call
result = await future

telethon.errors.rpcerrorlist.MessageTooLongError: Message was too long (caused by SendMessageRequest)
<IP_ADDRESS> - - [17/Nov/2024 20:31:37] "GET /auth?code=1.AVYA_6V_nx0nnkGNu1Kemhh4hJZdKADy855Frwox8Ml3U2CfAK5WAA.AgABBAIAAADW6jl31mB3T7ugrWTT8pFeAwDs_wUA9P-U8Fy3FvFb8wJx9ldYfCNktD0HZCQtnIrM-9PTAa7n91pMwLs4q0EACdS0FkQKtTD3EYuZVCWlXM_2A-K-CCY425DOUkMpXhmaBThN7kOuELNvJ0BJ54S8qUhS6H6-BOvPaeu6X68CpdtvIS59YR8iBm6-3g0_owL7tSi9lIdpEibv4_lgIuki5r24Jf20ysAE-Jw-LSBRQmiaTZJapR0HZH14TPVMuSsnxhHuzZ3Swv6hlFmGI4zfwM_8_Kv1TFwiCqhp02ZPYk1uxVoQed6y50nr31E-wyfOFFOrDKQBLqLfiDxhk0iGgZIswbrY4nCl206QwbHNy_qmVekHFUny2hYr4O2PkvcXrJddOog73JjV_TUr5LsJ4MvlJD6BKvpNUg1TcUMG3IwMAWQr5imKFfc3Gofdre9zmRNNI3LjiitbSI-dfnctVbR4ayORHCC34I1bd48vK15shQ_Glws36Lv7P6TC43IMhUc_sUSN6ycwvqsK0RVX5ZWK8ixC7deX_lA55dBr3dOnOEShPZLJTmSqmoGDydnH1js4H8c-RuqbNB5RBUj35q75xiGYIRhlBaFg-a8T1aYseH3SCd0YKYXXu4G6SpRiZvl_PUJwWCO68DPJ5ZgFTxweatbjMJCc1ePbteVG8JJLyEKaYVcJ5-vqyIDd3EOhGlypsmzLhgpo9j7NvgFIkJEZqOnmv7Dc-779FrA4xc3ID5ZEQuEy9NwJj2wpayFlb4unYT5ezh8te4trCyQOpKrzDdc2nXqMNz8DQHaMgu0wRW6Mtnb0G1szADk6ZH7O2btjCto2dDennouAz1gYZWyX5hPSJycrpcOrxumrwZ0XUmqyZQtn9qwZexW6he3dTLymQ8ZjYE96oLQEA5QoWXAKvgN4S5uY8N38IjS0P_vLcI7f&session_state=1f570a5e-d669-4732-a929-fbff9c470d4e HTTP/1.1" 200 -

I don't have idea.

Port 8080 is in use by another program. Either identify and stop that program, or start the server with a different port.

Are you using the network host mode?

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /common/oauth2/v2.0/token (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f25cb40ed00>: Failed to resolve 'login.microsoftonline.com' ([Errno -3] Try again)"))

Maybe network problem.

I just tried, no any problem.
Or maybe you can share your docker-compose.yml. Hide some of sensitive information but at least show the head and tail.

version: '3'
services:
telegram-onedrive:
container_name: telegram-onedrive
image: hlf01/telegram-onedrive
restart: always
ports:
  - 8337:8080

environment:
  - server_uri=https://<IP_ADDRESS>:8337
  - reverse_proxy=false
  - tg_bot_token=791XXXXXXXX46:AAHaXXXXXXXXXXXXXXXXXXXexCA
  - tg_api_id=28XXXXXXXX5
  - tg_api_hash=7591XXXXXXXX2726c
  - tg_user_phone=+XXXXXXXX
  - tg_user_name=zXXXXXXXX4
  - od_client_id=00XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX775360
  - od_client_secret=Ry.XXXXXXXXncy6
  - remote_root_path=/Videos/from-telegram
  - delete_flag=false
command: python main.py

od_client_id  should be from

od_client_secret should be from

At least the pattern of od_client_secret looks not correct. It should be like xxxxx~x.xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxx

od_client_id  should be from
od_client_secret should be from
At least the pattern of od_client_secret looks not correct. It should be like xxxxx~x.xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxx

my od_client_secret is not like xxxxx~x.xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxx
is like xx.xx~xxxxxxxxxxxxxxxxxxxxxxxxxxxx but im sure od_client_secret,od_client_id is correct
/auth url can login OneDrive account and show Authorization Successful!

i tried many time recreate container,always same problem

It might be your account's problem, but I'm not sure.
Since it's onedrive side problem, you can create a new application, add redirect uri https://dev.hlf01.site/auth, and give me the client id and secret value, so that I can debug.

sure,there you go
client id:8a8de4ad-6ccf-4952-bff5-7bfc8c52a0cf
secret value:fCZ8Q~kP0JiWIR~l65K_MBt.j6PahHU6xScTqaRS

client id: 8a8de4ad-6ccf-4952-bff5-7bfc8c52a0cf
secret value: fCZ8Q~kP0JiWIR~l65K_MBt.j6PahHU6xScTqaRS

I tried, no problem.
Did you tried this application as well?

damnnn! man it works
still don't know why the before application didn't work bother me so much
after this i recreated another application still works
anyways appreciate your help what a nice project
hope i didn't bother you

That's great.


Rust: add slots support

Adds Rust support for multiple slots.
Summary
The proposed interface is

if max_connections or min_connections is not defined we're defaulting for every value to 1
if max_connections and min_connections are evaluated to 1 nothing changes to the current interface
if max_connections and min_connections are not one, we define a vec/array (depending if the size is known at compile time) of ClientPublishers. The used slot is exposed to the user though the context - and use the same instance of the ClientSubscriber for the entire slots

Examples
# in the manifest.yaml
# ...
requires
  example_interface:
    interface: example
    min_connections: 0
    max_connections: 10

// In the main.rs
include!(concat!(env!("OUT_DIR"), "/generated.rs"));
use generated::{ExampleClientSubscriber, Context};

struct MyModule;

impl ExampleClientSubscriber for MyModule {
    fn on_max_current(&self, context: &Context, value: f64) {
       println!("Received a connection from the slot {}.. replying to it by using something", context.index);
       context.publisher.example_interface_slots[context.index].uses_something(format!("value {value}"));
    }
}

For disambiguating the slots at the ClientSubscriber we change the interface for multiple slots (if these is only one stot, nothing changes) for the Module to be a FnMut similar to the core::array::from_fn in the Rusts standard library. It allows the user to decide if they want to use different instances of ClientPublisher or the same for every slot.
struct MyModuleWithSomeData{
   index: usize,
};

impl ExampleClientSubscriber for MyModuleWithSomeData {
    fn on_max_current(&self, context: &Context, value: f64) {
         assert_eq!(self.index, context.index);
    }
}

// ...

fn main() {
      let my_module = Arc::new(MyModule);
      let _module = Module::new(
            |_index: usize| {
              // Below we just return the same instance for every slot.
              // We could also return Arc::new(MyModuleWithSomeData{index: _index}) here if
              // we want every slot to be handled by a dedicated instance
               my_module.clone()
            }
      );
}

Addresses https://github.com/EVerest/everest-framework/issues/174

@SirVer can you check it

Will do early this week.


Rename Subscription Client

With the redesign of the Notification Protocol, "Subscription Client" is no longer appropriate nomenclature. For, our client might connect to a pre-existing notification channel without establishing a subscription at all.
I am not sure what to call it other than "Client". Perhaps "Discovery Client" might work too.

Open to another term that better matches the current role and functionality of SubscriptionClient, i.e., one that can use a notification channel in addition to going through the subscription flow. SubscriptionClient shouldn't further be split into separate products - I'm aware that's not what you are proposing here.
It is reasonable and practical to have a product that should be able to go through subscription as well as using a notification channel. From that perspective, I think the term SubscriptionClient is okay, and leave it at that. I don't think for example DiscoveryClient is adequate because that doesn't seem to quite capture the functionality besides the discovery step.
NotificationClient may be a broader term with some concern that it may add some confusion alongside NotificationSender and NotificationReceiver.
ChannelClient feels a bit strange.

I also do not want to split the product and do not like NotificationClient for the same reason as you. But if you find ChannelClient strange, then SubscriptionClient is equally strange.
Thinking about it a bit more, the best terms I can come up with (for now) are:

Initialization Client
Connection Client
Setup Client

Hopefully, the group will come up with a better suggestion!

I think that the Subscription Client's main job is to establish the subscription / notification channel for whomever, potentially itself, to receive notifications.
The fact, that the client can also pick up an existing notification channel (for whomever to receive notifications, potentially itself) without going through a new setup-phase does not change it in term of functionality. The setup is simply omitted.
So I find the naming still to be appropriate.

(Notification) Manager Client may be another term that could work. I still think Subscription Client fits.
I'd like to know what @elf-pavlik @acoburn thinks about this proposal or have other thoughts.

sequenceDiagram
  participant Discovery Client
  participant Resource Server

  Discovery Client ->> Resource Server: HEAD Resource (topic)
  Resource Server ->> Discovery Client: HTTP Link rel="describedby"
  Discovery Client ->> Resource Server: GET Description Resource
  Resource Server ->> Discovery Client: Description Resource

sequenceDiagram
  participant Subscription Client
  participant Subscription Server

  Subscription Client ->> Subscription Server: Subscription Request
  Subscription Server ->> Subscription Client: Subscription Response (with Notification Channel)


[benchmark] Fix: Set.*.Box use identity everywhere

Consistently apply the identity in Box variants of benchmarks for subtracting and intersection to guard against future sufficiently smart compiler that could hoist the constant expression out of the loop. This pattern is used in all other variants and was explained by @lorentey in https://github.com/apple/swift/pull/18928#discussion_r212722518.

@swift-ci please benchmark

Performance: -O

TEST
OLD
NEW
DELTA
RATIO

Regression

Set.subtracting.Empty.Box
9
30
+233.3%
0.30x

Set.subtracting.Box.Empty
24
47
+95.8%
0.51x

Improvement

ObjectiveCBridgeStubToArrayOfNSString2
2720
2520
-7.4%
1.08x (?)

Performance: -Osize

TEST
OLD
NEW
DELTA
RATIO

Regression

Set.subtracting.Empty.Box
9
29
+222.2%
0.31x

Set.subtracting.Box.Empty
24
47
+95.8%
0.51x

Performance: -Onone

TEST
OLD
NEW
DELTA
RATIO

Regression

Set.subtracting.Empty.Box
68
81
+19.1%
0.84x (?)

Set.subtracting.Box.Empty
100
112
+12.0%
0.89x (?)

How to read the data
The tables contain differences in performance which are larger than 8% and
differences in code size which are larger than 1%.
If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.
Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini8,1
  Processor Name: Intel Core i7
  Processor Speed: 3.2 GHz
  Number of Processors: 1
  Total Number of Cores: 6
  L2 Cache (per Core): 256 KB
  L3 Cache: 12 MB
  Memory: 64 GB

OK, this matches my local results, because the negligible performance changes in SetIntersectionBox0, SetIntersectionBox25, SetSubtractingBox0, SetSubtractingBox25 flew under the radar.
The I'm pretty sure there will be legitimate performance changes in Set.subtracting.Empty.Box and Set.subtracting.Box.Empty when #21300 lands, so I suggest we land this fix at the same time and avoid the need to come up with new name for these benchmarks. What do you think @eeckstein?

This fix increases the runtime and because legacyFactor is currently an integer multiplier, it can only inflate the reported time and cannot be used to work around this as is.
I've triggered the CI benchmark in #21300 to be sure, but without fixing this, the runtime dips too low in these two cases (Set.subtracting.Empty.Box, Set.subtracting.Box.Empty) and we would have to adjust the multipliers anyway.

Erm, I misspoke, those two cases regress according to benchmark report (0.15x & 0.29x), but these are marginal cases with 1000x workload multipliers — so this means subtracting the empty set takes 152 ns and 158 ns.

With this fix, these will be even a bit higher, because the loop will have to deal with identity, but I really wouldn't stress that case at all. As I said, this fix as well as #21300 change the runtime of those two test (both increase), so if we land around the same time, we can pretend this minor regression is all caused by #21300 and we would not need to burn the good benchmark names just to fix this identity omission. Would you agree, @eeckstein?

@swift-ci please smoke test

@eeckstein @lorentey Assuming #21300 is ready to be merged, I propose we coordinate the landing of these 3 PRs in following order:

#24156 [benchmark] Variants for Set Sequence Methods
#24570 [benchmark] Fix: Set.*.Box use identity everywhere (this one)
#21300 [stdlib] Optimize some Set operations

Can one of the admins verify this patch?

Please update the base branch to main by Oct 5th otherwise the pull request will be closed automatically.

How to change the base branch: (Link)
More detail about the branch update: (Link)


pushing to state array overwriting previous value

if (this.user2tasks(task.app.creator).exists) {
  this.user2tasks(task.app.creator).value.push(task.app);
} else {
  const newWhitelist: AppID[] = [task.app];
  this.user2tasks(task.app.creator).value = newWhitelist;
}

Reported by Ludo on discord

does not work somehow as when i try to add the second value to the list it replaces the first value

So far I can't seem to reproduce. Will wait for further feedback from Ludo


feat: Emoji Integration into the quotes

Is your feature request related to a problem? Please describe.
Currently, no support for emojis
Describe the solution you'd like
Provide support for emojis in the github readme quotes on the card.

Hi @shravan20, could you please provide some additional information? It seems that you can already use emojis in quotes (screenshot). What's the expected behavior?

Please assign  this issue to me

could you please provide some additional information? It seems that you can already use emojis in quotes (screenshot). What's the expected behavior?

@GRenziITDM @Adidem23 : Want to populate emoji in existing quotes itself, as an optional bit, filter string without emoji by deafult and includes, only if enabled via query strings.

Yeah I have populated strings with emoji which were there in json file . Now you can filter strings without emoji and populate them with emojis

@Adidem23 is the issue resolved?

yes


Run basic template tests on X-Plat

Fixes #9441.

I'm making this not a draft PR, but only so that the checks run, please still don't review, it's not ready.

I'm making this not a draft PR, but only so that the checks run

My understanding is that not running checks on draft PRs was a bug that is now fixed, FYI.

While looking at a separate issue I found that all of our tests actually already run on Linux and Mac? That's weird to me considering it's specifically disabled (but apparently without reason, because they're running and passing). I'm going to do some more research here but this PR will probably get closed.


Disable document_symbols in Neo-tree

When we enable document_symbols, the Neo-tree window "jumps" around when opening files and when the Neo-tree window has a lot of expanded directories and files.
I've created a bug in upstream with a config.lua that reproduces the problem:
https://github.com/nvim-neo-tree/neo-tree.nvim/issues/1025

I'd rather wait til this bug is fixed upstream.
You can of course make this adjustment in your own config


bucket listing execution time for top level objects and pseudo directories

measure bucket listing execution time for top level objects and pseudo directories

ordered bucket listing with objects at top level
ordered bucket listing with objects in pseudo directories
ordered bucket listing with pseudo directories and no objects

Description
Please include Automation development guidelines. Source of Test case - New Feature/Regression Test/Close loop of customer BZs
Checklist:

[x] Create a test case in Polarion reviewed and approved.
[x] Create a design/automation approach doc. Optional for tests with similar tests already automated.
[x] Review the automation design
[x] Implement the test script and perform test runs
[x] Submit PR for code review and approve
[x] Update Polarin Test with Automation script details and update automation fields
[x] If automation is part of Close loop, update BZ flag qe-test_coverage “+” and link Polarion test

@mkasturi18 can you update the checklist activities. i.e just wanted to know if the activities in the checklist are completed. if completed, mark the checklist.

Completed all the activities in the checklist and marked complete.


status=255

@evguenig if you have a bug to report please review https://github.com/rancher/k3s/blob/master/.github/ISSUE_TEMPLATE/bug_report.md and provide us with some of the information asked for there.

@evguenig - we haven't heard back so I'm going to close out this issue. I noticed it looked like I edited the original issue description. I'm now wondering if there was a glitch or mistake by me - maybe I accidently deleted your original post? If so, my most sincere apologies I am usually very careful. Please let us know if we can assist you. Happy to reopen this issue.

Sorry for late reply - your messages got in spam bin.
Yes - please close the ticket. It was false alarm - I installed k3s on system where minikube was running, after cleaning
minikube everything runs as designed.


[Support] Connection established but can't access local network or internet (followed FAQ)

In raising this issue, I confirm the following:
{please fill the checkboxes, e.g: [X]}

[X] I have read and understood the contributors guide.
[X] The issue I am reporting can be replicated.
[X] The issue I am reporting can be is directly related to the pivpn installer script.
[X] The issue I am reporting isn't a duplicate (see FAQs, closed issues, and open issues).

Issue
I've been able to install pivpn to an fresh install of Raspberry Pi OS without any problems on the install. I have copied the config files to my Macbook and am able to connect, but do not seem to have any access to the server's network or the internet once connected. If I switch to a cellular network through my phone's hotspot I'm able to connect and access the network no problem. I've followed the FAQ and surprisingly am able to see packets from my macbook come into the raspberry pi but despite this am unable to access local resources or the internet through the connection.
Have you searched for similar issues and solutions?
yes, after several hours and several reinstalls I'm not able to remedy the problem.

Console output of      pivpn debug
pi@raspberrypi:~ $ pivpn -d
::: Generating Debug Output
::::            PiVPN debug              ::::
=============================================
::::            Latest commit            ::::
commit b2b93de8dc30e5a6b3611c8f803a89eca0eb80db
Author: 4s3ti<EMAIL_ADDRESS>Date:   Fri Feb 5 00:23:04 2021 +0100

    Update Dead and wrong links

    README.md: Changed dead link to old issue template
    CONTRIBUTING.md: Changed link poiting to blank issue leading users to
    not see the issue template when opening issues
=============================================
::::        Installation settings        ::::
PLAT=Raspbian
OSCN=buster
USING_UFW=0
IPv4dev=eth0
dhcpReserv=1
IPv4addr=<IP_ADDRESS>/24
IPv4gw=<IP_ADDRESS>
install_user=pi
install_home=/home/pi
VPN=wireguard
pivpnPORT=1194
pivpnDNS1=<IP_ADDRESS>
pivpnDNS2=<IP_ADDRESS>
pivpnHOST=REDACTED
INPUT_CHAIN_EDITED=0
FORWARD_CHAIN_EDITED=0
pivpnPROTO=udp
pivpnDEV=wg0
pivpnNET=<IP_ADDRESS>
subnetClass=24
ALLOWED_IPS="<IP_ADDRESS>/0, ::0/0"
UNATTUPG=1
INSTALLED_PACKAGES=()
=============================================
::::  Server configuration shown below   ::::
[Interface]
PrivateKey = server_priv
Address = <IP_ADDRESS>/24
ListenPort = 1194
### begin BPMBP ###
[Peer]
PublicKey = BPMBP_pub
PresharedKey = BPMBP_psk
AllowedIPs = <IP_ADDRESS>/32
### end BPMBP ###
=============================================
::::  Client configuration shown below   ::::
[Interface]
PrivateKey = BPMBP_priv
Address = <IP_ADDRESS>/24
DNS = <IP_ADDRESS>, <IP_ADDRESS>

[Peer]
PublicKey = server_pub
PresharedKey = BPMBP_psk
Endpoint = REDACTED:1194
AllowedIPs = <IP_ADDRESS>/0, ::0/0
=============================================
::::    Recursive list of files in       ::::
::::    /etc/wireguard shown below       ::::
/etc/wireguard:
configs
keys
wg0.conf

/etc/wireguard/configs:
BPMBP.conf
clients.txt

/etc/wireguard/keys:
BPMBP_priv
BPMBP_psk
BPMBP_pub
server_priv
server_pub
=============================================
::::            Self check               ::::
:: [OK] IP forwarding is enabled
:: [OK] Iptables MASQUERADE rule set
:: [OK] WireGuard is running
:: [OK] WireGuard is enabled (it will automatically start on reboot)
:: [OK] WireGuard is listening on port 1194/udp
=============================================
:::: Having trouble connecting? Take a look at the FAQ:
:::: https://github.com/pivpn/pivpn/wiki/FAQ
=============================================
:::: WARNING: This script should have automatically masked sensitive       ::::
:::: information, however, still make sure that PrivateKey, PublicKey      ::::
:::: and PresharedKey are masked before reporting an issue. An example key ::::
:::: that you should NOT see in this log looks like this:                  ::::
:::: YIAoJVsdIeyvXfGGDDadHh6AxsMRymZTnnzZoAb9cxRe                          ::::
=============================================
::::            Debug complete           ::::
:::
::: Debug output completed above.
::: Copy saved to /tmp/debug.log
:::

Have you taken any steps towards solving your issue?
yes, I've followed the FAQ and a few other issues that seemed to have some relevance. I've reinstalled several times.

I've run sudo systemctl restart wg-quick@wg0 and then lsmod | grep wireguard
pi@raspberrypi:~ $ lsmod | grep wireguard
wireguard              73728  0
curve25519_neon        28672  1 wireguard
libcurve25519_generic    24576  2 curve25519_neon,wireguard
libchacha20poly1305    16384  1 wireguard
ip6_udp_tunnel         16384  1 wireguard
udp_tunnel             24576  1 wireguard
libblake2s             16384  1 wireguard
ipv6                  495616  29 wireguard

Ran cat /etc/pivpn/wireguard/setupVars.conf and compared my network interface, the ipv4addr, apv4gw, pivpnpronto, pivpnport and pivpnhost, which all seem to be in order
pi@raspberrypi:~ $ cat /etc/pivpn/wireguard/setupVars.conf
PLAT=Raspbian
OSCN=buster
USING_UFW=0
IPv4dev=eth0
dhcpReserv=1
IPv4addr=<IP_ADDRESS>/24
IPv4gw=<IP_ADDRESS>
install_user=pi
install_home=/home/pi
VPN=wireguard
pivpnPORT=1194
pivpnDNS1=<IP_ADDRESS>
pivpnDNS2=<IP_ADDRESS>
pivpnHOST=REDACTED
INPUT_CHAIN_EDITED=0
FORWARD_CHAIN_EDITED=0
pivpnPROTO=udp
pivpnDEV=wg0
pivpnNET=<IP_ADDRESS>
subnetClass=24
ALLOWED_IPS="<IP_ADDRESS>/0, ::0/0"
UNATTUPG=1
INSTALLED_PACKAGES=()

Checked the packet capture using the command tcpdump -n -i eth0 port 1194 -v as superuser which shows:
pi@raspberrypi:~ $ sudo -s
root@raspberrypi:/home/pi# tcpdump -n -i eth0 port 1194 -v
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:50:14.089029 IP (tos 0x68, ttl 57, id 44453, offset 0, flags [none], proto UDP (17), length 176)
    REDACTED.62834 > <IP_ADDRESS>.1194: UDP, length 148
01:50:14.093091 IP (tos 0x88, ttl 64, id 19400, offset 0, flags [none], proto UDP (17), length 120)
    <IP_ADDRESS>.1194 > REDACTED.62834: UDP, length 92
01:50:29.371252 IP (tos 0x0, ttl 57, id 34501, offset 0, flags [none], proto UDP (17), length 176)
    REDACTED.62834 > <IP_ADDRESS>.1194: UDP, length 148
01:50:29.375036 IP (tos 0x88, ttl 64, id 20529, offset 0, flags [none], proto UDP (17), length 120)
    <IP_ADDRESS>.1194 > REDACTED.62834: UDP, length 92
01:50:44.846438 IP (tos 0x0, ttl 57, id 13962, offset 0, flags [none], proto UDP (17), length 176)
    REDACTED.62834 > <IP_ADDRESS>.1194: UDP, length 148
01:50:44.850171 IP (tos 0x88, ttl 64, id 20767, offset 0, flags [none], proto UDP (17), length 120)
    <IP_ADDRESS>.1194 > REDACTED.62834: UDP, length 92

At that point the WireGuard GUI client indicates that the interface is "active", with a green circle
I've taken a look at IP Tables, but to be honest am not sure what to make of it except it looks the same as the one in the issue I was referencing and that didn't end up being their issue. Output of sudo iptales -t nat -S
pi@raspberrypi:~ $ sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
-A POSTROUTING -s <IP_ADDRESS>/24 -o eth0 -m comment --comment wireguard-nat-rule -j MASQUERADE

I also tried looking at the firewall using sudo ufw status verbose but get "ufw: command not found" which I suppose is a result of me using the Raspberry Pi Operating system and not Ubuntu.
That's about as far as I've gotten. I tried pinging my pi's network from my macbook but didn't get a response.
Any help appreciated.
Thanks!

I have copied the config files to my Macbook and am able to connect, but do not seem to have any access to the server's network or the internet once connected.

Is your Macbook in the same network as the Raspberry Pi?

@orazioedoardo nope, it isn't. My Pi is at home and I'm trying this from work on the other side of the city.

If I switch to a cellular network through my phone's hotspot I'm able to connect and access the network no problem.
Works on your phone, and the debug log is ok, as well as iptables. So I'd say it's an issue with the MacBook?

Do you see Rx/Tx bytes increasing on the wireguard gui on Mac? Does pivpn -c show the last seen on the BPMBP line?
By the way, I see that you have one config only. Please know that you need one config for each client. If you connect with your phone you cannot use the same config at the same time on your Mac.

Sounds like a subnet conflict ..

Do you see Rx/Tx bytes increasing on the wireguard gui on Mac?

It sits in the bytes range, incrementing every 15 seconds when it renews the handshake.

Does pivpn -c show the last seen on the BPMBP line?

Not at work today, I'll check on Monday and report back

By the way, I see that you have one config only. Please know that you need one config for each client. If you connect with your phone you cannot use the same config at the same time on your Mac.

Thanks, before I reinstalled most recently I had a separate profile for my phone to use. When I use wireguard on my laptop through my phone's hotspot that connects without issue.

Sounds like a subnet conflict ..

I was wondering about this too. The work network I was on has a subnet of 10...*/24 (can't remember exactly at the moment but it does not overlap in the subsequent 3 sets of numbers with the <IP_ADDRESS>/24 piVPN subnet). I had thought the subnet mask of /24 meant that they would be different subnets, but I can try changing the piVPN subnet when I get back to work on Monday.
The other part I was confused about was the [peer] section of the server config specifies an IP of <IP_ADDRESS>/32, but the client config specifies an IP of <IP_ADDRESS>/24. The configuration file specifies a subnet of 24. These are all the defaults so presumably they're set appropriately, but it seemed odd that the server config would specify a different subnet class than the installation settings and client settings.

The other part I was confused about was the [peer] section of the server config specifies an IP of <IP_ADDRESS>/32, but the client config specifies an IP of <IP_ADDRESS>/24. The installation settings file specifies a subnet of 24. These are all the defaults so presumably they're set appropriately, but it seemed odd that the server config would specify a different subnet class than the installation settings and client settings.

Address in the [Interface] section means a single IP address with its netmask, while AllowedIPs in the [Peer] section specifies a group of ip addresses that the peer is allowed to be inside the tunnel, /32 is a single IP address.

My work subnet, in case someone can see an issue with it that I don't.

If you set --verb 4 in your client config file and then read your log file from the point of connection over the two various connections you use, any errors will be shown there.

Thanks, before I reinstalled most recently I had a separate profile for my phone to use. When I use wireguard on my laptop through my phone's hotspot that connects without issue.

Any chance your work network tries to block WireGuard?

And part of the log from the client side when connecting from my work network.
2021-02-10 14:11:56.309 [NET] peer(EcMs…AUl8) - Sending handshake initiation
2021-02-10 14:11:56.310 [NET] peer(EcMs…AUl8) - Awaiting keypair
2021-02-10 14:11:56.405 [NET] peer(EcMs…AUl8) - Received handshake response
2021-02-10 14:11:56.406 [NET] peer(EcMs…AUl8) - Obtained awaited keypair
2021-02-10 14:11:59.424 [NET] Interface set up
2021-02-10 14:12:00.739 [APP] Status update notification timeout for tunnel 'bpmbp'. Tunnel status is now 'connected'.
2021-02-10 14:12:11.572 [NET] peer(EcMs…AUl8) - Retrying handshake because we stopped hearing back after 15 seconds
2021-02-10 14:12:11.572 [NET] peer(EcMs…AUl8) - Sending handshake initiation
2021-02-10 14:12:11.596 [NET] peer(EcMs…AUl8) - Received handshake response
2021-02-10 14:12:11.597 [NET] peer(EcMs…AUl8) - Sending keepalive packet
2021-02-10 14:12:26.794 [NET] peer(EcMs…AUl8) - Retrying handshake because we stopped hearing back after 15 seconds
2021-02-10 14:12:26.794 [NET] peer(EcMs…AUl8) - Sending handshake initiation
2021-02-10 14:12:26.816 [NET] peer(EcMs…AUl8) - Received handshake response
2021-02-10 14:12:26.817 [NET] peer(EcMs…AUl8) - Sending keepalive packet
2021-02-10 14:12:42.554 [NET] peer(EcMs…AUl8) - Retrying handshake because we stopped hearing back after 15 seconds

Also some additional config from my laptop after running ifconfig
bridge0 (14):
  flags         UP BROADCAST NOTRAILERS RUNNING SIMPLEX MULTICAST
  mtu           1500

en0 (6):
  inet address  <IP_ADDRESS>
  netmask       <IP_ADDRESS>
  broadcast     <IP_ADDRESS>
  flags         UP BROADCAST NOTRAILERS RUNNING SIMPLEX MULTICAST
  mtu           1500

utun4 (19):
  inet address  <IP_ADDRESS>
  netmask       <IP_ADDRESS>
  peer address  <IP_ADDRESS>
  flags         UP POINTOPOINT RUNNING MULTICAST
  mtu           1420

Any chance your work network tries to block WireGuard?

If that were the case, wouldn't I not be able to connect at all? I had previously setup openVPN on a DDWRT router and it worked. WireGuard had gotten enough good reviews that when I replaced my router I thought I'd give it a shot. Perhaps I'll reinstall using OpenVPN and see if it is still doing the same thing. I suppose if OpenVPN works and Wireguard doesn't it may be something in the way the network handles UDP packets vs TCP packets?

It would be ineresting to see the routing table of the MAC once connected to the VPN.

Ok, here's what I've got:
routingTablesCellVPN.txt
routingTablesWiFiVPN.txt
routingTablesCellNoVPN.txt
routingTablesWiFiNoVPN.txt
I've stared at them for a couple hours now and understand a whole lot more about routes, but unfortunately even fumbling adding a direct entry to my piVPN (<IP_ADDRESS>  route add -net <IP_ADDRESS> -link 19 -interface utun4) or randomly deleting some of the en0 entries I couldn't get things to work.
The tables with VPN in the name are those where wireguard is connected. CellVPN is a functioning VPN connection, WiFiVPN is the connection that I would like to work, but doesn't. For reference I've included the baseline routing tables without using VPN for both Cell and Wifi.

hi, can you give screenshot of ip addr ? last time i have problem like this, then i see that dhcpd is also on when up the wireguard by wg-quick. this because dhcp also use <IP_ADDRESS>/8 on wg0 to enable dhcp feature. i also install pivpn on server.

I was setting up PiVPN today and had the exact same problem. It was connected, but no internet available. When I ran the script, I noticed there were some errors related with iptables, maybe it's related to that?

@jimprince WiFiVPN ha no default route through en0 as CellVPN. What if you try to remove ::0/0 from the client config? (This may cause an IPv6 leak if your work network supports IPv6).

@jimprince I ran pivpn -d and it confirmed my suspicions. It was a problem with iptables, and it prompted me to fix those rules. It's working now.

@jimprince WiFiVPN ha no default route through en0 as CellVPN. What if you try to remove ::0/0 from the client config? (This may cause an IPv6 leak if your work network supports IPv6).

Interesting thought, I had only looked at the Internet tables and didn't realize that default route was missing in Internet6. To me it seems like the line default            <IP_ADDRESS>       UGScI          en0 plays the role of default gateway for IPv4 requests, and that is present in both the "VPN" and "NoVPN" wifi routing tables. It does appear that a default gateway is missing in both the "WifiNoVPN" and "WiFiVPN" routing tables, and the "VPN" table is able to connect to the internet no problem. I would have thought that Wireguard would have used a functioning IPv4 connection if available, but I'm still new at this so I'm probably missing something.
Removing ::0/0 presumably disables Wireguard from using IPv6? AFAIK, the work network only used IPv4 and looking at the WiFiNoVPN table seems to confirm that.
I should be able to give this a shot tomorrow, I'll let you know.

I was setting up PiVPN today and had the exact same problem. It was connected, but no internet available. When I ran the script, I noticed there were some errors about iptables, maybe it's related to that?

I think my problem may be a bit different as my setup had no errors and on a different network my VPN works just fine, indicating a successful install of piVPN.

@jimprince  The issue is clearly routing and yours is a mess. I am not debugging that.

@jimprince The issue is clearly routing and yours is a mess. I am not debugging that.

In the immortal words of toddlers everywhere, "It wasn't me" 😇

If not you then who ?  That would be the guy to ask ..

Normally, I would refrain from this sort of banter but today feels like a good day to soap box.
My personal impression is that you have not been entirely honest about your setup.
This could simply be that you are not aware of the tricks being played upon you ..

So, you can either come clean and spill the beans ..
Or, these guys here just might side with me on this one.
If there were really a problem of the nature of which you speak, regarding either WireGuard or OpenVPN, I can tell you this for sure, I would know.

Mad ravings of a lunatic:
PiVPN could chose something more custom than 10.8/24
Eg: <IP_ADDRESS>/24

PiVPN could chose something more custom than 10.8/24
Eg: <IP_ADDRESS>/24

TL;DR but don't see a reason why not .. just avoids weird conflicts.

If not you then who ? That would be the guy to ask ..

I didn't know MacOS had a routing table until it was brought up here so I definitely hadn't made any manual changes to it.
The routing table also resets itself every time I connect/disconnect from a wifi network so even if I want to, I don't have much control over it.

Is it Pihole ?

No, not a PiHole

My personal impression is that you have not been entirely honest about your setup.
This could simply be that you are not aware of the tricks being played upon you ..

Sorry, I don't mean to sound impolite

Totally fair, and no offense taken (moreover I'm super grateful for your help!). The only thing I can think of that I haven't shared is that I work at a province wide hospital network as clinical staff. The organization has a dedicated IT department with a network that spans across the province connecting all the sites together. I typically connect via WiFi using an authentication mechanism that I don't understand (no passphrase, I use my corporate credentials). There is a VPN solution to connect from home using forticlient which allows for RDP and citrix access to the corporate network. My occasional interactions with IT have only ever been with product support staff and they naturally are able to support the products but have very little familiarity with the underlying infrastructure. I assumed the network used IPv4 but I neither know whether use of IPv6 on the network is important nor what tests would be important.
As far as the routing tables go, the only thing I can figure out is that once connected to the wifi it gets shoved full of references to every other machine on the subnet, and someone decided to make the subnets huge. I've spent hours trying to understand how routing tables work, I have flushed the routing table dozens of times, tried adding routes and removing routes and it makes no difference, the table is always huge when connected to the work network and I'm not able to get my packets moving. After I finish my experiments I disconnect and reconnect and the table is back to however it was before.
In terms of setup I don't think my Mac has anything that would make a difference. I use a vanilla install of OSX Big Sur with  the wireguard client for Mac version App version: 1.0.12 (22) Go backend version: 0.0.20201119. I use an adblocker in chrome but my understanding was that those work at the application level. Citrix is open occasionally, and Viscoscity is still installed from when i was using OpenVPN.

WiFiVPN ha no default route through en0 as CellVPN. What if you try to remove ::0/0 from the client config? (This may cause an IPv6 leak if your work network supports IPv6).

I did try this, and it didn't change things. Still unable to connect to internet and can't ping <IP_ADDRESS>. Was worth a shot.

hi, can you give screenshot of ip addr ? last time i have problem like this, then i see that dhcpd is also on when up the wireguard by wg-quick. this because dhcp also use <IP_ADDRESS>/8 on wg0 to enable dhcp feature. i also install pivpn on server.

Sure thing, I'm back at work tomorrow.
It has dawned on me that if this is a routing table problem I'm not going to be able to fix that on my phone in order to connect. I've reinstalled PiVPN tonight with OpenVPN and will give that a shot tomorrow. OpenVPN was previously working when I had it setup on my openWRT router so that hopefully will get things going again. I'll post back with how it goes.

Good answer!  This is clearly more complicated than I expected.
Is it possible you can take your MAC to a completely new network and try ?

I typically connect via WiFi using an authentication mechanism that I don't understand (no passphrase, I use my corporate credentials).

My impression is that this WiFi is intentionally more secure than your average network.

An interesting twist happened in that OpenVPN is able to connect just fine from the work network. I'm able to access my SMB shares remotely. Yay!
If there is value to the community in continuing to troubleshoot what was going on with wireguard, I'm happy to test a few more things. All else being equal though, I have a functional solution so am happy to close the issue.
Cheers.

I was looking at the routing tables... :facepalm:
Why can't you try with the simplest possible one?

If you are still interested in finding out why wireguard does not wotk then there is a couple of things you can try.  First, I need to establish a base line though, so a couple of yes/no (leave blank for no):

[ ] Does wireguard successfully "connect" ? - If you don't know leave blank.
[ ] Can you ping the remote endpoint, which I presume is 10.6.0.x
[ ] Can you ping any address you know to be on the remote end, eg. your LAN router.

@jimprince :gun: Do ya feel lucky .. punk ? :rofl:

The only logical conclusion I can come to is that no answer is equivalent to No[Blank], No and No
My only guess would be that OpenVPN port is not blocked but WG port is blocked, by your network host.
For me, this one is closed.

I'm sorry to necro this issue after 6 months, but I have a very similar problem (without the complicated network setup).

[x] Does wireguard successfully "connect" ? - If you don't know leave blank.
Yes, and I can see packets going back and forth on tcpdump
[x] Can you ping the remote endpoint? Which I presume is 10.6.0.x
Yes, the endpoint pivpn generated was <IP_ADDRESS>
[x] Can you ping any address you know to be on the remote end, eg. your LAN router?
Yes, I am able to ping devices on the network after connecting via Wireguard. I am not able to access any of those devices, however.

I have a brand new RaspberryPi 4 that is only running pivpn. No PiHole, nothing extra.
Here are my debug outputs:

pivpn debug
::::		PiVPN debug		 ::::
=============================================
::::		Latest commit		 ::::
Branch: master
Commit: 50798ccd42ef7a2b67f14b801b84f425805a40ed
Author: Orazio
Date: Wed Sep 15 17:52:17 2021 +0200
Summary: Important change to custom MTU handling (mainly to fix issue #1357)
=============================================
::::	    Installation settings    	 ::::
PLAT=Raspbian
OSCN=buster
USING_UFW=0
IPv4dev=eth0
dhcpReserv=1
IPv4addr=<IP_ADDRESS>/24
IPv4gw=<IP_ADDRESS>
install_user=micheal
install_home=/home/micheal
VPN=wireguard
pivpnPORT=57100
pivpnDNS1=<IP_ADDRESS>
pivpnDNS2=<IP_ADDRESS>
pivpnDNS3=<IP_ADDRESS>
pivpnHOST=REDACTED
INPUT_CHAIN_EDITED=0
FORWARD_CHAIN_EDITED=0
pivpnPROTO=udp
pivpnMTU=1400
pivpnDEV=wg0
pivpnNET=<IP_ADDRESS>
subnetClass=24
AllowedIPs=<IP_ADDRESS>/0, ::0/0
UNATTUPG=1
INSTALLED_PACKAGES=(dnsutils iptables-persistent wireguard-tools qrencode unattended-upgrades)
=============================================
::::  Server configuration shown below   ::::
[Interface]
PrivateKey = server_priv
Address = <IP_ADDRESS>/24
MTU = 1420
ListenPort = 57100
### begin micheal-laptop ###
[Peer]
PublicKey = micheal-laptop_pub
PresharedKey = micheal-laptop_psk
AllowedIPs = <IP_ADDRESS>/32
### end micheal-laptop ###
### begin micheal ###
[Peer]
PublicKey = micheal_pub
PresharedKey = micheal_psk
AllowedIPs = <IP_ADDRESS>/32
### end micheal ###
=============================================
::::  Client configuration shown below   ::::
[Interface]
PrivateKey = micheal-laptop_priv
Address = <IP_ADDRESS>/24
DNS = <IP_ADDRESS>, <IP_ADDRESS>

[Peer]
PublicKey = server_pub
PresharedKey = micheal-laptop_psk
Endpoint = REDACTED:57100
AllowedIPs = <IP_ADDRESS>/0, ::0/0
=============================================
:::: 	Recursive list of files in	 ::::
::::m/etc/wireguard shown below	 ::::
/etc/wireguard:
configs
keys
wg0.conf

/etc/wireguard/configs:
clients.txt
micheal.conf
micheal-laptop.conf

/etc/wireguard/keys:
micheal-laptop_priv
micheal-laptop_psk
micheal-laptop_pub
micheal_priv
micheal_psk
micheal_pub
server_priv
server_pub
=============================================
::::		Self check		 ::::
:: [OK] IP forwarding is enabled
:: [OK] Iptables MASQUERADE rule set
:: [OK] WireGuard is running
:: [OK] WireGuard is enabled (it will automatically start on reboot)
:: [OK] WireGuard is listening on port 57100/udp
=============================================
:::: Having trouble connecting? Take a look at the FAQ:
:::: https://docs.pivpn.io/faq
=============================================
:::: WARNING: This script should have automatically masked sensitive       ::::
:::: information, however, still make sure that PrivateKey, PublicKey      ::::
:::: and PresharedKey are masked before reporting an issue. An example key ::::
:::: that you should NOT see in this log looks like this:                  ::::
:::: YIAoJVsdIeyvXfGGDDadHh6AxsMRymZTnnzZoAb9cxRe                          ::::
=============================================
::::		Debug complete		 ::::

lsmod | grep wireguard
wireguard              69632  0
curve25519_neon        28672  1 wireguard
libcurve25519_generic    24576  2 curve25519_neon,wireguard
libchacha20poly1305    16384  1 wireguard
ip6_udp_tunnel         16384  1 wireguard
udp_tunnel             24576  1 wireguard
libblake2s             16384  1 wireguard
ipv6                  495616  69 wireguard

cat /etc/pivpn/wireguard/setupVars.conf
PLAT=Raspbian
OSCN=buster
USING_UFW=0
IPv4dev=eth0
dhcpReserv=1
IPv4addr=<IP_ADDRESS>/24
IPv4gw=<IP_ADDRESS>
install_user=micheal
install_home=/home/micheal
VPN=wireguard
pivpnPORT=57100
pivpnDNS1=<IP_ADDRESS>
pivpnDNS2=<IP_ADDRESS>
pivpnHOST=redacted
INPUT_CHAIN_EDITED=0
FORWARD_CHAIN_EDITED=0
pivpnPROTO=udp
pivpnMTU=1420
pivpnDEV=wg0
pivpnNET=<IP_ADDRESS>
subnetClass=24
AllowedIPs=<IP_ADDRESS>/0, ::0/0
UNATTUPG=1
INSTALLED_PACKAGES=(dnsutils iptables-persistent wireguard-tools qrencode unattended-upgrades)

ip -f inet address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global dynamic noprefixroute eth0
       valid_lft 85473sec preferred_lft 74673sec

My DDNS domain has the same IP address as my public IP address

sudo tcpdump -n -i eth0 udp port 57100
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:09:58.303616 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 148
14:09:58.306714 IP <IP_ADDRESS>.57100 > <IP_ADDRESS>.1361: UDP, length 92
14:09:58.368701 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:58.486192 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 240
14:09:58.488652 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:58.641051 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:58.641161 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:58.641169 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:58.641325 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 32
14:09:58.641333 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:58.641339 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:58.641343 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:58.653669 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:58.653754 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:58.653763 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:58.978666 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:58.983652 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:58.983717 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:59.083599 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:09:59.088679 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:09:59.088751 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:09:59.088756 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:09:59.088885 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:09:59.088891 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:09:59.088896 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:59.113552 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 240
14:09:59.341105 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:59.536112 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:59.646038 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:59.646046 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:59.646129 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:59.646161 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:59.646163 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:59.646198 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:59.646201 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:09:59.648582 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:59.648587 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:09:59.650999 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:00.023598 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:00.023700 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:00.023709 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:00.126102 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 240
14:10:00.141116 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:00.141250 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:00.141256 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.121138 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:01.121263 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:01.123621 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:01.123634 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:01.126104 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:01.128664 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:01.128722 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:01.133681 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 240
14:10:01.133769 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.133775 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.133779 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.348606 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:01.538603 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.751041 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.756071 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:01.756148 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.756155 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.758547 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.761018 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.763570 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:01.763653 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:01.776185 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:01.783587 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:02.074441 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.091533 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.098593 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.111077 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 240
14:10:02.148634 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:02.151080 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:02.153601 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:02.156011 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:02.166010 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:02.168656 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:02.171056 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:02.418567 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:02.551059 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.738559 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.746052 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:02.751047 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.754240 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.756318 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.759383 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.761492 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:02.771224 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:02.773612 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:02.781062 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:03.108601 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:03.113632 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:03.116039 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:03.209198 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:03.212007 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:03.221031 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.216084 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:04.228547 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:04.231074 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:04.231104 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:04.238565 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:04.246082 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:04.248637 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:04.261060 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.266105 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.268571 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.498530 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:04.651003 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.791144 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.796110 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:04.796204 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.798557 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.811064 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.813621 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.813636 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:04.816065 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:04.821087 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:04.821209 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:04.943584 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:05.131039 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:05.133540 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:05.136079 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:05.191155 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:05.951102 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:06.198555 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:06.341112 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:06.351250 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:06.351266 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:06.959236 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:07.198602 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:07.409155 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:07.409462 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:07.958694 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.219701 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.366034 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:08.368566 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:08.371003 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:08.373528 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:08.381109 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:08.388645 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:08.388664 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:08.446181 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:08.456068 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.483613 IP <IP_ADDRESS>.57100 > <IP_ADDRESS>.1361: UDP, length 32
14:10:08.588598 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.648646 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:08.822157 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.822423 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.836164 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:08.836187 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.836364 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.836375 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.836382 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.838606 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:08.838632 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:08.838827 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:08.838836 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:08.838843 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:08.838850 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:08.968658 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:09.226062 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:09.898635 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:09.898813 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:09.968684 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:10.221083 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:10.468654 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:10.468670 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:10.631167 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:11.508614 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:11.508645 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:11.988683 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:12.006168 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:12.006200 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:12.238621 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:13.036265 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:13.036292 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:13.571183 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:13.571454 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:14.658612 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:15.111110 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:15.123617 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:15.998585 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:16.258592 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:16.366192 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:16.371153 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:16.373614 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:16.376095 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:16.383683 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:16.383702 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 128
14:10:16.386098 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:16.738603 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:17.206123 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:17.216135 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:17.216154 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:17.221118 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:17.221144 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:17.221298 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:17.226147 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:17.226177 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:17.226442 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:17.233611 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:17.241153 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:17.728708 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:17.733626 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 96
14:10:18.713679 IP <IP_ADDRESS>.57100 > <IP_ADDRESS>.1361: UDP, length 32
14:10:19.198602 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
14:10:19.211083 IP <IP_ADDRESS>.1361 > <IP_ADDRESS>.57100: UDP, length 112
^C
208 packets captured
209 packets received by filter
1 packet dropped by kernel

I did have ufw installed after I installed pivpn, but later uninstalled it since pivpn uses iptables instead. My iptables are full of ufw stuff that I don't know how to get rid of. Maybe this is why nothing is working correctly?

sudo iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N f2b-sshd
-N ufw-before-logging-input
-N ufw-before-logging-output
-N ufw-before-logging-forward
-N ufw-before-input
-N ufw-before-output
-N ufw-before-forward
-N ufw-after-input
-N ufw-after-output
-N ufw-after-forward
-N ufw-after-logging-input
-N ufw-after-logging-output
-N ufw-after-logging-forward
-N ufw-reject-input
-N ufw-reject-output
-N ufw-reject-forward
-N ufw-track-input
-N ufw-track-output
-N ufw-track-forward
-N ufw-logging-deny
-N ufw-logging-allow
-N ufw-skip-to-policy-input
-N ufw-skip-to-policy-output
-N ufw-skip-to-policy-forward
-N ufw-not-local
-N ufw-user-input
-N ufw-user-output
-N ufw-user-forward
-N ufw-user-logging-input
-N ufw-user-logging-output
-N ufw-user-logging-forward
-N ufw-user-limit
-N ufw-user-limit-accept
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -i eth0 -p udp -m udp --dport 57100 -m comment --comment wireguard-input-rule -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A f2b-sshd -s <IP_ADDRESS>/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -j RETURN
-A f2b-sshd -j RETURN
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A ufw-before-input -j ufw-not-local
-A ufw-before-input -d <IP_ADDRESS>/32 -p udp -m udp --dport 5353 -j ACCEPT
-A ufw-before-input -d <IP_ADDRESS>/32 -p udp -m udp --dport 1900 -j ACCEPT
-A ufw-before-input -j ufw-user-input
-A ufw-before-output -o lo -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -j ufw-user-output
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-forward -j ufw-user-forward
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-skip-to-policy-input -j DROP
-A ufw-skip-to-policy-output -j ACCEPT
-A ufw-skip-to-policy-forward -j DROP
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 80 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 443 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 5900 -m comment --comment "\'dapp_VNC\'" -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 57100 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 57100 -j ACCEPT
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT

sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
-A POSTROUTING -s <IP_ADDRESS>/24 -o eth0 -m comment --comment wireguard-nat-rule -j MASQUERADE

I'm sorry to necro this issue after 6 months, but I have a very similar problem (without the complicated network setup).

[x]  Does wireguard successfully "connect" ? - If you don't know leave blank.
Yes, and I can see packets going back and forth on tcpdump
[x]  Can you ping the remote endpoint? Which I presume is 10.6.0.x
Yes, the endpoint pivpn generated was <IP_ADDRESS>
[x]  Can you ping any address you know to be on the remote end, eg. your LAN router?
Yes, I am able to ping devices on the network after connecting via Wireguard. I am not able to access any of those devices, however.

I have a brand new RaspberryPi 4 that is only running pivpn. No PiHole, nothing extra.
Here are my debug outputs:
pivpn debug
lsmod | grep wireguard
cat /etc/pivpn/wireguard/setupVars.conf
ip -f inet address show eth0
My DDNS domain has the same IP address as my public IP address
sudo tcpdump -n -i eth0 udp port 57100
I did have ufw installed after I installed pivpn, but later uninstalled it since pivpn uses iptables instead. My iptables are full of ufw stuff that I don't know how to get rid of. Maybe this is why nothing is working correctly?
sudo iptables -S
sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
-A POSTROUTING -s <IP_ADDRESS>/24 -o eth0 -m comment --comment wireguard-nat-rule -j MASQUERADE

I have exactly the same issue


Reword and fix grammar

Motivation
To make it clearer when the error is thrown and make it consistent with other comments.
Solution
Fix grammar an -> a and reword to make it clear that it is a fulfillment that does not declare at least one component rather than the orders.

Can you address the lint warning (line length over 80 characters)?

Fixed


Add boolean arg interger to mo.ui.number

Description
In certain use cases with mo.ui.number, specifically when setting a random seed or key, some libraries require that this value be in integer form. To facilitate compatibility, adding a boolean argument, integer, could enable users to enforce integer formatting directly within mo.ui.number.
Other potential applications for this enhancement include specifying the dimensional attributes of tensors, where data type consistency is often essential.
Proposed Improvements

Boolean integer Argument: Add a boolean integer argument to enforce integer formatting for compatibility with libraries that require integers for specific functionalities like seeding.

dtype Argument: Introduce a dtype argument that allows explicit specification of the data type, enabling greater flexibility and alignment with various libraries that may have differing requirements (e.g., PyTorch, NumPy, TensorFlow).

format Function for Custom Transformations: Add a format function parameter that accepts a callable, which can automatically convert number to a target data type or structure. For example, using lambda x: torch.tensor(x) would set the value of number to a torch.tensor. This could be extended to other transformation functions based on the needs of the user.

Alternatives

dtype Argument: Incorporate a dtype argument that allows users to control the data type explicitly, providing enhanced compatibility with libraries that rely on specific data types (e.g., torch.int, np.float32).
Dynamic format Function for Transformations: Implement a format parameter that accepts a callable function for dynamically converting number into any target type, like lambda x: torch.tensor(x), allowing for seamless integration with libraries like PyTorch, TensorFlow, or JAX. This approach would give users more control over type conversions without needing to manage type checks or conversions manually.

This is already possible with, step=1:
import marimo as mo
mo.ui.number(step=1)

We could update the docs to make this clearer


Add explicit export for memory object

Motivation
Currently, there is no clear way of importing wasm.memory object from the generated pkg contents. JS frameworks have hard times dealing with this (empiric experience with React) as the import/export is too vague. The importing of .wasm files is manageable (Webpack's wasm-loader is fine-ish) but currently, I am not aware of any TypeScript workarounds.
Proposed Solution
The proposed solution is adding the explicit export for the memory object like the following:
index_bg.js
import * as wasm from './index_bg.wasm';
// ...
export const memory = wasm.memory;

index.d.ts
// ...
export const memory: WebAssembly.Memory;

Alternatives
The alternative would be providing of whole index_bg.js import * as wasm from './index_bg.wasm'; object but this can lead to some unnecessary exposing of values.

I recently ran into this issue. We were using webpack, so it was possible to find a fix, but it wasn't easy. The example referenced in this comment was helpful:
https://github.com/rustwasm/wasm-bindgen/issues/2971#issuecomment-1179621334
It might be nice to implement this to save other devs the hassle, since it's a stumbling block (the specific issue being the error, Can't import the named export 'memory'.'buffer' (imported as 'wasm') from default-exporting module (only default export is available)), and might even preclude the use of wasm-bindgen by projects that don't use webpack, especially ones using typescript bundling.


Removed refresh_graph from grade spreadsheets

Ready for Review
This pull request removes the refresh_graph link from grade spreadsheets.
Additions and Modifications:

Removed refresh_graph route from grade spreadsheets

Screenshots:
Removed refresh_graph route from grade spreadsheets

Thanks, @brendahuang93!


do I need install torch if I have installed torchlight?

I have installed torchlight and TF, when I run demo_video_mobile.py, I got "ModuleNotFoundError: No module named 'torch' ", Do I need install pytorch as well even I have installed torchlight?

Yeah, you still need to install torch, unfortunately.


Examples Link in Table of Contents leads to 404

In the Getting-Started Wiki, the Examples link leads nowhere.

@gabrielhartmann I am able to be redirected to https://github.com/apache/curator/tree/master/curator-examples/src/main/java from the examples link. Can you try again?

Ah I see you mean only the link from ToC.


c++11 raw strings not highlighted properly

When I write a raw string in c++11 that span among many lines, it's not highlighted properly.
What I see:

As you can see, raw string has not the string uniform color.

We use the text mate bundle from https://github.com/textmate/c.tmbundle which doesn't seem to support raw string.

Ok. If I try to modify it in order to support raw strings, then should I try to create a pull request for this repository, for the textmate one  one or for both?

For both would be perfect. Otherwise it also works if you do it for text mate first and once accepted, I bring it over.

Ok I'll check when I'll have some time. Regards.

This issue was moved to textmate/c.tmbundle#30

This has been added to the TextMate repository, should be fixed next time the bundle is ported over.

I believe this is fixed in 1.7+:


No Success Test for  CFE_TBL_Validate

Is your feature request related to a problem? Please describe.
From #548. No Success Test for CFE_TBL_Validate.
Describe the solution you'd like
Add a success test for CFE_TBL_Validate in cFE/modules/tbl/ut-coverage/tbl_UT.c.
Requester Info
Ariel Adams, ASRC Federal

I'll work on this.


Use PowerShell registry functions to work around "Registry editing has been disabled by your administrator"

I love this program for fixing the views on all my Windows devices, unfortunately it does not work on some of my work PCs due to regedit being blocked by group policy.
I have been able to edit registry settings with the Set-ItemProperty HKLM:/..., so this should be fixable by porting all & $RegExe lines to appropriate cmdlets:

Query => Get-(Child)Item
Add => New/Set-Item(Property)
Delete => Remove-Item(Property)

Unsure how to deal with import/export, but it looks to me  like they are mostly used for manipulating keys in text form, which could be done with a powershell dict instead. A backup and restore could be done by storing said dict as JSON.

Re-coding and, most importantly, thoroughly testing, a change of all the registry edits to use PowerShell commands will be a lot of work. Probably on the order of dozens of hours (it has to work on Windows 7 - 11 and 32 and 64 bit). Some of the edits are done by building a reg file and then importing that file. Changing that code to pure PowerShell will be challenging, especially without it taking significantly longer to execute. I'll take a look, but I can't make any promises.

I would be happy to work on a minimised version which only supports grouping and sorting, as that is my (and likely many others') main concern.

My current plan: Make a Reg.exe replacement in C#. It's a more interesting project than revisiting the PowerShell code and less likely to introduce errors. I'll check for the DisableRegistryTools registry setting and only use my replacement tool when Reg.exe is blocked. I've already got Import and Export working. Working on Query, Add, and Delete...

Sounds amazing, a bit funny that you find it easier to replace the tool rather than calls to it 😄

Please test the attached update. It contains one file to add to the AppParts folder (CSReg.exe) and a replacement WinSetView.ps1 file.
WinSetView.zip

Hi, I copied the files and invoked it as ./WinSetView.ps1 Defaults/Win10-Microsoft-Defaults-No-Groups.ini, there are some errors:
Error exporting registry: Unsupported root key: "HKCU
Error deleting registry key or value: Unsupported root key: "HKCU
The property 'logo' cannot be found on this object
The variable '$C2' cannot be retrieved because it has not been set.
File not found: Temp\ShellBak.reg

The first two look to me like quoting issue.
Overall, the script did not work, subdirectories still grouped and sorted by date.

That's weird. It works fine for me for both Administrator and Standard users. I even executed the exact same command that's in your reply. Maybe it's a regional issue with quote handling. What region setting are you using?

Locale is EN-GB, if that's what you mean. Running under PS 7.4.0

Is there a branch where I could see the source code of the exe to try and figure out what went wrong?

En-GB is not an issue. It's probably PS 7.x. Try it under PS 5.1. I'll test under PS 7.x...

PS 7.x is the issue. It will run fine under PS 5.1. I'll see if I can get it working correctly under PS 7.x. It's probably just a matter of removing extraneous quotes. PS 5.1 automatically removes extra quotes. PS 7.x does not.

Okay, I will check PS5.1 tomorrow and let you know

Thanks. CSReg.exe is fine. I have to make the changes to WinSetView.ps1. I will post the source to CSReg.exe when I update the repository.

Here are updated files to test. It was mostly a matter of getting rid of unnecessary quotes from the PowerShell script, but I also had to make one small change to CSReg.exe (needed to output a blank line after querying a value to match Reg.exe's output). I tested this with PowerShell 7.4.5 and the DisableRegistryTools policy value set to 2.
WinSetView.zip

The new version almost works, there is still a warning about missing logo property, you should be able to fix it by replacing ).logo with % logo).
More important is that there is an error about unset $C2, I can see it is only set conditionally for Windows builds 19045..21995, while I am on 22631. No clue what should be the default value.
Result of running the script is that grouping is removed recursively (amazing!), but sorting stays on date.

I defaulted all $CX to empty strings and changed ).logo to | % logo -ErrorAction SilentyContinue), script completes without errors. The sorting was fixed by editing the config, replaced the SortBy=-DateModified line with SortBy=+ItemNameDisplay.
Everything is as I wanted now, thank you so much!

No manually editing should be required, so I'll keep at it until it's right. No errors for me, so it might take a bit of trial and error. Busy day today. Hope to get back at it tomorrow.

Errors might be caused by my environment running under Set-StrictMode -Version 3, which mostly generates warnings about accessing non-existent variables or properties. It's a good idea to put it on top of all your scripts as it helps catch bugs, anything you find spurious can be explicitly silenced one way or another.
The config edit is not needed if using the Web UI to generate your own, it was just easier for me to do all from console to focus testing on the modified scripts.

Version 2.99.1 now includes the updates to work on systems where the DisableRegistryTools policy has been set.


Emit struct extract using borrows

This PR contains a few different fixes which end up in us using struct_extracts when extracting a subobject to call a method on that subobject that takes it as a guaranteed parameter.

f51b9ef: This commit adds a new API to SILFunction called SILFunction::getTypeLowering. It ensures that any need to pop/push a GenericSignature is handled for the user. In the SIL passes, this should be the way anyone gets the type lowering of a SILType.
450466b: This is a small refactoring of SILResultInfo::getOwnershipKind to handle GenericSignatures correctly.
de91189: This rewrites the emit* functionality in SILGenExpr to use SILFunction::getTypeLowering instead of rolling their own and doing it incorrectly.
2b2fa0a: Given a borrowed value, if we call emitManagedBeginBorrow on the value, just exit. The value is already guaranteed and the verifier will properly handle checking the uses from the ownership operand.
7d21286: This commit fixes the ownership verifier to properly mark mark_uninitialized as a forwarding instruction. I added a bunch of tests based off of the DI test suite that exercises the various test cases where mark_uninitialized is used (including with its various flags).
f6d7151: This commit changes SILGen to borrow the base of an object before attempting to emit a struct_extract sequence. This came up when trying to extract a subobject and call a method on that subobject.

rdar://29791263

@swift-ci Please test and merge

@swift-ci Please test

@swift-ci Please test

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - f6d7151c633adab856f154b007e809b1ca5895da
Test requested by - @gottesmm

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - 77c1dfcb3afb1fa3a87ff50cc6f5689a053a2b17
Test requested by - @gottesmm

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - 77c1dfcb3afb1fa3a87ff50cc6f5689a053a2b17
Test requested by - @gottesmm

I looked at the bots and the OS X failure and linux failure are not mine.

@swift-ci Please smoke test and merge


train_nlu restarts the whole python script

Rasa Core version: 0.9.0a5
Python version: 3.6
Operating system (windows, osx, ...): ubuntu 18.04
Issue: train_nlu seems to completely start the whole python script new (realized that after upgrade to 0.9.0a5)
Content of domain file (if used & relevant):
def train_nlu():
    from rasa_nlu.training_data import load_data
    from rasa_nlu import config
    from rasa_nlu.model import Trainer

    training_data = load_data('data/georgebot_nlu.md')
    trainer = Trainer(config.load("georgebot_nluconfig.yml"))
    trainer.train(training_data)
    model_directory = trainer.persist('models/nlu',
                                      fixed_model_name="current")

    return model_directory

what do you mean with it starts the whole python script new?

I do not use your scripts (need more flexibility) and have my own “bot.py” so to say. And the whole bot.py starts again a second time (can see that on the various print’s that I do) shortly before the end/at the end of “train_nlu” ...

Can you share that script? I am not sure why it would do that. Would be good to take a look at the log as well if you dont mind.

Sure ... be warned - I load a lot of packages/libraries ;-) which wasn't an issue until 0.9.0a3 (no double starts until then)
and the DEBUG Infos that I can see on the screen. The Line "['account_opening.txt', 'short_selling.txt']" indicates the start of the python script...
gb.zip
logfile.zip

Interesting new insight after further testing:
It is NOT the train_nlu, but the train_dialogue and it is NOT restarting the .py script, it "merely" prints the previous print statements (only the first 2, still don't know why) again in the following code:
def train_dialogue(domain_file="georgebot_domain.yml",
                   model_path="models/dialogue",
                   training_data_file="data/georgebot_stories.md"):
    fallback = FallbackPolicy(fallback_action_name="utter_default",
                      core_threshold=0.25,
                      nlu_threshold=0.25)
    agent = Agent(domain_file, policies=[MemoizationPolicy(max_history=6), KerasPolicy(), fallback])
    training_data=agent.load_data(training_data_file)
    agent.train(
            training_data,
            epochs=700,
            batch_size=10,
            validation_split=0.2)

    agent.persist(model_path)
    return agent

and it is that line agent = Agent(domain_file, policies=[MemoizationPolicy(max_history=6), KerasPolicy(), fallback]) and subsequently in the agent.py init the following line:
self.domain = self._create_domain(domain)

Mhm no, I really don't know why that would be the case. All of the code is using the logging system, so not really using any print statements. I am not sure how that could happen.

The print statements came from me ... I further tested and realised that the printed information is also shown, when I even commented the respective print statements (sic!).
It seems that the outputs of (former) print statements are “stored“ somewhere and then shown when run again (at the same code snippet shown above).
Can it have something to do with the logging? Will continue to test it on a different machine/environment.

can reproduce that in a docker container (still ubuntu 18.04) ... am I'm the only one experiencing that?


Python updates

Confirmed passing all datavec tests on linux
On Windows I'm getting this...
https://gist.github.com/AlexDBlack/68fe556289fcd32a16b31304a3218a17

So, there's a legit issue here on Windows
If I delete javacpp cache and run: OK, passes
If I then run again: it fails as per the gist in my previous post
Somehow it's actually modifying the files
here's C:\Users\Alex\.javacpp\cache\numpy-1.17.3-1.5.2-windows-x86_64.jar\org\bytedeco after the first run (which succeeds):

And here it is after the second run (that fails):

Note the slightly different total file size - 16,550,850 vs. 16,550,691
Same number of files/folders though, so something is getting modified?
cc @saudet

Can you run a diff -ru on that and see which files are changed?

After running once, renaming cache to cache_singlerun, then running twice (on same default cache directory, with one pass and one failure as before):
diff --brief --recursive /mnt/c/Users/Alex/.javacpp/cache/numpy-1.17.3-1.5.2-windows-x86_64.jar/org/bytedeco/numpy /mnt/c/Users/Alex/.javacpp/cache_singlerun/numpy-1.17.3-1.5.2-windows-x86_64.jar/org/bytedeco/numpy

(note run via WSL 2 for diff tool)
I get the following:
Files /mnt/c/Users/Alex/.javacpp/cache/numpy-1.17.3-1.5.2-windows-x86_64.jar/org/bytedeco/numpy/windows-x86_64/python/numpy/core/__pycache__/overrides.cpython-37.pyc and /mnt/c/Users/Alex/.javacpp/cache_singlerun/numpy-1.17.3-1.5.2-windows-x86_64.jar/org/bytedeco/numpy/windows-x86_64/python/numpy/core/__pycache__/overrides.cpython-37.pyc differ
Files /mnt/c/Users/Alex/.javacpp/cache/numpy-1.17.3-1.5.2-windows-x86_64.jar/org/bytedeco/numpy/windows-x86_64/python/numpy/testing/_private/__pycache__/utils.cpython-37.pyc and /mnt/c/Users/Alex/.javacpp/cache_singlerun/numpy-1.17.3-1.5.2-windows-x86_64.jar/org/bytedeco/numpy/windows-x86_64/python/numpy/testing/_private/__pycache__/utils.cpython-37.pyc differ

Looks like it's Python corrupting its own cache here, nothing to do with JavaCPP. CPython isn't thread-safe by default, so it's probably us trying to use it from multiple threads without the proper locks: https://docs.python.org/3/c-api/init.html

There shouldn't be any multithreading here afaik, unless it's done internally in python executor... @farizrahman4u ?

Or something not properly closed between tests - @farizrahman4u ?
Unfortunately python isn't exactly my specialty, not sure how useful I'll be in debugging this at this point...

@AlexDBlack I dont think it was windows vs linux.. its different versions of numpy (you probably have different versions of numpy on windows and linux(wsl)). Should be fixed now.

So this is a problem with NumPy? I'd recommend using the version distributed with the presets instead of depending on whatever versions are available on the system:
https://github.com/bytedeco/javacpp-presets/tree/master/numpy

@saudet no, we patch javacpp's numpy to support multi interpreter (limited support). The patch was written targeting an older version of numpy. Now it supports 1.7 too.

I'm not seeing numpy listed anywhere in the pom.xml files. How does that
work?

I can confirm this is running OK for me now on Windows, no more cache corruption issue.

@farizrahman4u are we good to go to merge this?

yes :shipit:


Arm user mode

Unfortunately, we have not been testing user mode well on non-x86. It is not tested by default on the platforms that support it.
This PR contains bug fixes and workaround for various issues. Finally, it ensures that user mode is enabled when running test cases for all platforms that support user mode, even if not switched on in the defconfig.

I ran this on both the frdm_k64f and frdm_kw41z boards and got the following results:
$ sanitycheck -T tests/kernel/ -p frdm_k64f --device-testing --device-serial /dev/ttyACM0
Cleaning output directory /home/maureen/zephyr/sanity-out
Building testcase defconfigs...
72 tests selected, 8595 tests discarded due to filters
total complete:   24/  72  33%  failed:    0

frdm_k64f                 tests/kernel/threads/lifecycle/thread_init/kernel.threads FAILED: timeout
	see: sanity-out/frdm_k64f/tests/kernel/threads/lifecycle/thread_init/kernel.threads/handler.log

total complete:   72/  72  100%  failed:    1
71 of 72 tests passed with 0 warnings in 1560 seconds

$ sanitycheck -T tests/kernel/ -p frdm_kw41z --device-testing --device-serial /dev/ttyACM0
Cleaning output directory /home/maureen/zephyr/sanity-out
Building testcase defconfigs...
63 tests selected, 8604 tests discarded due to filters
total complete:   24/  63  38%  failed:    0

frdm_kw41z                tests/kernel/mem_protect/stack_random/kernel.memory_protection.stack_random FAILED: timeout
	see: sanity-out/frdm_kw41z/tests/kernel/mem_protect/stack_random/kernel.memory_protection.stack_random/handler.log

total complete:   63/  63  100%  failed:    1
62 of 63 tests passed with 0 warnings in 810 seconds

I'm not quite sure if the second failure is valid since this is a Cortex M0+ with no MPU.

Codecov Report

Merging #7752 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master    #7752   +/-   ##
=======================================
  Coverage   55.01%   55.01%
=======================================
  Files         483      483
  Lines       53949    53949
  Branches    10494    10494
=======================================
  Hits        29680    29680
  Misses      19983    19983
  Partials     4286     4286

Impacted Files
Coverage Δ

tests/kernel/fatal/src/main.c
50.9% <ø> (ø)
:arrow_up:

kernel/init.c
67.85% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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