Proposal: remove UniqueWidget, with no deprecation period

What if the Flutter framework had a class that was never used, never mentioned by anyone, and never even had a hypothetical use case to begin with?
That class would certainly be unique.
abstract class UniqueWidget<T extends State<StatefulWidget>> extends StatefulWidget {
  const UniqueWidget({required GlobalKey<T> super.key});

  @override
  T createState();

  T? get currentState => (key! as GlobalKey<T>).currentState;
}

There are often times when someone creates a "unique" widget (one that doesn't show up more than once in the widget tree), and they'd like global access to its state.
void main() => runApp(const MyApp());

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  ThemeMode _themeMode = ThemeMode.system;
  void newThemeMode(ThemeMode newThemeMode) {
    setState(() {
      _themeMode = newThemeMode;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(),
      darkTheme: ThemeData.dark(),
      themeMode: _themeMode,
      home: const HomePage(),
    );
  }
}

There are a few ways you could go about calling the newThemeMode() function.
Without using UniqueWidget, you could do it like so:
class MyApp extends StatefulWidget {
  static void changeThemeMode(BuildContext context, ThemeMode themeMode) {
    final appState = context.findAncestorStateOfType<_MyAppState>()!;
    appState.newThemeMode(themeMode);
  }
}

Here's how it would look with a UniqueWidget:
class MyApp extends UniqueWidget<_MyAppState> {
  static void changeThemeMode(BuildContext context, ThemeMode themeMode) {
    final appState = context.findAncestorWidgetOfExactType<MyApp>()!.currentState!;
    appState.newThemeMode(themeMode);
  }
}

The logic is now slightly more verbose.
The return type of createState() is now guaranteed to violate the private_types_in_public_api rule.
A Widget instance was accessed in order to alter its State, which goes against Flutter's declarative UI style.

That's quite the improvement!

Flutter's simple app state management page recommends using the provider package, and that'd work great here.
There's also a solution that doesn't rely on additional packages:
class MyApp extends StatefulWidget {
  const MyApp() : super(key: _key);

  static const _key = GlobalObjectKey<_MyAppState>('app state');
  static _MyAppState get _appState => _key.currentState!;

  static ThemeMode get themeMode => _appState._themeMode;
  static set themeMode(ThemeMode newMode) {
    _appState.newThemeMode(newMode);
  }
}

Switching to ThemeMode.dark can now be accomplished as follows:
void onPressed() {
  MyApp.themeMode = ThemeMode.dark;
}

The deprecation period length has a huge impact on the developer experience, and the Flutter wiki's tree hygiene page is completely straightforward about it:

Deprecations are removed in a consistent "first-in-first-out" fashion. The lifetime for a Flutter deprecation is 1 year after reaching the stable channel, or after 4 stable releases, whichever is longer.

But this is a unique situation: there's no evidence of this widget being used—or even being talked about—anywhere on the internet. (The only relevant Google search result is the auto-generated documentation.)

When compared with the tangible opportunity cost of tracking UniqueWidget's deprecation cycle, the possibility of a negative impact created by its removal is virtually nonexistent.

If a tree falls in a forest, but there was never a widget tree containing this class, does it make a sound?

@Hixie Do you see any use in keeping UniqueWidget around?

I found a codebase that actually uses it! (The code doesn't actually use the UniqueWidget.currentState getter, but it still counts!)
If we want to stick to Tree Hygiene protocol, that's fine by me—but I still think there's a rock-solid case to be made for immediate action :)

My personal default is to never remove anything. What problem does this API cause?
(Incidentally, the breaking change policy is what matters here, the deprecation policy only applies when you deprecate something, which you never have to do unless you want to.)

What problem does this API cause?

In my mind, the API is problematic because it conflicts with the rest of Flutter's design.
Example:
class ViewB extends UniqueWidget<_ViewBState> {
  const ViewB({required super.key, this.onPressed});

  final VoidCallback? onPressed;

  void setColor(Color color) => currentState!._color = color;
  void clearChildren() => currentState!.clear();
  void add(Widget child) => currentState!._children.add(child);

  State<ViewB> createState() => _ViewBState();
}

class _ViewBState extends State<ViewB> { ... }

class ViewA extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final b = ViewB(
      key: GlobalKey(),
      onPressed: () {
        b.setColor(Colors.red);
        b.clearChildren();
        final c = ViewC();
        b.add(c);
      },
    );

    return b..clearChildren();
  }
}

Out of Flutter's 150+ widget classes, this one is "unique" in that it's the only class that defines an instance method or getter.
As it is now, UniqueWidget is one tiny part of Flutter that, in some sense, only serves to invalidate its declarative UI style and to encourage coding practices completely orthogonal to everything else in the framework.
(Additionally, the above example would not compile, since UniqueWidget<T>.createState() is required to have the return type T.)

I admit that I don't identify with the philosophy of "never remove anything".
It probably sounds really dumb, but I've tracked each Flutter framework contribution I've made in a spreadsheet, and it gives me a level of satisfaction enormous as heck to know that my refactoring in this repo has caused a reduction of over 3,800 lines of code.
I think this widget is the perfect example of something that should be removed, according to the style guide:

You can't design a feature without knowing what the constraints are. Implementing features "for completeness" results in unused code that is expensive to maintain, learn about, document, test, etc.

Refactoring code and shrinking the product as a result is great, it typically makes things faster or smaller or both.
Changing an API to improve it is great, it makes things easier to use or more powerful or both.
Removing features just hurts users though.

I enjoy debates perhaps a little too much; I'm not sure whether I'm coming across as rude, so I apologize in advance.

By my estimate, approximately zero users will be hurt by this removal.
But for the sake of argument, let's assume that several people are using UniqueWidgets and they don't want the API to be removed.
I very much enjoy Dart's auto-formatter: the switch expressions in my personal projects aren't beautifully aligned like the ones I made for #136139, but auto-formatters speed up code review by producing far fewer diffs, and using an opinionated formatter hugely mitigates arguments over code style.
I believe that UniqueWidget should be removed, for the exact same reason:

Encouraging multiple styles makes it more likely that you'll have difficulty understanding someone else's code—not ideal for open-source development.
In my opinion, a good framework provides one obvious way to get something done—designing each widget to conform to the declarative style is enormously helpful for the people who use it.

UniqueWidget doesn't encourage an imperative style, it just provides a shortcut for not having to specify a GlobalKey explicitly. It means you can get to the State of the widget without having to go through the key, you can just do it directly from the widget. It's a pattern I wouldn't encourage in general, and I agree that we could have not added this in the first place (IIRC we added it because it was a common pattern in fn2, the framework that precedes widgets). But since we have it, *shrug*, it doesn't cost us much to keep it.

using an opinionated formatter hugely mitigates arguments over code style.

Basically all of the arguments I have over code style are caused by autoformatting...

I'm not sure whether I'm coming across as rude, so I apologize in advance.

Not at all, happy to engage. (You're also welcome to ping me on Discord, see the contribution guide for the invite.)

Basically all of the arguments I have over code style are caused by autoformatting…

This is something I hadn't even considered, but it makes sense.
Perhaps the total amount of arguing would be greater if the auto-formatter hadn't ever been created, but that's just speculation 🙂

At this point, my views on UniqueWidget unfortunately are still not aligned with yours. My mind interpreted the above message to essentially mean "UniqueWidget doesn't encourage an imperative style, it just [description of how to implement Flutter widgets in an imperative style]"
It seems very cut-and-dry to me: imperative Flutter coding would involve using a Widget instance to mutate its State, and that's what UniqueWidget is specifically designed for.
If an exact copy of the Flutter website's "imperative style" example using Dart syntax doesn't qualify as the imperative style, then what would?

You're also welcome to ping me on Discord

Thanks, I really appreciate this offer (and will probably take you up on it soon haha).
I'm a huge fan of Discord, and I have a lot of admiration for what you've done to establish and maintain the community and resources that we have on that server. I feel super lucky to be a part of it :)

We have lots of examples of APIs that are direct manipulation of State objects. I agree that in general I think there are better ways to do things, but it's not fundamentally a bad thing. For example, Overlay.of gets you the OverlayState, Navigator.of gets you the NavigatorState, you can get hold of a TooltipState to call ensureTooltipVisible, PopupMenuButtonState has a showButtonMenu method, etc. Just look at all the public subclasses of State, there's tons of them.

That's true!
In fact, the suggestion I gave in the original issue comment involved direct manipulation of a State object.

There's also a solution that doesn't rely on additional packages:
class MyApp extends StatefulWidget {
  const MyApp() : super(key: _key);

  static const _key = GlobalObjectKey<_MyAppState>('app state');
  static _MyAppState get _appState => _key.currentState!;

  static ThemeMode get themeMode => _appState._themeMode;
  static set themeMode(ThemeMode newMode) {
    _appState.newThemeMode(newMode);
  }
}

It's specifically the indirect manipulation of a State object through Widget instance methods/setters/getters that I believe could unnecessarily lead to confusion.


feat(translations): add german strings

Add German translation.

@mheob @ioncreature Thank you for your Contributions!
Your translation work is so helpful! I will merge it!


Tool: Opportunities to identify and retrieve current and correct source of data/information for team efficiencies

As a program area and developer team, we need to have accurate lists/datasets for data integrity and one source of information to avoid manual effort and technical workarounds to

auto populate the forms with correct/current info or
allow users to add info) into the following fields that typically are referenced/included in a form

ministry names (see Telework ticket #)
Employee work phone number (ticket #1152)
Approved email domains (see Telework ticket #

These workarounds, manual efforts were required for Telework form, Cold and Flu and Senior Leadership and will likely have some or all of these field needed in all forms.

Discussed with the PeopleSoft team about sync process between GAL and PS.  Currently PS sends employee ID data to sync with GAL but does not pull data down.
A new process can be introduced to either sync data back down to PS for telephone numbers or bring down into the BI data warehouse.


Use derived_tstamp as the primary tstamp in Redshift

Currently we use the collector_tstamp for the root_tstamp value.
It would be preferable to use the derived_tstamp once all our client side trackers support generating a dvce_sent_tstamp. (Because that point from an analytics perspective you're only interested in the derived_tstamp.
We need to figure out how we migrate from collector_tstamp -> derived_tstamp e.g. what happens for old users who have events without derived_tstamp values.

This impacts the table SORTKEY as well

I noticed sql-runner appears to still be using collector_tstamp instead of derived_tstamp as well, so you guys may want to update that when you get to this issue

We need to test whether this leads to tables that are more unsorted after inserting new events.

It'd be interesting to explore the impact of this patch: https://forums.aws.amazon.com/ann.jspa?annID=4157

Data loading enhancement. If you load your data in sort key order using a compound sort key with only one sort column, you might now reduce or even eliminate the need to vacuum as the COPY command automatically adds new rows in sort order to the table's sorted region

This should eliminate the need to vacuum if we continue to use the collector timestamp, and reduce (but not eliminate) if we were to switch to the derived timestamp.

Likely this is no longer a good idea, but moving over to review


Bugfixes and State tracking

-Fixed issue with wrong file name
-Added state tracking with localStorage

already tested - works fine, as you can see here:
http://dda.gitbooks.io/domaindrivenarchitecture/content/v/31de520badc2c4925456719d45a3c16b120b5e50/en/20_linked_data/20_analysis/ScopeComparison.html
:-)


Investigate httpx and concurrency issues (i.e., langchain integration)

@hemidactylus included you on the assign here because you've been doing so much testing :)


reduce swipe sensitivity

Is it possible to reduce sensitivity of the left / right swipe gestiture? When I fast scroll the page I always load a new sie because my vertical swipe Action is not straight enough. So now the swipe is too sensitive for me.
Is there a way to adjust a Minimum vertical Distance before Action Starts?
Ps: I am using tocca.js with the wordpress Plugin.
Cheers, pEtEr

Just change the swipe threshold property https://github.com/GianlucaGuarini/Tocca.js#configuration

Great, thank you!


Issues with AppContainer Loopback Logic in office-addin-debugging and office-addin-dev-settings

Hi all, I recently found some issues/strange behavior with the loopback logic.
Background
I know that AppContainer tech make some Apps likes UWP can't access localhost (loopback) by default.
In previously, I think Webview2 && Edge need that loopback exempt for Add-in side-load.
But some test I did recently shows that things may be different.
Tools I used：

AppContainer Loopback Exemption Utility, which is build in with Fiddler Classic.
CheckNetIsolation.exe

Issue 1: Type No during Loopback question prompt

OS: Win11 23H2

Code in office-addin-debugging dosen't use the result from ensureLoopbackIsEnabled:
// enable loopback for Edge
if (isWindowsPlatform && parseInt(os.release(), 10) === 10) {
  const name = isDesktopAppType ? "EdgeWebView" : "EdgeWebBrowser";
  await devSettings.ensureLoopbackIsEnabled(name);
}

export async function ensureLoopbackIsEnabled(
  manifestPath: string,
  askForConfirmation: boolean = true
): Promise<boolean> {
  const name = await getAppcontainerNameFromManifestPath(manifestPath);
  let isEnabled = await isLoopbackExemptionForAppcontainer(name);

  if (!isEnabled) {
    if (!askForConfirmation || (await getUserConfirmation(getDisplayNameFromManifestPath(manifestPath)))) {
      await addLoopbackExemptionForAppcontainer(name);
      isEnabled = true;
    }
  }

  return isEnabled;  // if user type No, this will return false
}

So, when ensureLoopbackIsEnabled detect that loopback is not exempted and user type No, the logic in office-addin-debugging will carried on the following steps (start the dev server and side load the add-in).
Then the things get interested:

I first delete all loopback exempt

Then I try start debug in add-in project and type No during loopback question asked
I found that add-in side load successfully even without Edge/Webview2 loopback exempt.

I also try to start in web, the result is the same

These result shows that maybe the Loopback exempt is no needed for user to side load the add-in.
Issue 2: Edge App Container Name
In this code file, we can see the Edge Browser App Container Name (AC Name):
export const EdgeBrowserAppcontainerName: string = "Microsoft.MicrosoftEdge_8wekyb3d8bbwe";
export const EdgeWebViewAppcontainerName: string = "Microsoft.win32webviewhost_cw5n1h2txyewy";

However, on my new Win11 23H2 machine, I don't have Edge that with AC Name, instead I have a Edge with AC Name of Microsoft.MicrosoftEdge.Stable_8wekyb3d8bbwe:

But in my two other machine (one is Win11 which upgrade from Win10, another is Win10), they both have two Edge App Container and one is Microsoft.MicrosoftEdge_8wekyb3d8bbwe another is Microsoft.MicrosoftEdge.Stable_8wekyb3d8bbwe

Issue 3: The way to check whether Edge Browser have Loopback exempt maybe wrong
This code shows that how to check the app have the exempt:
export function isLoopbackExemptionForAppcontainer(name: string): Promise<boolean> {
  if (!isAppcontainerSupported()) {
    throw new ExpectedError(`Platform not supported: ${process.platform}.`);
  }

  return new Promise((resolve, reject) => {
    const command = `CheckNetIsolation.exe LoopbackExempt -s`;

    childProcess.exec(command, (error, stdout) => {
      if (error) {
        reject(stdout);
      } else {
        const expr = new RegExp(`Name: ${name}`, "i");
        const found: boolean = expr.test(stdout);
        resolve(found);
      }
    });
  });
}

But I did some test here:

We can see that for EdgeWebViewAppcontainerName, this way works. But for EdgeBrowserAppcontainerName this way not work. Though Microsoft.MicrosoftEdge_8wekyb3d8bbwe already have exempt but .\CheckNetIsolation.exe LoopbackExempt -s will not list it.
Issue 4: Only Add Edge Browser to loopback Exempt maybe not correct.
When sideload in web, this code show that open is used for open the sideload link.
async function launchApp(app: OfficeApp, sideloadFile: string) {
  console.log(`Launching ${app} via ${sideloadFile}`);
  if (sideloadFile) {
    if (app === OfficeApp.Outlook) {
      // put the Outlook.exe path in quotes if it contains spaces
      if (sideloadFile.indexOf(" ") >= 0) {
        sideloadFile = `"${sideloadFile}"`;
      }

      startDetachedProcess(sideloadFile);
    } else {
      await open(sideloadFile, { wait: false });
    }
  }
}

But open seems to open link with system default browser, which may not be Edge.
So only exempt Edge Browser maybe not correct. But accroding to above information, maybe exempt browser is not needed.

More thoughts on this:
Since the CheckIsolation logic is added 5 years ago and we do find out this logic is not needed on Windows 11. Maybe we should re-check this and find out is this check a required step? Maybe we can remove this check for certain OS version or we can set the default value to "NO" to avoid the "Access Denied" issue.
Add @millerds @akrantz for discussion.

I'm not working in this space now, so Darren can investigate. It may be that the webview2 code allows the localhost loopback when debugging or this was allowed in a mechanism which CheckNetIsolation doesn't report. Certainly there are different flavors and ways of installing webview2, as you mention the different app ids.

I make a PR with simple change to keep behavior the same when user type Yes or No when asking loopback question.

Some other investigation I found:
I found the following docs:

Manually sideload an add-in to Office on the web
Start the Excel, PowerPoint, or Word add-in project
Can't open add-in from localhost: Use a local loopback exemption
When the add-in tries to open, get "ADD-IN ERROR We can't open this add-in from the localhost" error

In the first doc, it said that for Legacy Edge, it need the loopback exemption, but for Webview 2 it doesn't need so.
Maybe this is the kernel cause of all my above issues.

Thanks for reporting this issue. After careful consideration, our team has decided to not fix this issue in the short term due to the amount of effort needed for this and the fact that the PR you created provides a workaround for this as well. If we end up working on this issue we will re-activate as needed.


Migrate from 0.63 to 0.73

[ migrating from 0.63 to 0.73 ]
Description
Hi to all,
when I tried to run polygon-edge 0.73 with files from 0.63, I got error
genesis file does not match current genesis
Is there a way to convert genesis file to new version? Or upgrade path or way?
Thank you

Hello @dorijan, this page contains a described procedure for migrating data from v0.6.x to v0.8 onwards.
Unfortunately, it is not possible to do the migration on 0.7.3 itself, but only from 0.8 onwards, because support for regenesis was implemented and delivered in 0.8 release.


ppc(32): process_cpp_impl.cpython-311-powerpc-linux-gnu.so: undefined symbol: __atomic_compare_exchange_8

When RapidFuzz is compiled on ppc32, it fails to load because of missing symbols, e.g.:
E   ImportError: /var/tmp/portage/dev-python/rapidfuzz-3.5.2/work/rapidfuzz-3.5.2-python3_11/install/usr/lib/python3.11/site-packages/r
apidfuzz/process_cpp_impl.cpython-311-powerpc-linux-gnu.so: undefined symbol: __atomic_compare_exchange_8

Apparently the current CMake checks to detect the necessity of -latomic are insufficient since they all pass:
//Test HAVE_CXX_ATOMICS_INT_WITHOUT_LIB
HAVE_CXX_ATOMICS_INT_WITHOUT_LIB:INTERNAL=1
//Test HAVE_CXX_ATOMICS_SIZE_T_WITHOUT_LIB
HAVE_CXX_ATOMICS_SIZE_T_WITHOUT_LIB:INTERNAL=1
//Test HAVE_CXX_ATOMICS_UNSIGNED_WITHOUT_LIB
HAVE_CXX_ATOMICS_UNSIGNED_WITHOUT_LIB:INTERNAL=1
//Test HAVE_CXX_ATOMICS_VOID_PTR_WITHOUT_LIB
HAVE_CXX_ATOMICS_VOID_PTR_WITHOUT_LIB:INTERNAL=1

I guess yet another type needs to be tested. I'm afraid I don't really know how to figure out where the atomic calls are coming from, so I don't know which type.

Ah and I do not really remember, but this did work in the past right? If it did, when did it break?

One option might be to invert the logic:

try to build with -latomic worst case it's unused (possible use as-needed to get rid of it again if unused)
try to build without if not available

Not sure whether that approach has it's own problems.

It's too late for me today but if I don't forget, I'll try to dig some more tomorrow. That said, I don't think bool would work. It's clearly trying to use 64-bit atomics, and all of the types being tested right now are 32-bit. I suspect it's coming from somewhere deeper but I'll have to dig.

This was my initial understanding with the _u8 version as well, but those are at least not explicitly used.  I did check for int64_t in the past, but this caused issues in the x86 builds for netbsd: https://github.com/maxbachmann/RapidFuzz/issues/342

Ok, so I've played a bit with -Wl,-z,defs and the problem clearly comes from taskflow. I see some instances of std::atomic<uint64_t> there, so I guess that's the problem.
Unless I'm mistaken, from the linked thread I gather that the -latomic problem was an issue on their end.

Yes, I can confirm that the module loads now. Thanks!


Repository inside another one (submodule)

The sub-repository will be recognised as submodule, but it is not able to visualize it.
2015/03/17 14:33:42 [view.go:141 Home()] [E] GetSubModule: GetTreeEntryByPath: error not exist

Example to reproduce:

Create an empty repository.

Thanks for your feedback, what is your Gogs version and system?

© 2015 Gogs · Version: <IP_ADDRESS>7 Beta · Page: 2ms · Template: 1ms
Installed from source code :)

@bastiao thanks for  the info!

@bastiao  You did not add .gitmodules, so gogs does not know the URL of quickstart

it is true. maybe we can close and it is not considered as a bug?

Please follow on https://github.com/gogits/gogs/issues/1061 for any possible updates. :beer:


S1 [Bug] Stopping and restarting Application results in unexpected application behavior

Stopping and restarting the application via docker results in unexpected application behavior.
docker-compose up
Create some users.
docker-compose stop
docker-compose up
Result: ledger-sync_1 failures.
Can log in but can't sign up or create new users.
Works only by taking the app down and then up.
docker-compose down
docker-compose up
However, that will remove all data and start from scratch.

Closing per Adam.


Fix most warnings. Add UNUSED macro.

Issue #134.
UNUSED macro can be used on unused variables to suppress the compiler warning. Most warnings were unused variables.
One warning fixed was ImGui::Text, which wants to use a format string.
Two warnings are still there and I do not know how to solve them. The variables require a fallback value if none of the if-statements are true, otherwise it is uninitialized. But I do not know what would be a good fallback value.
Ducktape/Engine/Renderer/Cubemap.cpp:39:24: warning: ‘format’ may be used uninitialized in this function [-Wmaybe-uninitialized]

Ducktape/Engine/Renderer/Texture.cpp:49:25: warning: ‘format’ may be used uninitialized in this function [-Wmaybe-uninitialized]

@cappe987 Awesome!

But I do not know what would be a good fallback value.
As for this, as far as I know, atleast one of those 3 if statements must pass in any situation, so the default value wouldn't really matter anyway, so I think just setting it to GL_RGB by default is enough.

Added GL_RGB as fallback for those two. Now it compiles without warnings.


Publisher tryout console not working and got blank page

Description
Publisher tryout console not working and got blank page

Steps to Reproduce
Create api and deploy to two environments like default and test.
remove test environment
load publisher test console.
Affected Component
APIM
Version
4.3.0-beta
Environment Details (with versions)
Distributed
Relevant Log Output
index.bb83891bcb5646950bba.bundle.js:sourcemap:2 TypeError: Cannot read properties of undefined (reading 'vhosts')
    at TryOutConsole.jsx:181:68
    at Object.Qa [as useMemo] (index.bb83891bcb5646950bba.bundle.js:sourcemap:2:294099)
    at t.useMemo (index.bb83891bcb5646950bba.bundle.js:sourcemap:2:388297)
    at Xj (TryOutConsole.jsx:177:34)
    at _a (index.bb83891bcb5646950bba.bundle.js:sourcemap:2:289718)
    at ks (index.bb83891bcb5646950bba.bundle.js:sourcemap:2:301339)
    at _u (index.bb83891bcb5646950bba.bundle.js:sourcemap:2:347417)
    at wc (index.bb83891bcb5646950bba.bundle.js:sourcemap:2:335702)
    at mc (index.bb83891bcb5646950bba.bundle.js:sourcemap:2:335630)
    at gc (index.bb83891bcb5646950bba.bundle.js:sourcemap:2:335493)

Related Issues
No response
Suggested Labels
apim

Fixed by https://github.com/wso2/apim-apps/pull/669


Is it possible to embed the WebRTC endpoint in an iframe?

Hi,
thank you for writing this software, it looks very promising to me. I am trying to understand how I could use it on a webapplication I am writing. There, I want to embed the WebRTC stream created with your code in an iframe. Is that possible?
I would just embed this address from your API:
http://<IP_ADDRESS>:8083/stream/{STREAM_ID}/channel/{CHANNEL_ID}/webrtc
Resulting in:
<iframe ng-controller="EmbeddedPageController as ctl" ng-src="http://<IP_ADDRESS>:8083/stream/{STREAM_ID}/channel/{CHANNEL_ID}/webrtc" class="ng-scope" src="http://<IP_ADDRESS>:8083/stream/{STREAM_ID}/channel/{CHANNEL_ID}/webrtc">
</iframe>

Thank you for your time,
Antonio

Check out the examples directory under docs/ as it has an example of a webrtc stream. (You don't just refer to the url like that, you need JavaScript to start a webrtc player)

Hi Allen,
I just looked at it, thanks for the pointer. If I understand this correctly, I just need a few lines of javascript code that actually give me the webrtc player and serve that to a website through the  html. This website is then what I can actually embed on other websites, correct?

I'd say, get the html/javascript for the player working, then you can try to embed that in an iframe.


InvalidArgumentError : input must be 4-dimensional[100,100,3]

I am trying to use inception V1 model to predict single image. The example on the tensor flow website uses inception V3, which needs 1.7s-1.9s on a single Tian X GPU. This is not fast.
I use the following python code to test V3 performance, which by changing classify_image.py
 #... above code is for load graph and read image

t1=time.time()

softmax_tensor = sess.graph.get_tensor_by_name('softmax:0')
predictions = sess.run(softmax_tensor,{'DecodeJpeg/contents:0': image_data})
predictions= np.squeeze(fpredictions)

delta=time.time()-t1
print(delta)

I think the major reason is V3 has 42 layers, which is too large.
However, when i change the above code for V1 model. I meet errors. First I get the node names from V1 model .pb file as below:
input
conv2d0_w
conv2d0_b
conv2d1_w
...
...
...
softmax2
output
output1
output2
So the entry point of V1 model is input. The entry point of V3 is DecodeJpeg/contents, which accept image buffer from tf.gfile.FastGFile(image, 'rb').read() function directly. But V1 does not. So i use the code below to get the image and return as an array.
image_data=cv2.imread(image)
Now the code for V1 model become for prediction become
softmax_tensor = sess.graph.get_tensor_by_name('softmax2:0')
predictions = sess.run(softmax_tensor, {'input:0': image_data})

However, I get error below when i run the code.
InvalidArgumentError (see above for traceback): input must be 4-dimensional[100,100,3]
[[Node: conv2d0_pre_relu/conv = Conv2D[T=DT_FLOAT, data_format="NHWC", padding="SAME", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/cpu:0"](_recv_input_0, conv2d0_w)]]
It says it need a 4-dimensional input. My image array has width, height and channel only. So how can i create a 4D tensor from a single image for V1 model as input data?

As the data format is NHWC, It seems that the first dim "N" means batch size. So if the single input image is 1001003, then how to add 1 for "N", add a 1001001=1 on top of image?

@civilmanxx : A couple of things:

IIUC, the inception v1 model requires the input to be normalized. Which means that the images must be of a precise size.
You're right, the 4 dimensions is because the model accepts batches of images
You can see this normalization in the label_image C++ example (main.cc) - which casts the pixels to a float, resizes it, normalized the value by subtracting a mean and extends the number of dimensions.

Hope that helps. Please feel free to reopen the bug if your concerns weren't addressed.

@civilman628 Did you find a solution for this? I'm facing the same issue.


Update NPM package with 1.0.0-beta.6 version

Hi basvandenberg !
Can you update npm with the last beta? I need to update my references for angular4 and I'm using npm.
Thanks!!

The latest npm releas was beta.6 for some time already, I just published the rc.1 release.


Shadows around every icon, esp. The weather icons

Drop shadow is not applied to the weather icons.

I second adding shadows to the weather icons (or more icon options). I find it very difficult to distinguish them from my background at a glance.


[BUG] Missing Proposal Draft Deletion Functionality

Context & versions
There is currently no interface to delete a proposal. This functionality is necessary as users should be able to delete a proposal draft.
Actual Behavior

Missing proposal draft deletion functionality.

Expected Behavior

There should be an interface to delete proposal drafts like proposal deletion

@kneerose @ValMBO @bosko-m This is not the same. It's one thing when you start editing the proposal, and the other is when you start creating the proposal from the draft. There is no flow anywhere in the design for deleting a specific draft.

@kneerose It is deployed on dev, it can be tested

@teske00  I have tested on dev but could not find an interface to delete the draft.
https://www.loom.com/share/10bf3a80a00249b281d20e72b637abf7?sid=c86848a6-bec7-4592-97c8-c5886701f93a

This issue pertains to an enhancement. Currently, as we generate drafts during tests, these tests run multiple times, consuming more database space if not properly torn down. To address this, we need a draft deletion functionality similar to the proposal discussion feature. If a draft is mistakenly created, users should be able to delete their drafts.

This can probably go in the community backlog.
CC @m-i-k-e @l-br1

This is a really useful feature, if not essential.


Host dashboard: "Record as paid" button for PayPal

In host dashboard, we sometimes have to pay PayPal expenses manually - for example when the amount is more than $2000. We need to have a Record as paid button  to account for these cases.

This would be great! It also would need the 'payment processor fee' input box as well.

Is it fixed that any expense with paypal payment method and amount >= $2000 are paid manually?

Yes all expenses over $2000 are paid manually. However there are times when Paypal expenses less than $2000 are paid manually too.

I'm trying to ascertain the exact logic to use to display "Record as paid".

However there are times when Paypal expenses less than $2000 are paid manually too.

How often does that occur? What could be reason?

If a user wants to take out 100% of the balance, we have to do the payment manually and then retroactively edit the amount of the expense because we can't know the fees in advance, so that requires manual payment.
We often pay manually for expenses less than but near to $2000, because re-authorizing the API key is really annoying to do for one expense as it takes a long time.
I can't think of other examples right now but it happens pretty often that we manually pay through Paypal for less than $2000.
So while it would be ugly and crowded, I think the best option would just be to have "mark as paid" and the "processor fee" box appear for every Paypal expense.
Otherwise we have to do a hacky workaround where we make an edit, save, reapprove, then pay, triggering confusing notifications to the user. If you want data on how often we do this, you could look at instances of expenses edited from Paypal to Other payment type.
We are planning to do a project about improving the host dashboard after the expense flow project. At that time, we'll get the designers to come up with a better solution. But for now, I think the ugly solution would still be a big improvement.

It will look too messy, I think amount less than $2000 should wait for the new design solution while I implement this for amount greater than $2000.

@flickz please follow @alanna's direction, she's the one using the interface every day and needs this button even for expenses of less than 2000$.

Yes it's messy but only host admins see this and the entire host dashboard is messy! We need to do a big project to clean it up, but until then functionality is most important.

@alanna, In all use cases, will the value of processor fees always greater than 0?

Sometimes the payment processor fee is $0 and sometimes it is more than $0. So we need a "payment processor fee" box there, with the default amount set to 0 but editable, similar to what we have for manual payments now.

@alinamanko reports:

one problem I discovered now is that for instances where there is a low balance and I process the payment manually (resulting in 0 fees) the option of Record as Paid still shows an error message like with this expense which has been successfully processed for payment but I can't mark it as Paid. In this case I still need to edit the expense and change the option to "other" for the payment be recorded as paid.

@flickz have a look?

On it


News Detail Title

The News Detail page doesn't display the title of the news article.
e.g. this page: https://www.navcore.org/news/2018/04/navcoin-community-hub-launched/
should display the title "NavCoin Community Hub Launched, Alex visits Auckland."

This doesn't seem to be an issue anymore? Can we close this

this is still an issue.


County scrape scripts do not correctly capture price information

Percentage discounts have (at least) three known forms:

-XX%
0.X%
XX%

Non-percentage pricing has an unknown number of forms.

What is the best way to deal with this? How should we back-populate previous data after we go live?

Other issues -- NO AWARD is improperly being included in some cases due to inconsistent formatting across the award tables (which is understandable, I suppose).


SAMZA-1287: Updated instructions for running integration and stability tests.

@navina @vjagadish1989, please take a look.

@navina Updated with your feedback. Please merge if this looks OK. Let's keep converting to Markdown for later.

Thanks Prateek!


can't log into container

I have a Kubernetes cluster with traffic app installed. I can't log into container from host.

# docker ps
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS               NAMES
10cfcdca52d9        traefik                               "/traefik"               About an hour ago   Up About an hour                        k8s_mytraffic_mytraffic-7bdc7b7b9d-65m8q_default_acbbab56-49f7-11e8-a9bc-fa163e771c4c_0
# docker exec -ti 10cfcdca52d9 bash
OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown
# docker exec -ti 10cfcdca52d9 /bin/bash
OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown

Host is fedora 27, Kubernetes is 1.10.
I use Rancher to manage the cluster, and when using the Rancher web UI to open a shell inside container, the shell windows open then quickly closes.

traefik image is a "FROM scratch" image (https://docs.docker.com/develop/develop-images/baseimages/).
If you want to use a shell inside the container, you need to use traefik-alpine image.

@gabx The git repo of alpine image is here. https://github.com/containous/traefik-library-image/tree/master/alpine
I made a mistake, the image is traefik:v1.5-alpine

I tried using the alpine version of 1.6.4 but it still throws:
OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown

@FabianTe Did you manage to solve this issue? I'm experiencing the same error on my Docker cluster.

Nope

With alpine, you need to use sh instead bash
docker run -it traefik:alpine /bin/sh

http://containertutorials.com/alpine/get_started.html

Does not work from kubernetes:
kubectl exec -it -n kube-system traefik-7d8cd6f556-j27qx /bin/sh
OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown
command terminated with exit code 126

Anyone with input on that?

@guysoft are you using the alpine image?

Using:
https://github.com/helm/charts/tree/master/stable/traefik
Aka according to default values.yaml traefik-1.7.14 image, so no.

If you set imageTag: 1.7.14-alpine you should be good!

If you set imageTag: 1.7.14-alpine you should be good!

That indeed solves the issue!


Added identity and other known errors

Resolved #22

Force push to trigger build again, which was dormant.

@romanstrobl  -> all errors you mentioned are there 🤔

@romanstrobl -> all errors you mentioned are there 🤔

Apologies, I didn't see them in the diff. Approved 👍


LoadingPlaceholder => How to Make it be a Lottie Animation?

Description
Would be a very nice feature if the LoadingPlaceholder could be an animation, namely a Lottie animation, as opposed to a static image - is this possible already somehow? Would appreciate the guidance if so, otherwise, would be a fantastic enhancement imo.

Hey, I saw this questioin and thought it was interesting, so I made a sample app that does just this, uses lottie and ffimageloading libs. I hope it helps 😊
https://github.com/DanielCauser/XamarinFFImageLoadingAndLottie

I also wrote a blog post about it, if you want to check it out :)
https://causerexception.com/2019/02/10/ffimageloader-lottie-😍/

It will be great if this added as a property like this:
LoadingPlaceholder="MyLottieFileName"


Sync deployments to DynamoDB with "colour"

What is this PR trying to achieve?
Tracking deployment status in ECS is hard.
This PR tracks deployment status from the ECS Task State change event stream and writes deployment "colour" to dynamo, with colour being blue or green.
From here it's much easier to identify a "green" deployment that has taken too long as we now can identify whether the "PRIMARY" deployment is part of an ongoing deployment that has a created_date that is too old (as it is labelled "green" and has a "created_date").
Who is this change for?
Developers who want to notice that their code change hasn't worked.
Have the following been considered/are they needed?

[ ] Run terraform apply.

For: https://github.com/wellcometrust/platform-api/issues/426

flake8 linter run.

Merging as comments have been addressed.


GPL-344	As DNA pipelines team leaders (Rich R & Emma G) we would like loading team (Tris) for each request to understand if will use XP workflow (or not) and the flowcell type (SP, S4 & S2) for teh Novaseq 6000 inbox view to direct lab worklow and avoid confusion [See GPL-341]

User story

GPL-344
As DNA pipelines team leaders (Rich R & Emma G) we would like loading team (Tris) for each request to understand if will use XP workflow (or not) and the flowcell type (SP, S4 & S2) for teh Novaseq 6000 inbox view to direct lab worklow and avoid confusion [See GPL-341]

Who the primary contacts are for this story
Tristram Bellerby<EMAIL_ADDRESS>Richard Rance<EMAIL_ADDRESS>Acceptance criteria
For the Novaseq 600 PE inboxes (http://sequencescape.psd.sanger.ac.uk/pipelines)
In Available requests add extra columns to show

Flow cell type
XP workflow?


Fourth Korean l10n work for release-1.15

Fourth Korean l10n work for release-1.15

ko: update translation in reference/glossary/* (#15776)
Update outdated files partly in dev-1.15-ko.4 (#15856)
ko: update translation in tasks/debug-application-cluster/resource-metrics-pipeline (#15798)
ko: translate setup/production-environment/tools/control-plane-flags (#15820)
ko: translate user-guide-windows-containers (#15730)
ko: update translation in reference/glossary/* (#15761)
ko: Update outdated files partly in dev-1.15-ko.4 (#15790)
ko: fix corrupt date in glossary/static-pod (#15911)
ko: translate user-guide-windows-nodes (#15759)
Translate /docs/concepts/configuration/overview/ in Korean (#15803)
ko: translate setup/production-environment/tools/ha-topology (#15819)
ko: translate tasks/administer-cluster/network-policy-provider (#15846)
Translate tasks/inject-data-application/define-command-argument-container in Korea (#15933)
ko: translate concepts/configuration/organize-cluster-access-kubeconfig (#15871)
Translate working-with-objects/common-labels.md in Korean (#15832)
Translate concepts/workloads/pods/disruptions.md in Korean (#15926)
Translate tasks/access-application-cluster/web-ui/dashboard in Korean (#15852)
Translate concepts/overview/working-with-objects/labels.md in Korean (#15831)
ko: translate guestbook-logs-metrics-with-elk (#15894)
ko: translate tasks/administer-cluster/highly-available-master (#15928)

Co-Authored-By: Yoon<EMAIL_ADDRESS>Co-Authored-By: Eden<EMAIL_ADDRESS>Co-Authored-By: Yuk, Yongsu<EMAIL_ADDRESS>Co-Authored-By: June Yi<EMAIL_ADDRESS>Co-Authored-By: Seokho Son<EMAIL_ADDRESS>Co-Authored-By: Lawrence Kay<EMAIL_ADDRESS>Co-Authored-By: alice_k106<EMAIL_ADDRESS>Co-Authored-By: Cheolgu Kim<EMAIL_ADDRESS>

/assign
/lgtm
/approve


Chore/ignore hubspot errors by stack file

Description

ignore errors originating from js.hsleadflows.net

:tada: This PR is included in version 1.240.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Wiki page on creating an app using v3 cc api has incorrect instructions for route mapping.

Issue
Wiki page on creating an app using v3 cc api has incorrect instructions for route mapping, possibly hitting an outdated endpoint.
Context
In step 11 of this doc, it says to run:
ROUTE_MAPPING=$(printf '{"relationships": {"route": {"guid": "%s"}, "app": {"guid": "%s"} } }' "$ROUTE_GUID" "$APP_GUID")
cf curl /v3/route_mappings -X POST -d "$ROUTE_MAPPING"

This code returns an error. Also, the link to the docs is set to this dead link: http://v3-apidocs.cloudfoundry.org/version/release-candidate/index.html#create-a-route-mapping
Possible Fix
We think step 11's code should be replaced with:
DESTINATION=$(printf '{"destinations" : [ {"app": {"guid": "%s"}  }  ]  } ' "$APP_GUID")
cf curl /v3/routes/$ROUTE_GUID/destinations -X POST -d "$DESTINATION"

and the doc link should be replaced with http://v3-apidocs.cloudfoundry.org/version/release-candidate/index.html#insert-destinations-for-a-route

thanks! i think we fixed it.


add time window explanation for user count metrics

🚀 Deployed on https://63bc8f116c864f00aa64b2bd--cozy-fox-0defec.netlify.app


Make LakeFSInputFile (metadata reader) JOINable in (almost) linear time

Speed up metadata client JOIN operations by telling the driver how to JOIN metaranges in linear time.  We will use this to transform garbage collector from a quadratic process to an (almost) linear process (O(n log n), in practice, due to cost of seeking).
Metaranges are sorted, so this should be possible by telling LakeFSInputFile to return a ComposableRecordReader.

Invalid: the keys are sorted in each range, but GC needs to JOIN on the values.  And in any case we sped up GC in #4139.


Better way to register APIs

Today the way to register APIs is to give it a leading name and version number which is kind of hardcoded.
api = Api(name='api', version='v1')

This translates to
api/v1/xxx
Both name and version should be optional.
Ideally it should be root accessible / without a version number
For example
api = Api(name='api', version='')  #/api/xxx
api = Api(name='', version='')      # /
api = Api(name='', version='v1')  # Nah maybe not

api = Api(name='api/v1')

+1 no version number.
api = Api()
api.register('users', MyUserResource)
...
So People in flask want to use decorators, so api should be flexible
@api.route('/users')
class MyUserResource:
....
or
@api.route('/users')
def user_resource():
.....
On Mon, Jan 5, 2015 at 10:40 AM, Raghu<EMAIL_ADDRESS>wrote:

api = Api(name='api/v1')
—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68669098.

--
Regards
Kracekumar - +91-85530 29521
"Talk is cheap, show me the code" - Linus Torvalds

I think we should keep the url routing part separate from the resources.
Resources implement CRUD without any assumptions about the delivery
mechanism (http). the decorator suggestion violates that.
On Mon, Jan 5, 2015 at 1:37 PM, Kracekumar Ramaraju <
<EMAIL_ADDRESS>wrote:

+1 no version number.
api = Api()
api.register('users', MyUserResource)
...
So People in flask want to use decorators, so api should be flexible
@api.route('/users')
class MyUserResource:
....
or
@api.route('/users')
def user_resource():
.....
On Mon, Jan 5, 2015 at 10:40 AM, Raghu<EMAIL_ADDRESS>wrote:

api = Api(name='api/v1')
—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68669098.

--
Regards
Kracekumar - +91-85530 29521
"Talk is cheap, show me the code" - Linus Torvalds
—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68678209.

Not sure. How current registration doesn't violate it.
api = Api(name='api', version='v1')
api.register_resource('foo', FooResource())
And decorator can be written as
@register(api_object, 'resource') as well
If you are using http, at some point bridge needs to exist. Calling a
method is one way and decorator is another way.
On Mon, Jan 5, 2015 at 1:42 PM, Raghu<EMAIL_ADDRESS>wrote:

I think we should keep the url routing part separate from the resources.
Resources implement CRUD without any assumptions about the delivery
mechanism (http). the decorator suggestion violates that.
On Mon, Jan 5, 2015 at 1:37 PM, Kracekumar Ramaraju <
<EMAIL_ADDRESS>wrote:

+1 no version number.
api = Api()
api.register('users', MyUserResource)
...
So People in flask want to use decorators, so api should be flexible
@api.route('/users')
class MyUserResource:
....
or
@api.route('/users')
def user_resource():
.....
On Mon, Jan 5, 2015 at 10:40 AM, Raghu<EMAIL_ADDRESS>wrote:

api = Api(name='api/v1')
—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68669098.

--
Regards
Kracekumar - +91-85530 29521
"Talk is cheap, show me the code" - Linus Torvalds
—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68678209.

—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68678534.

--
Regards
Kracekumar - +91-85530 29521
"Talk is cheap, show me the code" - Linus Torvalds

Yes but register_resource is at http_api level not at resource level.
Decorator on the other hand will have to be at Resource level
On Mon, Jan 5, 2015 at 2:01 PM, Kracekumar Ramaraju <
<EMAIL_ADDRESS>wrote:

Not sure. How current registration doesn't violate it.
api = Api(name='api', version='v1')
api.register_resource('foo', FooResource())
And decorator can be written as
@register(api_object, 'resource') as well
If you are using http, at some point bridge needs to exist. Calling a
method is one way and decorator is another way.
On Mon, Jan 5, 2015 at 1:42 PM, Raghu<EMAIL_ADDRESS>wrote:

I think we should keep the url routing part separate from the resources.
Resources implement CRUD without any assumptions about the delivery
mechanism (http). the decorator suggestion violates that.
On Mon, Jan 5, 2015 at 1:37 PM, Kracekumar Ramaraju <
<EMAIL_ADDRESS>wrote:

+1 no version number.
api = Api()
api.register('users', MyUserResource)
...
So People in flask want to use decorators, so api should be flexible
@api.route('/users')
class MyUserResource:
....
or
@api.route('/users')
def user_resource():
.....
On Mon, Jan 5, 2015 at 10:40 AM, Raghu<EMAIL_ADDRESS>wrote:

api = Api(name='api/v1')
—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68669098.

--
Regards
Kracekumar - +91-85530 29521
"Talk is cheap, show me the code" - Linus Torvalds
—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68678209.

—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68678534.

--
Regards
Kracekumar - +91-85530 29521
"Talk is cheap, show me the code" - Linus Torvalds
—
Reply to this email directly or view it on GitHub
https://github.com/Aplopio/rip/issues/9#issuecomment-68679893.


ChunkCache - push blocking operations out of ConcurrentHashMap.compute

The problem we want to solve here is that we perform blocking operations while loading the ChunkCache.
In the case of NSS (but also with RemoteFileCache) this operation could take milliseconds (up to seconds), blocking the bunch of threads that are accessing the same portion of the ConcurrentHashMap that backs the Caffeine cache.
Solution:

in the "load" operation we only allocate the memory and put a reference in the ChunkCache
the price for doing the blocking operation is then payed ONLY by the thread that is asking the chunk, without blocking other threads that compete on the same bucket of the Map but they are interested in different chunks

This patch attaches 1 test that fails (hangs forever) without this patch.
There is a system property (cassandra.chunk_cache.sync_load) to revert this behavior.
Some reference to the Caffeine implementation:
https://github.com/ben-manes/caffeine/blob/e872e2ea4c221cbbd7f1c866cf7a6b7468bf9a48/caffeine/src/main/java/com/github/benmanes/caffeine/cache/BoundedLocalCache.java#L2686-L2688
Here you can see that the loading operation (mappingFunction) is executed inside of a ConcurrentHashMap.compute()

@blambov do you have a minute to review this?

DSE has a solution to the exact same problem (driven by the need for async reads, but it also has a solution for sync ones) in its ChunkCacheImpl.
TBH I'd rather port that and/or take advantage of the features of Caffeine's AsyncLoadingCache.

TBH I'd rather port that and/or take advantage of the features of Caffeine's AsyncLoadingCache

I have taken a look to the DSE implementation, but switching to AsyncLoadingCache (and also introducing all the other goodies) seems a big change, especially because here ChunkReader has only a blocking readChunk.
For NSS it would be great to be able to use async loading one day

I have taken a look to the DSE implementation, but switching to AsyncLoadingCache (and also introducing all the other goodies) seems a big change, especially because here ChunkReader has only a blocking readChunk.

Actually, if we only want async reading, I believe that's a trivial change. Implement asyncLoad, then create the cache with buildAsync() and immediately take its synchronous() version.

TBH I'd rather port that and/or take advantage of the features of Caffeine's AsyncLoadingCache.

I've mentioned this before, but fwiw, I agree with this, particularly the last part. I'm not entirely sure why using AsyncLoadingCache is complicated. Can't we just switch to AsyncLoadingCache, call get(...).join() and basically get the same benefits that we have here? Or am I missing how this work?

I am closing this PR in favor of the alternative
https://github.com/datastax/cassandra/pull/1049
@blambov shared the work they did on DSE, and it actually works well and the new test passes


[Bug][Agent] ManagerFetcher throws exception when invoke the Gson.fromJson method

What happened
The error log:

What you expected to happen
No exception happens.
How to reproduce
See the above log.
Environment
No response
InLong version
master
InLong Component
InLong Agent
Are you willing to submit PR?

[X] Yes, I am willing to submit a PR!

Code of Conduct

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

I will fix this bug.


Speed problem of CNN

Hi.
I am trying to run some CNN apps and see how greatly distributed system could raise the speed. So I take two computers as a cluster to test the cifar10 example and set the parameters according to the instructions. But what makes me confused is that it takes about 15 minutes for 100 iterations on the cluster while it take only 1 minute when I just use the local machine. So is there anything wrong I did?
To be more detailed, I use the partition_data.sh to create leveldb_0 and leveldb_1 on both machines and then set the localserver and shared_file_system to false.

Hello,
These are the settings we used for 2 machines on cifar10. On our test machines, it took approximately 85 seconds for 100 iterations, which is far less than 15 minutes.

train script:
num_app_threads=8
staleness=0
model definition prototxt:
batch_size: 32
solver definition prototxt:
base_lr: 0.00016

Could you try these settings and let us know how they work for you?

So sorry for such late reply. I've tested again using these settings. It worked well, taking about 80 second for 100 iterations. Thanks again for your help.

You are welcome; glad to know it worked well for you!
On Thu, Mar 26, 2015 at 2:52 PM, miugel<EMAIL_ADDRESS>wrote:

So sorry for such late reply. I've tested again using these settings. It
worked well, taking about 80 second for 100 iterations. Thanks again for
your help.
—
Reply to this email directly or view it on GitHub
https://github.com/petuum/public/issues/19#issuecomment-86363164.


[Feature][UI Next] Add custom parameters to form

Purpose of the pull request
This pull request adds custom parameters to form
Brief change log

[X] Form Component - Custom Parameters

Releated issues
#7928

Codecov Report

Merging #8271 (c373f49) into dev (63f7efa) will decrease coverage by 0.00%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##                dev    #8271      +/-   ##
============================================
- Coverage     45.15%   45.15%   -0.01%
+ Complexity     3981     3980       -1
============================================
  Files           678      678
  Lines         26343    26343
  Branches       2836     2836
============================================
- Hits          11895    11894       -1
  Misses        13328    13328
- Partials       1120     1121       +1

Impacted Files
Coverage Δ

...dolphinscheduler/remote/future/ResponseFuture.java
81.96% <0.00%> (-1.64%)
: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 63f7efa...c373f49. Read the comment docs.


tags should be standardized to lower case strings

DataFS Distributed Data Management System version: 0.7.0
Python version: 2.7
Operating System:

Description
Refactor  api.manager.add_tags to ensure that all tags are lower-case strings
What I Did
Paste the command(s) you ran and the output.
If there was a crash, please include the traceback here.

#224


Evaluate completeness of documentation

I found a post by @emilyviolet on Fortran parsing libraries at https://emilyviolet.github.io/2022/01/29/fortran-parsing.html including TOML Fortran.
The main critique is the documentation (or rather the lack of it), which is unfortunately still quite sparse even with the new readthedocs pages:

Terrible documentation

Project’s GitHub is both sparse and outdated
Need to rely on the automatically generated API docs again
Authors also recommend reading the fpm source, since it makes a lot of use of toml-f

toml-f unfortunately has nonexistent documentation, which admittedly is a fairly large downside

Actionable points for improving TOML Fortran's documentation:

[x] check the project README
[ ] investigate an alternative to FORD (maybe Doxygen or breathe)
[ ] create tutorials based on the fpm source and add those to the RTD pages

Hi @awvwgk, thanks for tagging me into this! I haven't worked on Fortran code in a while so didn't
realise you had the new RTD page. I will update the post accordingly.
Additionally, I'd like to volunteer to help with the documentation, rather than just complaining on
my blog. I've been meaning to do up some basic tutorials on toml-f for my day job, but just
haven't gotten around to it yet - would it be useful to collaborate with you on these, either now
or once you've made the changes in PRs #71 and #72?

Thanks for giving TOML Fortran a try and reaching out here.
For the docs I try to follow the Diátaxis framework, which partitions the documentation into sections depending on purpose and audience. If you have some useful snippets for doing certain tasks in TOML Fortran those could be added as a small recipe. We can use them as a starting point for the implementation of the additional get_value interfaces and try to improve the user experience for the respective tasks described in the docs.
Also, feel free to complain on missing documentation on the issue tracker, the discussion board or even the Fortran discourse. Especially a specific request makes it easier to create new guides or recipes to address the specific problem.

Okay, I can do that. I have some time set aside tomorrow (Friday in Australia), so I'll see what I can do.
I think the existing tutorial is pretty much content-complete by the standards of the framework you linked - since we just want enough basic information to get someone started using toml-f. I think it could benefit from a little bit of expansion in some areas, such as including a sample TOML file alongside the reader function to make it easier to map specific calls to get_value to elements of the table, but aside from that it looks good for a 101-level guide.
I think the documentation could benefit from some "102-level" content that talks a little bit more about how the library's API is structured and what it does when you call it ("explanation" in the Diataxis framework). This is something I would've liked when I was starting out incorporating toml-f into a project, since without a clear understanding of why I need to do things a certain way I wasn't really able to come up with my own code beyond what I could find in the examples. The kind of content I'm thinking is information to help users build up their understanding of how the library works; something like "nested sections are their own child table, so you need to allocate and parse a new table before you can query them". What do you think?
I like the idea of writing small recipes/how-to guides for different common tasks, such as reading nested keys or dealing with arrays, then link to the relevant part of the explanation. I will start writing these up tomorrow and make a PR when I'm done with the first pass.

I started with a short recipe on iterating over subtables in https://github.com/toml-f/toml-f/pull/80. I will try to write a bit more on common use cases in configuration files and how to map them in TOML Fortran.
Maybe a complete walk-through for building a configuration file for an application, discussing advantages and disadvantages of certain data structures, would also be a good choice for a tutorial. I don't have something particular in mind yet for a topic, either package management or computational chemistry might be themes I would chose for such a guide.

This sounds good to me! I'm biased towards computational chemistry as a tutorial theme because that's my field too, but this is a weak preference. I might have less time to spend on this over the coming weeks, but I'll see if I can gather some user feedback as I roll out the new version of my application (especially if you decide to go with a chemistry-themed tutorial).

This should be mostly covered now, I created separate issues for the generated docs (#83) and a more extensive tutorial (#84).


bug in callback triggering possibly related to threading

I have a function that uses the requests library that I am decorating with a callback.  The callback seems to be triggered more frequently than one would expect.  The behavior works as expected when the decorated function returns a string.
import requests
from ratelimiter import RateLimiter

def callback_message(until):
    print('Rate limit reached, sleeping')

@RateLimiter(max_calls=30, period=15, callback=callback_message)
def thing1():
    return requests.get("https://www.google.com")

@RateLimiter(max_calls=30, period=15, callback=callback_message)
def thing2():
    return "thing2"

print("Testing with requests")
for i in range(100):
    if i % 10 == 0:
        print(i)
    thing1()

print("Testing with simple function")
for i in range(100):
    if i % 10 == 0:
        print(i)
    thing2()

This is the output:
Testing with requests
0
10
20
30
Rate limit reached, sleeping
Rate limit reached, sleeping
40
Rate limit reached, sleeping
50
60
Rate limit reached, sleeping
Rate limit reached, sleeping
Rate limit reached, sleeping
Rate limit reached, sleeping
70
Rate limit reached, sleeping
Rate limit reached, sleeping
80
Rate limit reached, sleeping
Rate limit reached, sleeping
90
Rate limit reached, sleeping
Rate limit reached, sleeping
Rate limit reached, sleeping
Rate limit reached, sleeping
Rate limit reached, sleeping
Rate limit reached, sleeping
Rate limit reached, sleeping
Rate limit reached, sleeping

Testing with simple functions
0
10
20
30
Rate limit reached, sleeping
40
50
60
Rate limit reached, sleeping
70
80
90
Rate limit reached, sleeping

If you print until, you should see that sometimes it's milliseconds between them, because one rate limited call put it beyond the limit.

Hmm.  maybe I am confused.   It seems the actual rate limiting is working correctly, but when using requests.get the callback is triggered too often.  Are you saying that the decorated function is behaving quasi asynchronously?

I ended up being able to solve my issue by modifying the __enter__ function to reset the calls queue after sleeping, so the call back was called exactly 3 times in 90 requests.s
 def __enter__(self):
        with self._lock:
            # We want to ensure that no more than max_calls were run in the allowed
            # period. For this, we store the last timestamps of each call and run
            # the rate verification upon each __enter__ call.
            if len(self.calls) >= self.max_calls:
                until = time.time() + self.period - self._timespan
                if self.callback:
                    t = threading.Thread(target=self.callback, args=(until,))
                    t.daemon = True
                    t.start()
                sleeptime = until - time.time()
                if sleeptime > 0:
                    time.sleep(sleeptime)
                    self.calls = collections.deque()
            return self


Add MPL headers for source files

Added MPL Headers for the source files

@KrishnaChaitanya1 Now I see the issue. We've removed the benchmark files mentioned above from the repository. Could you update the PR?

@KrishnaChaitanya1 Now I see the issue. We've removed the benchmark files mentioned above from the repository. Could you update the PR?

Sure will do that

Sure will do that

@KrishnaChaitanya1 Great! Let me know if you need help :)

@KrishnaChaitanya1 Great! Let me know if you need help :)

@haiyangdeperci. I have updated. Can you check?

@haiyangdeperci. I have updated. Can you check?

@KrishnaChaitanya1 I am still getting conflicts for benchmarks/README.md and hub/api/tests/test_sharded_dataset.py. You might want to resolve these too. Then, I can quickly merge your PR. Otherwise, I can resolve it later.

@KrishnaChaitanya1 I am still getting conflicts for benchmarks/README.md and hub/api/tests/test_sharded_dataset.py. You might want to resolve these too. Then, I can quickly merge your PR. Otherwise, I can resolve it later.

@haiyangdeperci . Sure, looks like I have some issues with updating my local code base. I will look into it and do the necessary changes

@haiyangdeperci . Sure, looks like I have some issues with updating my local code base. I will look into it and do the necessary changes

@KrishnaChaitanya1 Great job! Thanks a lot for helping us out. I hope going through these small issues with coverage was a nice learning experience for you. I want to pinpoint that's your first PR merged at Hub, yay! :1st_place_medal:

@KrishnaChaitanya1 Great job! Thanks a lot for helping us out. I hope going through these small issues with coverage was a nice learning experience for you. I want to pinpoint that's your first PR merged at Hub, yay! :1st_place_medal:

@haiyangdeperci . Thanks for this wonderful opportunity. Yes it was indeed a great learning experience for me. Looking forward to contribute more!

@haiyangdeperci . Thanks for this wonderful opportunity. Yes it was indeed a great learning experience for me. Looking forward to contribute more!


improvement: pass description through to Absinthe in more cases

Check the TODO:s for a couple of additional places where adding descriptions would require supporting them in core. Operators maybe not relevant, but Ash.Resource.Calculation.Argument probably worthwhile. See https://github.com/ash-project/ash/blob/de943509f73ff0c6ef3749feb3cc6ab6e4d99d2d/lib/ash/resource/calculation/calculation.ex#L103
This is not 100% comprehensive, there are a lot of InputObjectDefinitions that could be candidates.
Contributor checklist

[ ] Bug fixes include regression tests
[ ] Features include unit/acceptance tests

Hi @bcksl please address the credo warnings and I'll make sure that we get this merged.


Use JSONL rather than JSON for chat

This will make URL extraction much easier vis-à-vis RAM usage.

The RAM usage issue has been worked around by using a streaming JSON library in the URL extractor. But it's still probably a good idea to JSONL.


Add minified version to dist

Coverage remained the same at 97.495% when pulling 738149363bdaf85e46bcdfb6e0f615282590f8c1 on release-1.1 into d13bfcb6e5cc3bee78f12f82496de3416bdd377e on master.

Coverage remained the same at 97.495% when pulling 738149363bdaf85e46bcdfb6e0f615282590f8c1 on release-1.1 into d13bfcb6e5cc3bee78f12f82496de3416bdd377e on master.


Cannot add package dependency hosted on private http2 self hosted repo

Description
Hello, I have multiple SPM packages hosted on a private repo that only supports HTTP/2. The packages will clone to my local machine fine, but when trying to add them as a dependency to a project, the package will not resolve. Either it will spin forever, or I will receive an error that says. "An unknown error occurred. SecureTransport error: connection closed via error (-1)". Changing the HTTP2 protocol on the private repo is not an option.
Thanks,
John
Expected behavior
Package clones fine & is added as dependency.
Actual behavior
Package is not be added to the project & cannot resolve any information.
Steps to reproduce

Create a private, self-hosted, HTTP/2 protocol based git repo.
Attempt to add a swift package hosted on this repo to a local project.

Swift Package Manager version/commit hash
5.7
Swift & OS version (output of swift --version && uname -a)
swift-driver version: 1.62.8 Apple Swift version 5.7 (swiftlang-<IP_ADDRESS>.4 clang-14<IP_ADDRESS>)
Target: arm64-apple-macosx12.0

Seems like potentially a simple update to fix this problem if the solution found in the link below fixes the issue...
https://openradar.appspot.com/radar?id=5008610828484608


HAWQ-341. PL functions core dump due to query resource is not properly allocated for function/table function/sub-query

LGTM +1

+1


release to checkmarx registry

add to checkmark registry

Scan submitted to Checkmarx

Checkmarx SAST - Scan Summary & Details
Cx-SAST Summary
Total of 7 vulnerabilities 0 High 0 Medium 7 Low 0 Info
Violation Summary
No policy violation found

Checkmarx SCA - Scan Summary & Details
Cx-SCA Summary
Total Packages Identified: 0
Scan Risk Score: 0.00
 0 High severity vulnerabilities
 0 Medium severity vulnerabilities
 0 Low severity vulnerabilities
View more details on Checkmarx UI
Cx-SCA vulnerability result overview
No package violation found


Adding X-Priority Support

As RabbitMQ now natively supports priorities I suggest adding priority support to wascally.

@akainz - thank you for the PR. I really appreciate the effort you put into it. I apologize for not getting to this sooner. As of 0.4.0, amqplib (the underlying library), has support for maxPriority. I am about to submit a PR that updates our dependency which will accomplish the same result as your PR.


Camera not working in snap package

My Setup

Operating System: Ubuntu 16.04.3 LTS
App Version: 2.7.0

[x] I have tested with the latest version
[x] I can simulate the issue easily

Description

Current Behavior
When installed as a snap package, the app has no access to camera.
Because there is no camera interface in the list of plugs, it is not possible to manually connect it
after installation.
Expected Behavior
The app should have access to camera.

In case adding the camera to the list of plugs is ok for you guys, I submitted a PR.


Removing support for ServiceBus.operations()/Azure.serviceBusOperations()

b/c it was not converted to .Net and is non-trivial to do so at this time.

Can one of the admins verify this patch?


Ionic Native's SpinnerDialog does not support W10 UWP  / IE11 / EDGE

Ionic version:  (check one with "x")
[ ] 1.x (For Ionic 1.x issues, please use https://github.com/driftyco/ionic-v1)
[ ] 2.x
[ X] 3.x
I'm submitting a ...  (check one with "x")
[ X] bug report
[ ] feature request
[ X] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:

Ionic's Native SpinnerDialog plugin does not work on Windows 10 UWP platform, and there is no official alternative.
"Bug report" -> https://github.com/Paldom/SpinnerDialog/issues/43
Expected behavior:

Provide an alternative ionic native plugin implementation that works on every supported ionic platform 6 document how to perform a similar action on W10 UWP / IE11/ edge.

This issue was moved to driftyco/ionic-native#1603


Logo proposal

Hello. I design a logo for open source projects voluntarily. Do you want to help?

Hi, that would be cool! Can you show me some examples of your work? Also, what sort of license would the logo have?

My logos can visit my profile. Also licensed: http: //creativecommons.org/licenses/by/4.0/

Guess the license won't be an issue then, if the logo is licensed under CC and the rest under MIT.
Do you have some ideas for the logo? I was thinking something like the original LoRa logo. We probably won't be able to use that directly though, since it's trademarked.

Closed due to inactivity, feel free to reopen later.


installer failing too many colons in address

Description
Cluster up fails running ./installer/install.sh fails with the following issue
TASK [oc-cluster-up : Cluster up] ***********************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "cmd": "oc cluster up --service-catalog=true --host-data-dir=/home/austincunningham/repos/mobile-core/ui/openshift-data --routing-suffix=addr:<IP_ADDRESS>.nip.io --public-hostname=addr:<IP_ADDRESS> --version=v3.9.0 --image=openshift/origin", "delta": "0:00:05.358157", "end": "2018-07-12 10:13:03.961671", "msg": "non-zero return code", "rc": 1, "start": "2018-07-12 10:12:58.603514", "stderr": "FAIL\n   Error: could not create OpenShift configuration\n   Caused By:\n     Error: Docker run error rc=1\n     Details:\n       Image: openshift/origin:v3.9.0\n       Entrypoint: []\n       Command: [start --images=openshift/origin-${component}:v3.9.0 --volume-dir=/var/lib/origin/openshift.local.volumes --dns=<IP_ADDRESS>:8053 --write-config=/var/lib/origin/openshift.local.config --master=<IP_ADDRESS> --hostname=localhost --public-master=https://addr:<IP_ADDRESS>:8443]\n       Error Output:\n         Error: invalid argument \"https://addr:<IP_ADDRESS>:8443\" for --public-master=https://addr:<IP_ADDRESS>:8443: not a valid host:port: address addr:<IP_ADDRESS>:8443: too many colons in address\n\n\n         Usage:\n           openshift start [options]\n\n         Available Commands:\n           etcd                    Launch etcd server\n           master                  Launch a master\n           network                 Launch node network\n           node                    Launch a node\n           template-service-broker Launch a template service broker server\n\n         Options:\n               --certificate-authority=[]: Optional files containing signing authorities to use (in addition to the generated signer) to verify the API server's serving certificate.\n               --cors-allowed-origins=[]: List of allowed origins for CORS, comma separated.  An allowed origin can be a regular expression to support subdomain matching.  CORS is enabled for localhost, <IP_ADDRESS>, and the asset server by default.\n               --create-certs=true: Indicates whether missing certs should be created.\n               --dns='tcp://<IP_ADDRESS>:8053': The address to listen for DNS requests on.\n               --etcd='https://<IP_ADDRESS>:4001': The address of the etcd server (host, host:port, or URL). If specified, no built-in etcd will be started.\n               --etcd-dir='openshift.local.etcd': The etcd data directory.\n               --expire-days=730: Validity of the certificates in days (defaults to 2 years). WARNING: extending this above default value is highly discouraged.\n               --hostname='lap-rh-austin': The hostname to identify this node with the master.\n               --images='openshift/origin-${component}:${version}': When fetching images used by the cluster for important components, use this format on both master and nodes. The latest release will be used by default.\n               --latest-images=false: If true, attempt to use the latest images for the cluster instead of the latest release.\n               --listen='https://<IP_ADDRESS>:8443': The address to listen for connections on (scheme://host:port).\n               --master='https://localhost:8443': The master address for use by OpenShift components (host, host:port, or URL). Scheme and port default to the --listen scheme and port. When unset, attempt to use the first public IPv4 non-loopback address registered on this host.\n               --master-config='': Location of the master configuration file to run from. When running from configuration files, all other command-line arguments are ignored.\n               --network-plugin='': The network plugin to be called for configuring networking for pods.\n               --node-config='': Location of the node configuration file to run from. When running from configuration files, all other command-line arguments are ignored.\n               --pause=false: If true, wait for a signal before starting the controllers.\n               --portal-net='<IP_ADDRESS>/16': The CIDR string representing the network that portal/service IPs will be assigned from. This must not overlap with any IP ranges assigned to nodes for pods.\n               --print-ip=false: Print the IP that would be used if no master IP is specified and exit.\n               --public-master='https://localhost:8443': The master address for use by public clients, if different (host, host:port, or URL). Defaults to same as --master.\n               --recursive-resolv-conf='': An optional upstream resolv.conf that will override the DNS config.\n               --signer-expire-days=1825: Validity of the CA certificate in days (defaults to 5 years). WARNING: extending this above default value is highly discouraged.\n               --volume-dir='openshift.local.volumes': The volume storage directory.\n               --write-config='': Directory to write an initial config into.  After writing, exit without starting the server.\n\n         Use \"openshift <command> --help\" for more information about a given command.\n         Use \"openshift options\" for a list of global command-line options (applies to all commands).", "stderr_lines": ["FAIL", "   Error: could not create OpenShift configuration", "   Caused By:", "     Error: Docker run error rc=1", "     Details:", "       Image: openshift/origin:v3.9.0", "       Entrypoint: []", "       Command: [start --images=openshift/origin-${component}:v3.9.0 --volume-dir=/var/lib/origin/openshift.local.volumes --dns=<IP_ADDRESS>:8053 --write-config=/var/lib/origin/openshift.local.config --master=<IP_ADDRESS> --hostname=localhost --public-master=https://addr:<IP_ADDRESS>:8443]", "       Error Output:", "         Error: invalid argument \"https://addr:<IP_ADDRESS>:8443\" for --public-master=https://addr:<IP_ADDRESS>:8443: not a valid host:port: address addr:<IP_ADDRESS>:8443: too many colons in address", "", "", "         Usage:", "           openshift start [options]", "", "         Available Commands:", "           etcd                    Launch etcd server", "           master                  Launch a master", "           network                 Launch node network", "           node                    Launch a node", "           template-service-broker Launch a template service broker server", "", "         Options:", "               --certificate-authority=[]: Optional files containing signing authorities to use (in addition to the generated signer) to verify the API server's serving certificate.", "               --cors-allowed-origins=[]: List of allowed origins for CORS, comma separated.  An allowed origin can be a regular expression to support subdomain matching.  CORS is enabled for localhost, <IP_ADDRESS>, and the asset server by default.", "               --create-certs=true: Indicates whether missing certs should be created.", "               --dns='tcp://<IP_ADDRESS>:8053': The address to listen for DNS requests on.", "               --etcd='https://<IP_ADDRESS>:4001': The address of the etcd server (host, host:port, or URL). If specified, no built-in etcd will be started.", "               --etcd-dir='openshift.local.etcd': The etcd data directory.", "               --expire-days=730: Validity of the certificates in days (defaults to 2 years). WARNING: extending this above default value is highly discouraged.", "               --hostname='lap-rh-austin': The hostname to identify this node with the master.", "               --images='openshift/origin-${component}:${version}': When fetching images used by the cluster for important components, use this format on both master and nodes. The latest release will be used by default.", "               --latest-images=false: If true, attempt to use the latest images for the cluster instead of the latest release.", "               --listen='https://<IP_ADDRESS>:8443': The address to listen for connections on (scheme://host:port).", "               --master='https://localhost:8443': The master address for use by OpenShift components (host, host:port, or URL). Scheme and port default to the --listen scheme and port. When unset, attempt to use the first public IPv4 non-loopback address registered on this host.", "               --master-config='': Location of the master configuration file to run from. When running from configuration files, all other command-line arguments are ignored.", "               --network-plugin='': The network plugin to be called for configuring networking for pods.", "               --node-config='': Location of the node configuration file to run from. When running from configuration files, all other command-line arguments are ignored.", "               --pause=false: If true, wait for a signal before starting the controllers.", "               --portal-net='<IP_ADDRESS>/16': The CIDR string representing the network that portal/service IPs will be assigned from. This must not overlap with any IP ranges assigned to nodes for pods.", "               --print-ip=false: Print the IP that would be used if no master IP is specified and exit.", "               --public-master='https://localhost:8443': The master address for use by public clients, if different (host, host:port, or URL). Defaults to same as --master.", "               --recursive-resolv-conf='': An optional upstream resolv.conf that will override the DNS config.", "               --signer-expire-days=1825: Validity of the CA certificate in days (defaults to 5 years). WARNING: extending this above default value is highly discouraged.", "               --volume-dir='openshift.local.volumes': The volume storage directory.", "               --write-config='': Directory to write an initial config into.  After writing, exit without starting the server.", "", "         Use \"openshift <command> --help\" for more information about a given command.", "         Use \"openshift options\" for a list of global command-line options (applies to all commands)."], "stdout": "WARNING: Binding DNS on port 8053 instead of 53, which may not be resolvable from all clients.\nUsing Docker shared volumes for OpenShift volumes\nUsing <IP_ADDRESS> as the server IP\nStarting OpenShift using openshift/origin:v3.9.0 ...\n-- Starting OpenShift container ... \n   Creating initial OpenShift configuration", "stdout_lines": ["WARNING: Binding DNS on port 8053 instead of 53, which may not be resolvable from all clients.", "Using Docker shared volumes for OpenShift volumes", "Using <IP_ADDRESS> as the server IP", "Starting OpenShift using openshift/origin:v3.9.0 ...", "-- Starting OpenShift container ... ", "   Creating initial OpenShift configuration"]}
	to retry, use: --limit @/home/austincunningham/repos/mobile-core/installer/playbook.retry

PLAY RECAP **********************************************************************************************************
localhost                  : ok=13   changed=1    unreachable=0    failed=1

Environment
Operating system:
Linux mint 18
OpenShift versions:
3.9
Steps to reproduce
Run the installer as outlined at https://docs.aerogear.org/aerogear/latest/getting-started.html#prerequisites
Extra Notes
The issue is here where the Cluster IP is obtained. In this SO/setup the value returned is with addr: in front of it.
$ DEFAULT_CLUSTER_IP=$(ifconfig $(netstat -nr | awk '{if (($1 == "<IP_ADDRESS>" || $1 == "default") && $2 != "<IP_ADDRESS>" && $2 ~ /[0-9\.]+{4}/){print $NF;} }' | head -n1) | grep 'inet ' | awk '{print $2}')
$ echo $DEFAULT_CLUSTER_IP
addr:<IP_ADDRESS>

@austincunningham can you add the output of ipconfig? Wondering if we've got some bug with interfaces with IPv6 addresses.
To workaround, use <IP_ADDRESS> (without the :) when prompted.

docker0   Link encap:Ethernet  HWaddr 02:42:c3:0e:5f:16
          inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
          inet6 addr: fe80::42:c3ff:fe0e:5f16/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:341391 errors:0 dropped:0 overruns:0 frame:0
          TX packets:419562 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:70291359 (70.2 MB)  TX bytes:42588721 (42.5 MB)

enp0s31f6 Link encap:Ethernet  HWaddr c8:5b:76:bc:1d:61
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:5266893 errors:3084 dropped:0 overruns:0 frame:2411
          TX packets:2014739 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5798434996 (5.7 GB)  TX bytes:606306422 (606.3 MB)
          Interrupt:16 Memory:f2200000-f2220000

lo        Link encap:Local Loopback
          inet addr:<IP_ADDRESS>  Mask:<IP_ADDRESS>
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:24504183 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24504183 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:8200711343 (8.2 GB)  TX bytes:8200711343 (8.2 GB)

virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:230994 errors:0 dropped:0 overruns:0 frame:0
          TX packets:410332 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:9650257 (9.6 MB)  TX bytes:879042367 (879.0 MB)

virbr3    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:9261 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8517 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4369132 (4.3 MB)  TX bytes:1246391 (1.2 MB)

wlp3s0    Link encap:Ethernet  HWaddr 34:f3:9a:b7:1a:38
          inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
          inet6 addr: fe80::4962:34ce:6280:8adb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6407376 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2675379 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7000950681 (7.0 GB)  TX bytes:830965800 (830.9 MB)

Was on master so , more that likely the issue, manually entering the IP resolves the issue

@austincunningham I wouldn't mind taking a peak at this anyway, just to check master - will re-open and we'll take a look before closing

@austincunningham could you provide the steps/setup to face this issue? Because just following the instructions did not allow us to reproduce it.

@camilamacedo86

follow the getting started guide

git clone https://github.com/aerogear/mobile-core.git
cd mobile-core

don't checkout 1.0.0
run the installer

$ ./installer/install.sh

enter dockerhub credentials
accept the defaults when prompted,
error occurs

Suspect it's OS related bug with master

@austincunningham shows by following it that your SO was with some specific setup and it was using
addr:<IP_ADDRESS>.nip.io instead of <IP_ADDRESS>.nip.io.  What shows if you run it now in the cluster IP by default? ( following an example )

Could you add the steps performed to work around it?

But what was the valued returned by default? It was returned with the : ?

Suspect the issue is on this line, https://github.com/aerogear/mobile-core/blob/95f587ef3a43ef5550ac80364a6fd28a38ebe1e2/installer/install.sh#L358 When run locally i get the following
$ DEFAULT_CLUSTER_IP=$(ifconfig $(netstat -nr | awk '{if (($1 == "<IP_ADDRESS>" || $1 == "default") && $2 != "<IP_ADDRESS>" && $2 ~ /[0-9\.]+{4}/){print $NF;} }' | head -n1) | grep 'inet ' | awk '{print $2}')
$ echo $DEFAULT_CLUSTER_IP
addr:<IP_ADDRESS>

Perfect !!! It was what I'd like to confirm :-) The problem here is that the default function is returning the IP with the addr: in front of it.

Hi @austincunningham,
Thanks for your feedback. This repo is now deprecated and is replaced by Mobile Developer Console. Could you please give it a try and if you still experience the same problem, please open a new issue in that project.
Thanks.


TEP-0060 Resolver to Stable

Feature looking for Promotion
Resolver is in 'beta' right now
Thanks to the inputs @tektoncd/core-collaborators during the WG, feedbacks are required to be collected for promoting
Resolver to stable in v1 so as to avoid the loss of 'default' setup for this feature.
cc @tektoncd/core-maintainers

Current Feature Version
Beta feature

Raise Feature Version
Stable/ GA

Pipeline Release
TBD

Issues Reported by the Users

Usage in Dogfooding Cluster

Examples/Tests

One thing to think about as we're moving resolution to stable is to find a versioning strategy + compatibility policy for the resolution API. For example, it would be nice to use a v1.RefSource instead of a v1beta1.RefSource in ResolvedResource, but making this change would force resolvers to update (although the two structs are identical).

If the types are identical, from go persective, using type alias would "just" work, wouldn't it ?

I'm not sure how this would work unless we aliased v1beta1.RefSource to v1.RefSource. I think that's how we did things for v1alpha1 but this time around we decided to create copies. Unless I'm misunderstanding your suggestion?

But also, I don't think any of this is related to the API itself (aka the Kubernetes CRD API), only the go library API we define and use (and that other can use).

I thought about it a bit more and I realized you're right that existing resolvers wouldn't have to update as a result of this change, since the ResolutionRequest CRD hasn't changed. They'd only need to update if they need to pull in a new version of Pipelines for some reason.
However, I wonder if we should change our compatibility policy to be a bit stricter for the resolvers API. I don't think we'd want to make a lot of breaking changes to it even if ResolutionRequest stays the same.

The RefSource has been updated to v1 in  the v1 storage swap, which might make us one step closer to promote this to stable 🙏
Would like to learn if there are any other concerns promoting this feature?
cc @tektoncd/core-maintainers

I'm still wondering if we should use non-versioned apis for the resolver interface. I updated our compatibility policy to state that after promoting resolvers to stable, we won't change the interface, so I think we should figure that out before stabilizing this feature.
I think we should also address https://github.com/tektoncd/pipeline/issues/5931 before promotion.

/lifecycle frozen


Feature/690 open tdtm settings

Warning
Info

Adds an API that managed an unmanaged code can target to interact with the NPSP package.

Issues
Fixes #908
Fixes #714
Fixes #690
Fixes #1195

This is ready to be merged. (I'm not sure notifications go out when you edit a comment, which is what I did here.)

@ceiroa Since this merge is huge, I don't want to rereview it all again from scratch!  do you recall when we reviewed this with you, and can you point me at the substantive changes you want me to see since then?

We reviewed all the tricky stuff around error handling refactoring, and error handling in futures and batch classes.
What's left to look at is:

double-check it all looks good in the four classes that end with _API.cls
changes to get the context passed as a string. Commits:
https://github.com/SalesforceFoundation/Cumulus/commit/f7a41a1a8e2e8d39f30a806e3dc722208dc32845
https://github.com/SalesforceFoundation/Cumulus/commit/6955277e7ee8718679f8815e82d214705f608cd9
making sure the changes added to provide test coverage to the API classes seem reasonable. Commit:
https://github.com/SalesforceFoundation/Cumulus/commit/48a90a28f054194d2af4cc4a3e80603c9f370c29

@ceiroa I will merge this once it is marked as passing build.  thanks!

ok. it's running right now.

@jlantz @ceiroa well it finished its build run, but its queued up again, so it isn't marked as safe.  do i accept it now, or does that risk some other push into dev that this branch doesn't have?

@davidhabib or @njjc, the build passed, and the branch is marked as safe. Could one of you merge it? Thanks

Building again, with a text change (sigh)


[video_player] Video restarts on scrubbing the progress indicator to the end

Use case
After the merge of this PR our application started experiencing some unexpected behaviours when the user dragged the video player position until the end, specifically this new condition in the play() method. This was an unexpected change that wasn't reflected in the changelog 😕.
Proposal
Since this behaviour is not exposed in any way we made a workaround on our code to avoid the video restarting by itself. However, since this is more like a feature would it be possible to make it optional?

To make sure I'm understanding correctly: is the behavior that if the video is playing, and is scrubbed to the end, it automatically jumps to the beginning and continues playing?

Yes, if the video is manually scrubbed to the end it jumps to the beginning.

If so, that's just a bug

Labeling this issue as a bug instead of proposal

@stuartmorgan
I'm also facing a similar issue but only on flutter web
in android works fine
but this issue occurs only for the first time, after hot restart/reload works fine
Sample video -
https://user-images.githubusercontent.com/85326522/140480457-ab21345a-76e2-4b0e-b4ec-027c89f0e712.mp4

#92658 This issue still exists,
ISSUE 1

when i try to play video from assets  in flutter web

NOTE -
this issue occurs only for the first time, after hot restart/reload works fine

ISSUE 2

when i try to play video from this url https://samplelib.com/lib/preview/mp4/sample-10s.mp4  in flutter web

NOTE -
this issue occurs only for the first time, after hot restart/reload works fine

To reproduce issue 2
import 'dart:async';

import 'package:flutter/material.dart';

import 'package:video_player/video_player.dart';

Future<void> main() async {
  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: VideoApp());
  }
}

class VideoApp extends StatefulWidget {
  @override
  _VideoAppState createState() => _VideoAppState();
}

class _VideoAppState extends State<VideoApp> {
  late VideoPlayerController _controller;

  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.asset(
        'https://samplelib.com/lib/preview/mp4/sample-10s.mp4')
      ..initialize().then((_) {
        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
        setState(() {});
      });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Video Demo',
      home: Scaffold(
        body: Container(
          alignment: Alignment.center,
          padding: EdgeInsets.symmetric(horizontal: 8),
          child: _controller.value.isInitialized
              ? AspectRatio(
                  aspectRatio: _controller.value.aspectRatio,
                  child: Stack(
                    alignment: Alignment.bottomCenter,
                    children: [
                      VideoPlayer(_controller),
                      VideoProgressIndicator(_controller, allowScrubbing: true),
                    ],
                  ),
                )
              : Container(),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            setState(() {
              _controller.value.isPlaying
                  ? _controller.pause()
                  : _controller.play();
            });
          },
          child: Icon(
            _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
          ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }
}

flutter doctor -v
[✓] Flutter (Channel stable, 2.5.3, on Ubuntu 20.04.3 LTS
    5.11.0-38-generic, locale en_GB.UTF-8)
    • Flutter version 2.5.3 at /home/dev/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 18116933e7 (4 weeks ago), 2021-10-15
      10:46:35 -0700
    • Engine revision d3ea636dc5
    • Dart version 2.14.4

[✓] Android toolchain - develop for Android devices (Android SDK
    version 30.0.2)
    • Android SDK at /home/dev/Android/Sdk
    • Platform android-31, build-tools 30.0.2
    • ANDROID_HOME = /home/dev/Android/Sdk
    • Java binary at:
      /home/dev/Downloads/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • clang version 10.0.0-4ubuntu1
    • cmake version 3.16.3
    • ninja version 1.10.0
    • pkg-config version 0.29.1

[✓] Android Studio (version 4.1)
    • Android Studio at /home/dev/Downloads/android-studio
    • Flutter plugin version 52.0.1
    • Dart plugin version 201.9245
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.61.2)
    • VS Code at /usr/share/code
    • Flutter extension version 3.28.0

[✓] Connected device (3 available)
    • Redmi 6 Pro (mobile) • 48b191740505 • android-arm64  •
      Android 9 (API 28)
    • Linux (desktop)      • linux        • linux-x64      •
      Ubuntu 20.04.3 LTS 5.11.0-38-generic
    • Chrome (web)         • chrome       • web-javascript •
      Google Chrome 95.0.4638.69

• No issues found!

@newtaDev The video you posted is not showing this issue. You should file a new issue for your bug.

@stuartmorgan
Okey. Thanks for responding
I have opened new issue #93486 please check.