text:
IllegalArgumentException: Unsupported value: 'com.cleveradssolutions.internal.content.zf'

1st issue:
With a banner being displayed I'm getting following errors:
E/CAS.AI  (17030): Callback: 6: java.lang.IllegalArgumentException
E/CAS.AI  (17030): java.lang.IllegalArgumentException: Unsupported value: 'com.cleveradssolutions.internal.content.zf@68155a7' of type 'class com.cleveradssolutions.internal.content.zf'
E/CAS.AI  (17030): 	at io.flutter.plugin.common.StandardMessageCodec.writeValue(StandardMessageCodec.java:297)
E/CAS.AI  (17030): 	at io.flutter.plugin.common.StandardMessageCodec.writeValue(StandardMessageCodec.java:285)
E/CAS.AI  (17030): 	at io.flutter.plugin.common.StandardMethodCodec.encodeSuccessEnvelope(StandardMethodCodec.java:61)
E/CAS.AI  (17030): 	at io.flutter.plugin.common.EventChannel$IncomingStreamRequestHandler$EventSinkImplementation.success(EventChannel.java:251)
E/CAS.AI  (17030): 	at com.cleveradssolutions.plugin.flutter.bannerview.BannerViewEventListener.onAdViewPresented(BannerViewEventListener.kt:22)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.content.zb.onAdRevenuePaid(SourceFile:3)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.content.zg.zb(SourceFile:7)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.content.zg.zb(SourceFile:6)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.content.zg.run(SourceFile:2)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.impl.zn.zb(SourceFile:1)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.impl.zn.zc(SourceFile:2)
E/CAS.AI  (17030): 	at com.cleveradssolutions.sdk.base.CASHandler.main(SourceFile:1)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.content.zg.zb(SourceFile:4)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.content.zc.ze(SourceFile:16)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.content.zb.zb(SourceFile:30)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.impl.ze.zc(SourceFile:13)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.impl.ze.access$applyNewAdContent(SourceFile:22)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.impl.zd.run(SourceFile:12)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.impl.zn.zb(SourceFile:1)
E/CAS.AI  (17030): 	at com.cleveradssolutions.internal.impl.zn.dispatchMessage(SourceFile:3)
E/CAS.AI  (17030): 	at android.os.Looper.loopOnce(Looper.java:226)
E/CAS.AI  (17030): 	at android.os.Looper.loop(Looper.java:313)
E/CAS.AI  (17030): 	at android.app.ActivityThread.main(ActivityThread.java:8663)
E/CAS.AI  (17030): 	at java.lang.reflect.Method.invoke(Native Method)
E/CAS.AI  (17030): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
E/CAS.AI  (17030): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
94
E/FrameEvents(17030): updateAcquireFence: Did not find frame.
This exception is thrown every a couple of seconds.
The "updateAcquireFence: Did not find frame." might be also somehow related as it doesn't happen without CAS.
2nd issue:
I had to switch to SDK version 23 because I was getting error:
"UnsupportedOperationException
Platform views cannot be displayed below API level 23 You can prevent this issue by setting minSdkVersion: 23 in build.gradle."
Right now you seem to require SDK 21. The error was occuring on some older Android (5.1 IIRC).
Flutter 3.19.6, CAS 3.7.2, Cas-Flutter 0.3.0

Hello, can you tell me which kind of implementation banner ads you use?

And can you show your code how you do it?

Hi @wszak, thank you for raising the issue.

2nd issue:
I had to switch to SDK version 23 because I was getting error:
"UnsupportedOperationException
Platform views cannot be displayed below API level 23 You can prevent this issue by setting minSdkVersion: 23 in build.gradle."
Right now you seem to require SDK 21. The error was occuring on some older Android (5.1 IIRC).

The issue you mentioned arose due to the Flutter update. Please find out more about it in the issue https://github.com/flutter/flutter/issues/147210

And can you show your code how you do it?

  LayoutBuilder(
    builder: (context, constraints) {
      return SafeArea(
        child: Scaffold(
          body: Column(
            children: <Widget>[
              BannerView(size: AdSize.Banner),
              ...

Can you make an example project reproducing this error and send it to us? It will help us to fix this issue

Can you make an example project reproducing this error and send it to us? It will help us to fix this issue

I'll try, but even when I take your example project and run it, then press Initialize I'm getting the following error:
I/CASIntegrationHelper(10049): --- Verifying Integration ---
I/CASIntegrationHelper(10049): Core version: 3.6.0
E/CAS.dart(10049): Initialize Unity Bridge failed
E/CAS.dart(10049): java.lang.NoSuchMethodError: No interface method initialize(Landroid/app/Activity;)Lcom/cleversolutions/ads/MediationManager; in class Lcom/cleversolutions/ads/android/CAS$ManagerBuilder; or its super classes (declaration of 'com.cleversolutions.ads.android.CAS$ManagerBuilder' appears in /data/app/~~PVeK6Nfnmz0JlzFhNpQscQ==/com.example.cas_sample-H4LesTg-3OoTHXPncn56vA==/base.apk!classes5.dex)
E/CAS.dart(10049): 	at com.cleveradssolutions.plugin.flutter.CASBridge.(CASBridge.java:43)
E/CAS.dart(10049): 	at com.cleveradssolutions.plugin.flutter.CASBridgeBuilder.buildInternal(CASBridgeBuilder.java:73)
E/CAS.dart(10049): 	at com.cleveradssolutions.plugin.flutter.CASBridgeBuilder.build(CASBridgeBuilder.java:53)
E/CAS.dart(10049): 	at com.cleveradssolutions.plugin.flutter.CASFlutter.build(CASFlutter.kt:337)
E/CAS.dart(10049): 	at com.cleveradssolutions.plugin.flutter.CASFlutter.onMethodCall(CASFlutter.kt:72)
E/CAS.dart(10049): 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267)
E/CAS.dart(10049): 	at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292)
E/CAS.dart(10049): 	at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
E/CAS.dart(10049): 	at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
E/CAS.dart(10049): 	at android.os.Handler.handleCallback(Handler.java:938)
E/CAS.dart(10049): 	at android.os.Handler.dispatchMessage(Handler.java:99)
E/CAS.dart(10049): 	at android.os.Looper.loopOnce(Looper.java:226)
E/CAS.dart(10049): 	at android.os.Looper.loop(Looper.java:313)
E/CAS.dart(10049): 	at android.app.ActivityThread.main(ActivityThread.java:8663)
E/CAS.dart(10049): 	at java.lang.reflect.Method.invoke(Native Method)
E/CAS.dart(10049): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
E/CAS.dart(10049): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
E/flutter (10049): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(CASFlutterBridgeError, failed to get CASBridgeBuilder, null, null)
E/flutter (10049): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:651:7)
E/flutter (10049): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334:18)
E/flutter (10049):
E/flutter (10049):
I/CASIntegrationHelper(10049): --- Mediation integration ---
W/CASIntegrationHelper(10049): > [   Mediation adapters  ]: 12/13
I tried with Core version: 3.7.2 too.
Any idea why this might be happening? I remember running your test example successfully in the past.
Below is my Flutter doctor output:
[✓] Flutter (Channel stable, 3.19.6, on Manjaro Linux 5.15.158-1-MANJARO, locale en_US.UTF-8)
• Flutter version 3.19.6 on channel stable at /opt/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 54e66469a9, 2024-04-17 13:08:03 -0700
• Engine revision c4cd48e186
• Dart version 3.3.4
• DevTools version 2.31.1

java.lang.NoSuchMethodError: No interface method initialize(Landroid/app/Activity;)Lcom/cleversolutions/ads/MediationManager; in class Lcom/cleversolutions/ads/android/CAS$ManagerBuilder; or its super classes

This issue has been fixed in CAS Core update 3.7.3. Please try updating the CAS core version.

java.lang.NoSuchMethodError: No interface method initialize(Landroid/app/Activity;)Lcom/cleversolutions/ads/MediationManager; in class Lcom/cleversolutions/ads/android/CAS$ManagerBuilder; or its super classes

This issue has been fixed in CAS Core update 3.7.3. Please try updating the CAS core version.

how to update?

Now works with your original example, but still doesn't work with BannerView and latest clever_ads_solutions 0.3.0.
So, take your example and:

upgrade clever_ads_solutions to 0.3.0 in pubspec.yaml
upgrade build.gradle to use CAS 3.7.3
update main.dart with the code below

Press Initialize and then press "TEST ERROR".
I see exception:
E/CAS.AI  (10810): Callback: 6: java.lang.IllegalArgumentException
E/CAS.AI  (10810): java.lang.IllegalArgumentException: Unsupported value: 'com.cleveradssolutions.internal.content.zf@c0def67' of type 'class com.cleveradssolutions.internal.content.zf'
E/CAS.AI  (10810): 	at io.flutter.plugin.common.StandardMessageCodec.writeValue(StandardMessageCodec.java:297)
E/CAS.AI  (10810): 	at io.flutter.plugin.common.StandardMessageCodec.writeValue(StandardMessageCodec.java:285)
E/CAS.AI  (10810): 	at io.flutter.plugin.common.StandardMethodCodec.encodeSuccessEnvelope(StandardMethodCodec.java:61)
E/CAS.AI  (10810): 	at io.flutter.plugin.common.EventChannel$IncomingStreamRequestHandler$EventSinkImplementation.success(EventChannel.java:251)
E/CAS.AI  (10810): 	at com.cleveradssolutions.plugin.flutter.bannerview.BannerViewEventListener.onAdViewPresented(BannerViewEventListener.kt:22)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.content.zb.onAdRevenuePaid(SourceFile:3)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.content.zg.zb(SourceFile:7)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.content.zg.zb(SourceFile:6)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.content.zg.run(SourceFile:2)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.impl.zn.zb(SourceFile:1)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.impl.zn.zc(SourceFile:2)
E/CAS.AI  (10810): 	at com.cleveradssolutions.sdk.base.CASHandler.main(SourceFile:1)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.content.zg.zb(SourceFile:4)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.content.zc.ze(SourceFile:16)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.content.zb.zb(SourceFile:30)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.impl.ze.zc(SourceFile:13)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.impl.ze.access$applyNewAdContent(SourceFile:22)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.impl.zd.run(SourceFile:12)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.impl.zn.zb(SourceFile:1)
E/CAS.AI  (10810): 	at com.cleveradssolutions.internal.impl.zn.dispatchMessage(SourceFile:3)
E/CAS.AI  (10810): 	at android.os.Looper.loopOnce(Looper.java:226)
E/CAS.AI  (10810): 	at android.os.Looper.loop(Looper.java:313)
E/CAS.AI  (10810): 	at android.app.ActivityThread.main(ActivityThread.java:8663)
E/CAS.AI  (10810): 	at java.lang.reflect.Method.invoke(Native Method)
E/CAS.AI  (10810): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
E/CAS.AI  (10810): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
V/CAS.AI  (10810): Banner(320, 50) Waterfall [LastPage_WithNet] Refresh loop resumed
168
E/FrameEvents(10810): updateAcquireFence: Did not find frame.

My main.dart:
import 'package:clever_ads_solutions/public/BannerView.dart';
import 'package:clever_ads_solutions/public/AdCallback.dart';
import 'package:clever_ads_solutions/public/AdImpression.dart';
import 'package:clever_ads_solutions/public/AdLoadCallback.dart';
import 'package:clever_ads_solutions/public/AdPosition.dart';
import 'package:clever_ads_solutions/public/AdSize.dart';
import 'package:clever_ads_solutions/public/AdType.dart';
import 'package:clever_ads_solutions/public/AdViewListener.dart';
import 'package:clever_ads_solutions/public/CASBannerView.dart';
import 'package:clever_ads_solutions/public/InitConfig.dart';
import 'package:clever_ads_solutions/public/InitializationListener.dart';
import 'package:clever_ads_solutions/public/ManagerBuilder.dart';
import 'package:clever_ads_solutions/public/MediationManager.dart';
import 'package:flutter/material.dart';
import 'package:clever_ads_solutions/CAS.dart';
import 'package:clever_ads_solutions/public/AdTypes.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  Widget? bannerWidget;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Clever Ads Solutions Example App'),
        ),
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              bannerWidget ?? CircularProgressIndicator(),

              ElevatedButton(
                child: Text('1. Inititalize'),
                onPressed: () => inititalize(),
              ),
              ElevatedButton(
                child: Text('2. TEST ERROR'),
                onPressed: () {
                  setState(() {
                    bannerWidget = BannerView(
                      size: AdSize.Banner,
                      isAutoloadEnabled: true,
                    );
                  });
                }
              ),
              ElevatedButton(
                child: Text('Show interstitial'),
                onPressed: () => showInterstitial(),
              ),
              ElevatedButton(
                child: Text('Show rewarded'),
                onPressed: () => showRewarded(),
              ),
              ElevatedButton(
                child: Text('Create standart banner'),
                onPressed: () => createStandartBanner(),
              ),
              ElevatedButton(
                child: Text('Create adaptive banner'),
                onPressed: () => createAdaptiveBanner(),
              ),
              ElevatedButton(
                child: Text('Change banner position to top'),
                onPressed: () => changeBannerTop(),
              ),
              ElevatedButton(
                child: Text('Change banner to bottom'),
                onPressed: () => changeBannerBottom(),
              ),
            ],
          ),
        ),
      ),
    );
  }

  MediationManager? manager;

  Future<void> inititalize() async {
    CAS.setDebugMode(true);

    CAS.setFlutterVersion("1.20.0");

    CAS.validateIntegration();

    ManagerBuilder builder = CAS
        .buildManager()
        .withTestMode(true)
        .withCasId("demo")
        .withAdTypes(AdTypeFlags.Banner |
            AdTypeFlags.Rewarded |
            AdTypeFlags.Interstitial)
        .withInitializationListener(InitializationListenerWrapper());

    manager = builder.initialize();
  }

  Future<void> showInterstitial() async {
    manager?.showInterstitial(InterstitialListenerWrapper());
  }

  Future<void> showRewarded() async {
    manager?.showRewarded(InterstitialListenerWrapper());
  }

  CASBannerView? view;
  Future<void> createAdaptiveBanner() async {
    view = manager?.getAdView(AdSize.Adaptive);
    view?.setAdListener(BannerListener());
    view?.setBannerPosition(AdPosition.TopCenter);
    view?.showBanner();
  }

  Future<void> createStandartBanner() async {
    view = manager?.getAdView(AdSize.Banner);
    view?.setAdListener(BannerListener());
    view?.showBanner();
  }

  void changeBannerTop() {
    view?.setBannerPosition(AdPosition.TopCenter);
  }

  void changeBannerBottom() {
    view?.setBannerPosition(AdPosition.BottomCenter);
  }
}

class InitializationListenerWrapper extends InitializationListener {
  @override
  void onCASInitialized(InitConfig initialConfig) {
    String error = initialConfig.error;
    String countryCode = initialConfig.countryCode;
    bool isTestMode = initialConfig.isTestMode;
    bool isConsentRequired = initialConfig.isConsentRequired;
  }
}

class InterstitialListenerWrapper extends AdCallback {
  @override
  void onClicked() {}

  @override
  void onClosed() {}

  @override
  void onComplete() {}

  @override
  void onImpression(AdImpression? adImpression) {}

  @override
  void onShowFailed(String? message) {}

  @override
  void onShown() {}
}

class BannerListener extends AdViewListener {
  @override
  void onAdViewPresented() {}

  @override
  void onClicked() {}

  @override
  void onFailed(String? message) {}

  @override
  void onImpression(AdImpression? adImpression) {}

  @override
  void onLoaded() {}
}

class LoadCallback extends AdLoadCallback {
  @override
  void onAdFailedToLoad(AdType adType, String? error) {}

  @override
  void onAdLoaded(AdType adType) {}
}

ps. You should also test it on Flutter 3.x, I see that your example still uses 2.x in pubspec.yaml.

Were you able to reproduce this error?

Fixed in version 0.4.0.

authors: Jedures Str4tos bugrevealingbme kraativ wszak

repo: cleveradssolutions/CAS-Flutter


text:
Integration leads can add and remove source studies for thier atlases - BE + API

Updates to the DB Schema to hold the "Resource" the role applies to.
New role INTEGRATION_LEAD also has STAKEHOLDER + add and remove source datasets on the given atlas(es)

A candidate for the update to the /me response to indicate the resource(s) associated with the role

roleAssociatedResourceIds property holding an array of strings

An update to the user table to hold the resource associated with the new role.

New uuid[] column role_associated_resource_ids

Update to the user object to show the resource(s) associated with the users role.

Not currently applicable -- there are no types of user objects distinct from the above two

An approach to have the INTEGRATION_LEAD extend the STAKEHOLDER view.

Don't have an inherent relationship between the two; use role groups to give them the same abilities as appropriate

Complete

source: gharchive/issue

repo: clevercanary/hca-atlas-tracker

license_type: permissive

license_source: github-api


text:
Unable to run on Ubuntu 18.04 with ROS Melodic

I am trying to run this on ros-melodic with python 2.7 but I keep getting
AttributeError: module 'enum' has no attribute 'IntFlag' error
I see that it has only been tested on ROS-Noetic, so does this mean there is a dependency where it can only runon python 3.x or can it be run on python 2.x too?

Hi @kushal2507
I have tested only on ROS-Noetic wiht Python 3.
Perhaps, editing the shebang line "#!/usr/bin/env python3" at the top of each python script may solve your problem. But I haven't tested it until now!

repo: cliansang/uwb-tracking-ros

license: MIT


text:
Updating the code the "normal" way

Had an earlier clone, was on master branch, everything was in order as "git status"
nothing to commit, working tree clean
Then I updated my clone the usual way, just typing "git pull", but got plenty of warnings about
conflicts and so on. After that, "git status" reports:
On branch master
Your branch and 'origin/master' have diverged,
and have 1106 and 2212 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
so it looks like I am far from a clean update.
My question: how to proceed when trying to update my Oceananigans local clone and
why the standard way does not work for this repos ?

Guessing this isn't an issue anymore so closing.

authors: ali-ramadhan jm-c


text:
Cold staking progress network switch

On mobile resolution the switch is not very ergonomic

Fixed #e100be388dc54fd1e0d0cbbf93ad501f3531a0f5


text:
Updated Disable_Windows_Defender GPO

I keep getting caught by Windows Defender's Real Time Protection. I have disabled it with this update.
Upon update of GPO, Defender now looks like:

I used
 Get-GPOReport -Name "Disable Windows Defender" -ReportType xml -Path "C:\tools\gpreport.xml"
To pull this from DC.
The main change here
          <q1:Name>Turn on behavior monitoring</q1:Name>
          <q1:State>Disabled</q1:State>
          <q1:Explain>This policy setting allows you to configure behavior monitoring.

    If you enable or do not configure this setting, behavior monitoring will be enabled.

    If you disable this setting, behavior monitoring will be disabled.</q1:Explain>

Hmm, I think there's something else at play here. These are my settings without this fix applied:

Maybe the win10 host is having trouble pulling down the updated GPO from the dc host?

I believe you are correct! Thank you for double checking.

source: gharchive/pull-request

authors: MHaggis clong

repo: clong/DetectionLab


text:
Add In CI to validate kraken-hub scenarios

Add in Ci to validate kraken-hub scenarios and environment variables

Fixed by #21, thanks to @paigerube14!

repo: cloud-bulldozer/kraken-hub


text:
add version to each ES doc

Earlier we are pushing the version as a separate ES document.
This is not helpful for comparing api results based on version in
grafana dashboard. So we are now adding version to each ES
document.
An example ES doc with version looks like below
https://perf-results-kibana.apps.observability.perfscale.devcluster.openshift.com/app/discover#/doc/d0903d00-bbf8-11ec-a458-7d128bdee616/ocm-request-test?id=kLrcbIABs_qA3fnX_5D0
Description
Fixes

Can this be merged?

authors: smalleni venkataanil

repo: cloud-bulldozer/ocm-api-load


text:
Use alembic with sqlalchemy-aurora-data-api

Hey!
Is it possible to use alembic migration with this tool? I have an Aurora serverless cluster with generated secret, but serverless clusters are not public. It would be a huge step to migrate my db using alembic and data api.
Thanks, Tamas

Hey @tomeszmh - I was able to get alembic working, below are the steps I followed.
Currently I manage the revisions/migrations from my local machine. This assumes your machine is configured with the proper aws credentials. My goal is to get this into an automated CI/CD pipeline but haven't had an opportunity to tackle that yet.

Install & initialize alembic

pip install alembic
alembic init alembic

Update alembic.ini and set sqlalchemy.url to the correct connection string (e.g. sqlalchemy.url = postgresql+auroradataapi://:@/DATABASE)
env.py, update run_migrations_online to set connectable with create_engine instead of engine_from_config

def run_migrations_online() -> None:
    ...
    connectable = create_engine(f"postgresql+auroradataapi://:@/DATABASE", echo=True,
                                connect_args=dict(aurora_cluster_arn=os.environ.get("AURORA_CLUSTER_ARN"), secret_arn=os.environ.get("SECRET_ARN")))
    ...

When running revision or upgrade I pass environment variables of the  aurora_cluster_arn and secret_arn

AURORA_CLUSTER_ARN=XXX SECRET_ARN=XXX .env/bin/alembic revision -m "First commit" --autogenerate
AURORA_CLUSTER_ARN=XXX SECRET_ARN=XXX .env/bin/alembic upgrade head

authors: mikeluby tomeszmh

repo: cloud-utils/sqlalchemy-aurora-data-api


text:
add some hooks for transaction service

closes: #ISSUE_Number

Change logs
Describe your change clearly, including what problem is being solved or what feature is being added.
If it has some breaking backward or forward compatibility, please clary.
Why are the changes needed?
Describe why the changes are necessary.
Does this PR introduce any user-facing change?
If yes, please clarify the previous behavior and the change this PR proposes.
How was this patch tested?
Please detail how the changes were tested, including manual tests and any relevant unit or integration tests.
Contributor's Checklist
Here are some reminders and checklists before/when submitting your pull request, please check them:

[ ] Make sure your Pull Request has a clear title and commit message. You can take git-commit template as a reference.
[ ] Sign the Contributor License Agreement as prompted for your first-time contribution(One-time setup).
[ ] Learn the coding contribution guide, including our code conventions, workflow and more.
[ ] List your communication in the GitHub Issues or Discussions (if has or needed).
[ ] Document changes.
[ ] Add tests for the change
[ ] Pass make installcheck
[ ] Pass make -C src/test installcheck-cbdb-parallel
[ ] Feel free to @cloudberrydb/dev team for review and approval when your PR is ready🥳

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.kongfanshen seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

After discussion with @kongfanshen-0801 , let's close the PR.

repo: cloudberrydb/cloudberrydb


text:
🛑 xl.co.id is down

In 9a17252, xl.co.id (https://xl.co.id) was down:

HTTP code: 404
Response time: 3394 ms

Resolved: xl.co.id is back up in bef53a9 after 18 minutes.

repo: cloudbip/upptime


text:
🛑 myrepublic.co.id is down

In 2d8d2ae, myrepublic.co.id (https://myrepublic.co.id) was down:

HTTP code: 0
Response time: 0 ms

Resolved: myrepublic.co.id is back up in 34c9357 after 1 hour, 33 minutes.


text:
🛑 rad.net.id is down

In e7cd7f1, rad.net.id (http://rad.net.id) was down:

HTTP code: 0
Response time: 0 ms

Resolved: rad.net.id is back up in 0ce7c37.


text:
🛑 member.idwebhost.com is down

In 4ba963f, member.idwebhost.com (https://member.idwebhost.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: member.idwebhost.com is back up in 8f9335c.


text:
🛑 cbn.id is down

In 5e6fbf4, cbn.id (https://cbn.id) was down:

HTTP code: 0
Response time: 0 ms

Resolved: cbn.id is back up in 37edcb5.


text:
Inital commit of playground feature

support ccli play  with options

See https://github.com/cloudblue/connect-playground/tree/feature/ccli with set of relevant scripts.

Codecov Report

Merging #49 (969416d) into master (5d2bffc) will increase coverage by 0.28%.
The diff coverage is 94.04%.

@@            Coverage Diff             @@
##           master      #49      +/-   ##
==========================================
+ Coverage   88.61%   88.89%   +0.28%
==========================================
  Files          42       46       +4
  Lines        2968     3135     +167
  Branches      493      518      +25
==========================================
+ Hits         2630     2787     +157
- Misses        240      250      +10
  Partials       98       98

Impacted Files
Coverage Δ

connect/cli/plugins/play/commands.py
83.60% <83.60%> (ø)

connect/cli/core/base.py
100.00% <100.00%> (ø)

connect/cli/plugins/play/context.py
100.00% <100.00%> (ø)

connect/cli/plugins/play/save.py
100.00% <100.00%> (ø)

connect/cli/plugins/play/script.py
100.00% <100.00%> (ø)

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 5d2bffc...969416d. Read the comment docs.

authors: codecov-commenter vgrebenschikov

repo: cloudblue/connect-cli


text:
Questions on ResourceProviders

Hi again @lindyhopchris,
as you stated in https://github.com/cloudcreativity/laravel-json-api/issues/223#issuecomment-423231762 there is the possibility to hook in API resources from libraries. I implemented that approach for my "auth" module which gives permissions, roles and users. I'm using a ResourceProvider in my unit tests which work just fine.
As far as I understand the routes defined inside the mount() method will get the middlewares applied from the call to JsonApi::register('bla', [...]) inside a routes file or wherever it got called. Can you give more details on this please?
Another question raised. What if I want to add additional relationship routes for the users resource, which is defined in a ResourceProvider, in on of my projects using this provider? Or maybe even add relationship routes from another library (which has a dependency on the "auth" library)? Assuming the ResourceProvider contains something like this:
public function mount(ApiGroup $api, Registrar $router) {
	// roles and permissions resources

	$api->resource('users', [
		'has-many' => ['permissions', 'roles'],
	]);
}

Best regards :smile:

Hi! The mount method occurs within the JSON API route definitions - i.e. you are adding to the API. E.g. in the consuming application:
JsonApi::register('v1', ['middleware' => 'foo'], function ($api) {
  $api->resource('posts');
  // resource provider mounting occurs here
});

There's no support for routes that your package would want to add outside the JsonApi::register grouping, as that's outside of the scope of this package. Your installation instructions for your package would need to provide additional information on how to register those additional routes outside of JSON API.

authors: jannis-a lindyhopchris

repo: cloudcreativity/laravel-json-api

license_source: bigquery


text:
Improve memory usage by serializing the response object directly

When serializing big responses as JSON (tens of MBs), Cloud Endpoints can easily trigger OOMEs, even on the relatively "big" F4 App Engine instances. This is caused by the creation of an intermediate String object containing the whole JSON response.
This change does not create the intermediate String anymore, and streams the JSON output directly to the response (even if it's not real streaming on App Engine).
As a side effect, the Content-Length header is not set by default, as it's not necessary anyway on App Engine (removed or changed by front-end servers).
The header can be reenabled if necessary with the servlet init parameter addContentLength=true, with a negligible performance penalty (requires the object to be serialized twice). However, I don't see any obvious use case for it.
After this change, F2 instance can reach the maximum response size of 32MB without OOME. Previously, OOME started to happen around 22MB reponse size.
It also provides a significant latency improvement (3.5s vs. 4.5s on a F2 instance for a quite complex 12MB JSON reponse).
Note: if you intend to perform performance tests, you should not map the EndpointsServlet to the default /_ah/api/* path, as the request would be going through the legacy Endpoints v1 servers, that add a very significant latency to big responses (even if Endpoints v1 is officially shut down since August 2, 2018)

Codecov Report

Merging #159 into master will increase coverage by 0.04%.
The diff coverage is 100%.

@@             Coverage Diff              @@
##             master     #159      +/-   ##
============================================
+ Coverage        80%   80.05%   +0.04%
- Complexity     1680     1681       +1
============================================
  Files           156      156
  Lines          5597     5601       +4
  Branches        731      733       +2
============================================
+ Hits           4478     4484       +6
+ Misses          839      837       -2
  Partials        280      280

Impacted Files
Coverage Δ
Complexity Δ

...pi/server/spi/handlers/EndpointsMethodHandler.java
100% <ø> (ø)
10 <0> (ø)
:arrow_down:

...rver/spi/response/ServletResponseResultWriter.java
94.73% <100%> (+2.73%)
17 <3> (ø)
:arrow_down:

.../server/spi/response/RestResponseResultWriter.java
100% <100%> (ø)
5 <1> (ø)
:arrow_down:

...pi/server/spi/ServletInitializationParameters.java
96% <100%> (+0.25%)
18 <0> (+1)
:arrow_up:

...c/main/java/com/google/api/server/spi/EnvUtil.java
70% <0%> (ø)
8% <0%> (ø)
:arrow_down:

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 c2a26bd...acad93c. Read the comment docs.

Hmm, do you happen to be using API management? I have a hunch that it was programmed this way specifically because of API management. We may need to make adjustments to accommodate this change.

I don't use it on production projects, but I performed tests both on Flex with ESP and Standard with ServiceManagementConfigFilter + GoogleAppEngineControlFilter, and everything seems to work fine.
Also, it seems like the Flex + ESP behaves mostly like Standard + GSE:

When possible, response is automatically gzipped and chunked
If the client does not accept gzip, Content-Length is automatically added, even when not provided by backend

So at least for App Engine (Flex or Standard), the Content-Length header is never needed.
I don't know for other kind of deployments (GCE, GKE, local ESP, etc.).
What part of the changes do you think could cause issues with API management?

I don't remember, it's mostly dejavu feelings in my head :) since you've tested it, I think it's no worry.

authors: clementdenis codecov-io tangiel

repo: cloudendpoints/endpoints-java


text:
roles/deployment/cluster/tasks/create_data_context.yml  failed_when condition not correct

Hi,
in create_data_context.yml the failed_when condition seems to be not correct
---

- name: Create data contexts
  cloudera.cluster.cm_api:
    endpoint: /dataContexts
    method: POST
    body: "{{ lookup('template', 'sdx/data_context.j2', convert_data=False) }}"
  loop: "{{ cluster.data_contexts }}"
  loop_control:
    loop_var: data_context
  register: result
  failed_when:
    - result.status != 200
    - "'already exists' not in result.json.message | default('')"
  when:
    - cluster.data_contexts is iterable
    - "'HDFS' in cluster.services"

I get the following error if i run the cluster.yml playbook a second time
TASK [cloudera.cluster.cluster : Create data contexts] *******************************************************************************************************************************************************************************************************
failed: [cm001.cdp.lan] (item={'name': 'SDX', 'services': ['HDFS', 'HIVE', 'ATLAS', 'RANGER', 'OZONE']}) => {"ansible_loop_var": "data_context", "cache_control": "no-cache, no-store, max-age=0, must-revalidate", "changed": false, "connection": "close", "content": "{\n  \"message\" : \"Data Context with the name SDX already exists\"\n}", "content_type": "application/json;charset=utf-8", "data_context": {"name": "SDX", "services": ["HDFS", "HIVE", "ATLAS", "RANGER", "OZONE"]}, "date": "Thu, 14 Dec 2023 12:40:11 GMT", "elapsed": 0, "expires": "0", "failed_when_result": true, "msg": "Status code was 400 and not [200]: HTTP Error 400: Bad Request", "pragma": "no-cache", "redirected": false, "set_cookie": "SESSION=ZTQ5NjUwYmMtZjY4MC00M2YzLTllNWUtMWZhNjkyOGNlOWJi; Path=/; Secure; HttpOnly; SameSite=Lax", "status": 400, "strict_transport_security": "max-age=31536000 ; includeSubDomains", "url": "https://cm001.cdp.lan:7183/api/v54/dataContexts", "x_content_type_options": "nosniff", "x_frame_options": "DENY", "x_xss_protection": "1; mode=block"}

Because of the loop  everything is put into result.results array.

- debug:
    msg:
     - "result is {{result.results[0].status}}"
     - "message is {{result.results[0].content}}"

ok: [cm001.cdp.lan] => {
    "msg": [
        "result is 400",
        "message is {\n  \"message\" : \"Data Context with the name SDX already exists\"\n}"
    ]
}

Regards
Uli

Thanks for submitting this issue. The failed_when does look off.
In the (hopefully near) future, this entire task and function will be consumed into a single module. Something like cloudera.cluster.cm_data_context and looping with that module.

authors: hadoopch wmudge


text:
My AWS Ubuntu 14 was missing libz-dev

Need libz-dev too

Thanks for the PR!
I am on Ubuntu 14 and don't need this lib:
dpkg -l | grep libz-dev
returns nothing
Could you double ckeck that it is really needed?

@romainr Ubuntu aliases the library as zlib1g-dev. You should find that is installed on your system.
apt-get install libz-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'zlib1g-dev' instead of 'libz-dev'
zlib1g-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 125 not upgraded.

The reason I tried to install libz and not zlib is because the error report was a link error on: -lz
dpkg -l | grep zlib yields:
ii  zlib1g:amd64                          1:1.2.8.dfsg-1ubuntu1               amd64        compression library - runtime
ii  zlib1g-dev:amd64                      1:1.2.8.dfsg-1ubuntu1               amd64        compression library - development

Indeed, I get the same, thanks!
And would you mind putting your name to the legal contributor list?
https://github.com/cloudera/hue/wiki/Ccla#online-form

authors: craigminihan romainr

repo: cloudera/hue


text:
broken link to dnssec blog post

Example URL(s)
https://developers.cloudflare.com/dns/dnssec/dnssec-states/
Actual Behavior
The sentence ``Refer to How DNSSEC works to learn more about the authentication process and records involved.` has a link to https://www.cloudflare.com/dns/dnssec/how-dnssec-works/ . This link is broken and currently leads to a 404 page.
Expected Behavior
The link in Refer to How DNSSEC works to learn more about the authentication process and records involved. actually points to a document.
Additional information
No response

Hello,
This is Kevin Herrera from mrkeng. We fixed the 404 page. It is now live https://www.cloudflare.com/dns/dnssec/universal-dnssec/
The url can be added back to the docs.

authors: kherrera-cf yekta-flink

repo: cloudflare/cloudflare-docs


text:
Revert "Improve copy to clipboard for code snippets "

Reverts cloudflare/cloudflare-docs#5467
This deletes recent changes our team has made to the CSS and breaks existing functionality on all product pages (the collapse sidebar CSS) and on specific pages where we've implemented our new Overview template (developers.cloudflare.com/argo-smart-routing/)

The specific PRs and live changes in our repo are #5483 and #5454


text:
SetWorkersSecret doesn't work for unencrypted, fails if unencrypted already set

Confirmation

[X] My issue isn't already found on the issue tracker.
[X] I have replicated my issue using the latest version of the library and it is still present.

cloudflare-go version
v0.60.0
Go environment
GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/slester/Library/Caches/go-build"
GOENV="/Users/slester/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/slester/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/slester/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/opt/homebrew/Cellar/go/1.19.5/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/opt/homebrew/Cellar/go/1.19.5/libexec/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.19.5"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/slester/src/github.com/cloudflare/cloudflare-go/go.mod"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/bb/mj30xnl142bg3fpz78c_g1700000gn/T/go-build3396119799=/tmp/go-build -gno-record-gcc-switches -fno-common"
Expected output
I'm trying to use the Workers API to update a secret (SetWorkersSecret with type text). The comment in the Go library says "SetWorkersSecret creates or updates a secret" that already exists as an environment variable (plain text).
Actual output
"global variable VAR_LIST already set (10053)"
Code demonstrating the issue
	res, err := s.api.SetWorkersSecret(ctx, workerName, &cloudflare.WorkersPutSecretRequest{
		Name: key,
		Text: value,
		Type: "text",
	})

Still tries to put it as an encrypted (secret_text) and fails if unencrypted is already set
Steps to reproduce
See code
References
No response

can you expand on your steps to reproduce here? a minimal runnable go file would be great to show how/where your issue is happening.

authors: jacobbednarz slester

repo: cloudflare/cloudflare-go


text:
ListZoneRulesets does not produce expected output

Confirmation

[X] My issue isn't already found on the issue tracker.
[X] I have replicated my issue using the latest version of the library and it is still present.

cloudflare-go version
0.64
Go environment
GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/foo/Library/Caches/go-build"
GOENV="/Users/foo/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/foo/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/foo/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/opt/homebrew/Cellar/go@1.19/1.19.6/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/opt/homebrew/Cellar/go@1.19/1.19.6/libexec/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.19.6"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/cb/tjw9rzkd0y95s9xwkm4gfwlw0000gq/T/go-build976933174=/tmp/go-build -gno-record-gcc-switches -fno-common"

Expected output
In my CF project I have a set of legacy RateLimit rules, which i can operate with using the RateLimit objects, as well as a new rule created in the UI using the new api, with RuleSets, as seen in the screenshot:

When i try using the new RuleSet API to list my rules (using this docs as guidelines) I only see some CF managed rules, but not those I have created.
Actual output
Output formatted into yaml format:
- description: Created by the Cloudflare security team, this ruleset is designed to
    provide protection for free zones
  id: 77454fe2d30c4220b5701f6fdfb893ba
  kind: managed
  last_updated: "2023-03-02T15:21:02.819432Z"
  name: Cloudflare Managed Log4J Ruleset
  phase: http_request_firewall_managed
  rules: null
  version: "50"
- description: Created by the Cloudflare security team, this ruleset is designed to
    provide fast and effective protection for all your applications. It is frequently
    updated to cover new vulnerabilities and reduce false positives.
  id: efb7b8c949ac4650a09736fc376e9aee
  kind: managed
  last_updated: "2023-04-03T15:58:39.450109Z"
  name: Cloudflare Managed Ruleset
  phase: http_request_firewall_managed
  rules: null
  version: "135"
- description: Automatic mitigation of HTTP-based DDoS attacks. Cloudflare routinely
    adds signatures to address new attack vectors. Additional configuration allows
    you to customize the sensitivity of each rule and the performed mitigation action.
  id: 4d21379b4f9f4bb088e0729962c8b3cf
  kind: managed
  last_updated: "2023-04-05T17:53:22.946376Z"
  name: DDoS L7 ruleset
  phase: ddos_l7
  rules: null
  version: "1230"
- description: Created by the Cloudflare security team, this ruleset is designed to
    provide protection for free zones
  id: 77454fe2d30c4220b5701f6fdfb893ba
  kind: managed
  last_updated: "2023-03-02T15:21:02.819432Z"
  name: Cloudflare Managed Log4J Ruleset
  phase: http_request_firewall_managed
  rules: null
  version: "50"
- description: Automatic mitigation of HTTP-based DDoS attacks. Cloudflare routinely
    adds signatures to address new attack vectors. Additional configuration allows
    you to customize the sensitivity of each rule and the performed mitigation action.
  id: 4d21379b4f9f4bb088e0729962c8b3cf
  kind: managed
  last_updated: "2023-04-05T17:53:22.946376Z"
  name: DDoS L7 ruleset
  phase: ddos_l7
  rules: null
  version: "1230"
- id: e4d2d76d10c94f659ef6602b9d02e4d4
  kind: zone
  last_updated: "2021-10-15T13:48:02.212631Z"
  name: default
  phase: http_ratelimit
  rules: null
  version: "3"

As you can see the API list some RuleSets, for all phases, including http_ratelimit but I do not get the one rule I have created via the UI.
Code demonstrating the issue
# client is an wrapper around cloudflare.API from this library
var rules []cloudflare.Ruleset
for _, zone := range client.Zones {
  all, err := client.API.ListZoneRulesets(ctx, zone)
  if err != nil {
    return errors.WithStack(err)
  }
  for _, limit := range all {
    rules = append(rules, limit)
  }
}

Steps to reproduce

Create an Advanced Rateimit rule via the UI
Try to list it using either ListZoneRulesets(ctx, zone) or ListAccountRulesets(ctx, client.API.AccountID)
Don't get the desired output

Am I using the wrong object/methods of the library, or does the library not yet support the Advanced RateLimit objects using RuleSets?
References
No response

that UI is for the previous version of rate limiting, not rulesets. to access those rules you need to query for legacy rate limiting endpoints (source)

the upper most UI is for the filter based firewall which is another set of endpoints again (source)

I was able to query the rules in question by using
client.API.GetZoneRulesetPhase(ctx, zone, string(cloudflare.RulesetPhaseRateLimit))

authors: Demonsthere jacobbednarz


text:
[flarectl] Adds User-Agent blocking to flarectl

Adds the user-agents (shortname: ua) sub-command for managing User-Agent Blocking rules:
$ flarectl user-agents
NAME:
   flarectl user-agents - User-Agent blocking

USAGE:
   flarectl user-agents command [command options] [arguments...]

COMMANDS:
   list, l      List User-Agent blocks for a zone
   create, c    Create a User-Agent blocking rule
   update, u    Update an existing User-Agent block
   delete, d    Delete a User-Agent block
   help, h      Shows a list of commands or help for one command

OPTIONS:
   --help, -h   show help

Example:
flarectl ua l --zone="questionable.services"
 ID                               Description                          Mode         Value                             Paused
-------------------------------- ------------------------------------ ------------ --------------------------------------------------------------------------------------------------------------------- ------
62d49d9eacca445b9973f583688b74e7 Block the worst browser in the world block        Wawoo Browser 90210                                                                                false
1ab4054cca55471387e407b35c6cc267 block IE6                            block        Mozilla/6.0 (osh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4       false
95ccf4e26e714d7c8e55d9a858258061 block IE6                            block        Mozilla/5.0 (osh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4       false
fdff66612b0a4d73ae72a0f13e7c6693 block IE6                            js_challenge Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4 false

Future work: improve the way we render table output.

Fixed a bug on PUT requests where the id was not appended to the request URI.


text:
Update guzzlehttp/guzzle to version 7

Please update guzzlehttp/guzzle to version 7.
Thank you in advance.

Guzzle 7 requires a minimal version of php:^7.2.5 which may reduce the compatibility of this library which currently supports php:>=7.0
Do we have any policy around what is the minimum supported version of PHP? @IcyApril

@haphan https://www.php.net/supported-versions.php

As the guzzle7 PR was merged, is there any ETA on when a new release will be tagged?

Also curious when a release will be made, this is the only package keeping me from updating my project.

@IcyApril Can we get a release tagged so we can use the merged Guzzle 7 PR? Thanks!

I think we can temporarily install the package from the master branch to use the merged Guzzle 7 PR.
composer require cloudflare/sdk:dev-master

I think we can temporarily install the package from the master branch to use the merged Guzzle 7 PR.
composer require cloudflare/sdk:dev-master

I would lock it on the commit hash for now
"cloudflare/sdk": "dev-master#7db3d6e62c7ab8fa29780354e8d370c49939cdec",

This is like 2 months old now, when will Guzzle 7 be tagged? Just do a major version update for it. 1.2.x or 2.x or however you want.

Does no one at Cloudflare use this package at all? If you put yourself through your customer/user pain points, things get done a lot faster... 😞

Does no one at Cloudflare use this package at all? If you put yourself through your customer/user pain points, things get done a lot faster... 😞

@IcyApril Any idea what's going on? How can we (the community) help?

@IcyApril Any idea what's going on? How can we (the community) help?

Does no one at Cloudflare use this package at all? If you put yourself through your customer/user pain points, things get done a lot faster... 😞

https://www.parkersoftware.com/blog/are-you-eating-your-own-dog-food/

Does no one at Cloudflare use this package at all? If you put yourself through your customer/user pain points, things get done a lot faster... 😞

https://www.parkersoftware.com/blog/are-you-eating-your-own-dog-food/

Does no one at Cloudflare use this package at all? If you put yourself through your customer/user pain points, things get done a lot faster... 😞

https://www.parkersoftware.com/blog/are-you-eating-your-own-dog-food/

Does no one at Cloudflare use this package at all? If you put yourself through your customer/user pain points, things get done a lot faster... 😞

https://www.parkersoftware.com/blog/are-you-eating-your-own-dog-food/

Any update as to when the new version will be tagged?

This should be closed as they have released 1.1.7 with Guzzle 7, although I believe this should have been at least 1.2 but ideally, 2.0 as this does break if we have other packages relying on Guzzle 6.

Complete lack of feedback from maintainers is really disappointing.
While, off course , depending on a newer Guzzle version is a good thing for the project, making it user friendly way is completely possible and a preferred. As was previously suggested, that could be done in two ways:

releasing v2 of the package
allowing both versions to co-exist with ^6.0 || ^7.0 version constraint in 1.x release

On behalf of community and users of this project I'm asking maintainers to update version constraint to ^6.0 || ^7.0 and release new version for 1.x branch.

authors: Braunson MrPropre PropreCity RoSk0 SDekkers aaronhuisinga dmyers dougblackjr dungahk haphan rtconner

repo: cloudflare/cloudflare-php


text:
Revert behavior of Element::on_end_tag() and added Element::add_on_end_tag().

This avoid compatibility problems in dependent projects.

Can a test for this behavior be added?

Done.

repo: cloudflare/lol-html


text:
Mailchannels: Better Error Message on Failure

I've followed the docs trying to get Mailchannels working:

https://blog.cloudflare.com/sending-email-from-workers-with-mailchannels
https://developers.cloudflare.com/pages/functions/plugins/mailchannels/

But I always just get the error message:
Could not send your email. Please try again.
The source of which I discovered here:
https://github.com/cloudflare/pages-plugins/blob/main/packages/mailchannels/functions/_middleware.ts#L100-L102
A more descriptive error would be more helpful for debugging problems. When googling I've noticed a lot of others get confused too. I think more information would be much appreciated. Or at least return the error so our users code can choose to log it etc.
Is there any way to get more info or debug how configuration is failing?

MailChannels has officially announced an End of Life for their Workers integration:
https://community.cloudflare.com/t/mailchannels-end-of-life-notice-migrate-now/658638
I've opened a PR to remove the plugin since it'll become inoperable in just over a month (https://github.com/cloudflare/pages-plugins/pull/63) and I would encourage you to migrate to alternatives.

Thanks for filing this issue. As @Cherry said, this plugin has now been deprecated on account of MailChannels' sunsetting of their free email sending API, so I'm going to close out this issue.

authors: Cherry GregBrimble hekuli

repo: cloudflare/pages-plugins


text:
Ability to add and remove backends to a LoadBalancer

What is the problem your feature solves, or the need it fulfills?
A LoadBalancer contains (private) backends. These backends are static and cannot be updated through the LoadBalancer struct.
Request:
provide an interface for adding and removing backends from a LoadBalancer
Reasoning:
I have a service that is serving an (R) application e.g. localhost:9000. When demand increases, I want to spawn a new instance localhost:9001 and add that instance to the load balancer. When demand subsides, I would like to despawn and remove localhost:9001 from the LoadBalancer.
Describe the solution you'd like
A method or trait that allows me to add a Backend to a LoadBalancer struct.
Describe alternatives you've considered
I've tried utilizing the ServiceDiscovery trait with a custom struct that is based on the Static struct. However, I have not had success with this. There are Send issues and what things I have gotten to work has caused the reverse proxy to just hang. So my Rust and Pingora-fu have failed me
#[derive(Default, Debug)]
pub struct ShinyListeners {
    backends: Arc<RwLock<BTreeMap<Backend, Arc<Child>>>>,
}

impl ShinyListeners {
    /// return the collection to backends
    pub fn get(&self) -> BTreeMap<Backend, Arc<Child>> {
        let backends = self.backends.read().unwrap();
        backends.clone()
    }
}

#[async_trait::async_trait]
impl ServiceDiscovery for ShinyListeners {
    async fn discover(&self) -> Result<(BTreeSet<Backend>, HashMap<u64, bool>)> {
        let health = HashMap::new();
        let mut backends = BTreeSet::new();
        for (backend, _) in self.get().iter() {
            backends.insert(backend.clone());
        }
        Ok((backends, health))
    }
}

Additional context
This could include references to documentation or papers, prior art, screenshots, or benchmark
results.

Interesting enough, the Static struct has pub(crate) fns to add/remove backends: https://github.com/cloudflare/pingora/blob/a432c2da9b71a2cf1e5169cabc1205cc272c4c9c/pingora-load-balancing/src/discovery.rs#L81
So in theory you could copy this implementation (considering the data race) and create your own struct that is able to remove them:
let backends = ArcSwap::new(Arc::new(Backend {...}));
let discovery = YourStaticStruct::new(Backends { backends });
let your_load_balancer = LoadBalancer::from_backends(discovery.backends);

// Your struct has a function to swap the backend on removal:
discovery.remove_backend(backend_to_remove); // This is probably a .store in a arcswap

discovery.add_backend(backend_to_add); // same here

your_load_balancer.update().now_or_never()

But you will either need to use ArcSwap or DashMap to be able to add or remove to cascade changes (or the rwlock if you can)
These are mostly theoretical, I haven't tested these ^ -- maybe someone directly from CF has more details.

The suggest for a DashMap is quite helpful. I'm getting somewhere with it. I've tried implementing a Dynamic struct like so
#[derive(Clone, Debug)]
pub struct Dynamic {
    pub backends: DashSet<Backend>,
}

impl Dynamic {
    /// Create a new boxed [Dynamic] service discovery with the given backends.
    pub fn new(backends: DashSet<Backend>) -> Box<Self> {
        Box::new(Dynamic { backends })
    }

    pub fn get(&self) -> DashSet<Backend> {
        self.backends.clone()
    }

    pub fn add(&self, backend: Backend) {
        self.backends.insert(backend);
    }

    pub fn remove(&self, backend: &Backend) {
        self.backends.remove(backend);
    }
}

which I wanted to use alongside with my own wrapper struct
pub struct MyService {
    pub backends: Dynamic,
    pub load_balancer: LoadBalancer<RoundRobin>,
}

but the challenge is that since the load_balancer takes the Box<dyn ServiceDiscovery> so getting a struct to store the same Dynamic as that was consumed by the LoadBalancer doesn't seem easily feasible from my POV
For example I tried creating it like:
impl MyService {
    pub fn new(entrypoint: &str) -> Self {
        // use Arc for cloning the Dynamic to retain after
       // being consumed by the
        let arc_dynamic = Arc::new(Dynamic {
            backends: DashSet::new(),
        });
        let xx = arc_dynamic.as_ref().clone().to_owned();

        let dynamic = Box::new(arc_dynamic.as_ref().clone());
        let backends = Backends::new(dynamic);
        let lb = LoadBalancer::from_backends(backends);

        Self {
            backends: xx,
            load_balancer: lb,
        }
}

But the issue here is that the LoadBalancer doesn't get updated when the Dynamic does e.g
// from reverse proxy trait impl
async fn upstream_peer(&self, _session: &mut Session, _ctx: &mut ()) -> Result<Box<HttpPeer>> {
        println!("Dynamic: {:?}", self.0.backends);
        println!(
            "Load Balancer: {:?}",
            self.0.load_balancer.backends().get_backend()
        );
// .... truncated
// outputs:
#> Dynamic: Dynamic { backends: {Backend { addr: Inet(0.0.0.0:35462), weight: 1 }: (), Backend { addr: Inet(0.0.0.0:42913), weight: 1 }: ()} }
#> Load Balancer: {}

For the time being, though, I can develop mimicking a random load balancing algorithm by grabbing a random backend from the Dynamic which otherwise works!

Thanks for the suggestion! I've adapted this approach and find that the UpdateHandler still does not update the LoadBalancer itself even after calling lb.update().await.
pub struct Discovery(Arc<DashMap<Backend, Child>>);
pub struct UpdateHandler(Arc<DashMap<Backend, Child>>);

fn create_handlers() -> (Discovery, UpdateHandler) {
    let instances = Arc::new(DashMap::new());
    let discovery = Discovery(instances.clone());
    let update_handler = UpdateHandler(instances);

    (discovery, update_handler)
}

#[async_trait::async_trait]
impl ServiceDiscovery for Discovery {
    async fn discover(&self) -> Result<(BTreeSet<Backend>, HashMap<u64, bool>)> {
        // no readiness
        let health = HashMap::new();

        // initialize an empty BTreeSet
        let mut res = BTreeSet::new();

        // populate the BTreeSet
        for backend in self.0.iter() {
            res.insert(backend.key().clone());
        }

        Ok((res, health))
    }
}

The loadbalancer is created as

pub struct TestApp {
    pub loadbalancer: LoadBalancer<RoundRobin>,
    pub lb_handler: UpdateHandler,
}

impl TestApp {
    pub fn new() -> Self {
        let (discovery, lb_handler) = create_handlers();
        let loadbalancer = LoadBalancer::from_backends(Backends::new(Box::new(discovery)));

        Self {
            loadbalancer,
            lb_handler,
        }
    }

As far as i can tell, there's nothing quite missing here 🤔

As far as I know this is still not possible.

still relevant

@JosiahParry Have you included the update_frequency on the load balancer ?
let mut loadbalancer = LoadBalancer::from_backends(Backends::new(Box::new(discovery)));
loadbalancer.update_frequency = Some(Duration::from_secs(1));

For me the issue was calling discovery() directly which did not work. Because I needed to provision the backend and then use it immediately.

authors: JosiahParry dalton-oliveira luizfonseca

repo: cloudflare/pingora


text:
Cancel pending reads and writes on releaseLock

In the standard streams impl only (for now) cancel pending reads and writes when the reader/writer lock is released per the standard.

This will need an internal PR to fixup a test before this lands here.

repo: cloudflare/workerd


text:
Implement Durable Object alarms in workerd

Workerd now supports running alarms, storing them either in-memory or in a local sqlite database to persist across workerd process restarts.
Still need to hook up the alarms API to the scheduler, but wanted to put this up earlier than later.

Sorry for the late review here -- as you know I'm also trying to meet a dev week deadline so it's been tough keeping up.
I'm really happy you implemented this! This was sorely-missing functionality.
I think, though, that we really need to have a separate alarms database for each DO namespace, per my comment above. Having a global alarms database severely limits the ability to combine and split workerd configs, and means that part of a namespace's data is stored separately from the namespace.
If there's not time to resolve this for dev week, I think as a compromise we could remove the configuration and say for now that alarms are always configured for in-memory use only. That should be OK for local testing purposes. It might even be desirable -- it could be confusing if you start up your test instance and suddenly a bunch of alarms from a past session are delivered?

OK, well... how do we proceed here? I really think it's important that alarms are stored along with the namespace data and not centralized. It also makes the config simpler (no new config is actually needed, I think).
We could name the config property in a way that indicates it's a temporary solution that will change soon, and shouldn't be used in production...

authors: kentonv xortive


text:
🐛 BUG: Any delay will cause the server to error

Which Cloudflare product(s) does this pertain to?
Workers Runtime, Wrangler core
What version(s) of the tool(s) are you using?
3.34.2 [Wrangler], 0.0.21 [workers-rs], 1.78.0-nightly [Rust]
What version of Node are you using?
21.7.1
What operating system and version are you using?
Linux (Fedora) (arm64)
Describe the Bug
Observed behavior
If a minimal delay (or some work) is introduced, the server throws an error.
The log is the following:
✘ [ERROR] A hanging Promise was canceled. This happens when the worker runtime is waiting for a Promise from JavaScript to resolve, but has detected that the Promise cannot possibly ever resolve because all code and events related to the Promise's I/O context have already finished.

Expected behavior
I would expect the work to finish and to respond to the request.
Steps to reproduce

A minimal working subset of your worker code

use worker::{event, Env, Request, Response, Result};

#[event(fetch)]
pub async fn main(_req: Request, _env: Env, _ctx: worker::Context) -> Result<Response> {
    std::thread::sleep(Duration::from_micros(200)); // Shorter delays/actual work also triggers this behavior
    return Response::from_html("<html></html>");
}

A minimal working subset of your wrangler.toml

name = "function"
workers_dev = true
compatibility_date = "2022-01-20"
main = "build/worker/shim.mjs"

[vars]
WORKERS_RS_VERSION = "0.0.21"

[build]
command = "cargo install -q worker-build && worker-build --release" # required

Commands used to start your local dev server, including custom env and cli args

$ npx wrangler dev

I also tried using wrangler beta, but to avail.

Steps to be performed in the browser, curl commands, or a test we can run that reliably fails (at least a percent of the time)
Nothing

Please provide a link to a minimal reproduction
No response
Please provide any relevant error logs
This is a log of starting the local server, opening the page, and then closing the server:
--- 2024-03-18T22:59:16.892Z debug
🪵  Writing logs to "/home/gian/.config/.wrangler/logs/wrangler-2024-03-18_22-59-16_813.log"
---

--- 2024-03-18T22:59:16.892Z debug
Failed to load .env file ".env": Error: ENOENT: no such file or directory, open '.env'
    at Object.openSync (node:fs:580:18)
    at Object.readFileSync (node:fs:459:35)
    at tryLoadDotEnv (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:124353:72)
    at loadDotEnv (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:124362:12)
    at /home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:164011:20
    at /home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:131396:16
    at maybeAsyncResult (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:129617:44)
    at /home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:131395:14
    at /home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:129604:22
    at Array.reduce (<anonymous>) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '.env'
}
---

--- 2024-03-18T22:59:16.898Z log
 ⛅ wrangler 3.34.2
-------------------
---

--- 2024-03-18T22:59:16.901Z log
Running custom build: cargo install -q worker-build && worker-build --release
---

--- 2024-03-18T22:59:17.262Z debug
Retrieving cached values for userId from node_modules/.cache/wrangler
---

--- 2024-03-18T22:59:17.262Z debug
Metrics dispatcher: Dispatching disabled - would have sent {"type":"event","name":"run dev","properties":{"local":true,"usesTypeScript":false}}.
---

--- 2024-03-18T22:59:17.263Z debug
Failed to load .env file "/home/gian/badlang/edge-function/.dev.vars": Error: ENOENT: no such file or directory, open '/home/gian/badlang/edge-function/.dev.vars'
    at Object.openSync (node:fs:580:18)
    at Object.readFileSync (node:fs:459:35)
    at tryLoadDotEnv (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:124353:72)
    at loadDotEnv (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:124362:12)
    at getVarsForDev (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:161686:18)
    at getBindings (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:169301:10)
    at getBindingsAndAssetPaths (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:169257:20)
    at getDevReactElement (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:168929:40)
    at startDev (/home/gian/.npm/_npx/32026684e21afda6/node_modules/wrangler/wrangler-dist/cli.js:168993:60)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/home/gian/badlang/edge-function/.dev.vars'
}
---

--- 2024-03-18T22:59:17.263Z log
Your worker has access to the following bindings:
- Vars:
  - WORKERS_RS_VERSION: "0.0.21"
---

--- 2024-03-18T22:59:17.326Z debug
Writing additional module to output /home/gian/badlang/edge-function/.wrangler/tmp/dev-74zf9U/cd2e406bcaef2dacc340db153b2c17b8a6c76684-index.wasm
---

--- 2024-03-18T22:59:17.328Z log
⎔ Starting local server...
---

--- 2024-03-18T22:59:17.424Z debug
[InspectorProxyWorker] handleProxyControllerIncomingMessage {"type":"reloadStart"}
---

--- 2024-03-18T22:59:17.504Z debug
[InspectorProxyWorker] handleProxyControllerIncomingMessage {"type":"reloadComplete","proxyData":{"userWorkerUrl":{"protocol":"http:","hostname":"127.0.0.1","port":"39449"},"userWorkerInspectorUrl":{"protocol":"ws:","hostname":"127.0.0.1","port":"37791","pathname":"/core:user:edge-function"},"userWorkerInnerUrlOverrides":{"protocol":"http"},"headers":{"MF-Proxy-Shared-Secret":"4464f6a7-e0de-4e1f-a254-48ff5cb6791a"},"liveReload":false,"proxyLogsToController":false,"internalDurableObjects":[]}}
---

--- 2024-03-18T22:59:17.505Z debug
[InspectorProxyWorker] reconnectRuntimeWebSocket
---

--- 2024-03-18T22:59:17.506Z debug
[InspectorProxyWorker] NEW RUNTIME WEBSOCKET http://127.0.0.1:37791/core:user:edge-function
---

--- 2024-03-18T22:59:17.507Z debug
[InspectorProxyWorker] SEND TO DEVTOOLS {"method":"Runtime.executionContextsCleared"}
---

--- 2024-03-18T22:59:17.508Z debug
[InspectorProxyWorker] RUNTIME WEBSOCKET OPENED
---

--- 2024-03-18T22:59:17.509Z debug
[InspectorProxyWorker] SEND TO RUNTIME {"method":"Runtime.enable","id":100000001}
---

--- 2024-03-18T22:59:17.510Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE {
  method: 'Runtime.executionContextCreated',
  params: {
    context: {
      id: 314525313,
      origin: '',
      name: 'Worker',
      uniqueId: '-6388031286083024090.3230764925894258461'
    }
  }
}
---

--- 2024-03-18T22:59:17.511Z debug
[InspectorProxyWorker] SEND TO RUNTIME {"method":"Debugger.enable","id":100000002}
---

--- 2024-03-18T22:59:17.511Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE {
  method: 'Debugger.scriptParsed',
  params: {
    scriptId: '3',
    url: 'file:///home/gian/badlang/edge-function/.wrangler/tmp/dev-74zf9U/shim.js',
    startLine: 0,
    startColumn: 0,
    endLine: 825,
    endColumn: 86,
    executionContextId: 314525313,
    hash: '995b8ac50fc4fd12e3b42a3d2b6c78cd5c89ba60dff0f8b26aad05aab19739db',
    isLiveEdit: false,
    sourceMapURL: 'shim.js.map',
    hasSourceURL: true,
    isModule: true,
    length: 24847,
    scriptLanguage: 'JavaScript',
    embedderName: 'shim.js'
  }
}
---

--- 2024-03-18T22:59:17.512Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE {
  method: 'Debugger.scriptParsed',
  params: {
    scriptId: '4',
    url: 'wasm://wasm/edge_function.wasm-001871c6',
    startLine: 0,
    startColumn: 0,
    endLine: 0,
    endColumn: 400497,
    executionContextId: 314525313,
    hash: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
    isLiveEdit: false,
    sourceMapURL: '',
    hasSourceURL: false,
    isModule: false,
    length: 400497,
    codeOffset: 4678,
    scriptLanguage: 'WebAssembly',
    debugSymbols: { type: 'None' },
    embedderName: 'wasm://wasm/edge_function.wasm-001871c6'
  }
}
---

--- 2024-03-18T22:59:17.513Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE {
  id: 100000002,
  result: { debuggerId: '-7095866075607620815.2873960517711552267' }
}
---

--- 2024-03-18T22:59:17.514Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE { id: 100000003, method: 'Network.enable', result: {} }
---

--- 2024-03-18T22:59:17.514Z debug
[InspectorProxyWorker] SEND TO RUNTIME {"method":"Network.enable","id":100000003}
---

--- 2024-03-18T22:59:17.515Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE { id: 100000001, result: {} }
---

--- 2024-03-18T22:59:19.766Z error
✘ [ERROR] A hanging Promise was canceled. This happens when the worker runtime is waiting for a Promise from JavaScript to resolve, but has detected that the Promise cannot possibly ever resolve because all code and events related to the Promise's I/O context have already finished.

---

--- 2024-03-18T22:59:19.767Z error
✘ [ERROR] A hanging Promise was canceled. This happens when the worker runtime is waiting for a Promise from JavaScript to resolve, but has detected that the Promise cannot possibly ever resolve because all code and events related to the Promise's I/O context have already finished.

---

--- 2024-03-18T22:59:19.768Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE {
  method: 'Runtime.consoleAPICalled',
  params: {
    type: 'warning',
    args: [ [Object] ],
    executionContextId: 314525313,
    timestamp: 1710802759730,
    stackTrace: { callFrames: [] }
  }
}
---

--- 2024-03-18T22:59:19.768Z error
✘ [ERROR] Uncaught (in response) Error: The script will never generate a response.

---

--- 2024-03-18T22:59:19.769Z error
✘ [ERROR] Uncaught (in response) Error: The script will never generate a response.

---

--- 2024-03-18T22:59:19.769Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE {
  method: 'Runtime.exceptionThrown',
  params: {
    timestamp: 1710802759730,
    exceptionDetails: {
      exceptionId: 1,
      text: 'Uncaught (in response)',
      lineNumber: 0,
      columnNumber: -2,
      url: 'undefined',
      exception: [Object],
      executionContextId: 314525313
    }
  }
}
---

--- 2024-03-18T22:59:19.770Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE {
  method: 'Runtime.consoleAPICalled',
  params: {
    type: 'warning',
    args: [ [Object] ],
    executionContextId: 314525313,
    timestamp: 1710802759750,
    stackTrace: { callFrames: [] }
  }
}
---

--- 2024-03-18T22:59:19.770Z debug
[InspectorProxyWorker] RUNTIME INCOMING MESSAGE {
  method: 'Runtime.exceptionThrown',
  params: {
    timestamp: 1710802759750,
    exceptionDetails: {
      exceptionId: 2,
      text: 'Uncaught (in response)',
      lineNumber: 0,
      columnNumber: -2,
      url: 'undefined',
      exception: [Object],
      executionContextId: 314525313
    }
  }
}
---

--- 2024-03-18T22:59:19.770Z debug
workerd/util/symbolizer.c++:96: warning: Not symbolizing stack traces because $LLVM_SYMBOLIZER is not set. To symbolize stack traces, set $LLVM_SYMBOLIZER to the location of the llvm-symbolizer binary. When running tests under bazel, use `--test_env=LLVM_SYMBOLIZER=<path>`.
workerd/server/server.c++:3088: error: Uncaught exception: kj/async-io-unix.c++:186: disconnected: remote.worker_do_not_log; Request failed due to internal error
stack: /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b8982b /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b5d55f /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b5dd97 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b519e3 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@37ee3c3 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@37ee7bf /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b6ee0c /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b6ee0c /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b6ee0c /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@2863d50 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@286d210 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@37e015b /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b519e3 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@37df6fc /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@2863d50 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@2ec2f68 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@2ec337b /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b519e3 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@2d866a8 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@312dcf3 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@286d210 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@37e015b /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@37df6fc /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@2863d50 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@2ec2f68 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@2ec337b /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b519e3 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b51cb7 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@2d878ff /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b519e3 /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b52c1f /home/gian/.npm/_npx/32026684e21afda6/node_modules/@cloudflare/workerd-linux-arm64/bin/workerd@4b59077
---

--- 2024-03-18T22:59:21.593Z debug
Not Implemented Error: ConfigController#teardown
---

--- 2024-03-18T22:59:21.593Z debug
Not Implemented Error: BundlerController#teardown
---

--- 2024-03-18T22:59:21.594Z debug
Not Implemented Error: LocalRuntimeController#teardown
---

--- 2024-03-18T22:59:21.594Z debug
Not Implemented Error: RemoteRuntimeController#teardown
---

--- 2024-03-18T22:59:21.594Z debug
ProxyController teardown
---

--- 2024-03-18T22:59:21.603Z log
⎔ Shutting down local server...
---

We have a Delay type in the worker crate for this, it can be used like this:
use std::time::Duration;
use worker::Delay;

let duration = Duration::from_millis(1000);

// Waits a second
Delay::from(duration).await;

authors: gianzellweger zebp

repo: cloudflare/workers-rs


text:
add type to worker-openapi template endpoints handle function

Author has addressed the following

Tests

[ ] TODO (before merge)
[ ] Included
[x] Not necessary because: only add types

E2E Tests CI Job required? (Use "e2e" label or ask maintainer to run separately)

[ ] I don't know
[ ] Required / Maybe required
[x] Not required because: only add types

Changeset (Changeset guidelines)

[ ] TODO (before merge)
[ ] Included
[x] Not necessary because: only add types

Public documentation

[ ] TODO (before merge)
[ ] Cloudflare docs PR(s):
[x] Not necessary because: only add types

No changeset needed because templates are not publishable.

authors: petebacondarwin rwv

repo: cloudflare/workers-sdk


text:
Add an example/template for react SSR app.

💡 Feature request

Overview and problem statement
There is no documentation available regarding react SSR in Cloudflare workers. Is it possible?
Hoping there is way to deploy serverless app via Cloudflare workers for server side rendering (Nextjs?). What would be the best way to implement react SSR  ?

this is probably a more appropriate issue for our docs repo (https://github.com/cloudflare/workers-docs), however, our own @signalnerve tweeted his example some time ago: https://twitter.com/signalnerve/status/1136297551622283264?s=21

authors: ashleymichal resdevd

repo: cloudflare/wrangler


text:
Document/automate how to migrate from a Wrangler 1 webpack_config / webpack integration to Wrangler 2

wrangler v2 deprecates the type and webpack_config configurations, and it's overall webpack integration story.

This has historically been a pain point both internally and externally. We haven't been able to update the webpack version (v4) because of breaking changes, and it scares away people from using wrangler in the first place.
The other two values for type - javascript and rust don't make much sense anymore since it's really the same thing backing it. And we're going to encourage development in multiple languages (Go, python, what have you) since we want to have the best wasm support ever.
Because we now ship esbuild, we can automatically provide support for a number of features  that bundlers are typically used for: modules, jsx, typescript, etc.

TODO: as part of the effort to be backward compatible, we should have a super low-effort transition guide to moving existing webpack projects to the new wrangler (ideally, we should be able to automate it with a single command/codemod).

So, since webpack_config is deprecated, what do I use?

I want wrangler use webpack on production mode

In Wrangler 2, we use esbuild to bundle the code into a single file (more or less) for uploading to Cloudflare.
So for the majority of cases this completely replaces the webpack bundling in Wrangler 1.
But if you really need to use webpack then our recommended approach is to add it as a prepublish step. There a many ways to implement that but here is one...
In package.json use:
"scripts" {
  "publish": "webpack && wrangler publish",
  "dev": "concurrently -p --kill-others \"webpack --watch\" \"wrangler dev\""
}

In Wrangler 2, we use esbuild to bundle the code into a single file (more or less) for uploading to Cloudflare. So for the majority of cases this completely replaces the webpack bundling in Wrangler 1. But if you really need to use webpack then our recommended approach is to add it as a prepublish step. There a many ways to implement that but here is one...
In package.json use:
"scripts" {
  "publish": "webpack && wrangler publish",
  "dev": "concurrently -p --kill-others \"webpack --watch\" \"wrangler dev\""
}

Never heard about esbuild before. I have some questions.
About esbuild....

Does it have Some kind of command that gives the same functionality as webpack's production mode?
Do you guys allow config customization for esbuild?
About the default behaviour of wrangler2...
What is the default index file  for wrangler2? wrangler2 publish throws errors.
How to set default wrangler2 index file. Previously custom webpack config file was used I think.
Can I you guys make wrangler2 save is output file? Like a customizable output path for testing it’s behaviour.
About development Pipeline...
I want to use Github Workflows for publishing my project. What Authentication method do you suggest? Surely wrangler2 login isn't an option. Or do you suggest Cloudflare API?

Does it have Some kind of command that gives the same functionality as webpack's production mode?

The output of esbuild is a bundled file where imports have been inlined (mostly) similar to webpack. Currently we are not minifying the output. What production mode features of webpack are you looking for here?

Do you guys allow config customization for esbuild?

For now we are treating the bundler as an internal implementation aspect of Wrangler 2. So at the moment we are not allowing the bundling to be extended. There is an issue to track this: https://github.com/cloudflare/wrangler2/issues/234.

What is the default index file for wrangler2?

There is no default index file for Wrangler 2. It must be configured...

How to set default wrangler2 index file.

You can specify the entry-point index file for a Worker in a variety of ways:

In wrangler publish and wrangler dev the first positional command line argument is the path to the index file.
If not provided at the command line, you can specify it in the wrangler.toml via the main property. This is tracked here: https://github.com/cloudflare/wrangler2/issues/575.

Can I you guys make wrangler2 save is output file? Like a customizable output path for testing it’s behaviour.

Currently we do not have a facility to save the output from the bundling to disk.
We would like to improve the testing and debugging story for Workers. There is this issue about improving debugging: https://github.com/cloudflare/wrangler2/issues/573
I want to use Github Workflows for publishing my project. What Authentication method do you suggest? Surely wrangler2 login isn't an option. Or do you suggest Cloudflare API?
If you are publishing from a CI where you cannot have an interactive login, you can currently specify an API token via the CLOUDFLARE_API_TOKEN environment variable.

Ok also I read esbuild docs. If you are using esbuild treating as an internal package then I guess it doesn’t honor esbuild features like browser parameter in package.json. Or, does it do since it’s being executed from the same path as the package.json file?

We pass all the options to esbuild programmatically, so it should not be reading anything from package.json. (And if it is then that is a bug!)

@touhidurrr this should be fixed via #759, can you let us know if the webpack plugin works as expected?

@touhidurrr this should be fixed via #759, can you let us know if the webpack plugin works as expected?

Dunno actually. Already moved to esbuild cause the build time is much faster than webpack. 😅

Closing this anyway. Thank you @caass!

authors: caass petebacondarwin threepointone touhidurrr


text:
Implement IContainer#CreateFirewallRule

It turns out that windows apply firewall rules in a crappy order (block
rules take precendence over allow rules). That means we can't add a
block all rule followed by allow certains ports rule. The way to go here
is to set the default behavior of the firewall to block all outgoing
connections and IronFrame will add rules as needed when
CreateFirewallRule is called.
NOTE: we are having trouble building the project using msbuild. @brannon do you have any idea how to fix it ? That said the test suite is green when run under visual studio.

@brannon we modified the code based on your previous comments. Except for one place where we are exposing a function to be used in the tests. We are going to work on supporting ICMP shortly and will push another commit to the pr. We will let you know as soon as we push.

@brannon  We are going to bail on supporting ICMP. It looks like on windows either everyone gets ICMP or nobody does. The way to send a ping on windows (without being an administrator) is by using IcmpSendEcho which seems to be elevating the privilege and send the echo as an admin. We are going to just block all ICMP traffic for now (even for administrator) until we have a good reason to enable it back. Anyway, I think the pr is ready to be merged in.

Looks good. Thanks!

authors: brannon jvshahid

repo: cloudfoundry-incubator/IronFrame


text:
Cannot specify datacenter different from global config

I'm trying to use multi-cpi with the latest version of vsphere-cpi (v50) and cannot make it work.
Conditions:

two vcenters / two datacenters
one vcenter + datacenter is specified in global configuration and another one is specified in cpi config
multiple clusters per vcenter

Request:
D, [2018-08-17T08:53:16 #4086] [create_missing_vm(riemann/d962c405-a030-4196-a3bf-50e016cfc5ec (4)/1)] DEBUG -- DirectorJobRunner: [external-cpi] [cpi-475203] request: {"method":"create_vm","arguments":["9ba0c5f3-5bdb-471b-8b09-063ec9ee9a8c","sc-49359b24-fe83-4d3d-85a4-560391f334ee",{"datacenters":"<redacted>","cpu":"<redacted>","disk":"<redacted>","ram":"<redacted>"},{"cf-mgmt-vsphere-component-azs":{"type":"manual","ip":"100.73.4.90","netmask":"255.255.255.0","cloud_properties":{"name":"<redacted>"},"default":["dns","gateway"],"dns":["100.64.0.1","100.64.0.33"],"gateway":"100.73.4.254"}},[],{"bosh":{"password":"<redacted>","mbus":"<redacted>","group":"bosh-lab-jpe2-vsphere-cf-lab-persistent-riemann","groups":["bosh-lab-jpe2-vsphere","cf-lab-persistent","riemann","bosh-lab-jpe2-vsphere-cf-lab-persistent","cf-lab-persistent-riemann","bosh-lab-jpe2-vsphere-cf-lab-persistent-riemann"]}}],"context":{"director_uuid":"5eca588d-4a94-4d6e-87de-e56fcccd936d","request_id":"cpi-475203","vcenter":"<redacted>"}} with command: /var/vcap/jobs/vsphere_cpi/bin/cpi

Response:
D, [2018-08-17T08:53:24 #4086] [create_missing_vm(riemann/d962c405-a030-4196-a3bf-50e016cfc5ec (4)/1)] DEBUG -- DirectorJobRunner: [external-cpi] [cpi-475203] response: {"result":null,"error":{"type":"Unknown","message":"Can't find cluster 'JPE2-std-204'","ok_to_retry":false},"log":"Rescued Unknown: Can't find cluster 'JPE2-std-204'. backtrace: /var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/resources/cluster_provider.rb:13:in `find'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/vm_config.rb:144:in `block in find_clusters'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/vm_config.rb:142:in `each'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/vm_config.rb:142:in `find_clusters'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/vm_config.rb:20:in `cluster'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/vm_config.rb:117:in `validate_drs_rules'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/vm_config.rb:94:in `validate'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/cloud.rb:278:in `block in create_vm'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/vendor/bundle/ruby/2.4.0/gems/bosh_common-1.3262.24.0/lib/common/thread_formatter.rb:49:in `with_thread_name'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/cloud.rb:243:in `create_vm'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/vendor/bundle/ruby/2.4.0/gems/bosh_cpi-2.4.1/lib/bosh/cpi/cli.rb:82:in `public_send'\n/var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/vendor/bundle/ruby/2.4.0/gems/bosh_cpi-2.4.1/lib/bosh/cpi/cli.rb:82:in `run'\n/var/vcap/packages/vsphere_cpi/bin/vsphere_cpi:42:in `<top (required)>'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/cli/exec.rb:75:in `load'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/cli/exec.rb:75:in `kernel_load'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/cli/exec.rb:28:in `run'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/cli.rb:424:in `exec'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/cli.rb:27:in `dispatch'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/vendor/thor/lib/thor/base.rb:466:in `start'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/cli.rb:18:in `start'\n/var/vcap/packages/ruby-2.4-r4/bin/bundle:30:in `block in <main>'\n/var/vcap/data/packages/ruby-2.4-r4/45171c87752df306fb86c932ce09b24c665e97ca/lib/ruby/site_ruby/2.4.0/bundler/friendly_errors.rb:122:in `with_friendly_errors'\n/var/vcap/packages/ruby-2.4-r4/bin/bundle:22:in `<main>'"}, err: /var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/ruby_vim_sdk/vmomi_support.rb:56: warning: constant ::Fixnum is deprecated

CPI:
D, [2018-08-17T08:53:24.825733 #5199] DEBUG -- [req_id cpi-475203]: All clusters provided: {"JPE2-dev-01"=>#<VSphereCloud::ClusterConfig:0x000055f9a4530f90 @name="JPE2-dev-01", @config={}>}
D, [2018-08-17T08:53:24.825871 #5199] DEBUG -- [req_id cpi-475203]: Running method 'FindByInventoryPath'...
I, [2018-08-17T08:53:24.906191 #5199]  INFO -- [req_id cpi-475203]: Using global ephemeral disk datastore pattern: dev-nmbl..._dev01_.._pas
E, [2018-08-17T08:53:24.906464 #5199] ERROR -- [req_id cpi-475203]: Error in creating vm: Can't find cluster 'JPE2-std-204', Backtrace - /var/vcap/data/packages/vsphere_cpi/fb9cb832afdfde85a6c779b99825d51dca5ed98b/lib/cloud/vsphere/resources/cluster_provider.rb:13:in `find'

CPI config
cpis:
- name: vsphere-jpe2-pod2
  type: vsphere
  properties:
    vcenter:
      address: <different from global>
      ...
      datacenters:
      - name: <different from global>
        clusters:
        - JPE2-std-204
        - JPE2-std-205
        - JPE2-std-206
      ...

So it is trying to find cluster JPE2-std-204 (which is in datacenter specified by cpi config) but can only JPE2-dev-01 (which is specified in global config).

@giner did your same config work for previous versions? Do you have your az's set to reference different cpi's?

@nehagjain15 So far we've been using multiple clusters within single vcenter / datacenter.
It's the first time I'm trying to use multi-cpi. Documentation suggests it should work.

Hi @nehagjain15, it is probably my fault. I assumed (which felt kind of obvious) that multi-cpi configuration was identical to cpi configuration in the spec file however it appeared to be different and it looks more like this. I'll check if this works and be back with the results.

@nehagjain15, it works with the updated configuration. Still it seems to be confusing.

I am glad that it worked. We will see if we can update the multi-cpi documentation to be more clear oaboutconfiguration

@giner regarding doc improvements, would you expect a different sort of vsphere example than the current one, or an additional note/comment somewhere on https://bosh.io/docs/cpi-config/#cpis?

The example looks fine however it doesn't say where it comes from. The documentation says "These are the Global Configuration of a given CPI", that's why I copied global configuration to the cpi config however naming and structure in the global config is slightly different.

I'm sorry, I was not clear on what is confusing.
Configuration in deployment:
properties:
  vcenter:
    address: 172.16.68.3
    user: root
    password: vmware
    datacenters:
      ...

Configuration in cpi-config:
properties:
  host: 172.16.68.3
  user: root
  password: vmware
  datacenters:
    ...

There are at least two differences above:

there is no vcenter in cpi-config
address vs host

Another thing is that my understanding was that "Global configuration" is the one you put in the deployment however checking here https://bosh.io/docs/vsphere-cpi/#global it looks like it is not the case because it is saying "host" and not "address".

@giner This has been fixed. You can now specify host in deployment configuration as well.